function __construct($group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned, $exclude)
 {
     global $bp;
     $this->pag_page = isset($_REQUEST['mlpage']) ? intval($_REQUEST['mlpage']) : 1;
     $this->pag_num = isset($_REQUEST['num']) ? intval($_REQUEST['num']) : $per_page;
     $this->members = BP_Groups_Member::get_all_for_group($group_id, $this->pag_num, $this->pag_page, $exclude_admins_mods, $exclude_banned, $exclude);
     if (!$max || $max >= (int) $this->members['count']) {
         $this->total_member_count = (int) $this->members['count'];
     } else {
         $this->total_member_count = (int) $max;
     }
     $this->members = $this->members['members'];
     if ($max) {
         if ($max >= count($this->members)) {
             $this->member_count = count($this->members);
         } else {
             $this->member_count = (int) $max;
         }
     } else {
         $this->member_count = count($this->members);
     }
     $this->pag_links = paginate_links(array('base' => add_query_arg('mlpage', '%#%'), 'format' => '', 'total' => ceil($this->total_member_count / $this->pag_num), 'current' => $this->pag_page, 'prev_text' => '←', 'next_text' => '→', 'mid_size' => 1));
 }
/**
 * Fetch the members of a group.
 *
 * Since BuddyPress 1.8, a procedural wrapper for BP_Group_Member_Query.
 * Previously called BP_Groups_Member::get_all_for_group().
 *
 * To use the legacy query, filter 'bp_use_legacy_group_member_query',
 * returning true.
 *
 * @param array $args {
 *     An array of optional arguments.
 *     @type int      $group_id     ID of the group whose members are being queried.
 *                                  Default: current group ID.
 *     @type int      $page         Page of results to be queried. Default: 1.
 *     @type int      $per_page     Number of items to return per page of results.
 *                                  Default: 20.
 *     @type int      $max          Optional. Max number of items to return.
 *     @type array    $exclude      Optional. Array of user IDs to exclude.
 *     @type bool|int $value        True (or 1) to exclude admins and mods from results.
 *                                  Default: 1.
 *     @type bool|int $value        True (or 1) to exclude banned users from results.
 *                                  Default: 1.
 *     @type array    $group_role   Optional. Array of group roles to include.
 *     @type string   $search_terms Optional. Filter results by a search string.
 *     @type string   $type         Optional. Sort the order of results. 'last_joined',
 *                                  'first_joined', or any of the $type params available
 *                                  in {@link BP_User_Query}. Default: 'last_joined'.
 * }
 * @return array Multi-d array of 'members' list and 'count'.
 */
function groups_get_group_members($args = array())
{
    // Backward compatibility with old method of passing arguments
    if (!is_array($args) || func_num_args() > 1) {
        _deprecated_argument(__METHOD__, '2.0.0', sprintf(__('Arguments passed to %1$s should be in an associative array. See the inline documentation at %2$s for more details.', 'buddypress'), __METHOD__, __FILE__));
        $old_args_keys = array(0 => 'group_id', 1 => 'per_page', 2 => 'page', 3 => 'exclude_admins_mods', 4 => 'exclude_banned', 5 => 'exclude', 6 => 'group_role');
        $func_args = func_get_args();
        $args = bp_core_parse_args_array($old_args_keys, $func_args);
    }
    $r = wp_parse_args($args, array('group_id' => bp_get_current_group_id(), 'per_page' => false, 'page' => false, 'exclude_admins_mods' => true, 'exclude_banned' => true, 'exclude' => false, 'group_role' => array(), 'search_terms' => false, 'type' => 'last_joined'));
    // For legacy users. Use of BP_Groups_Member::get_all_for_group()
    // is deprecated. func_get_args() can't be passed to a function in PHP
    // 5.2.x, so we create a variable
    $func_args = func_get_args();
    if (apply_filters('bp_use_legacy_group_member_query', false, __FUNCTION__, $func_args)) {
        $retval = BP_Groups_Member::get_all_for_group($r['group_id'], $r['per_page'], $r['page'], $r['exclude_admins_mods'], $r['exclude_banned'], $r['exclude']);
    } else {
        // exclude_admins_mods and exclude_banned are legacy arguments.
        // Convert to group_role
        if (empty($r['group_role'])) {
            $r['group_role'] = array('member');
            if (!$r['exclude_admins_mods']) {
                $r['group_role'][] = 'mod';
                $r['group_role'][] = 'admin';
            }
            if (!$r['exclude_banned']) {
                $r['group_role'][] = 'banned';
            }
        }
        // Perform the group member query (extends BP_User_Query)
        $members = new BP_Group_Member_Query(array('group_id' => $r['group_id'], 'per_page' => $r['per_page'], 'page' => $r['page'], 'group_role' => $r['group_role'], 'exclude' => $r['exclude'], 'search_terms' => $r['search_terms'], 'type' => $r['type']));
        // Structure the return value as expected by the template functions
        $retval = array('members' => array_values($members->results), 'count' => $members->total_users);
    }
    return $retval;
}
 /**
  * gradebook_screen( $vars )
  *
  * Hooks into screen_handler
  * Adds a UI to assignments for gradebook management.
  *
  * @param Array $vars a set of variables received for this screen template
  * @return Array $vars a set of variable passed to this screen template
  */
 function gradebook_screen($vars)
 {
     global $bp;
     $nonce_name = 'gradebook_nonce';
     $nonce_import_name = 'gradebook_import_nonce';
     $nonce_clear_name = 'gradebook_clear_nonce';
     if (!$this->has_gradebook_caps($bp->loggedin_user->id) && !is_super_admin()) {
         $vars['die'] = __('BuddyPress Courseware Error while forbidden user tried to manage gradebook.', 'bpsp');
         return $vars;
     }
     $students = BP_Groups_Member::get_all_for_group($bp->groups->current_group->id);
     if (isset($_POST['_nxtnonce'])) {
         $is_nonce = nxt_verify_nonce($_POST['_nxtnonce'], $nonce_name);
     }
     if (isset($_POST['_nxtnonce']) && true != $is_nonce) {
         $vars['die'] = __('BuddyPress Courseware Nonce Error while updating gradebook.', 'bpsp');
         return $vars;
     }
     $gradebook_id = $this->has_gradebook($this->current_assignment);
     if (!$gradebook_id) {
         $vars['die'] = __('BuddyPress Courseware Error while creating gradebook.', 'bpsp');
         return $vars;
     }
     if (!empty($_POST['grade'])) {
         foreach ($_POST['grade'] as $grade) {
             if (!empty($grade) && !empty($grade['uid']) && !empty($grade['value'])) {
                 # If grade was added or updated!
                 $status = $this->save_grade($gradebook_id, $grade);
                 if ($status !== null) {
                     $data = array('grade' => $grade, 'teacher' => $bp->loggedin_user->userdata, 'assignment' => $this->current_assignment);
                     if ($status == true) {
                         do_action('courseware_grade_added', $data);
                     } else {
                         do_action('courseware_grade_updated', $data);
                     }
                 }
             }
         }
         $vars['message'] = __('Gradebook saved.', 'bpsp');
     }
     $vars['name'] = 'gradebook';
     $vars['students'] = $students['members'];
     if (empty($vars['grades'])) {
         $vars['grades'] = $this->load_grades($gradebook_id, true);
     }
     $vars['bpsp_gradebook_format'] = get_option('bpsp_gradebook_format');
     $vars['assignment'] = BPSP_Assignments::is_assignment($this->current_assignment);
     $vars['gradebook_permalink'] = $vars['assignment_permalink'] . '/gradebook';
     $vars['clear_gradebook_permalink'] = add_query_arg('_nxtnonce', nxt_create_nonce($nonce_clear_name), $vars['gradebook_permalink'] . '/clear');
     $vars['import_gradebook_nonce'] = nxt_nonce_field($nonce_import_name, '_nxtnonce', true, false);
     $vars['nonce'] = nxt_nonce_field($nonce_name, '_nxtnonce', true, false);
     return $vars;
 }
/**
 * Fetch the members of a group
 *
 * Since BuddyPress 1.8, a procedural wrapper for BP_Group_Member_Query.
 * Previously called BP_Groups_Member::get_all_for_group().
 *
 * To use the legacy query, filter 'bp_use_legacy_group_member_query',
 * returning true.
 *
 * @param int $group_id
 * @param int $limit Maximum members to return
 * @param int $page The page of results to return (requires $limit)
 * @param bool $exclude_admins_mods Whether to exclude admins and mods
 * @param bool $exclude_banned Whether to exclude banned users
 * @param array|string $exclude Array or comma-sep list of users to exclude
 * @return array Multi-d array of 'members' list and 'count'
 */
function groups_get_group_members($group_id, $limit = false, $page = false, $exclude_admins_mods = true, $exclude_banned = true, $exclude = false, $group_role = false)
{
    // For legacy users. Use of BP_Groups_Member::get_all_for_group()
    // is deprecated. func_get_args() can't be passed to a function in PHP
    // 5.2.x, so we create a variable
    $func_args = func_get_args();
    if (apply_filters('bp_use_legacy_group_member_query', false, __FUNCTION__, $func_args)) {
        $retval = BP_Groups_Member::get_all_for_group($group_id, $limit, $page, $exclude_admins_mods, $exclude_banned, $exclude);
    } else {
        // exclude_admins_mods and exclude_banned are legacy arguments.
        // Convert to group_role
        if (empty($group_role)) {
            $group_role = array('member');
            if (!$exclude_admins_mods) {
                $group_role[] = 'mod';
                $group_role[] = 'admin';
            }
            if (!$exclude_banned) {
                $group_role[] = 'banned';
            }
        }
        // Perform the group member query (extends BP_User_Query)
        $members = new BP_Group_Member_Query(array('group_id' => $group_id, 'per_page' => $limit, 'page' => $page, 'group_role' => $group_role, 'exclude' => $exclude, 'type' => 'last_modified'));
        // Structure the return value as expected by the template functions
        $retval = array('members' => array_values($members->results), 'count' => $members->total_users);
    }
    return $retval;
}
 /**
  * @expectedDeprecated BP_Groups_Member::get_all_for_group
  */
 public function test_get_all_for_group_with_exclude()
 {
     $g1 = $this->factory->group->create();
     $u1 = $this->factory->user->create();
     $u2 = $this->factory->user->create();
     self::add_user_to_group($u1, $g1);
     self::add_user_to_group($u2, $g1);
     $members = BP_Groups_Member::get_all_for_group($g1, false, false, true, true, array($u1));
     $mm = (array) $members['members'];
     $ids = wp_list_pluck($mm, 'user_id');
     $this->assertEquals(array($u2), $ids);
 }
function groups_get_group_members($group_id, $limit = false, $page = false)
{
    return BP_Groups_Member::get_all_for_group($group_id, $limit, $page);
}
function ass_manage_all_members_email_update()
{
    global $bp;
    if (bp_is_groups_component() && bp_is_action_variable('manage-members', 0)) {
        if (!is_super_admin()) {
            return false;
        }
        $action = bp_action_variable(2);
        if (bp_is_action_variable('email-all', 1) && ('no' == $action || 'sum' == $action || 'dig' == $action || 'sub' == $action || 'supersub' == $action)) {
            if (!check_admin_referer('ass_change_all_email_sub')) {
                return false;
            }
            $result = BP_Groups_Member::get_all_for_group(bp_get_current_group_id(), 0, 0, 0);
            // set the last value to 1 to exclude admins
            $members = $result['members'];
            foreach ($members as $member) {
                ass_group_subscription($action, $member->user_id, bp_get_current_group_id());
            }
            bp_core_add_message(__('All user email status\'s changed successfully', 'bp-ass'));
            bp_core_redirect(bp_get_group_permalink(groups_get_current_group()) . 'admin/manage-members/');
        }
    }
}