summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2018-01-17 14:59:46 +0100
committerGitHub <noreply@github.com>2018-01-17 14:59:46 +0100
commit6e29b8731e25526442d9b878a5a6ae75afc4075e (patch)
treec946269570feb61b63387cdf0919dabcbd1d15e2
parent24c58d39f4238f1068c629937a1a2baa37214068 (diff)
parent39f34603f20103a5fc44425175bf271e3fc91207 (diff)
downloadnextcloud-server-6e29b8731e25526442d9b878a5a6ae75afc4075e.tar.gz
nextcloud-server-6e29b8731e25526442d9b878a5a6ae75afc4075e.zip
Merge pull request #7914 from nextcloud/fix-7254
format self-mentions, but don't offer them
-rw-r--r--lib/private/Collaboration/Collaborators/Search.php9
-rw-r--r--lib/private/Collaboration/Collaborators/UserPlugin.php11
-rw-r--r--lib/private/Comments/Comment.php4
-rw-r--r--tests/lib/Collaboration/Collaborators/UserPluginTest.php47
-rw-r--r--tests/lib/Comments/CommentTest.php9
5 files changed, 74 insertions, 6 deletions
diff --git a/lib/private/Collaboration/Collaborators/Search.php b/lib/private/Collaboration/Collaborators/Search.php
index e9b15dd1201..bb1bd6d1711 100644
--- a/lib/private/Collaboration/Collaborators/Search.php
+++ b/lib/private/Collaboration/Collaborators/Search.php
@@ -40,6 +40,15 @@ class Search implements ISearch {
$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) {
$hasMoreResults = false;
diff --git a/lib/private/Collaboration/Collaborators/UserPlugin.php b/lib/private/Collaboration/Collaborators/UserPlugin.php
index 86a55aa428f..ad677703547 100644
--- a/lib/private/Collaboration/Collaborators/UserPlugin.php
+++ b/lib/private/Collaboration/Collaborators/UserPlugin.php
@@ -83,6 +83,8 @@ class UserPlugin implements ISearchPlugin {
}
}
+ $this->takeOutCurrentUser($users);
+
if (!$this->shareeEnumeration || sizeof($users) < $limit) {
$hasMoreResults = true;
}
@@ -146,4 +148,13 @@ class UserPlugin implements ISearchPlugin {
return $hasMoreResults;
}
+
+ public function takeOutCurrentUser(array &$users) {
+ $currentUser = $this->userSession->getUser();
+ if(!is_null($currentUser)) {
+ if (isset($users[$currentUser->getUID()])) {
+ unset($users[$currentUser->getUID()]);
+ }
+ }
+ }
}
diff --git a/lib/private/Comments/Comment.php b/lib/private/Comments/Comment.php
index acfebd32028..dd790c2e50a 100644
--- a/lib/private/Comments/Comment.php
+++ b/lib/private/Comments/Comment.php
@@ -232,10 +232,6 @@ class Comment implements IComment {
$uids = array_unique($mentions[0]);
$result = [];
foreach ($uids as $uid) {
- // exclude author, no self-mentioning
- if($uid === '@' . $this->getActorId()) {
- continue;
- }
$result[] = ['type' => 'user', 'id' => substr($uid, 1)];
}
return $result;
diff --git a/tests/lib/Collaboration/Collaborators/UserPluginTest.php b/tests/lib/Collaboration/Collaborators/UserPluginTest.php
index 7d6d9c645a0..cfb97de8676 100644
--- a/tests/lib/Collaboration/Collaborators/UserPluginTest.php
+++ b/tests/lib/Collaboration/Collaborators/UserPluginTest.php
@@ -442,4 +442,51 @@ class UserPluginTest extends TestCase {
$this->assertEquals($expected, $result['users']);
$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));
+ }
}
diff --git a/tests/lib/Comments/CommentTest.php b/tests/lib/Comments/CommentTest.php
index 10ec4bae7d5..6f67356ccae 100644
--- a/tests/lib/Comments/CommentTest.php
+++ b/tests/lib/Comments/CommentTest.php
@@ -8,6 +8,9 @@ use Test\TestCase;
class CommentTest extends TestCase {
+ /**
+ * @throws \OCP\Comments\IllegalIDChangeException
+ */
public function testSettersValidInput() {
$comment = new Comment();
@@ -58,6 +61,9 @@ class CommentTest extends TestCase {
$comment->setId('c17');
}
+ /**
+ * @throws \OCP\Comments\IllegalIDChangeException
+ */
public function testResetId() {
$comment = new Comment();
$comment->setId('c23');
@@ -133,7 +139,7 @@ class CommentTest extends TestCase {
'@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' .
@@ -159,7 +165,6 @@ class CommentTest extends TestCase {
$uid = array_shift($expectedUids);
$this->assertSame('user', $mention['type']);
$this->assertSame($uid, $mention['id']);
- $this->assertNotSame($author, $mention['id']);
}
$this->assertEmpty($mentions);
$this->assertEmpty($expectedUids);