/** * Get Dynamic ugroups members * * @param Integer $ugroupId Id of the uGroup * @param Integer $groupId Id of the project * * @return DataAccessResult */ public function getDynamicUGroupsMembers($ugroupId, $groupId) { if ($ugroupId <= 100) { $dao = new UGroupUserDao(CodendiDataAccess::instance()); return $dao->searchUserByDynamicUGroupId($ugroupId, $groupId); } }
/** * @param PFUSer $user * @param int $ugroup_id * @param int $group_id * @return boolean */ public function isDynamicUGroupMember(PFUSer $user, $ugroup_id, $group_id) { $dao = new UGroupUserDao(); return $dao->isDynamicUGroupMember($user->getId(), $ugroup_id, $group_id); }
/** * Display the content of the members pane * * @param Integer $groupId Id of the project * @param Integer $ugroupId Id of the user group * @param HTTPRequest $request HTTP request * * @return String */ private function displayUgroupMembers($groupId, $ugroupId, $request) { $hp = Codendi_HTMLPurifier::instance(); $ugroupUpdateUsersAllowed = !$this->ugroup->isBound(); $em = EventManager::instance(); $em->processEvent(Event::UGROUP_UPDATE_USERS_ALLOWED, array('ugroup_id' => $ugroupId, 'allowed' => &$ugroupUpdateUsersAllowed)); $content = ''; $content .= '<div style="padding-left:10px">'; $content .= '<table><tr valign="top"><td>'; // Get existing members from group $content .= '<h2>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'group_members') . '</h2>'; $content .= '<div class="admin_group_members">'; $members = $this->ugroup->getMembers(); if (count($members) > 0) { $i = 0; $userHelper = UserHelper::instance(); $content .= '<ul>'; foreach ($members as $user) { $content .= '<li>'; if ($ugroupUpdateUsersAllowed) { $content .= $this->project_admin_bullet_user_content($user->getId(), 'remove'); } $content .= ' ' . $hp->purify($userHelper->getDisplayNameFromUser($user)); $content .= '</li>'; } $content .= '</ul>'; } else { $content .= $GLOBALS['Language']->getText('project_admin_editugroup', 'nobody_yet'); } $content .= '</div>'; if ($ugroupUpdateUsersAllowed) { //Display the form $selected = 'selected="selected"'; $content .= '</td><td style="padding-left: 1em;">'; $content .= '<h2>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'add_users_to') . ' ' . $hp->purify($this->ugroup->getName(), CODENDI_PURIFIER_CONVERT_HTML) . '</h2>'; $content .= ' <form method="post" class="form-inline" action=""> <input type="hidden" name="func" value="edit" /> <input type="hidden" name="action" value="edit_ugroup_members" /> <input type="hidden" name="ugroup_id" value="' . $this->ugroup->getId() . '" /> <input type="hidden" name="group_id" value="' . $this->ugroup->getProjectId() . '" /> <label> ' . $GLOBALS['Language']->getText('project_ugroup_user', 'add_username') . ' <input type="text" name="add_user_name" id="ugroup_add_user" value="" /></label> <input class="btn" type="submit" value="' . $GLOBALS['Language']->getText('global', 'add') . '" /> </form> '; $GLOBALS['HTML']->addUserAutocompleteOn('ugroup_add_user', true); $content .= '<form action="" method="GET">'; $content .= '<input type="hidden" name="group_id" value="' . (int) $groupId . '" />'; $content .= '<input type="hidden" name="ugroup_id" value="' . (int) $ugroupId . '" />'; $content .= '<input type="hidden" name="func" value="edit" />'; $content .= '<input type="hidden" name="pane" value="members" />'; $content .= '<input type="hidden" name="action" value="filter_users" />'; $content .= '<input type="hidden" name="offset" value="' . (int) $this->validated_request['offset'] . '" />'; //Filter $content .= '<p>'; $content .= $GLOBALS['Language']->getText('project_admin_editugroup', 'search_in') . ' '; $content .= '<select name="in_project">'; $content .= '<option value="0" ' . (!$this->validated_request['in_project'] ? $selected : '') . '>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'any_project') . '</option>'; $content .= '<option value="' . (int) $groupId . '" ' . ($this->validated_request['in_project'] == $groupId ? $selected : '') . '>' . $GLOBALS['Language']->getText('project_admin_editugroup', 'this_project') . '</option>'; $content .= '</select>'; $content .= $GLOBALS['Language']->getText('project_admin_editugroup', 'name_contains') . ' '; //contains $content .= '<input type="text" name="search" value="' . $hp->purify($this->validated_request['search'], CODENDI_PURIFIER_CONVERT_HTML) . '" class="textfield_medium" /> '; //begin $content .= $GLOBALS['Language']->getText('project_admin_editugroup', 'begins') . ' '; $content .= '<select name="begin">'; $content .= '<option value="" ' . (in_array($this->validated_request['begin'], $this->validated_request['allowed_begin_values']) ? $selected : '') . '></option>'; foreach ($this->validated_request['allowed_begin_values'] as $b) { $content .= '<option value="' . $b . '" ' . ($b == $this->validated_request['begin'] ? $selected : '') . '>' . $b . '</option>'; } $content .= '</select>. '; //Display $content .= '<span style="white-space:nowrap;">' . $GLOBALS['Language']->getText('project_admin_editugroup', 'show') . ' '; //number per page $content .= '<select name="number_per_page">'; $content .= '<option ' . ($this->validated_request['number_per_page'] == 15 ? $selected : '') . '>15</option>'; $content .= '<option ' . ($this->validated_request['number_per_page'] == 30 ? $selected : '') . '>30</option>'; $content .= '<option ' . ($this->validated_request['number_per_page'] == 60 ? $selected : '') . '>60</option>'; if (!in_array($this->validated_request['number_per_page'], array(15, 30, 60))) { $content .= '<option ' . $selected . '>' . (int) $this->validated_request['number_per_page'] . '</option>'; } $content .= '</select> '; $content .= $GLOBALS['Language']->getText('project_admin_editugroup', 'users_per_page') . ' '; $content .= '<input class="btn" type="submit" name="browse" value="Browse" /></span>'; $content .= '</p>'; $dao = new UGroupUserDao(); $result = $dao->searchUsersToAdd($ugroupId, $this->validated_request); $res = $result['result']; $res = $result['result']; $numTotalRows = $result['num_total_rows']; $content .= $this->displayUserResultTable($res); //Jump to page $nbOfPages = ceil($numTotalRows / $this->validated_request['number_per_page']); $currentPage = round($this->validated_request['offset'] / $this->validated_request['number_per_page']); $content .= '<div style="font-family:Verdana">Page: '; $width = 10; for ($i = 0; $i < $nbOfPages; ++$i) { if ($i == 0 || $i == $nbOfPages - 1 || $currentPage - $width / 2 <= $i && $i <= $width / 2 + $currentPage) { $content .= '<a href="?' . 'group_id=' . (int) $groupId . '&ugroup_id=' . (int) $ugroupId . '&func=edit' . '&pane=members' . '&offset=' . (int) ($i * $this->validated_request['number_per_page']) . '&number_per_page=' . (int) $this->validated_request['number_per_page'] . '&search=' . urlencode($this->validated_request['search']) . '&begin=' . urlencode($this->validated_request['begin']) . '&in_project=' . (int) $this->validated_request['in_project'] . '">'; if ($i == $currentPage) { $content .= '<b>' . ($i + 1) . '</b>'; } else { $content .= $i + 1; } $content .= '</a> '; } else { if ($currentPage - $width / 2 - 1 == $i || $currentPage + $width / 2 + 1 == $i) { $content .= '... '; } } } $content .= '</div>'; $content .= '</form>'; } $content .= '</td></tr></table>'; $content .= '</div>'; return $content; }