Skip to content

Commit

Permalink
Merge pull request #8779 from nextcloud/backport/8255/show-group-disp…
Browse files Browse the repository at this point in the history
…lay-names

[stable13] Show group display names
  • Loading branch information
skjnldsv authored Apr 6, 2018
2 parents b9ca121 + 5e15c76 commit d45a889
Show file tree
Hide file tree
Showing 10 changed files with 178 additions and 67 deletions.
67 changes: 46 additions & 21 deletions apps/dav/lib/CalDAV/Activity/Provider/Base.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
use OCA\DAV\CalDAV\CalDavBackend;
use OCP\Activity\IEvent;
use OCP\Activity\IProvider;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IUser;
use OCP\IUserManager;
Expand All @@ -35,14 +37,22 @@ abstract class Base implements IProvider {
/** @var IUserManager */
protected $userManager;

/** @var string[] cached displayNames - key is the UID and value the displayname */
protected $displayNames = [];
/** @var string[] */
protected $userDisplayNames = [];

/** @var IGroupManager */
protected $groupManager;

/** @var string[] */
protected $groupDisplayNames = [];

/**
* @param IUserManager $userManager
* @param IGroupManager $groupManager
*/
public function __construct(IUserManager $userManager) {
public function __construct(IUserManager $userManager, IGroupManager $groupManager) {
$this->userManager = $userManager;
$this->groupManager = $groupManager;
}

/**
Expand Down Expand Up @@ -112,44 +122,59 @@ protected function generateLegacyCalendarParameter($id, $name) {
];
}

/**
* @param string $id
* @return array
*/
protected function generateGroupParameter($id) {
return [
'type' => 'group',
'id' => $id,
'name' => $id,
];
}

/**
* @param string $uid
* @return array
*/
protected function generateUserParameter($uid) {
if (!isset($this->displayNames[$uid])) {
$this->displayNames[$uid] = $this->getDisplayName($uid);
if (!isset($this->userDisplayNames[$uid])) {
$this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
}

return [
'type' => 'user',
'id' => $uid,
'name' => $this->displayNames[$uid],
'name' => $this->userDisplayNames[$uid],
];
}

/**
* @param string $uid
* @return string
*/
protected function getDisplayName($uid) {
protected function getUserDisplayName($uid) {
$user = $this->userManager->get($uid);
if ($user instanceof IUser) {
return $user->getDisplayName();
} else {
return $uid;
}
return $uid;
}

/**
* @param string $gid
* @return array
*/
protected function generateGroupParameter($gid) {
if (!isset($this->groupDisplayNames[$gid])) {
$this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
}

return [
'type' => 'group',
'id' => $gid,
'name' => $this->groupDisplayNames[$gid],
];
}

/**
* @param string $gid
* @return string
*/
protected function getGroupDisplayName($gid) {
$group = $this->groupManager->get($gid);
if ($group instanceof IGroup) {
return $group->getDisplayName();
}
return $gid;
}
}
6 changes: 4 additions & 2 deletions apps/dav/lib/CalDAV/Activity/Provider/Calendar.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
use OCP\Activity\IEvent;
use OCP\Activity\IEventMerger;
use OCP\Activity\IManager;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserManager;
Expand Down Expand Up @@ -63,10 +64,11 @@ class Calendar extends Base {
* @param IURLGenerator $url
* @param IManager $activityManager
* @param IUserManager $userManager
* @param IGroupManager $groupManager
* @param IEventMerger $eventMerger
*/
public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IEventMerger $eventMerger) {
parent::__construct($userManager);
public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager, IEventMerger $eventMerger) {
parent::__construct($userManager, $groupManager);
$this->languageFactory = $languageFactory;
$this->url = $url;
$this->activityManager = $activityManager;
Expand Down
6 changes: 4 additions & 2 deletions apps/dav/lib/CalDAV/Activity/Provider/Event.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
use OCP\Activity\IEvent;
use OCP\Activity\IEventMerger;
use OCP\Activity\IManager;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserManager;
Expand Down Expand Up @@ -57,10 +58,11 @@ class Event extends Base {
* @param IURLGenerator $url
* @param IManager $activityManager
* @param IUserManager $userManager
* @param IGroupManager $groupManager
* @param IEventMerger $eventMerger
*/
public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IEventMerger $eventMerger) {
parent::__construct($userManager);
public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager, IEventMerger $eventMerger) {
parent::__construct($userManager, $groupManager);
$this->languageFactory = $languageFactory;
$this->url = $url;
$this->activityManager = $activityManager;
Expand Down
8 changes: 7 additions & 1 deletion apps/dav/tests/unit/CalDAV/Activity/Provider/BaseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,28 @@
use OCP\IL10N;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IGroupManager;
use Test\TestCase;

class BaseTest extends TestCase {

/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
protected $userManager;

/** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
protected $groupManager;

/** @var IProvider|Base|\PHPUnit_Framework_MockObject_MockObject */
protected $provider;

protected function setUp() {
parent::setUp();
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
$this->provider = $this->getMockBuilder(Base::class)
->setConstructorArgs([
$this->userManager
$this->userManager,
$this->groupManager
])
->setMethods(['parse'])
->getMock();
Expand Down
64 changes: 54 additions & 10 deletions apps/files_sharing/lib/Activity/Providers/Groups.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@
namespace OCA\Files_Sharing\Activity\Providers;

use OCP\Activity\IEvent;
use OCP\Activity\IManager;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\L10N\IFactory;

class Groups extends Base {

Expand All @@ -32,6 +38,24 @@ class Groups extends Base {
const SUBJECT_UNSHARED_GROUP_SELF = 'unshared_group_self';
const SUBJECT_UNSHARED_GROUP_BY = 'unshared_group_by';

/** @var IGroupManager */
protected $groupManager;

/** @var string[] */
protected $groupDisplayNames = [];

/**
* @param IFactory $languageFactory
* @param IURLGenerator $url
* @param IManager $activityManager
* @param IUserManager $userManager
* @param IGroupManager $groupManager
*/
public function __construct(IFactory $languageFactory, IURLGenerator $url, IManager $activityManager, IUserManager $userManager, IGroupManager $groupManager) {
parent::__construct($languageFactory, $url, $activityManager, $userManager);
$this->groupManager = $groupManager;
}

/**
* @param IEvent $event
* @return IEvent
Expand Down Expand Up @@ -103,24 +127,44 @@ protected function getParsedParameters(IEvent $event) {
case self::SUBJECT_UNSHARED_GROUP_BY:
return [
'file' => $this->getFile($parameters[0], $event),
'group' => [
'type' => 'group',
'id' => $parameters[2],
'name' => $parameters[2],
],
'group' => $this->generateGroupParameter($parameters[2]),
'actor' => $this->getUser($parameters[1]),
];
case self::SUBJECT_SHARED_GROUP_SELF:
case self::SUBJECT_UNSHARED_GROUP_SELF:
return [
'file' => $this->getFile($parameters[0], $event),
'group' => [
'type' => 'group',
'id' => $parameters[1],
'name' => $parameters[1],
],
'group' => $this->generateGroupParameter($parameters[1]),
];
}
return [];
}

/**
* @param string $gid
* @return array
*/
protected function generateGroupParameter($gid) {
if (!isset($this->groupDisplayNames[$gid])) {
$this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
}

return [
'type' => 'group',
'id' => $gid,
'name' => $this->groupDisplayNames[$gid],
];
}

/**
* @param string $gid
* @return string
*/
protected function getGroupDisplayName($gid) {
$group = $this->groupManager->get($gid);
if ($group instanceof IGroup) {
return $group->getDisplayName();
}
return $gid;
}
}
2 changes: 1 addition & 1 deletion lib/private/Group/MetaData.php
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ private function addEntry(&$entries, &$sortKeys, &$sortIndex, $data) {
private function generateGroupMetaData(\OCP\IGroup $group, $userSearch) {
return array(
'id' => $group->getGID(),
'name' => $group->getGID(),
'name' => $group->getDisplayName(),
'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/private/Settings/Personal/PersonalInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ public function getPriority() {
private function getGroups(IUser $user) {
$groups = array_map(
function(IGroup $group) {
return $group->getGID();
return $group->getDisplayName();
},
$this->groupManager->getUserGroups($user)
);
Expand Down
15 changes: 5 additions & 10 deletions settings/Controller/GroupsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
use OC\Group\MetaData;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IL10N;
use OCP\IRequest;
Expand Down Expand Up @@ -108,13 +109,9 @@ public function create($id) {
Http::STATUS_CONFLICT
);
}
if($this->groupManager->createGroup($id)) {
return new DataResponse(
array(
'groupname' => $id
),
Http::STATUS_CREATED
);
$group = $this->groupManager->createGroup($id);
if($group instanceof IGroup) {
return new DataResponse(['groupname' => $group->getDisplayName()], Http::STATUS_CREATED);
}

return new DataResponse(
Expand All @@ -140,9 +137,7 @@ public function destroy($id) {
return new DataResponse(
array(
'status' => 'success',
'data' => array(
'groupname' => $id
)
'data' => ['groupname' => $group->getDisplayName()]
),
Http::STATUS_NO_CONTENT
);
Expand Down
Loading

0 comments on commit d45a889

Please sign in to comment.