示例#1
0
 /**
  * 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);
 }
示例#3
0
 /**
  * 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 . '&amp;ugroup_id=' . (int) $ugroupId . '&amp;func=edit' . '&amp;pane=members' . '&amp;offset=' . (int) ($i * $this->validated_request['number_per_page']) . '&amp;number_per_page=' . (int) $this->validated_request['number_per_page'] . '&amp;search=' . urlencode($this->validated_request['search']) . '&amp;begin=' . urlencode($this->validated_request['begin']) . '&amp;in_project=' . (int) $this->validated_request['in_project'] . '">';
                 if ($i == $currentPage) {
                     $content .= '<b>' . ($i + 1) . '</b>';
                 } else {
                     $content .= $i + 1;
                 }
                 $content .= '</a>&nbsp;';
             } else {
                 if ($currentPage - $width / 2 - 1 == $i || $currentPage + $width / 2 + 1 == $i) {
                     $content .= '...&nbsp;';
                 }
             }
         }
         $content .= '</div>';
         $content .= '</form>';
     }
     $content .= '</td></tr></table>';
     $content .= '</div>';
     return $content;
 }