Merge pull request #7914 from nextcloud/fix-7254
format self-mentions, but don't offer them
This commit is contained in:
commit
6e29b8731e
|
@ -40,6 +40,15 @@ class Search implements ISearch {
|
||||||
$this->c = $c;
|
$this->c = $c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $search
|
||||||
|
* @param array $shareTypes
|
||||||
|
* @param bool $lookup
|
||||||
|
* @param int|null $limit
|
||||||
|
* @param int|null $offset
|
||||||
|
* @return array
|
||||||
|
* @throws \OCP\AppFramework\QueryException
|
||||||
|
*/
|
||||||
public function search($search, array $shareTypes, $lookup, $limit, $offset) {
|
public function search($search, array $shareTypes, $lookup, $limit, $offset) {
|
||||||
$hasMoreResults = false;
|
$hasMoreResults = false;
|
||||||
|
|
||||||
|
|
|
@ -83,6 +83,8 @@ class UserPlugin implements ISearchPlugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->takeOutCurrentUser($users);
|
||||||
|
|
||||||
if (!$this->shareeEnumeration || sizeof($users) < $limit) {
|
if (!$this->shareeEnumeration || sizeof($users) < $limit) {
|
||||||
$hasMoreResults = true;
|
$hasMoreResults = true;
|
||||||
}
|
}
|
||||||
|
@ -146,4 +148,13 @@ class UserPlugin implements ISearchPlugin {
|
||||||
|
|
||||||
return $hasMoreResults;
|
return $hasMoreResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function takeOutCurrentUser(array &$users) {
|
||||||
|
$currentUser = $this->userSession->getUser();
|
||||||
|
if(!is_null($currentUser)) {
|
||||||
|
if (isset($users[$currentUser->getUID()])) {
|
||||||
|
unset($users[$currentUser->getUID()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,10 +232,6 @@ class Comment implements IComment {
|
||||||
$uids = array_unique($mentions[0]);
|
$uids = array_unique($mentions[0]);
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($uids as $uid) {
|
foreach ($uids as $uid) {
|
||||||
// exclude author, no self-mentioning
|
|
||||||
if($uid === '@' . $this->getActorId()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$result[] = ['type' => 'user', 'id' => substr($uid, 1)];
|
$result[] = ['type' => 'user', 'id' => substr($uid, 1)];
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
|
|
|
@ -442,4 +442,51 @@ class UserPluginTest extends TestCase {
|
||||||
$this->assertEquals($expected, $result['users']);
|
$this->assertEquals($expected, $result['users']);
|
||||||
$this->assertSame($reachedEnd, $moreResults);
|
$this->assertSame($reachedEnd, $moreResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function takeOutCurrentUserProvider() {
|
||||||
|
$inputUsers = [
|
||||||
|
'alice' => 'Alice',
|
||||||
|
'bob' => 'Bob',
|
||||||
|
'carol' => 'Carol'
|
||||||
|
];
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
$inputUsers,
|
||||||
|
['alice', 'carol'],
|
||||||
|
'bob'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$inputUsers,
|
||||||
|
['alice', 'bob', 'carol'],
|
||||||
|
'dave'
|
||||||
|
],
|
||||||
|
[
|
||||||
|
$inputUsers,
|
||||||
|
['alice', 'bob', 'carol'],
|
||||||
|
null
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider takeOutCurrentUserProvider
|
||||||
|
* @param array $users
|
||||||
|
* @param array $expectedUIDs
|
||||||
|
* @param $currentUserId
|
||||||
|
*/
|
||||||
|
public function testTakeOutCurrentUser(array $users, array $expectedUIDs, $currentUserId) {
|
||||||
|
$this->instantiatePlugin();
|
||||||
|
|
||||||
|
$this->session->expects($this->once())
|
||||||
|
->method('getUser')
|
||||||
|
->willReturnCallback(function() use ($currentUserId) {
|
||||||
|
if($currentUserId !== null) {
|
||||||
|
return $this->getUserMock($currentUserId, $currentUserId);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->plugin->takeOutCurrentUser($users);
|
||||||
|
$this->assertSame($expectedUIDs, array_keys($users));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,9 @@ use Test\TestCase;
|
||||||
|
|
||||||
class CommentTest extends TestCase {
|
class CommentTest extends TestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws \OCP\Comments\IllegalIDChangeException
|
||||||
|
*/
|
||||||
public function testSettersValidInput() {
|
public function testSettersValidInput() {
|
||||||
$comment = new Comment();
|
$comment = new Comment();
|
||||||
|
|
||||||
|
@ -58,6 +61,9 @@ class CommentTest extends TestCase {
|
||||||
$comment->setId('c17');
|
$comment->setId('c17');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws \OCP\Comments\IllegalIDChangeException
|
||||||
|
*/
|
||||||
public function testResetId() {
|
public function testResetId() {
|
||||||
$comment = new Comment();
|
$comment = new Comment();
|
||||||
$comment->setId('c23');
|
$comment->setId('c23');
|
||||||
|
@ -133,7 +139,7 @@ class CommentTest extends TestCase {
|
||||||
'@alice @bob look look, a duplication @alice test @bob!', ['alice', 'bob']
|
'@alice @bob look look, a duplication @alice test @bob!', ['alice', 'bob']
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'@alice is the author, but notify @bob!', ['bob'], 'alice'
|
'@alice is the author, notify @bob, nevertheless mention her!', ['alice', 'bob'], 'alice'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'@foobar and @barfoo you should know, @foo@bar.com is valid' .
|
'@foobar and @barfoo you should know, @foo@bar.com is valid' .
|
||||||
|
@ -159,7 +165,6 @@ class CommentTest extends TestCase {
|
||||||
$uid = array_shift($expectedUids);
|
$uid = array_shift($expectedUids);
|
||||||
$this->assertSame('user', $mention['type']);
|
$this->assertSame('user', $mention['type']);
|
||||||
$this->assertSame($uid, $mention['id']);
|
$this->assertSame($uid, $mention['id']);
|
||||||
$this->assertNotSame($author, $mention['id']);
|
|
||||||
}
|
}
|
||||||
$this->assertEmpty($mentions);
|
$this->assertEmpty($mentions);
|
||||||
$this->assertEmpty($expectedUids);
|
$this->assertEmpty($expectedUids);
|
||||||
|
|
Loading…
Reference in New Issue