Ejemplo n.º 1
0
         $_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);
                 }
             }
         }
     }
 }
Ejemplo n.º 4
0
     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;