diff options
author | Vinzenz Rosenkranz <v1r0x@users.noreply.github.com> | 2016-10-22 02:03:56 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-22 02:03:56 +0300 |
commit | a6bc014a564d523f17fddf23983c19e35e7a6b11 (patch) | |
tree | 8d4268fcddd63a727e45e06057a269c4020e707a /controller | |
parent | 329f52e0d4fb2426c57b065071e8b8c6bd1b266c (diff) | |
parent | fe86cb3e34957c8b0afd5d91f8957a4f647caeca (diff) |
Merge pull request #80 from v1r0x/enh-group-display
enhance the user/group selections
Diffstat (limited to 'controller')
-rw-r--r-- | controller/pagecontroller.php | 108 |
1 files changed, 106 insertions, 2 deletions
diff --git a/controller/pagecontroller.php b/controller/pagecontroller.php index e0002966..2b2b1806 100644 --- a/controller/pagecontroller.php +++ b/controller/pagecontroller.php @@ -29,6 +29,8 @@ 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; use \OCP\IL10N; @@ -57,8 +59,14 @@ 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, IL10N $trans, @@ -74,6 +82,8 @@ 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; $this->trans = $trans; @@ -88,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;*/ } /** @@ -210,7 +244,7 @@ class PageController extends Controller { if($this->userId !== $poll->getOwner()) return new TemplateResponse('polls', 'no.create.tmpl'); if($poll->getType() === '0') $dates = $this->dateMapper->findByPoll($poll->getId()); else $dates = $this->textMapper->findByPoll($poll->getId()); - return new TemplateResponse('polls', 'create.tmpl', ['poll' => $poll, 'dates' => $dates, 'userId' => $this->userId, 'userMgr' => $this->manager, 'urlGenerator' => $this->urlGenerator]); + return new TemplateResponse('polls', 'create.tmpl', ['poll' => $poll, 'dates' => $dates, 'userId' => $this->userId, 'userMgr' => $this->manager, 'shareManager' => $this->shareManager, 'urlGenerator' => $this->urlGenerator]); } /** @@ -281,7 +315,7 @@ class PageController extends Controller { * @NoCSRFRequired */ public function createPoll() { - return new TemplateResponse('polls', 'create.tmpl', ['userId' => $this->userId, 'userMgr' => $this->manager, 'urlGenerator' => $this->urlGenerator]); + return new TemplateResponse('polls', 'create.tmpl', ['userId' => $this->userId, 'userMgr' => $this->manager, 'shareManager' => $this->shareManager, 'urlGenerator' => $this->urlGenerator]); } /** @@ -441,6 +475,76 @@ class PageController extends Controller { return new JSONResponse(array('comment' => $commentBox, 'date' => date('Y-m-d H:i:s'), 'userName' => $newUserId)); } + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function search($searchTerm, $groups, $users) { + return array_merge($this->searchForGroups($searchTerm, $groups), $this->searchForUsers($searchTerm, $users)); + } + + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function searchForGroups($searchTerm, $groups) { + $selectedGroups = json_decode($groups); + $groups = $this->groupManager->search($searchTerm); + $gids = array(); + $sgids = array(); + foreach($selectedGroups as $sg) { + $sgids[] = str_replace('group_', '', $sg); + } + foreach($groups as $g) { + $gids[] = $g->getGID(); + } + $diffGids = array_diff($gids, $sgids); + $gids = array(); + foreach($diffGids as $g) { + $gids[] = ['gid' => $g, 'isGroup' => true]; + } + return $gids; + } + + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function searchForUsers($searchTerm, $users) { + $selectedUsers = json_decode($users); + \OCP\Util::writeLog("polls", print_r($selectedUsers, true), \OCP\Util::ERROR); + $userNames = $this->userMgr->searchDisplayName($searchTerm); + $users = array(); + $susers = array(); + foreach($selectedUsers as $su) { + $susers[] = str_replace('user_', '', $su); + } + foreach($userNames as $u) { + $alreadyAdded = false; + foreach($susers as &$su) { + if($su === $u->getUID()) { + unset($su); + $alreadyAdded = true; + break; + } + } + if(!$alreadyAdded) { + $users[] = array('uid' => $u->getUID(), 'displayName' => $u->getDisplayName(), 'isGroup' => false); + } else { + continue; + } + } + return $users; + } + + /** + * @NoAdminRequired + * @NoCSRFRequired + */ + public function getDisplayName($username) { + return $this->manager->get($username)->getDisplayName(); + } + public function getPollsForUser() { return $this->eventMapper->findAllForUser($this->userId); } |