| [ Index ] |
PHP Cross Reference of Wordpress 2.9.1 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * User Registration API 4 * 5 * @package WordPress 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 or not. 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 The newly created user's ID. 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 if ( empty($user_nicename) ) 123 $user_nicename = sanitize_title( $user_login ); 124 $user_nicename = apply_filters('pre_user_nicename', $user_nicename); 125 126 if ( empty($user_url) ) 127 $user_url = ''; 128 $user_url = apply_filters('pre_user_url', $user_url); 129 130 if ( empty($user_email) ) 131 $user_email = ''; 132 $user_email = apply_filters('pre_user_email', $user_email); 133 134 if ( empty($display_name) ) 135 $display_name = $user_login; 136 $display_name = apply_filters('pre_user_display_name', $display_name); 137 138 if ( empty($nickname) ) 139 $nickname = $user_login; 140 $nickname = apply_filters('pre_user_nickname', $nickname); 141 142 if ( empty($first_name) ) 143 $first_name = ''; 144 $first_name = apply_filters('pre_user_first_name', $first_name); 145 146 if ( empty($last_name) ) 147 $last_name = ''; 148 $last_name = apply_filters('pre_user_last_name', $last_name); 149 150 if ( empty($description) ) 151 $description = ''; 152 $description = apply_filters('pre_user_description', $description); 153 154 if ( empty($rich_editing) ) 155 $rich_editing = 'true'; 156 157 if ( empty($comment_shortcuts) ) 158 $comment_shortcuts = 'false'; 159 160 if ( empty($admin_color) ) 161 $admin_color = 'fresh'; 162 $admin_color = preg_replace('|[^a-z0-9 _.\-@]|i', '', $admin_color); 163 164 if ( empty($use_ssl) ) 165 $use_ssl = 0; 166 167 if ( empty($user_registered) ) 168 $user_registered = gmdate('Y-m-d H:i:s'); 169 170 $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)); 171 172 if ( $user_nicename_check ) { 173 $suffix = 2; 174 while ($user_nicename_check) { 175 $alt_user_nicename = $user_nicename . "-$suffix"; 176 $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)); 177 $suffix++; 178 } 179 $user_nicename = $alt_user_nicename; 180 } 181 182 $data = compact( 'user_pass', 'user_email', 'user_url', 'user_nicename', 'display_name', 'user_registered' ); 183 $data = stripslashes_deep( $data ); 184 185 if ( $update ) { 186 $wpdb->update( $wpdb->users, $data, compact( 'ID' ) ); 187 $user_id = (int) $ID; 188 } else { 189 $wpdb->insert( $wpdb->users, $data + compact( 'user_login' ) ); 190 $user_id = (int) $wpdb->insert_id; 191 } 192 193 update_usermeta( $user_id, 'first_name', $first_name); 194 update_usermeta( $user_id, 'last_name', $last_name); 195 update_usermeta( $user_id, 'nickname', $nickname ); 196 update_usermeta( $user_id, 'description', $description ); 197 update_usermeta( $user_id, 'rich_editing', $rich_editing); 198 update_usermeta( $user_id, 'comment_shortcuts', $comment_shortcuts); 199 update_usermeta( $user_id, 'admin_color', $admin_color); 200 update_usermeta( $user_id, 'use_ssl', $use_ssl); 201 202 foreach ( _wp_get_user_contactmethods() as $method => $name ) { 203 if ( empty($$method) ) 204 $$method = ''; 205 206 update_usermeta( $user_id, $method, $$method ); 207 } 208 209 if ( isset($role) ) { 210 $user = new WP_User($user_id); 211 $user->set_role($role); 212 } elseif ( !$update ) { 213 $user = new WP_User($user_id); 214 $user->set_role(get_option('default_role')); 215 } 216 217 wp_cache_delete($user_id, 'users'); 218 wp_cache_delete($user_login, 'userlogins'); 219 220 if ( $update ) 221 do_action('profile_update', $user_id, $old_user_data); 222 else 223 do_action('user_register', $user_id); 224 225 return $user_id; 226 } 227 228 /** 229 * Update an user in the database. 230 * 231 * It is possible to update a user's password by specifying the 'user_pass' 232 * value in the $userdata parameter array. 233 * 234 * If $userdata does not contain an 'ID' key, then a new user will be created 235 * and the new user's ID will be returned. 236 * 237 * If current user's password is being updated, then the cookies will be 238 * cleared. 239 * 240 * @since 2.0.0 241 * @see wp_insert_user() For what fields can be set in $userdata 242 * @uses wp_insert_user() Used to update existing user or add new one if user doesn't exist already 243 * 244 * @param array $userdata An array of user data. 245 * @return int The updated user's ID. 246 */ 247 function wp_update_user($userdata) { 248 $ID = (int) $userdata['ID']; 249 250 // First, get all of the original fields 251 $user = get_userdata($ID); 252 253 // Escape data pulled from DB. 254 $user = add_magic_quotes(get_object_vars($user)); 255 256 // If password is changing, hash it now. 257 if ( ! empty($userdata['user_pass']) ) { 258 $plaintext_pass = $userdata['user_pass']; 259 $userdata['user_pass'] = wp_hash_password($userdata['user_pass']); 260 } 261 262 // Merge old and new fields with new fields overwriting old ones. 263 $userdata = array_merge($user, $userdata); 264 $user_id = wp_insert_user($userdata); 265 266 // Update the cookies if the password changed. 267 $current_user = wp_get_current_user(); 268 if ( $current_user->id == $ID ) { 269 if ( isset($plaintext_pass) ) { 270 wp_clear_auth_cookie(); 271 wp_set_auth_cookie($ID); 272 } 273 } 274 275 return $user_id; 276 } 277 278 /** 279 * A simpler way of inserting an user into the database. 280 * 281 * Creates a new user with just the username, password, and email. For a more 282 * detail creation of a user, use wp_insert_user() to specify more infomation. 283 * 284 * @since 2.0.0 285 * @see wp_insert_user() More complete way to create a new user 286 * 287 * @param string $username The user's username. 288 * @param string $password The user's password. 289 * @param string $email The user's email (optional). 290 * @return int The new user's ID. 291 */ 292 function wp_create_user($username, $password, $email = '') { 293 $user_login = esc_sql( $username ); 294 $user_email = esc_sql( $email ); 295 $user_pass = $password; 296 297 $userdata = compact('user_login', 'user_email', 'user_pass'); 298 return wp_insert_user($userdata); 299 } 300 301 302 /** 303 * Setup the default contact methods 304 * 305 * @access private 306 * @since 307 * 308 * @return array $user_contactmethods Array of contact methods and their labels. 309 */ 310 function _wp_get_user_contactmethods() { 311 $user_contactmethods = array( 312 'aim' => __('AIM'), 313 'yim' => __('Yahoo IM'), 314 'jabber' => __('Jabber / Google Talk') 315 ); 316 return apply_filters('user_contactmethods',$user_contactmethods); 317 } 318 319 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri Jan 8 00:19:48 2010 | Cross-referenced by PHPXref 0.7 |