$_REQUEST['id'] = ""; } break; case "approve": if (awp_ver('2.8') && scoper_get_option('group_ajax')) { if ($can_manage_all_groups || current_user_can('manage_groups', $_GET['id'])) { $status = 'active'; } elseif (current_user_can('recommend_group_membership', $_GET['id'])) { $status = 'recommended'; } else { break; } $update_user = new WP_User($_GET['user']); $update_group = ScoperAdminLib::get_group($_GET['id']); if ($update_user->ID && $update_group->ID) { ScoperAdminLib::update_group_user($_GET['id'], $_GET['user'], $status); $success_msg = __("Group members updated successfuly.", 'scoper'); } else { $errorMessage = __("Error updating group membership.", 'scoper'); } } break; default: switch ($cancel) { case 1: UserGroups_tp::write(__("Group edit cancelled.", 'scoper')); break; default: break; } break;
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); } } } } }
break; case "approve": if (awp_ver('2.8') && scoper_get_option('group_ajax')) { $group_id = (int) $_GET['id']; $user_id = (int) $_GET['user']; if ($can_manage_all_groups || current_user_can('manage_groups', $group_id)) { $status = 'active'; } elseif (current_user_can('recommend_group_membership', $group_id)) { $status = 'recommended'; } else { break; } $update_user = new WP_User($user_id); $update_group = ScoperAdminLib::get_group($group_id); if ($update_user->ID && $update_group->ID) { ScoperAdminLib::update_group_user($group_id, $user_id, $status); $success_msg = __("Group members updated successfuly.", 'scoper'); } else { $errorMessage = __("Error updating group membership.", 'scoper'); } } break; default: switch ($cancel) { case 1: UserGroups_tp::write(__("Group edit cancelled.", 'scoper')); break; default: break; } break;