[ Index ]

PHP Cross Reference of Wordpress 2.9.1

title

Body

[close]

/wp-includes/ -> registration.php (source)

   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  ?>


Generated: Fri Jan 8 00:19:48 2010 Cross-referenced by PHPXref 0.7