Changeset 16009 for trunk/wp-includes/registration.php
- Timestamp:
- 10/27/2010 10:46:24 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/registration.php
r15896 r16009 1 1 <?php 2 2 /** 3 * User Registration API3 * Deprecated. No longer needed. 4 4 * 5 5 * @package WordPress 6 6 */ 7 8 /** 9 * Checks whether the given username exists. 10 * 11 * @since 2.0.0 12 * 13 * @param string $username Username. 14 * @return null|int The user's ID on success, and null on failure. 15 */ 16 function username_exists( $username ) { 17 if ( $user = get_userdatabylogin( $username ) ) { 18 return $user->ID; 19 } else { 20 return null; 21 } 22 } 23 24 /** 25 * Checks whether the given email exists. 26 * 27 * @since 2.1.0 28 * @uses $wpdb 29 * 30 * @param string $email Email. 31 * @return bool|int The user's ID on success, and false on failure. 32 */ 33 function email_exists( $email ) { 34 if ( $user = get_user_by_email($email) ) 35 return $user->ID; 36 37 return false; 38 } 39 40 /** 41 * Checks whether an username is valid. 42 * 43 * @since 2.0.1 44 * @uses apply_filters() Calls 'validate_username' hook on $valid check and $username as parameters 45 * 46 * @param string $username Username. 47 * @return bool Whether username given is valid 48 */ 49 function validate_username( $username ) { 50 $sanitized = sanitize_user( $username, true ); 51 $valid = ( $sanitized == $username ); 52 return apply_filters( 'validate_username', $valid, $username ); 53 } 54 55 /** 56 * Insert an user into the database. 57 * 58 * Can update a current user or insert a new user based on whether the user's ID 59 * is present. 60 * 61 * Can be used to update the user's info (see below), set the user's role, and 62 * set the user's preference on whether they want the rich editor on. 63 * 64 * Most of the $userdata array fields have filters associated with the values. 65 * The exceptions are 'rich_editing', 'role', 'jabber', 'aim', 'yim', 66 * 'user_registered', and 'ID'. The filters have the prefix 'pre_user_' followed 67 * by the field name. An example using 'description' would have the filter 68 * called, 'pre_user_description' that can be hooked into. 69 * 70 * The $userdata array can contain the following fields: 71 * 'ID' - An integer that will be used for updating an existing user. 72 * 'user_pass' - A string that contains the plain text password for the user. 73 * 'user_login' - A string that contains the user's username for logging in. 74 * 'user_nicename' - A string that contains a nicer looking name for the user. 75 * The default is the user's username. 76 * 'user_url' - A string containing the user's URL for the user's web site. 77 * 'user_email' - A string containing the user's email address. 78 * 'display_name' - A string that will be shown on the site. Defaults to user's 79 * username. It is likely that you will want to change this, for both 80 * appearance and security through obscurity (that is if you don't use and 81 * delete the default 'admin' user). 82 * 'nickname' - The user's nickname, defaults to the user's username. 83 * 'first_name' - The user's first name. 84 * 'last_name' - The user's last name. 85 * 'description' - A string containing content about the user. 86 * 'rich_editing' - A string for whether to enable the rich editor. False 87 * if not empty. 88 * 'user_registered' - The date the user registered. Format is 'Y-m-d H:i:s'. 89 * 'role' - A string used to set the user's role. 90 * 'jabber' - User's Jabber account. 91 * 'aim' - User's AOL IM account. 92 * 'yim' - User's Yahoo IM account. 93 * 94 * @since 2.0.0 95 * @uses $wpdb WordPress database layer. 96 * @uses apply_filters() Calls filters for most of the $userdata fields with the prefix 'pre_user'. See note above. 97 * @uses do_action() Calls 'profile_update' hook when updating giving the user's ID 98 * @uses do_action() Calls 'user_register' hook when creating a new user giving the user's ID 99 * 100 * @param array $userdata An array of user data. 101 * @return int|WP_Error The newly created user's ID or a WP_Error object if the user could not be created. 102 */ 103 function wp_insert_user($userdata) { 104 global $wpdb; 105 106 extract($userdata, EXTR_SKIP); 107 108 // Are we updating or creating? 109 if ( !empty($ID) ) { 110 $ID = (int) $ID; 111 $update = true; 112 $old_user_data = get_userdata($ID); 113 } else { 114 $update = false; 115 // Hash the password 116 $user_pass = wp_hash_password($user_pass); 117 } 118 119 $user_login = sanitize_user($user_login, true); 120 $user_login = apply_filters('pre_user_login', $user_login); 121 122 //Remove any non-printable chars from the login string to see if we have ended up with an empty username 123 $user_login = trim($user_login); 124 125 if ( empty($user_login) ) 126 return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') ); 127 128 if ( !$update && username_exists( $user_login ) ) 129 return new WP_Error('existing_user_login', __('This username is already registered.') ); 130 131 if ( empty($user_nicename) ) 132 $user_nicename = sanitize_title( $user_login ); 133 $user_nicename = apply_filters('pre_user_nicename', $user_nicename); 134 135 if ( empty($user_url) ) 136 $user_url = ''; 137 $user_url = apply_filters('pre_user_url', $user_url); 138 139 if ( empty($user_email) ) 140 $user_email = ''; 141 $user_email = apply_filters('pre_user_email', $user_email); 142 143 if ( !$update && ! defined( 'WP_IMPORTING' ) && email_exists($user_email) ) 144 return new WP_Error('existing_user_email', __('This email address is already registered.') ); 145 146 if ( empty($display_name) ) 147 $display_name = $user_login; 148 $display_name = apply_filters('pre_user_display_name', $display_name); 149 150 if ( empty($nickname) ) 151 $nickname = $user_login; 152 $nickname = apply_filters('pre_user_nickname', $nickname); 153 154 if ( empty($first_name) ) 155 $first_name = ''; 156 $first_name = apply_filters('pre_user_first_name', $first_name); 157 158 if ( empty($last_name) ) 159 $last_name = ''; 160 $last_name = apply_filters('pre_user_last_name', $last_name); 161 162 if ( empty($description) ) 163 $description = ''; 164 $description = apply_filters('pre_user_description', $description); 165 166 if ( empty($rich_editing) ) 167 $rich_editing = 'true'; 168 169 if ( empty($comment_shortcuts) ) 170 $comment_shortcuts = 'false'; 171 172 if ( empty($admin_color) ) 173 $admin_color = 'fresh'; 174 $admin_color = preg_replace('|[^a-z0-9 _.\-@]|i', '', $admin_color); 175 176 if ( empty($use_ssl) ) 177 $use_ssl = 0; 178 179 if ( empty($user_registered) ) 180 $user_registered = gmdate('Y-m-d H:i:s'); 181 182 $user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $user_nicename, $user_login)); 183 184 if ( $user_nicename_check ) { 185 $suffix = 2; 186 while ($user_nicename_check) { 187 $alt_user_nicename = $user_nicename . "-$suffix"; 188 $user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $alt_user_nicename, $user_login)); 189 $suffix++; 190 } 191 $user_nicename = $alt_user_nicename; 192 } 193 194 $data = compact( 'user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered' ); 195 $data = stripslashes_deep( $data ); 196 197 if ( $update ) { 198 $wpdb->update( $wpdb->users, $data, compact( 'ID' ) ); 199 $user_id = (int) $ID; 200 } else { 201 $wpdb->insert( $wpdb->users, $data + compact( 'user_login' ) ); 202 $user_id = (int) $wpdb->insert_id; 203 } 204 205 update_user_meta( $user_id, 'first_name', $first_name); 206 update_user_meta( $user_id, 'last_name', $last_name); 207 update_user_meta( $user_id, 'nickname', $nickname ); 208 update_user_meta( $user_id, 'description', $description ); 209 update_user_meta( $user_id, 'rich_editing', $rich_editing); 210 update_user_meta( $user_id, 'comment_shortcuts', $comment_shortcuts); 211 update_user_meta( $user_id, 'admin_color', $admin_color); 212 update_user_meta( $user_id, 'use_ssl', $use_ssl); 213 214 $user = new WP_User($user_id); 215 216 foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) { 217 if ( empty($$method) ) 218 $$method = ''; 219 220 update_user_meta( $user_id, $method, $$method ); 221 } 222 223 if ( isset($role) ) 224 $user->set_role($role); 225 elseif ( !$update ) 226 $user->set_role(get_option('default_role')); 227 228 wp_cache_delete($user_id, 'users'); 229 wp_cache_delete($user_login, 'userlogins'); 230 231 if ( $update ) 232 do_action('profile_update', $user_id, $old_user_data); 233 else 234 do_action('user_register', $user_id); 235 236 return $user_id; 237 } 238 239 /** 240 * Update an user in the database. 241 * 242 * It is possible to update a user's password by specifying the 'user_pass' 243 * value in the $userdata parameter array. 244 * 245 * If $userdata does not contain an 'ID' key, then a new user will be created 246 * and the new user's ID will be returned. 247 * 248 * If current user's password is being updated, then the cookies will be 249 * cleared. 250 * 251 * @since 2.0.0 252 * @see wp_insert_user() For what fields can be set in $userdata 253 * @uses wp_insert_user() Used to update existing user or add new one if user doesn't exist already 254 * 255 * @param array $userdata An array of user data. 256 * @return int The updated user's ID. 257 */ 258 function wp_update_user($userdata) { 259 $ID = (int) $userdata['ID']; 260 261 // First, get all of the original fields 262 $user = get_userdata($ID); 263 264 // Escape data pulled from DB. 265 $user = add_magic_quotes(get_object_vars($user)); 266 267 // If password is changing, hash it now. 268 if ( ! empty($userdata['user_pass']) ) { 269 $plaintext_pass = $userdata['user_pass']; 270 $userdata['user_pass'] = wp_hash_password($userdata['user_pass']); 271 } 272 273 wp_cache_delete($user[ 'user_email' ], 'useremail'); 274 275 // Merge old and new fields with new fields overwriting old ones. 276 $userdata = array_merge($user, $userdata); 277 $user_id = wp_insert_user($userdata); 278 279 // Update the cookies if the password changed. 280 $current_user = wp_get_current_user(); 281 if ( $current_user->id == $ID ) { 282 if ( isset($plaintext_pass) ) { 283 wp_clear_auth_cookie(); 284 wp_set_auth_cookie($ID); 285 } 286 } 287 288 return $user_id; 289 } 290 291 /** 292 * A simpler way of inserting an user into the database. 293 * 294 * Creates a new user with just the username, password, and email. For a more 295 * detail creation of a user, use wp_insert_user() to specify more infomation. 296 * 297 * @since 2.0.0 298 * @see wp_insert_user() More complete way to create a new user 299 * 300 * @param string $username The user's username. 301 * @param string $password The user's password. 302 * @param string $email The user's email (optional). 303 * @return int The new user's ID. 304 */ 305 function wp_create_user($username, $password, $email = '') { 306 $user_login = esc_sql( $username ); 307 $user_email = esc_sql( $email ); 308 $user_pass = $password; 309 310 $userdata = compact('user_login', 'user_email', 'user_pass'); 311 return wp_insert_user($userdata); 312 } 313 314 315 /** 316 * Set up the default contact methods 317 * 318 * @access private 319 * @since 320 * 321 * @param object $user User data object (optional) 322 * @return array $user_contactmethods Array of contact methods and their labels. 323 */ 324 function _wp_get_user_contactmethods( $user = null ) { 325 $user_contactmethods = array( 326 'aim' => __('AIM'), 327 'yim' => __('Yahoo IM'), 328 'jabber' => __('Jabber / Google Talk') 329 ); 330 return apply_filters( 'user_contactmethods', $user_contactmethods, $user ); 331 } 332 7 _deprecated_file( basename(__FILE__), '3.1', null, __( 'This file no longer needs to be included.' ) ); 333 8 ?>
Note: See TracChangeset
for help on using the changeset viewer.