diff options
author | Vinzenz <vinzenz.rosenkranz@gmail.com> | 2016-09-06 20:11:20 +0300 |
---|---|---|
committer | Vinzenz <vinzenz.rosenkranz@gmail.com> | 2016-09-06 20:11:20 +0300 |
commit | f5fadde9e27795a3d48a8101d24135bc50e445a2 (patch) | |
tree | 04771ada44f18c693846d42eafc336c2b2f94af8 /controller | |
parent | 4f9dcded6140ea317476cecc45dc127f99e0b53e (diff) |
only display groups based on search string
Diffstat (limited to 'controller')
-rw-r--r-- | controller/pagecontroller.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/controller/pagecontroller.php b/controller/pagecontroller.php index 4c335e56..53926ade 100644 --- a/controller/pagecontroller.php +++ b/controller/pagecontroller.php @@ -29,6 +29,7 @@ use \OCA\Polls\Db\ParticipationMapper; use \OCA\Polls\Db\ParticipationTextMapper; use \OCA\Polls\Db\TextMapper; use \OCP\IUserManager; +use \OCP\IGroupManager; use \OCP\Share\IManager; use \OCP\IAvatarManager; use \OCP\ILogger; @@ -58,9 +59,13 @@ class PageController extends Controller { private $logger; private $trans; private $userMgr; + private $groupManager; private $shareManager; + private $allowedGroups; + private $allowedUsers; public function __construct($appName, IRequest $request, IUserManager $manager, + IGroupManager $groupManager, IManager $shareManager, IAvatarManager $avatarManager, ILogger $logger, @@ -77,6 +82,7 @@ class PageController extends Controller { TextMapper $textMapper) { parent::__construct($appName, $request); $this->manager = $manager; + $this->groupManager = $groupManager; $this->shareManager = $shareManager; $this->avatarManager = $avatarManager; $this->logger = $logger; @@ -92,6 +98,30 @@ class PageController extends Controller { $this->participationTextMapper = $ParticipationTextMapper; $this->textMapper = $textMapper; $this->userMgr = \OC::$server->getUserManager(); + + if(!$this->shareManager->sharingDisabledForUser($this->userId)) { + if($this->shareManager->shareWithGroupMembersOnly()) { + $groups = OCP\OC_Group::getUserGroups($this->userId); + } else if($this->shareManager->allowGroupSharing()) { + $groups = \OC_Group::getGroups(); + } + sort($groups, SORT_NATURAL | SORT_FLAG_CASE ); + $this->allowedGroups = $groups; + } + $allUsers = \OC_User::GetUsers(); + if (!(\OC_User::isAdminUser($this->userId))) { + $usersSharedGroups = \OC_Group::usersInGroups($this->allowedGroups); + $usersNoGroup = array_diff($allUsers, \OC_Group::usersInGroups($allUsers)); + if($this->shareManager->shareWithGroupMembersOnly()) { + $users = $usersSharedGroups; + } else { + $users = array_merge($usersSharedGroups , $usersNoGroup); + } + } else { + $users = $allUsers; + } + sort($users, SORT_NATURAL | SORT_FLAG_CASE ); + $this->allowedUsers = $users; } /** @@ -441,6 +471,32 @@ class PageController extends Controller { return new JSONResponse(array('comment' => $commentBox, 'date' => date('Y-m-d H:i:s'), 'userName' => $this->manager->get($userId)->getDisplayName())); } + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function searchForGroups($searchTerm) { + $groups = $this->groupManager->search($searchTerm); + $gids = array(); + foreach($groups as $g) { + $gids[] = $g->getGID(); + } + return $gids; + } + + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function searchForUsers($searchTerm) { + $userNames = $this->userMgr->searchDisplayName($searchTerm); + $users = array(); + foreach($userNames as $u) { + $users[] = array('uid' => $u->getUID(), 'displayName' => $u->getDisplayName()); + } + return $users; + } + public function getPollsForUser() { return $this->eventMapper->findAllForUser($this->userId); } |