Пример #1
0
 /**
  * get a list of all display names in a group
  * @param string $gid
  * @param string $search
  * @param int $limit
  * @param int $offset
  * @return array an array of display names (value) and user ids (key)
  */
 public function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0)
 {
     $group = $this->get($gid);
     if (is_null($group)) {
         return array();
     }
     $search = trim($search);
     $groupUsers = array();
     if (!empty($search)) {
         // only user backends have the capability to do a complex search for users
         $searchOffset = 0;
         $searchLimit = $limit * 100;
         if ($limit === -1) {
             $searchLimit = 500;
         }
         do {
             $filteredUsers = $this->userManager->searchDisplayName($search, $searchLimit, $searchOffset);
             foreach ($filteredUsers as $filteredUser) {
                 if ($group->inGroup($filteredUser)) {
                     $groupUsers[] = $filteredUser;
                 }
             }
             $searchOffset += $searchLimit;
         } while (count($groupUsers) < $searchLimit + $offset && count($filteredUsers) >= $searchLimit);
         if ($limit === -1) {
             $groupUsers = array_slice($groupUsers, $offset);
         } else {
             $groupUsers = array_slice($groupUsers, $offset, $limit);
         }
     } else {
         $groupUsers = $group->searchUsers('', $limit, $offset);
     }
     $matchingUsers = array();
     foreach ($groupUsers as $groupUser) {
         $matchingUsers[$groupUser->getUID()] = $groupUser->getDisplayName();
     }
     return $matchingUsers;
 }