Changes from branches/3.0/wp-admin/includes/user.php at r15452 to trunk/wp-admin/includes/user.php at r17032
- File:
-
- 1 edited
-
trunk/wp-admin/includes/user.php (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-admin/includes/user.php
r15452 r17032 56 56 function edit_user( $user_id = 0 ) { 57 57 global $wp_roles, $wpdb; 58 if ( $user_id != 0 ) { 58 $user = new stdClass; 59 if ( $user_id ) { 59 60 $update = true; 60 61 $user->ID = (int) $user_id; … … 63 64 } else { 64 65 $update = false; 65 $user = '';66 66 } 67 67 … … 111 111 $user->description = trim( $_POST['description'] ); 112 112 113 foreach ( _wp_get_user_contactmethods( ) as $method => $name ) {113 foreach ( _wp_get_user_contactmethods( $user ) as $method => $name ) { 114 114 if ( isset( $_POST[$method] )) 115 115 $user->$method = sanitize_text_field( $_POST[$method] ); … … 119 119 $user->rich_editing = isset( $_POST['rich_editing'] ) && 'false' == $_POST['rich_editing'] ? 'false' : 'true'; 120 120 $user->admin_color = isset( $_POST['admin_color'] ) ? sanitize_text_field( $_POST['admin_color'] ) : 'fresh'; 121 $user->show_admin_bar_front = isset( $_POST['admin_bar_front'] ) ? 'true' : 'false'; 122 $user->show_admin_bar_admin = isset( $_POST['admin_bar_admin'] ) ? 'true' : 'false'; 121 123 } 122 124 … … 170 172 } elseif ( !is_email( $user->user_email ) ) { 171 173 $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The e-mail address isn’t correct.' ), array( 'form-field' => 'email' ) ); 172 } elseif ( ( $owner_id = email_exists($user->user_email) ) && $owner_id != $user->ID) {174 } elseif ( ( $owner_id = email_exists($user->user_email) ) && ( !$update || ( $owner_id != $user->ID ) ) ) { 173 175 $errors->add( 'email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'), array( 'form-field' => 'email' ) ); 174 176 } … … 187 189 } 188 190 return $user_id; 189 }190 191 /**192 * {@internal Missing Short Description}}193 *194 * {@internal Missing Long Description}}195 *196 * @since unknown197 *198 * @return array List of user IDs.199 */200 function get_author_user_ids() {201 global $wpdb;202 if ( !is_multisite() )203 $level_key = $wpdb->get_blog_prefix() . 'user_level';204 else205 $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels206 207 return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) );208 }209 210 /**211 * {@internal Missing Short Description}}212 *213 * {@internal Missing Long Description}}214 *215 * @since unknown216 *217 * @param int $user_id User ID.218 * @return array|bool List of editable authors. False if no editable users.219 */220 function get_editable_authors( $user_id ) {221 global $wpdb;222 223 $editable = get_editable_user_ids( $user_id );224 225 if ( !$editable ) {226 return false;227 } else {228 $editable = join(',', $editable);229 $authors = $wpdb->get_results( "SELECT * FROM $wpdb->users WHERE ID IN ($editable) ORDER BY display_name" );230 }231 232 return apply_filters('get_editable_authors', $authors);233 }234 235 /**236 * {@internal Missing Short Description}}237 *238 * {@internal Missing Long Description}}239 *240 * @since unknown241 *242 * @param int $user_id User ID.243 * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros.244 * @return unknown245 */246 function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'post' ) {247 global $wpdb;248 249 $user = new WP_User( $user_id );250 $post_type_obj = get_post_type_object($post_type);251 252 if ( ! $user->has_cap($post_type_obj->cap->edit_others_posts) ) {253 if ( $user->has_cap($post_type_obj->cap->edit_posts) || ! $exclude_zeros )254 return array($user->id);255 else256 return array();257 }258 259 if ( !is_multisite() )260 $level_key = $wpdb->get_blog_prefix() . 'user_level';261 else262 $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels263 264 $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key);265 if ( $exclude_zeros )266 $query .= " AND meta_value != '0'";267 268 return $wpdb->get_col( $query );269 191 } 270 192 … … 295 217 296 218 /** 297 * {@internal Missing Short Description}}298 *299 * {@internal Missing Long Description}}300 *301 * @since unknown302 *303 * @return unknown304 */305 function get_nonauthor_user_ids() {306 global $wpdb;307 308 if ( !is_multisite() )309 $level_key = $wpdb->get_blog_prefix() . 'user_level';310 else311 $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels312 313 return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) );314 }315 316 /**317 * Retrieve editable posts from other users.318 *319 * @since unknown320 *321 * @param int $user_id User ID to not retrieve posts from.322 * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'.323 * @return array List of posts from others.324 */325 function get_others_unpublished_posts($user_id, $type='any') {326 global $wpdb;327 328 $editable = get_editable_user_ids( $user_id );329 330 if ( in_array($type, array('draft', 'pending')) )331 $type_sql = " post_status = '$type' ";332 else333 $type_sql = " ( post_status = 'draft' OR post_status = 'pending' ) ";334 335 $dir = ( 'pending' == $type ) ? 'ASC' : 'DESC';336 337 if ( !$editable ) {338 $other_unpubs = '';339 } else {340 $editable = join(',', $editable);341 $other_unpubs = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title, post_author FROM $wpdb->posts WHERE post_type = 'post' AND $type_sql AND post_author IN ($editable) AND post_author != %d ORDER BY post_modified $dir", $user_id) );342 }343 344 return apply_filters('get_others_drafts', $other_unpubs);345 }346 347 /**348 * Retrieve drafts from other users.349 *350 * @since unknown351 *352 * @param int $user_id User ID.353 * @return array List of drafts from other users.354 */355 function get_others_drafts($user_id) {356 return get_others_unpublished_posts($user_id, 'draft');357 }358 359 /**360 * Retrieve pending review posts from other users.361 *362 * @since unknown363 *364 * @param int $user_id User ID.365 * @return array List of posts with pending review post type from other users.366 */367 function get_others_pending($user_id) {368 return get_others_unpublished_posts($user_id, 'pending');369 }370 371 /**372 219 * Retrieve user data and filter it. 373 220 * 374 * @since unknown221 * @since 2.0.5 375 222 * 376 223 * @param int $user_id User ID. … … 380 227 $user = new WP_User( $user_id ); 381 228 382 $user_contactmethods = _wp_get_user_contactmethods( );229 $user_contactmethods = _wp_get_user_contactmethods( $user ); 383 230 foreach ($user_contactmethods as $method => $name) { 384 231 if ( empty( $user->{$method} ) ) … … 397 244 * Retrieve the user's drafts. 398 245 * 399 * @since unknown246 * @since 2.0.0 400 247 * 401 248 * @param int $user_id User ID. … … 417 264 * The user meta will also be deleted that are for that User ID. 418 265 * 419 * @since unknown266 * @since 2.0.0 420 267 * 421 268 * @param int $id User ID. … … 472 319 * Remove all capabilities from user. 473 320 * 474 * @since unknown321 * @since 2.1.0 475 322 * 476 323 * @param int $id User ID. … … 483 330 } 484 331 485 if ( !class_exists('WP_User_Search') ) :486 /**487 * WordPress User Search class.488 *489 * @since unknown490 */491 class WP_User_Search {492 493 /**494 * {@internal Missing Description}}495 *496 * @since unknown497 * @access private498 * @var unknown_type499 */500 var $results;501 502 /**503 * {@internal Missing Description}}504 *505 * @since unknown506 * @access private507 * @var unknown_type508 */509 var $search_term;510 511 /**512 * Page number.513 *514 * @since unknown515 * @access private516 * @var int517 */518 var $page;519 520 /**521 * Role name that users have.522 *523 * @since unknown524 * @access private525 * @var string526 */527 var $role;528 529 /**530 * Raw page number.531 *532 * @since unknown533 * @access private534 * @var int|bool535 */536 var $raw_page;537 538 /**539 * Amount of users to display per page.540 *541 * @since unknown542 * @access public543 * @var int544 */545 var $users_per_page = 50;546 547 /**548 * {@internal Missing Description}}549 *550 * @since unknown551 * @access private552 * @var unknown_type553 */554 var $first_user;555 556 /**557 * {@internal Missing Description}}558 *559 * @since unknown560 * @access private561 * @var int562 */563 var $last_user;564 565 /**566 * {@internal Missing Description}}567 *568 * @since unknown569 * @access private570 * @var string571 */572 var $query_limit;573 574 /**575 * {@internal Missing Description}}576 *577 * @since 3.0.0578 * @access private579 * @var string580 */581 var $query_orderby;582 583 /**584 * {@internal Missing Description}}585 *586 * @since 3.0.0587 * @access private588 * @var string589 */590 var $query_from;591 592 /**593 * {@internal Missing Description}}594 *595 * @since 3.0.0596 * @access private597 * @var string598 */599 var $query_where;600 601 /**602 * {@internal Missing Description}}603 *604 * @since unknown605 * @access private606 * @var int607 */608 var $total_users_for_query = 0;609 610 /**611 * {@internal Missing Description}}612 *613 * @since unknown614 * @access private615 * @var bool616 */617 var $too_many_total_users = false;618 619 /**620 * {@internal Missing Description}}621 *622 * @since unknown623 * @access private624 * @var unknown_type625 */626 var $search_errors;627 628 /**629 * {@internal Missing Description}}630 *631 * @since unknown632 * @access private633 * @var unknown_type634 */635 var $paging_text;636 637 /**638 * PHP4 Constructor - Sets up the object properties.639 *640 * @since unknown641 *642 * @param string $search_term Search terms string.643 * @param int $page Optional. Page ID.644 * @param string $role Role name.645 * @return WP_User_Search646 */647 function WP_User_Search ($search_term = '', $page = '', $role = '') {648 $this->search_term = $search_term;649 $this->raw_page = ( '' == $page ) ? false : (int) $page;650 $this->page = (int) ( '' == $page ) ? 1 : $page;651 $this->role = $role;652 653 $this->prepare_query();654 $this->query();655 $this->prepare_vars_for_template_usage();656 $this->do_paging();657 }658 659 /**660 * {@internal Missing Short Description}}661 *662 * {@internal Missing Long Description}}663 *664 * @since unknown665 * @access public666 */667 function prepare_query() {668 global $wpdb;669 $this->first_user = ($this->page - 1) * $this->users_per_page;670 671 $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page);672 $this->query_orderby = ' ORDER BY user_login';673 674 $search_sql = '';675 if ( $this->search_term ) {676 $searches = array();677 $search_sql = 'AND (';678 foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col )679 $searches[] = $col . " LIKE '%$this->search_term%'";680 $search_sql .= implode(' OR ', $searches);681 $search_sql .= ')';682 }683 684 $this->query_from = " FROM $wpdb->users";685 $this->query_where = " WHERE 1=1 $search_sql";686 687 if ( $this->role ) {688 $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id";689 $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%');690 } elseif ( is_multisite() ) {691 $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels692 $this->query_from .= ", $wpdb->usermeta";693 $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'";694 }695 696 do_action_ref_array( 'pre_user_search', array( &$this ) );697 }698 699 /**700 * {@internal Missing Short Description}}701 *702 * {@internal Missing Long Description}}703 *704 * @since unknown705 * @access public706 */707 function query() {708 global $wpdb;709 710 $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit);711 712 if ( $this->results )713 $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit714 else715 $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!'));716 }717 718 /**719 * {@internal Missing Short Description}}720 *721 * {@internal Missing Long Description}}722 *723 * @since unknown724 * @access public725 */726 function prepare_vars_for_template_usage() {727 $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone728 }729 730 /**731 * {@internal Missing Short Description}}732 *733 * {@internal Missing Long Description}}734 *735 * @since unknown736 * @access public737 */738 function do_paging() {739 if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results740 $args = array();741 if( ! empty($this->search_term) )742 $args['usersearch'] = urlencode($this->search_term);743 if( ! empty($this->role) )744 $args['role'] = urlencode($this->role);745 746 $this->paging_text = paginate_links( array(747 'total' => ceil($this->total_users_for_query / $this->users_per_page),748 'current' => $this->page,749 'base' => 'users.php?%_%',750 'format' => 'userspage=%#%',751 'add_args' => $args752 ) );753 if ( $this->paging_text ) {754 $this->paging_text = sprintf( '<span class="displaying-num">' . __( 'Displaying %s–%s of %s' ) . '</span>%s',755 number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ),756 number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ),757 number_format_i18n( $this->total_users_for_query ),758 $this->paging_text759 );760 }761 }762 }763 764 /**765 * {@internal Missing Short Description}}766 *767 * {@internal Missing Long Description}}768 *769 * @since unknown770 * @access public771 *772 * @return unknown773 */774 function get_results() {775 return (array) $this->results;776 }777 778 /**779 * Displaying paging text.780 *781 * @see do_paging() Builds paging text.782 *783 * @since unknown784 * @access public785 */786 function page_links() {787 echo $this->paging_text;788 }789 790 /**791 * Whether paging is enabled.792 *793 * @see do_paging() Builds paging text.794 *795 * @since unknown796 * @access public797 *798 * @return bool799 */800 function results_are_paged() {801 if ( $this->paging_text )802 return true;803 return false;804 }805 806 /**807 * Whether there are search terms.808 *809 * @since unknown810 * @access public811 *812 * @return bool813 */814 function is_search() {815 if ( $this->search_term )816 return true;817 return false;818 }819 }820 endif;821 822 332 add_action('admin_init', 'default_password_nag_handler'); 333 /** 334 * @since 2.8.0 335 */ 823 336 function default_password_nag_handler($errors = false) { 824 337 global $user_ID; … … 834 347 835 348 add_action('profile_update', 'default_password_nag_edit_user', 10, 2); 349 /** 350 * @since 2.8.0 351 */ 836 352 function default_password_nag_edit_user($user_ID, $old_data) { 837 353 if ( ! get_user_option('default_password_nag', $user_ID) ) //Short circuit it. … … 847 363 848 364 add_action('admin_notices', 'default_password_nag'); 365 /** 366 * @since 2.8.0 367 */ 849 368 function default_password_nag() { 850 if ( ! get_user_option('default_password_nag') ) //Short circuit it. 369 global $pagenow; 370 if ( 'profile.php' == $pagenow || ! get_user_option('default_password_nag') ) //Short circuit it. 851 371 return; 852 372 … … 854 374 echo '<p>'; 855 375 echo '<strong>' . __('Notice:') . '</strong> '; 856 _e('You’re using the auto-generated password for your account. Would you like to change it to something you’ll remember easier?');376 _e('You’re using the auto-generated password for your account. Would you like to change it to something easier to remember?'); 857 377 echo '</p><p>'; 858 378 printf( '<a href="%s">' . __('Yes, take me to my profile page') . '</a> | ', admin_url('profile.php') . '#password' );
Note: See TracChangeset
for help on using the changeset viewer.