Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/polls.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVinzenz Rosenkranz <v1r0x@users.noreply.github.com>2016-10-22 02:03:56 +0300
committerGitHub <noreply@github.com>2016-10-22 02:03:56 +0300
commita6bc014a564d523f17fddf23983c19e35e7a6b11 (patch)
tree8d4268fcddd63a727e45e06057a269c4020e707a /controller
parent329f52e0d4fb2426c57b065071e8b8c6bd1b266c (diff)
parentfe86cb3e34957c8b0afd5d91f8957a4f647caeca (diff)
Merge pull request #80 from v1r0x/enh-group-display
enhance the user/group selections
Diffstat (limited to 'controller')
-rw-r--r--controller/pagecontroller.php108
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);
}