You are here

function og_subgroups_get_users in Subgroups for Organic groups 5.3

Retrieve an array of all users that are members of the group If the recursive flag is true, then users of children are returned as well

6 calls to og_subgroups_get_users()
og_subgroups_edit_members_page in ./og_subgroups.module
og_subgroups_form_alter in ./og_subgroups.module
Implementation of hook_form_alter().
og_subgroups_members_page in ./og_subgroups.module
Output a viewable page of group members
og_subgroups_members_select in ./og_subgroups.module
og_subgroups_save_members in ./og_subgroups.module

... See full list

File

./og_subgroups.module, line 619
Maintains a hierarchy of group/subgroup relationships.

Code

function og_subgroups_get_users($return_type = 'users', $gid = 0, $recursive = 0) {
  if ($gid > 0) {
    $result = db_query(og_list_users_sql(), $gid);
  }
  else {
    $result = db_query("SELECT u.uid, u.name, u.mail, u.picture FROM {users} u");
  }
  $users = array();
  while ($user = db_fetch_object($result)) {
    if ($return_type == 'links') {
      $users[$user->uid] = theme('username', $user);
    }
    if ($return_type == 'users') {
      $users[$user->uid] = $user;
    }
    if ($return_type == 'names') {
      $users[$user->uid] = $user->name;
    }
  }
  if ($recursive) {
    $children = og_subgroups_get_children($gid);
    foreach ($children as $cid => $cname) {

      // We'll have to merge ourselves due to desire to have unique keys
      // Original code just used array_merge but this leaves us with reindexed numeric keys
      // which will not work.  The uid keys MUST be preserved uniquely.
      $susers = og_subgroups_get_users($return_type, $cid, 1);
      foreach ($susers as $sid => $cname) {
        if (empty($users[$sid])) {
          $users[$sid] = $cname;
        }
      }
    }
  }
  return $users;
}