Backport of format self-mentions, but don't offer them #7914
comments should compile mentions also if done by author it is used by clients for formatting reasons, there is no reason not format the author if her handle is included in the comment body. It is unrelated to sending out notifications. Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de> do not offer the handle of the current user for auto completion Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de> add types to php doc Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
parent
266c64069f
commit
92bc33dd1e
|
@ -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;
|
||||
|
||||
|
|
|
@ -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()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue