Example #1
0
 public static function remove_user_groups($user_id, $omit_group_ids = array())
 {
     $group_types = pp_get_group_types(array('editable' => true));
     foreach (pp_get_group_types(array('editable' => true)) as $agent_type) {
         if ('pp_group' == $agent_type && in_array('pp_net_group', $group_types)) {
             continue;
         }
         $posted_groups = isset($_POST[$agent_type]) ? array_map('intval', $_POST[$agent_type]) : array();
         $stored_groups = array_keys(pp_get_groups_for_user($user_id, $agent_type, array('cols' => 'id')));
         if ($omit_group_ids) {
             $stored_groups = array_diff($stored_groups, $omit_group_ids);
         }
         $delete_groups = array_diff($stored_groups, $posted_groups);
         foreach ($delete_groups as $group_id) {
             if (pp_has_group_cap('pp_manage_members', $group_id, $agent_type)) {
                 pp_remove_group_user($group_id, $user_id, compact('agent_type'));
             }
         }
     }
 }
/**
 * Edit group settings based on contents of $_POST
 *
 * @param int $group_id Optional. Group ID.
 * @return int group id of the updated group
 */
function _pp_edit_group($group_id = 0, $agent_type = 'pp_group', $members_only = false)
{
    global $wpdb;
    if ($group_id) {
        $update = true;
        $group = pp_get_group($group_id, $agent_type);
    } else {
        $update = false;
        $group = (object) array();
    }
    if (!$members_only) {
        if (isset($_REQUEST['group_name'])) {
            $group->group_name = sanitize_text_field($_REQUEST['group_name']);
        }
        if (isset($_REQUEST['description'])) {
            $group->group_description = sanitize_text_field($_REQUEST['description']);
        }
        $errors = new WP_Error();
        /* checking that username has been typed */
        if (!$group->group_name) {
            $errors->add('group_name', __('<strong>ERROR</strong>: Please enter a group name.', 'pp'));
        } elseif (!$update && !PP_GroupsUpdate::group_name_available($group->group_name, $agent_type)) {
            $errors->add('user_login', __('<strong>ERROR</strong>: This group name is already registered. Please choose another one.', 'pp'));
        }
        // Allow plugins to return their own errors.
        do_action_ref_array('pp_group_profile_update_errors', array(&$errors, $update, &$group));
        if ($errors->get_error_codes()) {
            return $errors;
        }
        if ($update) {
            PP_GroupsUpdate::update_group($group_id, $group, $agent_type);
        } else {
            $group_id = PP_GroupsUpdate::create_group($group, $agent_type);
        }
    }
    if ($group_id) {
        $member_types = array();
        if (pp_has_group_cap('pp_manage_members', $group_id, $agent_type)) {
            $member_types[] = 'member';
        }
        foreach ($member_types as $member_type) {
            if (isset($_REQUEST["{$member_type}_csv"]) && $_REQUEST["{$member_type}_csv"] != -1) {
                // handle member changes
                $current = pp_get_group_members($group_id, $agent_type, 'id', compact('member_type'));
                $selected = isset($_REQUEST["{$member_type}_csv"]) ? explode(",", pp_sanitize_csv($_REQUEST["{$member_type}_csv"])) : array();
                if ('member' != $member_type || !apply_filters('pp_custom_agent_update', false, $agent_type, $group_id, $selected)) {
                    if ($add_users = array_diff($selected, $current)) {
                        pp_add_group_user($group_id, $add_users, compact('agent_type', 'member_type'));
                    }
                    if ($remove_users = array_diff($current, $selected)) {
                        pp_remove_group_user($group_id, $remove_users, compact('agent_type', 'member_type'));
                    }
                }
            }
        }
        // end foreach member_types
        do_action('pp_edited_group', $agent_type, $group_id, $update);
    }
    return $group_id;
}
Example #3
0
 public function groups_bulk()
 {
     if (empty($_REQUEST['users']) || empty($_REQUEST['pp-add-group']) && empty($_REQUEST['pp-remove-group'])) {
         return;
     }
     // Bail if nonce check fails
     check_admin_referer('pp-bulk-groups', 'pp-bulk-groups-nonce');
     if (!current_user_can('promote_users') || !current_user_can('edit_users') || !current_user_can('pp_manage_members')) {
         return;
     }
     global $current_user;
     if (!empty($_REQUEST['pp-add-group'])) {
         pp_add_group_user($_REQUEST['pp-add-group'], $_REQUEST['users']);
     } elseif (!empty($_REQUEST['pp-remove-group'])) {
         pp_remove_group_user($_REQUEST['pp-remove-group'], $_REQUEST['users']);
     }
 }