onclick="javascript:location.href = 'admin.php?page=rs-group_members&cancel=1'"
			value="Cancel" class="button" />
	</div>
</form>
      
<?php 
        }
        break;
    case "update":
        //update groups members
        if ($_REQUEST['id']) {
            $group_id = $_REQUEST['id'];
            check_admin_referer('scoper-edit-group-members_' . $group_id);
            // add/delete members
            $current_members = ScoperAdminLib::get_group_members($group_id, COL_ID_RS);
            if ($delete_members = array_diff($current_members, $_POST['member'])) {
                ScoperAdminLib::remove_group_user($group_id, $delete_members);
            }
            if ($new_members = array_diff($_POST['member'], $current_members)) {
                ScoperAdminLib::add_group_user($group_id, $new_members);
            }
        }
    default:
        echo '<h2>' . __('Group Members', 'scoper') . '</h2>';
        $groups_url = 'admin.php?page=rs-groups';
        echo "<a href='{$groups_url}'>Back to Groups</a>";
        printGroupMembers();
}
?>
</div>
 function update_user_groups_multi_status($user_id, $stored_groups, $editable_group_ids)
 {
     global $current_rs_user;
     $posted_groups = array();
     $is_administrator = is_user_administrator_rs();
     $can_manage = $is_administrator || current_user_can('manage_groups');
     $can_moderate = $can_manage || current_user_can('recommend_group_membership');
     if (!$can_moderate && !current_user_can('request_group_membership')) {
         return;
     }
     if ($can_manage) {
         $posted_groups['active'] = explode(',', trim($_POST['current_agents_rs_csv'], ''));
     } else {
         $stored_groups = array_diff_key($stored_groups, array('active' => true));
     }
     if ($can_moderate) {
         $posted_groups['recommended'] = !empty($_POST['recommended_agents_rs_csv']) ? explode(',', trim($_POST['recommended_agents_rs_csv'], '')) : array();
         $stored_groups['recommended'] = array_fill_keys($current_rs_user->get_groups_for_user($current_rs_user->ID, array('status' => 'recommended')), true);
         $editable_group_ids['recommended'] = ScoperAdminLib::get_all_groups(FILTERED_RS, COL_ID_RS, array('reqd_caps' => 'recommend_group_membership'));
         if (isset($editable_group_ids['active'])) {
             $editable_group_ids['recommended'] = array_unique($editable_group_ids['recommended'] + $editable_group_ids['active']);
         }
     }
     $stored_groups['requested'] = array_fill_keys($current_rs_user->get_groups_for_user($current_rs_user->ID, array('status' => 'requested')), true);
     $editable_group_ids['requested'] = ScoperAdminLib::get_all_groups(FILTERED_RS, COL_ID_RS, array('reqd_caps' => 'request_group_membership'));
     if (isset($editable_group_ids['recommended'])) {
         $editable_group_ids['requested'] = array_unique($editable_group_ids['requested'] + $editable_group_ids['recommended']);
     }
     $posted_groups['requested'] = !empty($_POST['requested_agents_rs_csv']) ? explode(',', trim($_POST['requested_agents_rs_csv'], '')) : array();
     $all_posted_groups = agp_array_flatten($posted_groups);
     $all_stored_groups = array();
     foreach (array_keys($stored_groups) as $status) {
         $all_stored_groups = $all_stored_groups + $stored_groups[$status];
     }
     foreach ($stored_groups as $status => $stored) {
         if (!$editable_group_ids[$status]) {
             continue;
         }
         // remove group memberships which were not posted for any status, if logged user can edit the group
         foreach (array_keys($stored) as $group_id) {
             if (!in_array($group_id, $all_posted_groups)) {
                 if (in_array($group_id, $editable_group_ids[$status])) {
                     ScoperAdminLib::remove_group_user($group_id, $user_id);
                 }
             }
         }
     }
     foreach ($posted_groups as $status => $posted) {
         if (!$editable_group_ids[$status]) {
             continue;
         }
         // insert or update group memberships as specified, if logged user can edit the group
         foreach ($posted as $group_id) {
             if (in_array($group_id, $editable_group_ids[$status])) {
                 if (!in_array($group_id, $all_stored_groups)) {
                     ScoperAdminLib::add_group_user($group_id, $user_id, $status);
                 } elseif (!in_array($group_id, $stored_groups[$status])) {
                     ScoperAdminLib::update_group_user($group_id, $user_id, $status);
                 }
             }
         }
     }
 }
 function update_group_members_multi_status($group_id, $current_members)
 {
     $posted_members = array();
     $is_administrator = is_user_administrator_rs();
     $can_manage = $is_administrator || current_user_can('manage_groups');
     $can_moderate = $can_manage || current_user_can('recommend_group_membership');
     if (!$can_moderate && !current_user_can('request_group_membership')) {
         return;
     }
     if ($can_manage) {
         $posted_members['active'] = explode(',', trim($_POST['current_agents_rs_csv'], ','));
     } else {
         $current_members = array_diff_key($current_members, array('active' => true));
     }
     if ($can_moderate) {
         $current_members['recommended'] = ScoperAdminLib::get_group_members($group_id, COL_ID_RS, false, array('status' => 'recommended'));
         if (!empty($_POST['recommended_agents_rs_csv'])) {
             $posted_members['recommended'] = explode(',', trim($_POST['recommended_agents_rs_csv'], ','));
         }
     }
     $current_members['requested'] = ScoperAdminLib::get_group_members($group_id, COL_ID_RS, false, array('status' => 'requested'));
     if (!empty($_POST['requested_agents_rs_csv'])) {
         $posted_members['requested'] = explode(',', trim($_POST['requested_agents_rs_csv'], ','));
     }
     $all_current_members = agp_array_flatten($current_members);
     $all_posted_members = agp_array_flatten($posted_members);
     foreach ($current_members as $status => $stored) {
         // remove group memberships which were not posted for any status
         foreach ($stored as $user_id) {
             if ($user_id) {
                 if (!in_array($user_id, $all_posted_members)) {
                     ScoperAdminLib::remove_group_user($group_id, $user_id);
                 }
             }
         }
     }
     foreach ($posted_members as $status => $posted) {
         // insert or update group memberships as specified
         foreach ($posted as $user_id) {
             if ($user_id) {
                 if (!in_array($user_id, $all_current_members)) {
                     ScoperAdminLib::add_group_user($group_id, $user_id, $status);
                 } elseif (!in_array($user_id, $current_members[$status])) {
                     ScoperAdminLib::update_group_user($group_id, $user_id, $status);
                 }
             }
         }
     }
 }
 function add_user($user_id, $role_name = '', $blog_id = '')
 {
     // enroll user in default group(s)
     if ($default_groups = scoper_get_option('default_groups')) {
         foreach ($default_groups as $group_id) {
             ScoperAdminLib::add_group_user($group_id, $user_id);
         }
     }
     global $scoper_role_types;
     foreach ($scoper_role_types as $role_type) {
         wpp_cache_flush_group("{$role_type}_users_who_can");
         wpp_cache_flush_group("{$role_type}_groups_who_can");
     }
     ScoperAdminLib::sync_wproles($user_id, $role_name, $blog_id);
 }