/** * 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; }
/** * 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."; }