public function run($arguments) { global $itsec_globals; if (!isset($arguments['id'])) { return false; //User not provided } $user = get_user_by('id', intval($arguments['id'])); if ($user === false) { return false; //user doesn't exist } $direction = isset($arguments['direction']) ? $arguments['direction'] : 'add'; $enabled = trim(get_user_option('itsec_two_factor_enabled', $user->ID)); $override = intval(get_user_option('itsec_two_factor_override', $user->ID)) === 1 ? true : false; $override_expires = intval(get_user_option('itsec_two_factor_override_expires', $user->ID)); if ($direction === 'add') { if ($enabled != 'on' || $override !== 1 && $itsec_globals['current_time'] < $override_expires) { return false; //Override already active } $override = true; $override_expires = $itsec_globals['current_time'] + 600; $response = array('ID' => $user->ID, 'user_login' => $user->user_login, 'override' => $override, 'override_expires' => $override_expires); update_user_option($user->ID, 'itsec_two_factor_override', $override, true); update_user_option($user->ID, 'itsec_two_factor_override_expires', $override_expires, true); return $response; } elseif ($direction === 'remove') { delete_user_option($user->ID, 'itsec_two_factor_override', true); delete_user_option($user->ID, 'itsec_two_factor_override_expires', true); return true; } return false; }
public static function initMenu() { self::$page = MainWPManageSitesView::initMenu(); add_submenu_page('mainwp_tab', __('Sites Help', 'mainwp'), '<div class="mainwp-hidden">' . __('Sites Help', 'mainwp') . '</div>', 'read', 'SitesHelp', array(MainWPManageSites::getClassName(), 'QSGManageSites')); if (isset($_REQUEST['dashboard'])) { global $current_user; delete_user_option($current_user->ID, 'screen_layout_toplevel_page_managesites'); add_filter('screen_layout_columns', array(self::getClassName(), 'on_screen_layout_columns'), 10, 2); $val = get_user_option('screen_layout_' . self::$page); if (!MainWPUtility::ctype_digit($val)) { global $current_user; update_user_option($current_user->ID, 'screen_layout_' . self::$page, 2, true); } add_action('load-' . MainWPManageSites::$page, array(MainWPManageSites::getClassName(), 'on_load_page_dashboard')); } else { // add_action('load-'.MainWPManageSites::$page, array(MainWPManageSites::getClassName(), 'on_load_page_manage')); add_action('load-' . MainWPManageSites::$page, array(MainWPManageSites::getClassName(), 'add_options')); } add_submenu_page('mainwp_tab', 'Sites', '<div class="mainwp-hidden">Sites</div>', 'read', 'SiteOpen', array(MainWPSiteOpen::getClassName(), 'render')); add_submenu_page('mainwp_tab', 'Sites', '<div class="mainwp-hidden">Sites</div>', 'read', 'SiteRestore', array(MainWPSiteOpen::getClassName(), 'renderRestore')); self::$subPages = apply_filters('mainwp-getsubpages-sites', array()); if (isset(self::$subPages) && is_array(self::$subPages)) { foreach (self::$subPages as $subPage) { add_submenu_page('mainwp_tab', $subPage['title'], '<div class="mainwp-hidden">' . $subPage['title'] . '</div>', 'read', 'ManageSites' . $subPage['slug'], $subPage['callback']); } } }
/** * Create a user * * @param array $args * @param array $assoc_args **/ public function create($args, $assoc_args) { global $blog_id; if (count($args) < 2) { WP_CLI::error("Login and email required."); } list($user_login, $user_email) = $args; $defaults = array('role' => get_option('default_role'), 'user_pass' => wp_generate_password(), 'user_registered' => strftime("%F %T", time()), 'display_name' => false); extract(wp_parse_args($assoc_args, $defaults), EXTR_SKIP); if ('none' == $role) { $role = false; } elseif (is_null(get_role($role))) { WP_CLI::error("Invalid role."); } $user_id = wp_insert_user(array('user_email' => $user_email, 'user_login' => $user_login, 'user_pass' => $user_pass, 'user_registered' => $user_registered, 'display_name' => $display_name, 'role' => $role)); if (is_wp_error($user_id)) { WP_CLI::error($user_id); } else { if (false === $role) { delete_user_option($user_id, 'capabilities'); delete_user_option($user_id, 'user_level'); } } if (isset($assoc_args['porcelain'])) { WP_CLI::line($user_id); } else { WP_CLI::success("Created user {$user_id}."); } }
/** * Generate users * * @param array $args * @param array $assoc_args **/ public function users($args, $assoc_args) { global $blog_id; $defaults = array('count' => 100, 'role' => get_option('default_role')); extract(wp_parse_args($assoc_args, $defaults), EXTR_SKIP); if ('none' == $role) { $role = false; } elseif (is_null(get_role($role))) { WP_CLI::warning("invalid role."); exit; } $user_count = count_users(); $total = $user_count['total_users']; $limit = $count + $total; $notify = new \cli\progress\Bar('Generating users', $count); for ($i = $total; $i < $limit; $i++) { $login = sprintf('user_%d_%d', $blog_id, $i); $name = "User {$i}"; $user_id = wp_insert_user(array('user_login' => $login, 'user_pass' => $login, 'nickname' => $name, 'display_name' => $name, 'role' => $role)); if (false === $role) { delete_user_option($user_id, 'capabilities'); delete_user_option($user_id, 'user_level'); } $notify->tick(); } $notify->finish(); }
public function display() { if (isset($_GET['form_id'])) { if ('new' == $_GET['form_id']) { $form_id = 'tmp-' . time(); } else { $form_id = is_numeric($_GET['form_id']) ? absint($_GET['form_id']) : ''; } /* * FORM BUILDER */ Ninja_Forms::template('admin-menu-new-form.html.php'); $this->_enqueue_the_things($form_id); delete_user_option(get_current_user_id(), 'nf_form_preview_' . $form_id); if (!isset($_GET['ajax'])) { $this->_localize_form_data($form_id); $this->_localize_field_type_data(); $this->_localize_action_type_data(); $this->_localize_form_settings(); $this->_localize_merge_tags(); } } else { /* * ALL FORMS TABLE */ $this->table->prepare_items(); Ninja_Forms::template('admin-menu-all-forms.html.php', array('table' => $this->table, 'add_new_url' => admin_url('admin.php?page=ninja-forms&form_id=new'), 'add_new_text' => __('Add New Form', 'ninja-forms'))); } }
public static function clearAllTwitterMessages() { $filters = self::get_filter(); $user_id = get_current_user_id(); foreach ($filters as $what) { $opt_name = 'mainwp_tt_message_' . $what; delete_user_option($user_id, $opt_name); } }
public function save() { check_ajax_referer('ninja_forms_ajax_nonce', 'security'); if (!isset($_POST['form'])) { $this->_errors[] = 'Form Not Found'; $this->_respond(); } $form_data = json_decode(stripslashes($_POST['form']), ARRAY_A); if (is_string($form_data['id'])) { $tmp_id = $form_data['id']; $form = Ninja_Forms()->form()->get(); $form->save(); $form_data['id'] = $form->get_id(); $this->_data['new_ids']['forms'][$tmp_id] = $form_data['id']; } else { $form = Ninja_Forms()->form($form_data['id'])->get(); } $form->update_settings($form_data['settings'])->save(); if (isset($form_data['fields'])) { foreach ($form_data['fields'] as $field_data) { $id = $field_data['id']; $field = Ninja_Forms()->form($form_data['id'])->get_field($id); $field->update_settings($field_data['settings'])->save(); if ($field->get_tmp_id()) { $tmp_id = $field->get_tmp_id(); $this->_data['new_ids']['fields'][$tmp_id] = $field->get_id(); } $this->_data['fields'][$id] = $field->get_settings(); } } if (isset($form_data['deleted_fields'])) { foreach ($form_data['deleted_fields'] as $deleted_field_id) { $field = Ninja_Forms()->form()->get_field($deleted_field_id); $field->delete(); } } if (isset($form_data['actions'])) { foreach ($form_data['actions'] as $action_data) { $id = $action_data['id']; $action = Ninja_Forms()->form($form_data['id'])->get_action($action_data['id']); $action->update_settings($action_data['settings'])->save(); if ($action->get_tmp_id()) { $tmp_id = $action->get_tmp_id(); $this->_data['new_ids']['actions'][$tmp_id] = $action->get_id(); } $this->_data['actions'][$id] = $action->get_settings(); } } if (isset($form_data['deleted_actions'])) { foreach ($form_data['deleted_actions'] as $deleted_action_id) { $action = Ninja_Forms()->form()->get_action($deleted_action_id); $action->delete(); } } delete_user_option(get_current_user_id(), 'nf_form_preview_' . $form_data['id']); $this->_respond(); }
/** * Copy unprefixed option value to new prefixed option. */ function hmn_cp_v121_upgrade() { $users = get_users(); foreach ($users as $user) { $hmn_comments_voted_on = get_user_option('comments_voted_on', $user->ID); if (!$hmn_comments_voted_on) { continue; } update_user_option($user->ID, 'hmn_comments_voted_on', $hmn_comments_voted_on); delete_user_option($user->ID, 'comments_voted_on', true); } }
/** * Delete all WAS saved options. * * @since 0.1 */ function was_uninstall_options() { global $wpdb; // Delete all the user options $users = $wpdb->get_col('SELECT `' . $wpdb->users . ID . '` FROM `' . $wpdb->users . '`'); foreach ($users as $user_id) { delete_user_option($user_id, 'was_show_per_page'); } // Delete all the defined options delete_option('was_db_version'); delete_option('was_show_per_page'); }
/** * Delete default user options * * Hooked to bbp_uninstall, it is only called once when bbPress is uninstalled. * This is destructive, so existing bbPress user options will be destroyed. * * @since 2.1.0 bbPress (r3910) * * @uses bbp_get_default_user_options() To get default options * @uses delete_user_option() Removes default options * @uses do_action() Calls 'bbp_delete_options' */ function bbp_delete_user_options($user_id = 0) { // Validate user id $user_id = bbp_get_user_id($user_id); if (empty($user_id)) { return; } // Add default options foreach (array_keys(bbp_get_default_user_options()) as $key) { delete_user_option($user_id, $key); } // Allow previously activated plugins to append their own options. do_action('bbp_delete_user_options', $user_id); }
/** * Delete default user options * * Hooked to dpa_uninstall, it is only called once when Achievements is uninstalled. * This is destructive, so existing Achievements user options will be destroyed. * * @param int $user_id Optional; defaults to current user * @since Achievements (3.0) */ function dpa_delete_user_options($user_id = 0) { // Default to current user if (empty($user_id) && is_user_logged_in()) { $user_id = get_current_user_id(); } // No user, bail out if (empty($user_id)) { return; } // Delete default options (both per site and per network) foreach (array_keys(dpa_get_default_user_options()) as $key => $value) { delete_user_option($user_id, $key, false); delete_user_option($user_id, $key, true); } // Allow previously activated plugins to append their own options. do_action('dpa_delete_user_options', $user_id); }
function on_admin_menu() { if (MainWP_Utility::isAdmin()) { global $current_user; delete_user_option($current_user->ID, 'screen_layout_toplevel_page_mainwp_tab'); $this->dashBoard = add_menu_page('MainWP', 'MainWP', 'read', 'mainwp_tab', array($this, 'on_show_page'), plugins_url('images/mainwpicon.png', dirname(__FILE__)), '2.00001'); if (mainwp_current_user_can('dashboard', 'access_global_dashboard')) { add_submenu_page('mainwp_tab', 'MainWP', __('Dashboard', 'mainwp'), 'read', 'mainwp_tab', array($this, 'on_show_page')); } $val = get_user_option('screen_layout_' . $this->dashBoard); if (!MainWP_Utility::ctype_digit($val)) { update_user_option($current_user->ID, 'screen_layout_' . $this->dashBoard, 2, true); } add_action('load-' . $this->dashBoard, array(&$this, 'on_load_page')); } // else // { // $this->dashBoard = add_menu_page('MainWP', 'MainWP', 'read', 'mainwp_tab', array($this, 'require_registration'), plugins_url('images/mainwpicon.png', dirname(__FILE__)), '2.0001'); // } }
function autosub_activate() { $all_users = get_users('orderby=ID'); # Save a backup of everyone's subscription preferences so we can restore it if # we decide not to use the plugin. require_once ABSPATH . 'wp-admin/includes/upgrade.php'; global $wpdb; $table_name = $wpdb->prefix . "autosub"; # Create table for backups if it doesn't already exist $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE IF NOT EXISTS {$table_name} (\n id mediumint(9) NOT NULL AUTO_INCREMENT,\n user_id mediumint(9) NOT NULL,\n type varchar(20) NOT NULL,\n subscriptions longtext,\n UNIQUE KEY id (id)\n ) {$charset_collate};"; dbDelta($sql); # Delete old backups if they exist $wpdb->delete($table_name, array('type' => 'topic')); $wpdb->delete($table_name, array('type' => 'forum')); # Store backups of subscriptions foreach ($all_users as $user) { $user_id = $user->ID; # Backup topic subscriptions $topic_subscriptions = get_user_option('_bbp_subscriptions', $user_id); if (strlen($topic_subscriptions) <= 0) { continue; } $sql = "INSERT INTO {$table_name}\n (user_id, type, subscriptions)\n VALUES (\n {$user_id},\n 'topic',\n '{$topic_subscriptions}'\n );"; dbDelta($sql); # Backup forum subscriptions $forum_subscriptions = get_user_option('_bbp_forum_subscriptions', $user_id); if (strlen($forum_subscriptions) <= 0) { continue; } $sql = "INSERT INTO {$table_name}\n (user_id, type, subscriptions)\n VALUES (\n {$user_id},\n 'forum',\n '{$forum_subscriptions}'\n );"; dbDelta($sql); } # Delete subscriptions because they would otherwise turn into unsubscriptions. foreach ($all_users as $user) { if (!autosub_is_user_an_exception($user->ID)) { delete_user_option($user->ID, '_bbp_subscriptions'); delete_user_option($user->ID, '_bbp_forum_subscriptions'); } } }
/** * Create a user. * * This function runs when a user self-registers as well as when * a Super Admin creates a new user. Hook to 'wpmu_new_user' for events * that should affect all new users, but only on Multisite (otherwise * use 'user_register'). * * @since MU * * @param string $user_name The new user's login name. * @param string $password The new user's password. * @param string $email The new user's email address. * @return int|false Returns false on failure, or int $user_id on success */ function wpmu_create_user($user_name, $password, $email) { $user_name = preg_replace('/\\s+/', '', sanitize_user($user_name, true)); $user_id = wp_create_user($user_name, $password, $email); if (is_wp_error($user_id)) { return false; } // Newly created users have no roles or caps until they are added to a blog. delete_user_option($user_id, 'capabilities'); delete_user_option($user_id, 'user_level'); /** * Fires immediately after a new user is created. * * @since MU * * @param int $user_id User ID. */ do_action('wpmu_new_user', $user_id); return $user_id; }
private static function uninstall_plugin() { global $wpdb; $cf = WpssoConfig::get_config(); $slug = $cf['plugin'][$cf['lca']]['slug']; $options = get_option($cf['lca'] . '_options'); if (empty($options['plugin_preserve'])) { delete_option($cf['lca'] . '_options'); delete_post_meta_by_key('_' . $cf['lca'] . '_meta'); WpssoUser::delete_metabox_prefs(); } // delete update related options delete_option('external_updates-' . $slug); delete_option($cf['lca'] . '_umsg'); delete_option($cf['lca'] . '_utime'); // delete stored admin notices foreach (array('nag', 'err', 'inf') as $type) { $msg_opt = $cf['lca'] . '_notices_' . $type; delete_option($msg_opt); foreach (get_users(array('meta_key' => $msg_opt)) as $user) { delete_user_option($user->ID, $msg_opt); } } // delete transients $dbquery = 'SELECT option_name FROM ' . $wpdb->options . ' WHERE option_name LIKE \'_transient_timeout_' . $cf['lca'] . '_%\';'; $expired = $wpdb->get_col($dbquery); foreach ($expired as $transient) { $key = str_replace('_transient_timeout_', '', $transient); if (!empty($key)) { delete_transient($key); } } }
public function test_get_user_empty_capabilities() { wp_set_current_user(self::$user); $this->allow_user_to_manage_multisite(); $lolz = $this->factory->user->create(array('display_name' => 'lolz', 'roles' => '')); delete_user_option($lolz, 'capabilities'); delete_user_option($lolz, 'user_level'); $request = new WP_REST_Request('GET', '/wp/v2/users/' . $lolz); $request->set_param('context', 'edit'); $response = $this->server->dispatch($request); $data = $response->get_data(); $this->assertEquals($data['capabilities'], new stdClass()); $this->assertEquals($data['extra_capabilities'], new stdClass()); }
/** * Remove a topic from user's subscriptions * * @since bbPress (r2668) * * @param int $user_id Optional. User id * @param int $topic_id Optional. Topic id * @uses bbp_get_user_subscribed_topic_ids() To get the user's subscriptions * @uses update_user_option() To update the user's subscriptions * @uses delete_user_option() To delete the user's subscriptions meta * @uses do_action() Calls 'bbp_remove_user_subscription' with the user id and * topic id * @return bool True if the topic was removed from user's subscriptions, * otherwise false */ function bbp_remove_user_subscription($user_id, $topic_id) { if (empty($user_id) || empty($topic_id)) { return false; } $subscriptions = (array) bbp_get_user_subscribed_topic_ids($user_id); if (empty($subscriptions)) { return false; } $pos = array_search($topic_id, $subscriptions); if (is_numeric($pos)) { array_splice($subscriptions, $pos, 1); $subscriptions = array_filter($subscriptions); if (!empty($subscriptions)) { $subscriptions = implode(',', $subscriptions); update_user_option($user_id, '_bbp_subscriptions', $subscriptions); } else { delete_user_option($user_id, '_bbp_subscriptions'); } wp_cache_delete('bbp_get_topic_subscribers_' . $topic_id, 'bbpress'); } do_action('bbp_remove_user_subscription', $user_id, $topic_id); return true; }
/** * Delete User's Cache * * @return boolean * * @access public */ public function clearCache() { return delete_user_option($this->getId(), 'aam_cache'); }
/** * Handles Profile modifications. * * @package optimizeMember\Profiles * @since 3.5 * * @attaches-to ``add_action("init");`` * * @return null After re-configuring the ``$current_user`` object. * May also exit script execution when handling the Stand-Alone Profile Modification Form. */ public static function handle_profile_modifications() { global $current_user; /* We'll need to update this global object. */ /**/ $user =& $current_user; /* Shorter reference to the $current_user object. */ /**/ do_action("ws_plugin__optimizemember_before_handle_profile_modifications", get_defined_vars()); /**/ if (!empty($_POST["ws_plugin__optimizemember_profile_save"]) && is_user_logged_in() && is_object($user) && !empty($user->ID) && ($user_id = $user->ID)) { if (($nonce = $_POST["ws_plugin__optimizemember_profile_save"]) && wp_verify_nonce($nonce, "ws-plugin--optimizemember-profile-save")) { $GLOBALS["ws_plugin__optimizemember_profile_saved"] = true; /* Global flag as having been saved/updated successfully. */ /**/ $_p = c_ws_plugin__optimizemember_utils_strings::trim_deep(stripslashes_deep($_POST)); /* Clean ``$_POST`` vars. */ /**/ $userdata["ID"] = $user_id; /**/ if (!empty($_p["ws_plugin__optimizemember_profile_email"])) { if (is_email($_p["ws_plugin__optimizemember_profile_email"]) && !email_exists($_p["ws_plugin__optimizemember_profile_email"])) { $userdata["user_email"] = $_p["ws_plugin__optimizemember_profile_email"]; } } /**/ if (!empty($_p["ws_plugin__optimizemember_profile_password1"])) { if ($user->user_login !== "demo") { /* No pass change on demo! */ $userdata["user_pass"] = $_p["ws_plugin__optimizemember_profile_password1"]; } } /**/ if (!empty($_p["ws_plugin__optimizemember_profile_first_name"])) { $userdata["first_name"] = $_p["ws_plugin__optimizemember_profile_first_name"]; } /**/ if (!empty($_p["ws_plugin__optimizemember_profile_display_name"])) { $userdata["display_name"] = $_p["ws_plugin__optimizemember_profile_display_name"]; } /**/ if (!empty($_p["ws_plugin__optimizemember_profile_last_name"])) { $userdata["last_name"] = $_p["ws_plugin__optimizemember_profile_last_name"]; } /**/ wp_update_user($userdata); /* OK. Now send this array for an update. */ /**/ if ($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["custom_reg_fields"]) { if ($fields_applicable = c_ws_plugin__optimizemember_custom_reg_fields::custom_fields_configured_at_level("auto-detection", "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 { /* Else ``unset()``. */ unset($fields[$field_var]); } } else { /* Else ``unset()``. */ unset($fields[$field_var]); } } } } /**/ if (!empty($fields)) { update_user_option($user_id, "optimizemember_custom_fields", $fields); } else { /* Else delete their Custom Fields? */ 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_handle_profile_modifications", get_defined_vars()); unset($__refs, $__v); /* Unset defined __refs, __v. */ /**/ $user = new WP_User($user_id); /* Update the ``WP_User`` object for the current User/Member. */ function_exists("setup_userdata") ? setup_userdata() : null; /* Update global vars. */ /**/ $lwp = c_ws_plugin__optimizemember_login_redirects::login_redirection_url($user); $lwp = !$lwp ? get_page_link($GLOBALS["WS_PLUGIN__"]["optimizemember"]["o"]["login_welcome_page"]) : $lwp; /**/ if (empty($_p["ws_plugin__optimizemember_sc_profile_save"])) { echo '<script type="text/javascript">' . "\n"; echo "if(window.parent && window.parent != window) { window.parent.alert('" . c_ws_plugin__optimizemember_utils_strings::esc_js_sq(_x("Profile updated successfully.", "s2member-front", "s2member")) . "'); window.parent.location = '" . c_ws_plugin__optimizemember_utils_strings::esc_js_sq($lwp) . "'; }"; echo "else if(window.opener) { window.alert('" . c_ws_plugin__optimizemember_utils_strings::esc_js_sq(_x("Profile updated successfully.", "s2member-front", "s2member")) . "'); window.opener.location = '" . c_ws_plugin__optimizemember_utils_strings::esc_js_sq($lwp) . "'; window.close(); }"; echo "else { alert('" . c_ws_plugin__optimizemember_utils_strings::esc_js_sq(_x("Profile updated successfully.", "s2member-front", "s2member")) . "'); window.location = '" . c_ws_plugin__optimizemember_utils_strings::esc_js_sq($lwp) . "'; }"; echo '</script>' . "\n"; /**/ exit; /* Clean exit. */ } } } /**/ do_action("ws_plugin__optimizemember_after_handle_profile_modifications", get_defined_vars()); /**/ return; /* Return for uniformity. */ }
/** * Handles Profile modifications. * * @package s2Member\Profiles * @since 3.5 * * @attaches-to ``add_action('init');`` */ public static function handle_profile_modifications() { global $current_user; // We'll need to update this global object. $user =& $current_user; // Shorter reference to the $current_user object. do_action('ws_plugin__s2member_before_handle_profile_modifications', get_defined_vars()); if (!empty($_POST['ws_plugin__s2member_profile_save']) && is_user_logged_in() && is_object($user) && !empty($user->ID) && ($user_id = $user->ID)) { if (($nonce = $_POST['ws_plugin__s2member_profile_save']) && wp_verify_nonce($nonce, 'ws-plugin--s2member-profile-save')) { $GLOBALS['ws_plugin__s2member_profile_saved'] = TRUE; // Global flag as having been saved/updated successfully. $_p = c_ws_plugin__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)); // Clean ``$_POST`` vars. $userdata['ID'] = $user_id; // Needed for database update. if (!empty($_p['ws_plugin__s2member_profile_email'])) { if (is_email($_p['ws_plugin__s2member_profile_email']) && !email_exists($_p['ws_plugin__s2member_profile_email'])) { $userdata['user_email'] = $_p['ws_plugin__s2member_profile_email']; if (strcasecmp($userdata['user_email'], $user->user_email) !== 0) { $email_change = TRUE; } } } if (!empty($_p['ws_plugin__s2member_profile_password1'])) { if ($user->user_login !== 'demo') { // No pass change on demo! $userdata['user_pass'] = $_p['ws_plugin__s2member_profile_password1']; } } if (!empty($_p['ws_plugin__s2member_profile_first_name'])) { $userdata['first_name'] = $_p['ws_plugin__s2member_profile_first_name']; } if (!empty($_p['ws_plugin__s2member_profile_display_name'])) { $userdata['display_name'] = $_p['ws_plugin__s2member_profile_display_name']; } if (!empty($_p['ws_plugin__s2member_profile_last_name'])) { $userdata['last_name'] = $_p['ws_plugin__s2member_profile_last_name']; } wp_update_user(wp_slash($userdata)); // OK. Now send this array for an update. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_fields']) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level('auto-detection', 'profile')) { $fields = array(); // Initialize the array of fields. $_existing_fields = get_user_option('s2member_custom_fields', $user_id); foreach (json_decode($GLOBALS['WS_PLUGIN__']['s2member']['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 { unset($fields[$field_var]); } } else { if ($field['required'] === 'yes' && (!isset($_p['ws_plugin__s2member_profile_' . $field_var]) || !is_array($_p['ws_plugin__s2member_profile_' . $field_var]) && !is_string($_p['ws_plugin__s2member_profile_' . $field_var]) || is_array($_p['ws_plugin__s2member_profile_' . $field_var]) && empty($_p['ws_plugin__s2member_profile_' . $field_var]) || is_string($_p['ws_plugin__s2member_profile_' . $field_var]) && !strlen($_p['ws_plugin__s2member_profile_' . $field_var])) || isset($_p['ws_plugin__s2member_profile_' . $field_var]) && c_ws_plugin__s2member_custom_reg_fields::validation_errors(array($field_var => $_p['ws_plugin__s2member_profile_' . $field_var]), array($field))) { 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 (isset($_p['ws_plugin__s2member_profile_' . $field_var])) { if ((is_array($_p['ws_plugin__s2member_profile_' . $field_var]) && !empty($_p['ws_plugin__s2member_profile_' . $field_var]) || is_string($_p['ws_plugin__s2member_profile_' . $field_var]) && strlen($_p['ws_plugin__s2member_profile_' . $field_var])) && !c_ws_plugin__s2member_custom_reg_fields::validation_errors(array($field_var => $_p['ws_plugin__s2member_profile_' . $field_var]), array($field))) { $fields[$field_var] = $_p['ws_plugin__s2member_profile_' . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } } if (!empty($fields)) { update_user_option($user_id, 's2member_custom_fields', $fields); } else { // Else delete their Custom Fields? delete_user_option($user_id, 's2member_custom_fields'); } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_handle_profile_modifications', get_defined_vars()); unset($__refs, $__v); clean_user_cache($user_id); wp_cache_delete($user_id, 'user_meta'); $user = new WP_User($user_id); // Fresh object. if (function_exists('setup_userdata')) { setup_userdata(); } $role = c_ws_plugin__s2member_user_access::user_access_role($user); $level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role); if (!empty($_p['ws_plugin__s2member_profile_opt_in']) && $role && $level >= 0) { c_ws_plugin__s2member_list_servers::process_list_servers($role, $level, $user->user_login, !empty($userdata['user_pass']) ? $userdata['user_pass'] : '', $user->user_email, $user->first_name, $user->last_name, $_SERVER['REMOTE_ADDR'], TRUE, TRUE, $user_id); } else { if ($role && $level >= 0 && $GLOBALS['WS_PLUGIN__']['s2member']['o']['custom_reg_opt_in']) { c_ws_plugin__s2member_list_servers::process_list_server_removals($role, $level, $user->user_login, !empty($userdata['user_pass']) ? $userdata['user_pass'] : '', $user->user_email, $user->first_name, $user->last_name, $_SERVER['REMOTE_ADDR'], TRUE, $user_id); } } $lwp = c_ws_plugin__s2member_login_redirects::login_redirection_url($user); $lwp = !$lwp ? get_page_link($GLOBALS['WS_PLUGIN__']['s2member']['o']['login_welcome_page']) : $lwp; if (empty($_p['ws_plugin__s2member_sc_profile_save'])) { echo '<script type="text/javascript">' . "\n"; echo "if(window.parent && window.parent != window) { window.parent.alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x('Profile updated successfully.', 's2member-front', 's2member')) . "'); window.parent.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; }"; echo "else if(window.opener) { window.alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x('Profile updated successfully.', 's2member-front', 's2member')) . "'); window.opener.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; window.close(); }"; echo "else { alert('" . c_ws_plugin__s2member_utils_strings::esc_js_sq(_x('Profile updated successfully.', 's2member-front', 's2member')) . "'); window.location = '" . c_ws_plugin__s2member_utils_strings::esc_js_sq($lwp) . "'; }"; echo '</script>' . "\n"; exit; } } } do_action('ws_plugin__s2member_after_handle_profile_modifications', get_defined_vars()); }
/** * Delete a WP User Option with the WP User Options API, for all users of the site. * * @since 1.0.0 */ public function delete_for_all_users() { $users = get_users(); foreach ($users as $user) { delete_user_option($user->ID, $this->option_name, false); // @TODO: Add other user options for different actions as well. } }
/** * Read user's option * * @param string $object * @param string $id * * @return mixed * * @access public */ public function deleteOption($object, $id = 0) { return delete_user_option($this->getId(), $this->getOptionName($object, $id)); }
public static function update_status_unknown_to_success(Pronamic_Pay_Payment $payment, $can_redirect = false) { $data = new Pronamic_WP_Pay_Extensions_S2Member_PaymentData(array('level' => get_post_meta($payment->get_id(), '_pronamic_payment_s2member_level', true), 'period' => get_post_meta($payment->get_id(), '_pronamic_payment_s2member_period', true), 'ccaps' => get_post_meta($payment->get_id(), '_pronamic_payment_s2member_ccaps', true))); $email = $payment->get_email(); // get account from email $user = get_user_by('email', $email); // No valid user? if (!$user) { // Make a random string for password $random_string = wp_generate_password(10); // Make a user with the username as the email $user_id = wp_create_user($email, $random_string, $email); // Subject $subject = __('Account Confirmation', 'pronamic_ideal') . ' | ' . get_bloginfo('name'); // Message $message = get_option('pronamic_pay_s2member_signup_email_message'); $message = str_replace(array('%%email%%', '%%password%%'), array($email, $password), $message); // Mail wp_mail($email, $subject, $message); $user = new WP_User($user_id); } $level = $data->get_level(); $period = $data->get_period(); $ccaps = $data->get_ccaps(); $capability = 'access_s2member_level' . $level; $role = 's2member_level' . $level; // Update user role //$user->add_cap( $capability ); // TODO Perhaps this should line be removed. At s2Member EOT this capability is not removed, which allows the user to illegitimately view the protected content. $user->set_role($role); $note = sprintf(__('Update user "%s" to role "%s" and added custom capability "%s".', 'pronamic_ideal'), $email, $role, $capability); $payment->add_note($note); // Custom Capabilities if (!empty($ccaps)) { $ccaps = Pronamic_WP_Pay_Extensions_S2Member_Util::ccap_string_to_array($ccaps); Pronamic_WP_Pay_Extensions_S2Member_Util::ccap_user_update($user, $ccaps); } // Registration times $registration_time = time(); $registration_times = get_user_option('s2member_paid_registration_times', $user->ID); if (empty($registration_times)) { $registration_times = array(); } $registration_times['level' . $level] = $registration_time; update_user_option($user->ID, 's2member_paid_registration_times', $registration_times); if (in_array($period, array('1 L'))) { // Lifetime, delete end of time option delete_user_option($user->ID, 's2member_auto_eot_time'); } else { // Auto end of time // @see https://github.com/WebSharks/s2Member/blob/131126/s2member/includes/classes/utils-time.inc.php#L100 $eot_time_current = get_user_option('s2member_auto_eot_time', $user->ID); if (!is_numeric($eot_time_current)) { $eot_time_current = time(); } $eot_time_new = c_ws_plugin__s2member_utils_time::auto_eot_time($user->ID, false, $period, false, $eot_time_current); update_user_option($user->ID, 's2member_auto_eot_time', $eot_time_new); } }
/** * Create a WP user at signup. * * Since BP 2.0, non-multisite configurations have stored signups in * the same way as Multisite configs traditionally have: in the * wp_signups table. However, because some plugins may be looking * directly in the wp_users table for non-activated signups, we * mirror signups there by creating "phantom" users, mimicking WP's * default behavior. * * @since 2.0.0 * * @param string $user_login User login string. * @param string $user_password User password. * @param string $user_email User email address. * @param array $usermeta Metadata associated with the signup. * @return int User id. */ public static function add_backcompat($user_login = '', $user_password = '', $user_email = '', $usermeta = array()) { global $wpdb; $user_id = wp_insert_user(array('user_login' => $user_login, 'user_pass' => $user_password, 'display_name' => sanitize_title($user_login), 'user_email' => $user_email)); if (is_wp_error($user_id) || empty($user_id)) { return $user_id; } // Update the user status to '2', ie "not activated" // (0 = active, 1 = spam, 2 = not active). $wpdb->query($wpdb->prepare("UPDATE {$wpdb->users} SET user_status = 2 WHERE ID = %d", $user_id)); // WordPress creates these options automatically on // wp_insert_user(), but we delete them so that inactive // signups don't appear in various user counts. delete_user_option($user_id, 'capabilities'); delete_user_option($user_id, 'user_level'); // Set any profile data. if (bp_is_active('xprofile')) { if (!empty($usermeta['profile_field_ids'])) { $profile_field_ids = explode(',', $usermeta['profile_field_ids']); foreach ((array) $profile_field_ids as $field_id) { if (empty($usermeta["field_{$field_id}"])) { continue; } $current_field = $usermeta["field_{$field_id}"]; xprofile_set_field_data($field_id, $user_id, $current_field); // Save the visibility level. $visibility_level = !empty($usermeta['field_' . $field_id . '_visibility']) ? $usermeta['field_' . $field_id . '_visibility'] : 'public'; xprofile_set_field_visibility_level($field_id, $user_id, $visibility_level); } } } /** * Filters the user ID for the backcompat functionality. * * @since 2.0.0 * * @param int $user_id User ID being registered. */ return apply_filters('bp_core_signups_add_backcompat', $user_id); }
/** * Processed by WP_Cron; this handles Auto-EOTs *(EOT = End Of Term)*. * * If you have a HUGE userbase, increase the max EOTs per process. * But NOTE, this runs ``$per_process`` *(per Blog)* on a Multisite Network. * To increase, use: ``add_filter ('ws_plugin__s2member_auto_eot_system_per_process');``. * * This function makes an important Hook available: `ws_plugin__s2member_after_auto_eot_system`. * This Hook is used by some of s2Member Pro's Gateway integrations; allowing CRON processing * to run for important communications; which poll Payment Gateway APIs for possible EOTs. * * @package s2Member\Auto_EOT_System * @since 3.5 * * @param int $per_process Number of database records to process each time. * Can also be Filtered with `ws_plugin__s2member_auto_eot_system_per_process`. * * @return null */ public static function auto_eot_system($per_process = 6) { global $wpdb; /** @var $wpdb \wpdb */ global $current_site, $current_blog; include_once ABSPATH . 'wp-admin/includes/admin.php'; @set_time_limit(0); // Make time for processing a larger userbase. @ini_set('memory_limit', apply_filters('admin_memory_limit', WP_MAX_MEMORY_LIMIT)); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_before_auto_eot_system', get_defined_vars()); unset($__refs, $__v); // Housekeeping. if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['auto_eot_system_enabled']) { $per_process = apply_filters('ws_plugin__s2member_auto_eot_system_per_process', $per_process, get_defined_vars()); if (is_array($eots = $wpdb->get_results("SELECT `user_id` AS `ID` FROM `" . $wpdb->usermeta . "` WHERE `meta_key` = '" . $wpdb->prefix . "s2member_auto_eot_time' AND `meta_value` != '' AND `meta_value` <= '" . esc_sql(strtotime("now")) . "' LIMIT " . $per_process))) { foreach ($eots as $eot) { if (($user_id = $eot->ID) && is_object($user = new WP_User($user_id)) && $user->ID) { $auto_eot_time = get_user_option('s2member_auto_eot_time', $user_id); delete_user_option($user_id, 's2member_last_auto_eot_time'); delete_user_option($user_id, 's2member_auto_eot_time'); if (!$user->has_cap('administrator')) { if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['membership_eot_behavior'] === 'demote') { $eot_del_type = 'auto-eot-cancellation-expiration-demotion'; // Set EOT/Del type. $custom = get_user_option('s2member_custom', $user_id); $subscr_gateway = get_user_option('s2member_subscr_gateway', $user_id); $subscr_id = get_user_option('s2member_subscr_id', $user_id); $subscr_baid = get_user_option('s2member_subscr_baid', $user_id); $subscr_cid = get_user_option('s2member_subscr_cid', $user_id); $fields = get_user_option('s2member_custom_fields', $user_id); $user_reg_ip = get_user_option('s2member_registration_ip', $user_id); $ipn_signup_vars = get_user_option('s2member_ipn_signup_vars', $user_id); $demotion_role = c_ws_plugin__s2member_option_forces::force_demotion_role('subscriber'); $existing_role = c_ws_plugin__s2member_user_access::user_access_role($user); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_auto_eot_system_during_before_demote', get_defined_vars()); do_action('ws_plugin__s2member_during_collective_mods', $user_id, get_defined_vars(), $eot_del_type, 'modification', $demotion_role); do_action('ws_plugin__s2member_during_collective_eots', $user_id, get_defined_vars(), $eot_del_type, 'modification'); unset($__refs, $__v); // Housekeeping. if ($existing_role !== $demotion_role) { $user->set_role($demotion_role); } if (apply_filters('ws_plugin__s2member_remove_ccaps_during_eot_events', (bool) $GLOBALS['WS_PLUGIN__']['s2member']['o']['eots_remove_ccaps'], get_defined_vars())) { foreach ($user->allcaps as $cap => $cap_enabled) { if (preg_match('/^access_s2member_ccap_/', $cap)) { $user->remove_cap($ccap = $cap); } } } delete_user_option($user_id, 's2member_subscr_gateway'); delete_user_option($user_id, 's2member_subscr_id'); delete_user_option($user_id, 's2member_subscr_baid'); delete_user_option($user_id, 's2member_subscr_cid'); delete_user_option($user_id, 's2member_ipn_signup_vars'); if (!apply_filters('ws_plugin__s2member_preserve_paid_registration_times', TRUE)) { delete_user_option($user_id, 's2member_paid_registration_times'); } delete_user_option($user_id, 's2member_last_status_scan'); delete_user_option($user_id, 's2member_first_payment_txn_id'); delete_user_option($user_id, 's2member_last_payment_time'); delete_user_option($user_id, 's2member_last_auto_eot_time'); delete_user_option($user_id, 's2member_auto_eot_time'); delete_user_option($user_id, 's2member_file_download_access_log'); delete_user_option($user_id, 's2member_authnet_payment_failures'); update_user_option($user_id, 's2member_last_auto_eot_time', $auto_eot_time); c_ws_plugin__s2member_user_notes::append_user_notes($user_id, 'Demoted by s2Member: ' . date('D M j, Y g:i a T')); if ($subscr_gateway && $subscr_id) { // Also note the Paid Subscr. Gateway/ID so there is a reference left behind here. c_ws_plugin__s2member_user_notes::append_user_notes($user_id, 'Paid Subscr. ID @ time of demotion: ' . $subscr_gateway . ' → ' . $subscr_id); } if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls'] && is_array($cv = preg_split('/\\|/', $custom))) { foreach (preg_split('/[' . "\r\n\t" . ']+/', $GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_urls']) as $url) { // Handle EOT Notifications. if (($url = preg_replace('/%%cv([0-9]+)%%/ei', 'urlencode(trim(@$cv[$1]))', $url)) && ($url = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode('auto-eot-cancellation-expiration-demotion')), $url)) && ($url = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($subscr_id)), $url))) { if (($url = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->first_name)), $url)) && ($url = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->last_name)), $url))) { if ($url = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(trim($user->first_name . ' ' . $user->last_name))), $url)) { if ($url = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_email)), $url)) { if ($url = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user->user_login)), $url)) { if ($url = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_reg_ip)), $url)) { if ($url = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode($user_id)), $url)) { if (is_array($fields) && !empty($fields)) { foreach ($fields as $var => $val) { if (!($url = preg_replace('/%%' . preg_quote($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(urlencode(maybe_serialize($val))), $url))) { break; } } } if ($url = trim(preg_replace('/%%(.+?)%%/i', '', $url))) { c_ws_plugin__s2member_utils_urls::remote($url); } } } } } } } } } } if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients'] && is_array($cv = preg_split('/\\|/', $custom))) { $email_configs_were_on = c_ws_plugin__s2member_email_configs::email_config_status(); c_ws_plugin__s2member_email_configs::email_config_release(); $msg = $sbj = '(s2Member / API Notification Email) - EOT/Deletion'; $msg .= "\n\n"; // Spacing in the message body. $msg .= 'eot_del_type: %%eot_del_type%%' . "\n"; $msg .= 'subscr_id: %%subscr_id%%' . "\n"; $msg .= 'subscr_baid: %%subscr_baid%%' . "\n"; $msg .= 'subscr_cid: %%subscr_cid%%' . "\n"; $msg .= 'user_first_name: %%user_first_name%%' . "\n"; $msg .= 'user_last_name: %%user_last_name%%' . "\n"; $msg .= 'user_full_name: %%user_full_name%%' . "\n"; $msg .= 'user_email: %%user_email%%' . "\n"; $msg .= 'user_login: %%user_login%%' . "\n"; $msg .= 'user_ip: %%user_ip%%' . "\n"; $msg .= 'user_id: %%user_id%%' . "\n"; if (is_array($fields) && !empty($fields)) { foreach ($fields as $var => $val) { $msg .= $var . ': %%' . $var . '%%' . "\n"; } } $msg .= 'cv0: %%cv0%%' . "\n"; $msg .= 'cv1: %%cv1%%' . "\n"; $msg .= 'cv2: %%cv2%%' . "\n"; $msg .= 'cv3: %%cv3%%' . "\n"; $msg .= 'cv4: %%cv4%%' . "\n"; $msg .= 'cv5: %%cv5%%' . "\n"; $msg .= 'cv6: %%cv6%%' . "\n"; $msg .= 'cv7: %%cv7%%' . "\n"; $msg .= 'cv8: %%cv8%%' . "\n"; $msg .= 'cv9: %%cv9%%'; if (($msg = preg_replace('/%%cv([0-9]+)%%/ei', 'trim(@$cv[$1])', $msg)) && ($msg = preg_replace('/%%eot_del_type%%/i', c_ws_plugin__s2member_utils_strings::esc_refs('auto-eot-cancellation-expiration-demotion'), $msg)) && ($msg = preg_replace('/%%subscr_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_id), $msg))) { if (($msg = preg_replace('/%%subscr_baid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_baid), $msg)) && ($msg = preg_replace('/%%subscr_cid%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($subscr_cid), $msg))) { if (($msg = preg_replace('/%%user_first_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->first_name), $msg)) && ($msg = preg_replace('/%%user_last_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->last_name), $msg))) { if ($msg = preg_replace('/%%user_full_name%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(trim($user->first_name . ' ' . $user->last_name)), $msg)) { if ($msg = preg_replace('/%%user_email%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_email), $msg)) { if ($msg = preg_replace('/%%user_login%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user->user_login), $msg)) { if ($msg = preg_replace('/%%user_ip%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_reg_ip), $msg)) { if ($msg = preg_replace('/%%user_id%%/i', c_ws_plugin__s2member_utils_strings::esc_refs($user_id), $msg)) { if (is_array($fields) && !empty($fields)) { foreach ($fields as $var => $val) { if (!($msg = preg_replace('/%%' . preg_quote($var, '/') . '%%/i', c_ws_plugin__s2member_utils_strings::esc_refs(maybe_serialize($val)), $msg))) { break; } } } if ($sbj && ($msg = trim(preg_replace('/%%(.+?)%%/i', '', $msg)))) { foreach (c_ws_plugin__s2member_utils_strings::parse_emails($GLOBALS['WS_PLUGIN__']['s2member']['o']['eot_del_notification_recipients']) as $recipient) { wp_mail($recipient, apply_filters('ws_plugin__s2member_eot_del_notification_email_sbj', $sbj, get_defined_vars()), apply_filters('ws_plugin__s2member_eot_del_notification_email_msg', $msg, get_defined_vars()), 'Content-Type: text/plain; charset=UTF-8'); } } } } } } } } } } if ($email_configs_were_on) { c_ws_plugin__s2member_email_configs::email_config(); } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_auto_eot_system_during_demote', get_defined_vars()); unset($__refs, $__v); // Housekeeping. } else { if ($GLOBALS['WS_PLUGIN__']['s2member']['o']['membership_eot_behavior'] === 'delete') { $eot_del_type = $GLOBALS['ws_plugin__s2member_eot_del_type'] = 'auto-eot-cancellation-expiration-deletion'; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_auto_eot_system_during_before_delete', get_defined_vars()); do_action('ws_plugin__s2member_during_collective_eots', $user_id, get_defined_vars(), $eot_del_type, 'removal-deletion'); unset($__refs, $__v); // Housekeeping. if (is_multisite()) { remove_user_from_blog($user_id, $current_blog->blog_id); // This will automatically trigger `eot_del_notification_urls`. c_ws_plugin__s2member_user_deletions::handle_ms_user_deletions($user_id, $current_blog->blog_id, 's2says'); } else { // Otherwise, we can actually delete them. // This will automatically trigger `eot_del_notification_urls` wp_delete_user($user_id); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_auto_eot_system_during_delete', get_defined_vars()); unset($__refs, $__v); // Housekeeping. } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_during_auto_eot_system', get_defined_vars()); unset($__refs, $__v); // Housekeeping. } } } } } c_ws_plugin__s2member_utils_logs::cleanup_expired_s2m_transients(); foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action('ws_plugin__s2member_after_auto_eot_system', get_defined_vars()); unset($__refs, $__v); // Housekeeping. }
/** * Migrate signups from pre-2.0 configuration to wp_signups. * * @since 2.0.1 */ function bp_members_migrate_signups() { global $wpdb; $status_2_ids = $wpdb->get_col("SELECT ID FROM {$wpdb->users} WHERE user_status = '2'"); if (!empty($status_2_ids)) { $signups = get_users(array('fields' => array('ID', 'user_login', 'user_pass', 'user_registered', 'user_email', 'display_name'), 'include' => $status_2_ids)); // Fetch activation keys separately, to avoid the all_with_meta // overhead. $status_2_ids_sql = implode(',', $status_2_ids); $ak_data = $wpdb->get_results("SELECT user_id, meta_value FROM {$wpdb->usermeta} WHERE meta_key = 'activation_key' AND user_id IN ({$status_2_ids_sql})"); // Rekey. $activation_keys = array(); foreach ($ak_data as $ak_datum) { $activation_keys[intval($ak_datum->user_id)] = $ak_datum->meta_value; } unset($status_2_ids_sql, $status_2_ids, $ak_data); // Merge. foreach ($signups as &$signup) { if (isset($activation_keys[$signup->ID])) { $signup->activation_key = $activation_keys[$signup->ID]; } } // Reset the signup var as we're using it to process the migration. unset($signup); } else { return; } foreach ($signups as $signup) { $meta = array(); // Rebuild the activation key, if missing. if (empty($signup->activation_key)) { $signup->activation_key = wp_generate_password(32, false); } if (bp_is_active('xprofile')) { $meta['field_1'] = $signup->display_name; } $meta['password'] = $signup->user_pass; $user_login = preg_replace('/\\s+/', '', sanitize_user($signup->user_login, true)); $user_email = sanitize_email($signup->user_email); BP_Signup::add(array('user_login' => $user_login, 'user_email' => $user_email, 'registered' => $signup->user_registered, 'activation_key' => $signup->activation_key, 'meta' => $meta)); // Deleting these options will remove signups from users count. delete_user_option($signup->ID, 'capabilities'); delete_user_option($signup->ID, 'user_level'); } }
/** * Import users from a CSV file. * * ## OPTIONS * * <file> * : The local or remote CSV file of users to import. * * [--send-email] * : Send an email to new users with their account details. * * [--skip-update] * : Don't update users that already exist. * * ## EXAMPLES * * # Import users from local CSV file * $ wp user import-csv /path/to/users.csv * Success: bobjones created * Success: newuser1 created * Success: existinguser created * * # Import users from remote CSV file * $ wp user import-csv http://example.com/users.csv * * Sample users.csv file: * * user_login,user_email,display_name,role * bobjones,bobjones@example.com,Bob Jones,contributor * newuser1,newuser1@example.com,New User,author * existinguser,existinguser@example.com,Existing User,administrator * * @subcommand import-csv */ public function import_csv($args, $assoc_args) { $blog_users = get_users(); $filename = $args[0]; if (0 === stripos($filename, 'http://') || 0 === stripos($filename, 'https://')) { $response = wp_remote_head($filename); $response_code = (string) wp_remote_retrieve_response_code($response); if (in_array($response_code[0], array(4, 5))) { WP_CLI::error("Couldn't access remote CSV file (HTTP {$response_code} response)."); } } else { if (!file_exists($filename)) { WP_CLI::error(sprintf("Missing file: %s", $filename)); } } foreach (new \WP_CLI\Iterators\CSV($filename) as $i => $new_user) { $defaults = array('role' => get_option('default_role'), 'user_pass' => wp_generate_password(), 'user_registered' => strftime("%F %T", time()), 'display_name' => false); $new_user = array_merge($defaults, $new_user); $secondary_roles = array(); if (!empty($new_user['roles'])) { $roles = array_map('trim', explode(',', $new_user['roles'])); $invalid_role = false; foreach ($roles as $role) { if (is_null(get_role($role))) { WP_CLI::warning("{$new_user['user_login']} has an invalid role."); $invalid_role = true; break; } } if ($invalid_role) { continue; } $new_user['role'] = array_shift($roles); $secondary_roles = $roles; } else { if ('none' === $new_user['role']) { $new_user['role'] = false; } elseif (is_null(get_role($new_user['role']))) { WP_CLI::warning("{$new_user['user_login']} has an invalid role."); continue; } } // User already exists and we just need to add them to the site if they aren't already there $existing_user = get_user_by('email', $new_user['user_email']); if (!$existing_user) { $existing_user = get_user_by('login', $new_user['user_login']); } if ($existing_user && \WP_CLI\Utils\get_flag_value($assoc_args, 'skip-update')) { WP_CLI::log("{$existing_user->user_login} exists and has been skipped."); continue; } else { if ($existing_user) { $new_user['ID'] = $existing_user->ID; $user_id = wp_update_user($new_user); if (!in_array($existing_user->user_login, wp_list_pluck($blog_users, 'user_login')) && is_multisite() && $new_user['role']) { add_user_to_blog(get_current_blog_id(), $existing_user->ID, $new_user['role']); WP_CLI::log("{$existing_user->user_login} added as {$new_user['role']}."); } // Create the user } else { unset($new_user['ID']); // Unset else it will just return the ID if (is_multisite()) { $ret = wpmu_validate_user_signup($new_user['user_login'], $new_user['user_email']); if (is_wp_error($ret['errors']) && !empty($ret['errors']->errors)) { WP_CLI::warning($ret['errors']); continue; } $user_id = wpmu_create_user($new_user['user_login'], $new_user['user_pass'], $new_user['user_email']); if (!$user_id) { WP_CLI::warning("Unknown error creating new user."); continue; } $new_user['ID'] = $user_id; $user_id = wp_update_user($new_user); if (is_wp_error($user_id)) { WP_CLI::warning($user_id); continue; } } else { $user_id = wp_insert_user($new_user); } if (\WP_CLI\Utils\get_flag_value($assoc_args, 'send-email')) { self::wp_new_user_notification($user_id, $new_user['user_pass']); } } } if (is_wp_error($user_id)) { WP_CLI::warning($user_id); continue; } else { if ($new_user['role'] === false) { delete_user_option($user_id, 'capabilities'); delete_user_option($user_id, 'user_level'); } } $user = get_user_by('id', $user_id); foreach ($secondary_roles as $secondary_role) { $user->add_role($secondary_role); } if (!empty($existing_user)) { WP_CLI::success($new_user['user_login'] . " updated."); } else { WP_CLI::success($new_user['user_login'] . " created."); } } }
/** * Saves Custom Fields after an admin updates Profile. * * @package s2Member\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; foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_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__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)))) { $old_user = unserialize(serialize($user)); $old_role = c_ws_plugin__s2member_user_access::user_access_role($old_user); $role = isset($_p["role"]) && $_p["role"] !== $old_role ? $_p["role"] : $old_role; $level = c_ws_plugin__s2member_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__s2member_profile_s2member_auto_eot_time"]) ? strtotime($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) : ""; if ($role !== $old_role) { // In this case, we need to fire Hook: `ws_plugin__s2member_during_collective_mods`. do_action("ws_plugin__s2member_during_collective_mods", $user_id, get_defined_vars(), "user-role-change", "modification", $role, $user, $old_user); } if (isset($_p["ws_plugin__s2member_profile_s2member_originating_blog"]) && is_multisite() && is_super_admin()) { update_user_meta($user_id, "s2member_originating_blog", $_p["ws_plugin__s2member_profile_s2member_originating_blog"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_subscr_gateway"])) { update_user_option($user_id, "s2member_subscr_gateway", $_p["ws_plugin__s2member_profile_s2member_subscr_gateway"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_subscr_id"])) { update_user_option($user_id, "s2member_subscr_id", $_p["ws_plugin__s2member_profile_s2member_subscr_id"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_custom"])) { update_user_option($user_id, "s2member_custom", $_p["ws_plugin__s2member_profile_s2member_custom"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_registration_ip"])) { update_user_option($user_id, "s2member_registration_ip", $_p["ws_plugin__s2member_profile_s2member_registration_ip"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_notes"])) { update_user_option($user_id, "s2member_notes", $_p["ws_plugin__s2member_profile_s2member_notes"]); } if (isset($_p["ws_plugin__s2member_profile_s2member_auto_eot_time"]) && isset($auto_eot_time)) { update_user_option($user_id, "s2member_auto_eot_time", $auto_eot_time); } if (isset($_p["ws_plugin__s2member_profile_s2member_ccaps"])) { foreach ($user->allcaps as $cap => $cap_enabled) { if (preg_match("/^access_s2member_ccap_/", $cap)) { $user->remove_cap($ccap = $cap); } } if (!empty($_p["ws_plugin__s2member_profile_s2member_ccaps"])) { foreach (preg_split("/[\r\n\t\\s;,]+/", $_p["ws_plugin__s2member_profile_s2member_ccaps"]) as $ccap) { if (strlen($ccap = trim(strtolower(preg_replace("/[^a-z_0-9]/i", "", $ccap))))) { $user->add_cap("access_s2member_ccap_" . $ccap); } } } } if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["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__s2member_profile_" . $field_var])) { if (is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && strlen($_p["ws_plugin__s2member_profile_" . $field_var])) { $fields[$field_var] = $_p["ws_plugin__s2member_profile_" . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } if (!empty($fields)) { update_user_option($user_id, "s2member_custom_fields", $fields); } else { delete_user_option($user_id, "s2member_custom_fields"); } if ($level > 0) { $pr_times = get_user_option("s2member_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, "s2member_paid_registration_times", $pr_times); // Update now. } if (!empty($_p["ws_plugin__s2member_profile_opt_in"]) && !empty($role) && $level >= 0) { c_ws_plugin__s2member_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__s2member_profile_ip_restrictions"])) { c_ws_plugin__s2member_ip_restrictions::delete_reset_specific_ip_restrictions(strtolower($user->user_login)); } if (!empty($_p["ws_plugin__s2member_profile_reset_pass_resend"]) && c_ws_plugin__s2member_utils_conds::pro_is_installed()) { c_ws_plugin__s2member_email_configs::reset_pass_resend_new_user_notification($user_id, !empty($_p["pass1"]) ? $_p["pass1"] : "", array("user"), $user->user_email); } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_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__s2member_utils_strings::trim_deep(stripslashes_deep($_POST)))) { $role = c_ws_plugin__s2member_user_access::user_access_role($user); $level = c_ws_plugin__s2member_user_access::user_access_role_to_level($role); if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) { if ($fields_applicable = c_ws_plugin__s2member_custom_reg_fields::custom_fields_configured_at_level($level, "profile")) { $_existing_fields = get_user_option("s2member_custom_fields", $user_id); foreach (json_decode($GLOBALS["WS_PLUGIN__"]["s2member"]["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__s2member_profile_" . $field_var]) || !is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !is_string($_p["ws_plugin__s2member_profile_" . $field_var]) || is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && !strlen($_p["ws_plugin__s2member_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__s2member_profile_" . $field_var])) { if (is_array($_p["ws_plugin__s2member_profile_" . $field_var]) && !empty($_p["ws_plugin__s2member_profile_" . $field_var]) || is_string($_p["ws_plugin__s2member_profile_" . $field_var]) && strlen($_p["ws_plugin__s2member_profile_" . $field_var])) { $fields[$field_var] = $_p["ws_plugin__s2member_profile_" . $field_var]; } else { unset($fields[$field_var]); } } else { unset($fields[$field_var]); } } } } if (!empty($fields)) { update_user_option($user_id, "s2member_custom_fields", $fields); } else { delete_user_option($user_id, "s2member_custom_fields"); } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_during_users_list_update_cols", get_defined_vars()); unset($__refs, $__v); } } } } foreach (array_keys(get_defined_vars()) as $__v) { $__refs[$__v] =& ${$__v}; } do_action("ws_plugin__s2member_after_users_list_update_cols", get_defined_vars()); unset($__refs, $__v); return; }
/** * Create a user. * * This function runs when a user self-registers as well as when * a Super Admin creates a new user. Hook to 'wpmu_new_user' for events * that should affect all new users, but only on Multisite (otherwise * use 'user_register'). * * @since MU * @uses wp_create_user() * * @param string $user_name The new user's login name. * @param string $password The new user's password. * @param string $email The new user's email address. * @return mixed Returns false on failure, or int $user_id on success */ function wpmu_create_user($user_name, $password, $email) { $user_name = preg_replace('/\\s+/', '', sanitize_user($user_name, true)); $user_id = wp_create_user($user_name, $password, $email); if (is_wp_error($user_id)) { return false; } // Newly created users have no roles or caps until they are added to a blog. delete_user_option($user_id, 'capabilities'); delete_user_option($user_id, 'user_level'); do_action('wpmu_new_user', $user_id); return $user_id; }
/** * Updates a user option value. * * @param string $key An option key/name. * @param mixed $value An option value (mixed data types ok). * If `$value` is NULL, the option `$key` is deleted completely. * * @throws exception If invalid types are passed through arguments list. * @throws exception If this user does NOT have an ID. */ public function update_option($key, $value) { $this->check_arg_types('string:!empty', func_get_args()); if (!$this->has_id()) { throw $this->©exception($this->method(__FUNCTION__) . '#id_missing', array_merge(get_defined_vars(), array('user' => $this)), $this->__('User has no ID (cannot update option).')); } if (is_null($value)) { delete_user_option($this->ID, $key); } else { update_user_option($this->ID, $key, $value); } }