/** * Provides all members of this group. * * @return UserGroupMember[] */ public function getMembers() { // First get all userIDs that are members. $qAllMembers = db_query(sprintf("SELECT `userID`,`access` FROM `%s_group_members` WHERE `groupID`=%d", db_prefix(), $this->getGroupID())); $nAllMembers = db_num($qAllMembers); // Verify that we got any users. if ($qAllMembers === false || $nAllMembers < 1) { return array(); } $members = array(); $userIDs = array(); $rowsIndexedByUID = array(); // Fetch each as User while ($row = db_fetch_assoc($qAllMembers)) { $userIDs[] = $row["userID"]; $rowsIndexedByUID[$row["userID"]] = $row; } // Fetch the users. $users = UserManager::getInstance()->getUsersByID($userIDs); if (count($users) < 1) { return array(); } // Create as UserGroupMember foreach ($users as $user) { $memberRow = $rowsIndexedByUID[$user->getUserID()]; $member = new UserGroupMember($user->getUserID()); $member->fillInfo($user->getInfo()); // fill extra variables $member->setAccess($memberRow["access"]); $member->setGroup($this); $members[] = $member; unset($memberRow, $user, $member); } return $members; }