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;
 }
Exemplo n.º 2
0
 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']);
         }
     }
 }
Exemplo n.º 3
0
 /**
  * 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}.");
     }
 }
Exemplo n.º 4
0
 /**
  * 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')));
     }
 }
Exemplo n.º 6
0
 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);
     }
 }
Exemplo n.º 7
0
 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();
 }
Exemplo n.º 8
0
/**
 * 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);
    }
}
Exemplo n.º 9
0
/**
 * 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');
}
Exemplo n.º 10
0
/**
 * 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);
}
Exemplo n.º 11
0
/**
 * 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);
}
Exemplo n.º 12
0
 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');
     //        }
 }
Exemplo n.º 13
0
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');
        }
    }
}
Exemplo n.º 14
0
/**
 * 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;
}
Exemplo n.º 15
0
 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);
         }
     }
 }
Exemplo n.º 16
0
 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());
 }
Exemplo n.º 17
0
/**
 * 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;
}
Exemplo n.º 18
0
 /**
  * Delete User's Cache
  *
  * @return boolean
  *
  * @access public
  */
 public function clearCache()
 {
     return delete_user_option($this->getId(), 'aam_cache');
 }
Exemplo n.º 19
0
 /**
  * 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. */
 }
Exemplo n.º 20
0
 /**
  * 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());
 }
Exemplo n.º 21
0
 /**
  * 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.
     }
 }
Exemplo n.º 22
0
 /**
  * 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));
 }
Exemplo n.º 23
0
 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);
     }
 }
Exemplo n.º 24
0
 /**
  * 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);
 }
Exemplo n.º 25
0
 /**
  * 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');
    }
}
Exemplo n.º 27
0
 /**
  * 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.");
         }
     }
 }
Exemplo n.º 28
0
 /**
  * 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;
 }
Exemplo n.º 29
0
/**
 * 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;
}
Exemplo n.º 30
0
 /**
  * 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);
     }
 }