/** * Retrieve user info by a given field * * @since 2.8.0 * * @param string $field The field to retrieve the user with. id | slug | email | login * @param int|string $value A value for $field. A user ID, slug, email address, or login name. * @return bool|object False on failure, nxt_User object on success */ function get_user_by($field, $value) { $userdata = nxt_User::get_data_by($field, $value); if (!$userdata) { return false; } $user = new nxt_User(); $user->init($userdata); return $user; }
/** * Insert an user into the database. * * Can update a current user or insert a new user based on whether the user's ID * is present. * * Can be used to update the user's info (see below), set the user's role, and * set the user's preference on whether they want the rich editor on. * * Most of the $userdata array fields have filters associated with the values. * The exceptions are 'rich_editing', 'role', 'jabber', 'aim', 'yim', * 'user_registered', and 'ID'. The filters have the prefix 'pre_user_' followed * by the field name. An example using 'description' would have the filter * called, 'pre_user_description' that can be hooked into. * * The $userdata array can contain the following fields: * 'ID' - An integer that will be used for updating an existing user. * 'user_pass' - A string that contains the plain text password for the user. * 'user_login' - A string that contains the user's username for logging in. * 'user_nicename' - A string that contains a nicer looking name for the user. * The default is the user's username. * 'user_url' - A string containing the user's URL for the user's web site. * 'user_email' - A string containing the user's email address. * 'display_name' - A string that will be shown on the site. Defaults to user's * username. It is likely that you will want to change this, for appearance. * 'nickname' - The user's nickname, defaults to the user's username. * 'first_name' - The user's first name. * 'last_name' - The user's last name. * 'description' - A string containing content about the user. * 'rich_editing' - A string for whether to enable the rich editor. False * if not empty. * 'user_registered' - The date the user registered. Format is 'Y-m-d H:i:s'. * 'role' - A string used to set the user's role. * 'jabber' - User's Jabber account. * 'aim' - User's AOL IM account. * 'yim' - User's Yahoo IM account. * * @since 2.0.0 * @uses $nxtdb NXTClass database layer. * @uses apply_filters() Calls filters for most of the $userdata fields with the prefix 'pre_user'. See note above. * @uses do_action() Calls 'profile_update' hook when updating giving the user's ID * @uses do_action() Calls 'user_register' hook when creating a new user giving the user's ID * * @param array $userdata An array of user data. * @return int|nxt_Error The newly created user's ID or a nxt_Error object if the user could not be created. */ function nxt_insert_user($userdata) { global $nxtdb; extract($userdata, EXTR_SKIP); // Are we updating or creating? if (!empty($ID)) { $ID = (int) $ID; $update = true; $old_user_data = nxt_User::get_data_by('id', $ID); } else { $update = false; // Hash the password $user_pass = nxt_hash_password($user_pass); } $user_login = sanitize_user($user_login, true); $user_login = apply_filters('pre_user_login', $user_login); //Remove any non-printable chars from the login string to see if we have ended up with an empty username $user_login = trim($user_login); if (empty($user_login)) { return new nxt_Error('empty_user_login', __('Cannot create a user with an empty login name.')); } if (!$update && username_exists($user_login)) { return new nxt_Error('existing_user_login', __('This username is already registered.')); } if (empty($user_nicename)) { $user_nicename = sanitize_title($user_login); } $user_nicename = apply_filters('pre_user_nicename', $user_nicename); if (empty($user_url)) { $user_url = ''; } $user_url = apply_filters('pre_user_url', $user_url); if (empty($user_email)) { $user_email = ''; } $user_email = apply_filters('pre_user_email', $user_email); if (!$update && !defined('nxt_IMPORTING') && email_exists($user_email)) { return new nxt_Error('existing_user_email', __('This email address is already registered.')); } if (empty($display_name)) { $display_name = $user_login; } $display_name = apply_filters('pre_user_display_name', $display_name); if (empty($nickname)) { $nickname = $user_login; } $nickname = apply_filters('pre_user_nickname', $nickname); if (empty($first_name)) { $first_name = ''; } $first_name = apply_filters('pre_user_first_name', $first_name); if (empty($last_name)) { $last_name = ''; } $last_name = apply_filters('pre_user_last_name', $last_name); if (empty($description)) { $description = ''; } $description = apply_filters('pre_user_description', $description); if (empty($rich_editing)) { $rich_editing = 'true'; } if (empty($comment_shortcuts)) { $comment_shortcuts = 'false'; } if (empty($admin_color)) { $admin_color = 'fresh'; } $admin_color = preg_replace('|[^a-z0-9 _.\\-@]|i', '', $admin_color); if (empty($use_ssl)) { $use_ssl = 0; } if (empty($user_registered)) { $user_registered = gmdate('Y-m-d H:i:s'); } if (empty($show_admin_bar_front)) { $show_admin_bar_front = 'true'; } $user_nicename_check = $nxtdb->get_var($nxtdb->prepare("SELECT ID FROM {$nxtdb->users} WHERE user_nicename = %s AND user_login != %s LIMIT 1", $user_nicename, $user_login)); if ($user_nicename_check) { $suffix = 2; while ($user_nicename_check) { $alt_user_nicename = $user_nicename . "-{$suffix}"; $user_nicename_check = $nxtdb->get_var($nxtdb->prepare("SELECT ID FROM {$nxtdb->users} WHERE user_nicename = %s AND user_login != %s LIMIT 1", $alt_user_nicename, $user_login)); $suffix++; } $user_nicename = $alt_user_nicename; } $data = compact('user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered'); $data = stripslashes_deep($data); if ($update) { $nxtdb->update($nxtdb->users, $data, compact('ID')); $user_id = (int) $ID; } else { $nxtdb->insert($nxtdb->users, $data + compact('user_login')); $user_id = (int) $nxtdb->insert_id; } $user = new nxt_User($user_id); foreach (_get_additional_user_keys($user) as $key) { if (isset(${$key})) { update_user_meta($user_id, $key, ${$key}); } } if (isset($role)) { $user->set_role($role); } elseif (!$update) { $user->set_role(get_option('default_role')); } nxt_cache_delete($user_id, 'users'); nxt_cache_delete($user_login, 'userlogins'); if ($update) { do_action('profile_update', $user_id, $old_user_data); } else { do_action('user_register', $user_id); } return $user_id; }