PHP Cross Reference of WordPress Subversion HEAD

[ Index ]     [ Classes ]     [ Functions ]     [ Variables ]     [ Constants ]

title

Body

[close]

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

   1  <?php
   2  
   3  function get_profile($field, $user = false) {
   4      global $wpdb;
   5      if ( !$user )
   6          $user = $wpdb->escape($_COOKIE[USER_COOKIE]);
   7      return $wpdb->get_var("SELECT $field FROM $wpdb->users WHERE user_login = '$user'");
   8  }
   9  
  10  function get_usernumposts($userid) {
  11      global $wpdb;
  12      $userid = (int) $userid;
  13      return $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = '$userid' AND post_type = 'post' AND " . get_private_posts_cap_sql('post'));
  14  }
  15  
  16  // TODO: xmlrpc only.  Maybe move to xmlrpc.php.
  17  function user_pass_ok($user_login,$user_pass) {
  18      $userdata = get_userdatabylogin($user_login);
  19      return wp_check_password($user_pass, $userdata->user_pass);
  20  }
  21  
  22  //
  23  // User option functions
  24  //
  25  
  26  function get_user_option( $option, $user = 0 ) {
  27      global $wpdb;
  28  
  29      if ( empty($user) )
  30          $user = wp_get_current_user();
  31      else
  32          $user = get_userdata($user);
  33  
  34      if ( isset( $user->{$wpdb->prefix . $option} ) ) // Blog specific
  35          return $user->{$wpdb->prefix . $option};
  36      elseif ( isset( $user->{$option} ) ) // User specific and cross-blog
  37          return $user->{$option};
  38      else // Blog global
  39          return get_option( $option );
  40  }
  41  
  42  function update_user_option( $user_id, $option_name, $newvalue, $global = false ) {
  43      global $wpdb;
  44      if ( !$global )
  45          $option_name = $wpdb->prefix . $option_name;
  46      return update_usermeta( $user_id, $option_name, $newvalue );
  47  }
  48  
  49  // Get users with capabilities for the current blog.
  50  // For setups that use the multi-blog feature.
  51  function get_users_of_blog( $id = '' ) {
  52      global $wpdb, $blog_id;
  53      if ( empty($id) )
  54          $id = (int) $blog_id;
  55      $users = $wpdb->get_results( "SELECT user_id, user_login, display_name, user_email, meta_value FROM $wpdb->users, $wpdb->usermeta WHERE " . $wpdb->users . ".ID = " . $wpdb->usermeta . ".user_id AND meta_key = '" . $wpdb->prefix . "capabilities' ORDER BY {$wpdb->usermeta}.user_id" );
  56      return $users;
  57  }
  58  
  59  //
  60  // User meta functions
  61  //
  62  
  63  function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) {
  64      global $wpdb;
  65      if ( !is_numeric( $user_id ) )
  66          return false;
  67      $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
  68  
  69      if ( is_array($meta_value) || is_object($meta_value) )
  70          $meta_value = serialize($meta_value);
  71      $meta_value = trim( $meta_value );
  72  
  73      if ( ! empty($meta_value) )
  74          $wpdb->query("DELETE FROM $wpdb->usermeta WHERE user_id = '$user_id' AND meta_key = '$meta_key' AND meta_value = '$meta_value'");
  75      else
  76          $wpdb->query("DELETE FROM $wpdb->usermeta WHERE user_id = '$user_id' AND meta_key = '$meta_key'");
  77  
  78      $user = get_userdata($user_id);
  79      wp_cache_delete($user_id, 'users');
  80  
  81      return true;
  82  }
  83  
  84  function get_usermeta( $user_id, $meta_key = '') {
  85      global $wpdb;
  86      $user_id = (int) $user_id;
  87  
  88      if ( !$user_id )
  89          return false;
  90  
  91      if ( !empty($meta_key) ) {
  92          $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
  93          $metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = '$user_id' AND meta_key = '$meta_key'");
  94      } else {
  95          $metas = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = '$user_id'");
  96      }
  97  
  98      if ( empty($metas) ) {
  99          if ( empty($meta_key) )
 100              return array();
 101          else
 102              return '';
 103      }
 104  
 105      foreach ($metas as $meta) 
 106          $values[] = maybe_unserialize($meta->meta_value);
 107  
 108      if ( count($values) == 1 )
 109          return $values[0];
 110      else
 111          return $values;
 112  }
 113  
 114  function update_usermeta( $user_id, $meta_key, $meta_value ) {
 115      global $wpdb;
 116      if ( !is_numeric( $user_id ) )
 117          return false;
 118      $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key);
 119  
 120      // FIXME: usermeta data is assumed to be already escaped
 121      if ( is_string($meta_value) )
 122          $meta_value = stripslashes($meta_value);
 123      $meta_value = maybe_serialize($meta_value);
 124      $meta_value = $wpdb->escape($meta_value);
 125  
 126      if (empty($meta_value)) {
 127          return delete_usermeta($user_id, $meta_key);
 128      }
 129  
 130      $cur = $wpdb->get_row("SELECT * FROM $wpdb->usermeta WHERE user_id = '$user_id' AND meta_key = '$meta_key'");
 131      if ( !$cur ) {
 132          $wpdb->query("INSERT INTO $wpdb->usermeta ( user_id, meta_key, meta_value )
 133          VALUES
 134          ( '$user_id', '$meta_key', '$meta_value' )");
 135      } else if ( $cur->meta_value != $meta_value ) {
 136          $wpdb->query("UPDATE $wpdb->usermeta SET meta_value = '$meta_value' WHERE user_id = '$user_id' AND meta_key = '$meta_key'");
 137      } else {
 138          return false;
 139      }
 140  
 141      $user = get_userdata($user_id);
 142      wp_cache_delete($user_id, 'users');
 143  
 144      return true;
 145  }
 146  
 147  //
 148  // Private helper functions
 149  //
 150  
 151  // Setup global user vars.  Used by set_current_user() for back compat.
 152  function setup_userdata($user_id = '') {
 153      global $user_login, $userdata, $user_level, $user_ID, $user_email, $user_url, $user_pass_md5, $user_identity;
 154  
 155      if ( '' == $user_id )
 156          $user = wp_get_current_user();
 157      else
 158          $user = new WP_User($user_id);
 159  
 160      if ( 0 == $user->ID )
 161          return;
 162  
 163      $userdata = $user->data;
 164      $user_login    = $user->user_login;
 165      $user_level    = (int) $user->user_level;
 166      $user_ID    = (int) $user->ID;
 167      $user_email    = $user->user_email;
 168      $user_url    = $user->user_url;
 169      $user_pass_md5    = md5($user->user_pass);
 170      $user_identity    = $user->display_name;
 171  }
 172  
 173  function wp_dropdown_users( $args = '' ) {
 174      global $wpdb;
 175      $defaults = array(
 176          'show_option_all' => '', 'show_option_none' => '',
 177          'orderby' => 'display_name', 'order' => 'ASC',
 178          'include' => '', 'exclude' => '',
 179          'show' => 'display_name', 'echo' => 1,
 180          'selected' => 0, 'name' => 'user', 'class' => ''
 181      );
 182  
 183      $defaults['selected'] = is_author() ? get_query_var( 'author' ) : 0;
 184  
 185      $r = wp_parse_args( $args, $defaults );
 186      extract( $r, EXTR_SKIP );
 187  
 188      $query = "SELECT * FROM $wpdb->users";
 189  
 190      $query_where = array();
 191  
 192      if ( is_array($include) )
 193          $include = join(',', $include);
 194      $include = preg_replace('/[^0-9,]/', '', $include); // (int)
 195      if ( $include )
 196          $query_where[] = "ID IN ($include)";
 197  
 198      if ( is_array($exclude) )
 199          $exclude = join(',', $exclude);
 200      $exclude = preg_replace('/[^0-9,]/', '', $exclude); // (int)
 201      if ( $exclude )
 202          $query_where[] = "ID NOT IN ($exclude)";
 203  
 204      if ( $query_where )
 205          $query .= " WHERE " . join(' AND', $query_where);
 206  
 207      $query .= " ORDER BY $orderby $order";
 208  
 209      $users = $wpdb->get_results( $query );
 210  
 211      $output = '';
 212      if ( !empty($users) ) {
 213          $output = "<select name='$name' id='$name' class='$class'>\n";
 214  
 215          if ( $show_option_all )
 216              $output .= "\t<option value='0'>$show_option_all</option>\n";
 217  
 218          if ( $show_option_none )
 219              $output .= "\t<option value='-1'>$show_option_none</option>\n";
 220  
 221          foreach ( $users as $user ) {
 222              $user->ID = (int) $user->ID;
 223              $_selected = $user->ID == $selected ? " selected='selected'" : '';
 224              $output .= "\t<option value='$user->ID'$_selected>" . wp_specialchars($user->$show) . "</option>\n";
 225          }
 226  
 227          $output .= "</select>";
 228      }
 229  
 230      $output = apply_filters('wp_dropdown_users', $output);
 231  
 232      if ( $echo )
 233          echo $output;
 234  
 235      return $output;
 236  }
 237  
 238  function _fill_user( &$user ) {
 239      global $wpdb;
 240  
 241      $wpdb->hide_errors();
 242      $metavalues = $wpdb->get_results($wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->usermeta WHERE user_id = %d", $user->ID));
 243      $wpdb->show_errors();
 244  
 245      if ( $metavalues ) {
 246          foreach ( $metavalues as $meta ) {
 247              $value = maybe_unserialize($meta->meta_value);
 248              $user->{$meta->meta_key} = $value;
 249          }
 250      }
 251  
 252      $level = $wpdb->prefix . 'user_level';
 253      if ( isset( $user->{$level} ) )
 254          $user->user_level = $user->{$level};
 255  
 256      // For backwards compat.
 257      if ( isset($user->first_name) )
 258          $user->user_firstname = $user->first_name;
 259      if ( isset($user->last_name) )
 260          $user->user_lastname = $user->last_name;
 261      if ( isset($user->description) )
 262          $user->user_description = $user->description;
 263  
 264      wp_cache_add($user->ID, $user, 'users');
 265      wp_cache_add($user->user_login, $user->ID, 'userlogins');
 266      wp_cache_add($user->user_email, $user->ID, 'useremail');
 267  }
 268  
 269  ?>


Generated Thu Dec 6 06:47:08 2007 for RedAlt XRefs Cross-referenced by PHPXref 0.6 and RedAlt