Example #1
0
 /**
  * Handles Specific Post/Page Access authentication.
  *
  * @package optimizeMember\SP_Access
  * @since 3.5
  *
  * @param int|str $sp_id Numeric Post/Page ID in WordPress.
  * @param bool $read_only Optional. Defaults to false. If ``$read_only = true``,
  * 	no session cookies are set, no IP Restrictions are checked, and script execution is not exited on Link failure.
  * 	In other words, with ``$read_only = true``, this function will simply return true or false.
  * @return null|bool Always returns `true` if access is indeed allowed in one way or another.
  * 	If access is denied with ``$read_only = true`` simply return false. If access is denied with ``$read_only = false``, return false; but if a Specific Post/Page Access Link is currently being used, we exit with a warning about Access Link expiration here.
  */
 public static function sp_access($sp_id = FALSE, $read_only = FALSE)
 {
     do_action("ws_plugin__optimizemember_before_sp_access", get_defined_vars());
     /**/
     $excluded = apply_filters("ws_plugin__optimizemember_sp_access_excluded", false, get_defined_vars());
     /**/
     if ($excluded || current_user_can(apply_filters("ws_plugin__optimizemember_sp_access_excluded_cap", "edit_posts", get_defined_vars()))) {
         return apply_filters("ws_plugin__optimizemember_sp_access", true, get_defined_vars(), "auth-via-exclusion");
     } else {
         if ($sp_id && is_numeric($sp_id) && (!empty($_GET["optimizemember_sp_access"]) && ($_g["optimizemember_sp_access"] = trim(stripslashes((string) $_GET["optimizemember_sp_access"]))) && is_array($sp_access_values = array($_g["optimizemember_sp_access"])) || is_array($sp_access_values = c_ws_plugin__optimizemember_sp_access::sp_access_session())) && !empty($sp_access_values)) {
             foreach ($sp_access_values as $sp_access_value) {
                 if (is_array($sp_access = preg_split("/\\:\\.\\:\\|\\:\\.\\:/", c_ws_plugin__optimizemember_utils_encryption::decrypt($sp_access_value)))) {
                     if (count($sp_access) === 4 && $sp_access[0] === "sp_time_hours" && in_array($sp_id, preg_split("/[\r\n\t\\s;,]+/", $sp_access[1]))) {
                         if (is_numeric($sp_access[2]) && is_numeric($sp_access[3]) && $sp_access[2] <= strtotime("now") && $sp_access[2] + $sp_access[3] * 3600 >= strtotime("now")) {
                             if (!$read_only && !empty($_g["optimizemember_sp_access"])) {
                                 /* Add to session? */
                                 c_ws_plugin__optimizemember_sp_access::sp_access_session($_g["optimizemember_sp_access"]);
                             }
                             /**/
                             if ($read_only || c_ws_plugin__optimizemember_ip_restrictions::ip_restrictions_ok($_SERVER["REMOTE_ADDR"], $sp_access_value)) {
                                 return apply_filters("ws_plugin__optimizemember_sp_access", true, get_defined_vars(), "auth-via-link-session");
                             }
                         }
                     }
                 }
             }
             /* Otherwise, authentication was NOT possible via link or session. */
             if (!$read_only && !empty($_g["optimizemember_sp_access"])) {
                 status_header(503) . header("Content-Type: text/html; charset=utf-8");
                 eval('while (@ob_end_clean ());');
                 /* End/clean all output buffers that may exist. */
                 exit(_x('<strong>Your Link Expired:</strong><br />Please contact Support if you need assistance.', "s2member-front", "s2member"));
             } else {
                 /* Else return false here. */
                 return apply_filters("ws_plugin__optimizemember_sp_access", false, get_defined_vars(), "no-auth-via-link-session");
             }
         } else {
             /* Else return false here. */
             return apply_filters("ws_plugin__optimizemember_sp_access", false, get_defined_vars(), "no-auth-no-link-session");
         }
     }
 }
Example #2
0
 /**
  * Resets/deletes all IP Restrictions via AJAX.
  *
  * @package optimizeMember\IP_Restrictions
  * @since 3.5
  *
  * @attaches-to ``add_action("wp_ajax_ws_plugin__optimizemember_delete_reset_all_ip_restrictions_via_ajax");``
  *
  * @return null Exits script execution after returning data for AJAX caller.
  */
 public static function delete_reset_all_ip_restrictions_via_ajax()
 {
     do_action("ws_plugin__optimizemember_before_delete_reset_all_ip_restrictions_via_ajax", get_defined_vars());
     /**/
     status_header(200);
     /* Send a 200 OK status header. */
     header("Content-Type: text/plain; charset=utf-8");
     /* Content-Type with UTF-8. */
     eval('while (@ob_end_clean ());');
     /* End/clean all output buffers that may exist. */
     /**/
     if (current_user_can("create_users")) {
         /* Check priveledges. Ability to create Users? */
         /**/
         if (!empty($_POST["ws_plugin__optimizemember_delete_reset_all_ip_restrictions_via_ajax"])) {
             if ($nonce = $_POST["ws_plugin__optimizemember_delete_reset_all_ip_restrictions_via_ajax"]) {
                 if (wp_verify_nonce($nonce, "ws-plugin--optimizemember-delete-reset-all-ip-restrictions-via-ajax")) {
                     /**/
                     if (c_ws_plugin__optimizemember_ip_restrictions::delete_reset_all_ip_restrictions()) {
                         $success = true;
                     }
                 }
             }
         }
     }
     /* Yes, all IP Restrictions were deleted/reset. */
     /**/
     exit(apply_filters("ws_plugin__optimizemember_delete_reset_all_ip_restrictions_via_ajax", isset($success) && $success ? "1" : "0", get_defined_vars()));
 }
Example #3
0
 /**
  * Saves Custom Fields after an admin updates Profile.
  *
  * @package optimizeMember\Users_List
  * @since 3.5
  *
  * @attaches-to ``add_action("edit_user_profile_update");``
  * @attaches-to ``add_action("personal_options_update");``
  *
  * @param int|str $user_id Expects a numeric WordPress User ID passed in by the Action Hook.
  * @return null
  */
 public static function users_list_update_cols($user_id = FALSE)
 {
     global $current_site, $current_blog;
     /**/
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_before_users_list_update_cols", get_defined_vars());
     unset($__refs, $__v);
     /**/
     $user = new WP_User($user_id);
     $current_user = is_user_logged_in() ? wp_get_current_user() : false;
     /**/
     if (is_object($user) && !empty($user->ID) && ($user_id = $user->ID) && is_object($current_user) && !empty($current_user->ID)) {
         if (current_user_can("edit_users") && (!is_multisite() || is_super_admin() || is_user_member_of_blog($user_id))) {
             if (!empty($_POST) && is_array($_p = c_ws_plugin__optimizemember_utils_strings::trim_deep(stripslashes_deep($_POST)))) {
                 $old_user = unserialize(serialize($user));
                 $old_role = c_ws_plugin__optimizemember_user_access::user_access_role($old_user);
                 /**/
                 $role = isset($_p["role"]) && $_p["role"] !== $old_role ? $_p["role"] : $old_role;
                 $level = c_ws_plugin__optimizemember_user_access::user_access_role_to_level($role);
                 /**/
                 $user->roles = isset($_p["role"]) && $_p["role"] !== $old_role ? array($_p["role"]) : $old_user->roles;
                 $user->user_email = isset($_p["email"]) && is_email($_p["email"]) && $_p["email"] !== $old_user->user_email && !email_exists($_p["email"]) ? $_p["email"] : $old_user->user_email;
                 $user->first_name = isset($_p["first_name"]) && $_p["first_name"] !== $old_user->first_name ? $_p["first_name"] : $old_user->first_name;
                 $user->last_name = isset($_p["last_name"]) && $_p["last_name"] !== $old_user->last_name ? $_p["last_name"] : $old_user->last_name;
                 /**/
                 $auto_eot_time = !empty($_p["ws_plugin__optimizemember_profile_optimizemember_auto_eot_time"]) ? strtotime($_p["ws_plugin__optimizemember_profile_optimizemember_auto_eot_time"]) : "";
                 /**/
                 if ($role !== $old_role) {
                     /* In this case, we need to fire Hook: `ws_plugin__optimizemember_during_collective_mods`. */
                     do_action("ws_plugin__optimizemember_during_collective_mods", $user_id, get_defined_vars(), "user-role-change", "modification", $role, $user, $old_user);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_originating_blog"]) && is_multisite() && is_super_admin()) {
                     update_user_meta($user_id, "optimizemember_originating_blog", $_p["ws_plugin__optimizemember_profile_optimizemember_originating_blog"]);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_subscr_gateway"])) {
                     update_user_option($user_id, "optimizemember_subscr_gateway", $_p["ws_plugin__optimizemember_profile_optimizemember_subscr_gateway"]);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_subscr_id"])) {
                     update_user_option($user_id, "optimizemember_subscr_id", $_p["ws_plugin__optimizemember_profile_optimizemember_subscr_id"]);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_custom"])) {
                     update_user_option($user_id, "optimizemember_custom", $_p["ws_plugin__optimizemember_profile_optimizemember_custom"]);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_registration_ip"])) {
                     update_user_option($user_id, "optimizemember_registration_ip", $_p["ws_plugin__optimizemember_profile_optimizemember_registration_ip"]);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_notes"])) {
                     update_user_option($user_id, "optimizemember_notes", $_p["ws_plugin__optimizemember_profile_optimizemember_notes"]);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_auto_eot_time"]) && isset($auto_eot_time)) {
                     update_user_option($user_id, "optimizemember_auto_eot_time", $auto_eot_time);
                 }
                 /**/
                 if (isset($_p["ws_plugin__optimizemember_profile_optimizemember_ccaps"])) {
                     foreach ($user->allcaps as $cap => $cap_enabled) {
                         if (preg_match("/^access_optimizemember_ccap_/", $cap)) {
                             $user->remove_cap($ccap = $cap);
                         }
                     }
                     /**/
                     if (!empty($_p["ws_plugin__optimizemember_profile_optimizemember_ccaps"])) {
                         foreach (preg_split("/[\r\n\t\\s;,]+/", $_p["ws_plugin__optimizemember_profile_optimizemember_ccaps"]) as $ccap) {
                             if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) {
                                 $user->add_cap("access_optimizemember_ccap_" . $ccap);
                             }
                         }
                     }
                 }
                 if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"]) {
                     foreach (json_decode($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"], true) as $field) {
                         $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
                         $field_id_class = preg_replace("/_/", "-", $field_var);
                         /**/
                         if (isset($_p["ws_plugin__optimizemember_profile_" . $field_var])) {
                             if (is_array($_p["ws_plugin__optimizemember_profile_" . $field_var]) && !empty($_p["ws_plugin__optimizemember_profile_" . $field_var]) || is_string($_p["ws_plugin__optimizemember_profile_" . $field_var]) && strlen($_p["ws_plugin__optimizemember_profile_" . $field_var])) {
                                 $fields[$field_var] = $_p["ws_plugin__optimizemember_profile_" . $field_var];
                             } else {
                                 unset($fields[$field_var]);
                             }
                         } else {
                             unset($fields[$field_var]);
                         }
                     }
                 }
                 if (!empty($fields)) {
                     update_user_option($user_id, "optimizemember_custom_fields", $fields);
                 } else {
                     delete_user_option($user_id, "optimizemember_custom_fields");
                 }
                 /**/
                 if ($level > 0) {
                     $pr_times = get_user_option("optimizemember_paid_registration_times", $user_id);
                     $pr_times["level"] = empty($pr_times["level"]) ? time() : $pr_times["level"];
                     $pr_times["level" . $level] = empty($pr_times["level" . $level]) ? time() : $pr_times["level" . $level];
                     update_user_option($user_id, "optimizemember_paid_registration_times", $pr_times);
                     /* Update now. */
                 }
                 if (!empty($_p["ws_plugin__optimizemember_profile_opt_in"]) && !empty($role) && $level >= 0) {
                     c_ws_plugin__optimizemember_list_servers::process_list_servers($role, $level, $user->user_login, !empty($_p["pass1"]) ? $_p["pass1"] : "", $user->user_email, $user->first_name, $user->last_name, false, true, true, $user_id);
                 }
                 /**/
                 if (!empty($_p["ws_plugin__optimizemember_profile_ip_restrictions"])) {
                     c_ws_plugin__optimizemember_ip_restrictions::delete_reset_specific_ip_restrictions(strtolower($user->user_login));
                 }
                 /**/
                 eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
                 do_action("ws_plugin__optimizemember_during_users_list_update_cols", get_defined_vars());
                 unset($__refs, $__v);
             }
         } else {
             if ($current_user->ID === $user->ID) {
                 if (!empty($_POST) && is_array($_p = c_ws_plugin__optimizemember_utils_strings::trim_deep(stripslashes_deep($_POST)))) {
                     $role = c_ws_plugin__optimizemember_user_access::user_access_role($user);
                     $level = c_ws_plugin__optimizemember_user_access::user_access_role_to_level($role);
                     /**/
                     if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"]) {
                         if ($fields_applicable = c_ws_plugin__optimizemember_custom_reg_fields::custom_fields_configured_at_level($level, "profile")) {
                             $_existing_fields = get_user_option("optimizemember_custom_fields", $user_id);
                             /**/
                             foreach (json_decode($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"], true) as $field) {
                                 $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
                                 $field_id_class = preg_replace("/_/", "-", $field_var);
                                 /**/
                                 if (!in_array($field["id"], $fields_applicable) || strpos($field["editable"], "no") === 0) {
                                     if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) {
                                         $fields[$field_var] = $_existing_fields[$field_var];
                                     } else {
                                         /* Else ``unset()``. */
                                         unset($fields[$field_var]);
                                     }
                                 } else {
                                     if ($field["required"] === "yes" && (!isset($_p["ws_plugin__optimizemember_profile_" . $field_var]) || !is_array($_p["ws_plugin__optimizemember_profile_" . $field_var]) && !is_string($_p["ws_plugin__optimizemember_profile_" . $field_var]) || is_array($_p["ws_plugin__optimizemember_profile_" . $field_var]) && empty($_p["ws_plugin__optimizemember_profile_" . $field_var]) || is_string($_p["ws_plugin__optimizemember_profile_" . $field_var]) && !strlen($_p["ws_plugin__optimizemember_profile_" . $field_var]))) {
                                         if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) {
                                             $fields[$field_var] = $_existing_fields[$field_var];
                                         } else {
                                             /* Else ``unset()``. */
                                             unset($fields[$field_var]);
                                         }
                                     } else {
                                         if (isset($_p["ws_plugin__optimizemember_profile_" . $field_var])) {
                                             if (is_array($_p["ws_plugin__optimizemember_profile_" . $field_var]) && !empty($_p["ws_plugin__optimizemember_profile_" . $field_var]) || is_string($_p["ws_plugin__optimizemember_profile_" . $field_var]) && strlen($_p["ws_plugin__optimizemember_profile_" . $field_var])) {
                                                 $fields[$field_var] = $_p["ws_plugin__optimizemember_profile_" . $field_var];
                                             } else {
                                                 unset($fields[$field_var]);
                                             }
                                         } else {
                                             unset($fields[$field_var]);
                                         }
                                     }
                                 }
                             }
                             if (!empty($fields)) {
                                 update_user_option($user_id, "optimizemember_custom_fields", $fields);
                             } else {
                                 delete_user_option($user_id, "optimizemember_custom_fields");
                             }
                         }
                     }
                     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
                     do_action("ws_plugin__optimizemember_during_users_list_update_cols", get_defined_vars());
                     unset($__refs, $__v);
                 }
             }
         }
     }
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_after_users_list_update_cols", get_defined_vars());
     unset($__refs, $__v);
     /**/
     return;
 }
Example #4
0
 /**
  * Handles login redirections.
  *
  * @package optimizeMember\Login_Redirects
  * @since 3.5
  *
  * @attaches-to ``add_action("wp_login");``
  *
  * @param str $username Expects Username to be passed in by the Action Hook.
  * @return null Or exits script execution after a redirection takes place.
  */
 public static function login_redirect($username = FALSE)
 {
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_before_login_redirect", get_defined_vars());
     unset($__refs, $__v);
     /* Unset defined __refs, __v. */
     /**/
     $username = !$username && is_object($user = wp_get_current_user()) && !empty($user->user_login) ? strtolower($user->user_login) : strtolower($username);
     /**/
     if ($username && (isset($user) && is_object($user) || is_object($user = new WP_User($username))) && !empty($user->ID) && ($user_id = $user->ID)) {
         if (!get_user_option("optimizemember_registration_ip", $user_id)) {
             /* Have we got this yet? */
             update_user_option($user_id, "optimizemember_registration_ip", $_SERVER["REMOTE_ADDR"]);
         }
         /**/
         if (($logins = (int) get_user_option("optimizemember_login_counter", $user_id) + 1) >= 1 || ($logins = 1)) {
             update_user_option($user_id, "optimizemember_login_counter", $logins);
         }
         /**/
         if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_password"]) {
             /* Nag em? */
             delete_user_setting("default_password_nag") . update_user_option($user_id, "default_password_nag", false, true);
         }
         /**/
         $disable_login_ip_restrictions = apply_filters("ws_plugin__optimizemember_disable_login_ip_restrictions", false, get_defined_vars());
         /**/
         if (($ok = true) && !is_super_admin($user_id) && $username !== "demo" && !$disable_login_ip_restrictions) {
             $ok = c_ws_plugin__optimizemember_ip_restrictions::ip_restrictions_ok($_SERVER["REMOTE_ADDR"], $username);
         }
         /**/
         if ($redirect = apply_filters("ws_plugin__optimizemember_login_redirect", $user->has_cap("edit_posts") ? false : true, get_defined_vars())) {
             $obey_redirect_to = apply_filters("ws_plugin__optimizemember_obey_login_redirect_to", true, get_defined_vars());
             /**/
             if (!$obey_redirect_to || empty($_REQUEST["redirect_to"]) || !is_string($_REQUEST["redirect_to"]) || $_REQUEST["redirect_to"] === admin_url() || preg_match("/^\\/?wp-admin\\/?\$/", $_REQUEST["redirect_to"])) {
                 eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
                 do_action("ws_plugin__optimizemember_during_login_redirect", get_defined_vars());
                 unset($__refs, $__v);
                 /* Unset defined __refs, __v. */
                 /**/
                 if ($redirect && is_string($redirect)) {
                     /* Is this a string? */
                     wp_redirect($redirect);
                 } else {
                     if ($redirection_url = c_ws_plugin__optimizemember_login_redirects::login_redirection_url($user)) {
                         wp_redirect($redirection_url);
                     } else {
                         /* Else we use the Login Welcome Page configured for optimizeMember. */
                         wp_redirect(get_page_link($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"]));
                     }
                 }
                 /**/
                 exit;
                 /* Clean exit. */
             }
         }
     }
     /**/
     eval('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;');
     do_action("ws_plugin__optimizemember_after_login_redirect", get_defined_vars());
     unset($__refs, $__v);
     /* Unset defined __refs, __v. */
     /**/
     return;
     /* Return for uniformity. */
 }
Example #5
0
 /**
  * Modifies an existing User.
  *
  * @package optimizeMember\API_Jvzoo_Ops
  * @since 271014
  *
  * @param array An input array of JVzoo Operation parameters.
  * @return str Returns a serialized array with an `ID` element object on success,
  *   else returns a string beginning with `Error:` on failure; which will include details regarding the error.
  */
 public static function modify_user($op = NULL)
 {
     if (!empty($_GET["op"]) && $_GET["op"] === "modify_user") {
         if (!empty($op["user_id"]) && ($_user = new WP_User((int) $op["user_id"])) && !empty($_user->ID)) {
             $user = $_user;
         } else {
             if (!empty($op["ccustemail"]) && ($_user = new WP_User((string) $op["ccustemail"])) && !empty($_user->ID)) {
                 $user = $_user;
             } else {
                 return "Error: Modification failed. Unable to obtain WP_User object instance with data supplied (i.e. ID/Username not found).";
             }
         }
         /**/
         if (is_multisite() && !is_user_member_of_blog($user->ID)) {
             return "Error: Modification failed. Unable to obtain WP_User object instance with data supplied (i.e. ID/Username not a part of this Blog).";
         }
         /**/
         if (is_super_admin($user->ID) || $user->has_cap("administrator")) {
             return "Error: Modification failed. This API will not modify Administrators.";
         }
         /**/
         $userdata["ID"] = $user->ID;
         /**/
         if (!empty($op["ccustemail"])) {
             if (is_email((string) $op["ccustemail"]) && !email_exists((string) $op["ccustemail"])) {
                 $userdata["user_email"] = (string) $op["ccustemail"];
             }
         }
         /**/
         if (isset($_GET["optimizemember_level"]) && (int) $_GET["optimizemember_level"] === 0) {
             if (c_ws_plugin__optimizemember_user_access::user_access_role($user) !== get_option("default_role")) {
                 $userdata["role"] = get_option("default_role");
             }
         } else {
             if (!empty($_GET["optimizemember_level"]) && (int) $_GET["optimizemember_level"] > 0) {
                 if (c_ws_plugin__optimizemember_user_access::user_access_role($user) !== "optimizemember_level" . (int) $_GET["optimizemember_level"]) {
                     $userdata["role"] = "optimizemember_level" . (int) $_GET["optimizemember_level"];
                 }
             }
         }
         wp_update_user($userdata);
         /**/
         $old_user = unserialize(serialize($user));
         $user = new WP_User($user->ID);
         /**/
         $role = c_ws_plugin__optimizemember_user_access::user_access_role($user);
         $level = c_ws_plugin__optimizemember_user_access::user_access_role_to_level($role);
         /**/
         if (!empty($_GET["auto_opt_out_transition"])) {
             $_p["ws_plugin__optimizemember_custom_reg_auto_opt_out_transitions"] = TRUE;
         }
         /**/
         if (!empty($userdata["role"])) {
             do_action("ws_plugin__optimizemember_during_collective_mods", $user->ID, get_defined_vars(), "user-role-change", "modification", $role, $user, $old_user);
         }
         /**/
         if (!empty($_GET["optimizemember_ccaps"]) && preg_match("/^-all/", str_replace("+", "", (string) $_GET["optimizemember_ccaps"]))) {
             foreach ($user->allcaps as $cap => $cap_enabled) {
                 if (preg_match("/^access_optimizemember_ccap_/", $cap)) {
                     $user->remove_cap($ccap = $cap);
                 }
             }
         }
         /**/
         if (!empty($_GET["optimizemember_ccaps"]) && preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", (string) $_GET["optimizemember_ccaps"]))) {
             foreach (preg_split("/[\r\n\t\\s;,]+/", preg_replace("/^-all[\r\n\t\\s;,]*/", "", str_replace("+", "", (string) $_GET["optimizemember_ccaps"]))) as $ccap) {
                 if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) {
                     $user->add_cap("access_optimizemember_ccap_" . $ccap);
                 }
             }
         }
         /**/
         if (isset($_GET["optimizemember_originating_blog"]) && is_multisite()) {
             update_user_meta($user->ID, "optimizemember_originating_blog", (int) $_GET["optimizemember_originating_blog"]);
         }
         /**/
         if (isset($_GET["optimizemember_subscr_gateway"])) {
             update_user_option($user->ID, "optimizemember_subscr_gateway", (string) $_GET["optimizemember_subscr_gateway"]);
         }
         /**/
         if (isset($_GET["optimizemember_subscr_id"])) {
             update_user_option($user->ID, "optimizemember_subscr_id", (string) $_GET["optimizemember_subscr_id"]);
         }
         /**/
         if (isset($_GET["optimizemember_custom"])) {
             update_user_option($user->ID, "optimizemember_custom", (string) ${$_GET}["optimizemember_custom"]);
         }
         /**/
         if (isset($_GET["optimizemember_registration_ip"])) {
             update_user_option($user->ID, "optimizemember_registration_ip", (string) $_GET["optimizemember_registration_ip"]);
         }
         /**/
         if (isset($_GET["optimizemember_notes"])) {
             update_user_option($user->ID, "optimizemember_notes", trim(get_user_option("optimizemember_notes", $user->ID) . "\n\n" . (string) $_GET["optimizemember_notes"]));
         }
         /**/
         if (isset($_GET["optimizemember_auto_eot_time"])) {
             update_user_option($user->ID, "optimizemember_auto_eot_time", !empty($_GET["optimizemember_auto_eot_time"]) ? strtotime((string) $_GET["optimizemember_auto_eot_time"]) : "");
         }
         /**/
         if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"]) {
             $_existing_fields = get_user_option("optimizemember_custom_fields", $user->ID);
             /**/
             foreach (json_decode($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"], true) as $field) {
                 $field_var = preg_replace("/[^a-z0-9]/i", "_", strtolower($field["id"]));
                 $field_id_class = preg_replace("/_/", "-", $field_var);
                 /**/
                 if (!isset($_GET["custom_fields"][$field_var])) {
                     if (isset($_existing_fields[$field_var]) && (is_array($_existing_fields[$field_var]) && !empty($_existing_fields[$field_var]) || is_string($_existing_fields[$field_var]) && strlen($_existing_fields[$field_var]))) {
                         $fields[$field_var] = $_existing_fields[$field_var];
                     } else {
                         unset($fields[$field_var]);
                     }
                 } else {
                     if (is_array($_GET["custom_fields"][$field_var]) && !empty($_GET["custom_fields"][$field_var]) || is_string($_GET["custom_fields"][$field_var]) && strlen($_GET["custom_fields"][$field_var])) {
                         $fields[$field_var] = $_GET["custom_fields"][$field_var];
                     } else {
                         unset($fields[$field_var]);
                     }
                 }
             }
             if (!empty($fields)) {
                 update_user_option($user->ID, "optimizemember_custom_fields", $fields);
             } else {
                 delete_user_option($user->ID, "optimizemember_custom_fields");
             }
         }
         if ($level > 0) {
             $pr_times = get_user_option("optimizemember_paid_registration_times", $user->ID);
             $pr_times["level"] = empty($pr_times["level"]) ? time() : $pr_times["level"];
             $pr_times["level" . $level] = empty($pr_times["level" . $level]) ? time() : $pr_times["level" . $level];
             update_user_option($user->ID, "optimizemember_paid_registration_times", $pr_times);
         }
         if (!empty($_GET["opt_in"]) && !empty($role) && $level >= 0) {
             c_ws_plugin__optimizemember_list_servers::process_list_servers($role, $level, $user->user_login, !empty($_GET["user_pass"]) ? (string) $_GET["user_pass"] : "", $user->user_email, $user->first_name, $user->last_name, false, true, true, $user->ID);
         }
         /**/
         if (!empty($_GET["reset_ip_restrictions"])) {
             c_ws_plugin__optimizemember_ip_restrictions::delete_reset_specific_ip_restrictions(strtolower($user->user_login));
         }
         /**/
         if (!empty($_GET["reset_file_download_access_log"])) {
             delete_user_option($user->ID, "optimizemember_file_download_access_log");
         }
         /**/
         return serialize(array("ID" => $user->ID));
     }
     return "Error: Empty or invalid request ( `modify_user` ). Please try again.";
 }