Ticket #22212: user.php.2.patch
File user.php.2.patch, 2.1 KB (added by , 10 years ago) |
---|
-
wp-includes/user.php
360 360 if ( !empty( $query ) ) { 361 361 $this->query_vars = wp_parse_args( $query, array( 362 362 'blog_id' => $GLOBALS['blog_id'], 363 'role' => '',363 'role' => array(), 364 364 'meta_key' => '', 365 365 'meta_value' => '', 366 366 'meta_compare' => '', … … 492 492 $qv['blog_id'] = $blog_id = 0; // Prevent extra meta query 493 493 } 494 494 495 $role = trim( $qv['role'] ); 495 $roles = array(); 496 if( is_array( $qv[ 'role' ] ) ) { 497 $roles = $qv[ 'role' ]; 498 }else if( is_string( $qv[ 'role' ] ) && !empty( $qv[ 'role' ] ) ) { 499 $roles = array( $qv[ 'role' ] ); 500 } 496 501 497 if ( $blog_id && ( $role || is_multisite() ) ) { 498 $cap_meta_query = array(); 499 $cap_meta_query['key'] = $wpdb->get_blog_prefix( $blog_id ) . 'capabilities'; 502 if ( $blog_id && ( !empty( $roles ) || is_multisite() ) ) { 500 503 501 if ( $role ) { 502 $cap_meta_query['value'] = '"' . $role . '"'; 503 $cap_meta_query['compare'] = 'like'; 504 // Add Roles query 505 if( !empty( $roles ) ) { 506 507 $from = ''; 508 $where = ' AND ( '; 509 $roles_count = count($roles); 510 for( $i = 0; $i < $roles_count; $i++ ) { 511 $alias = 'role_meta' . $i; 512 $from .= " INNER JOIN wp_usermeta AS {$alias} ON (wp_users.ID = {$alias}.user_id)"; 513 if( $i > 0 ) { 514 $where .= ' OR'; 515 } 516 $where .= " ( ({$alias}.meta_key = '" . $wpdb->get_blog_prefix( $blog_id ) . "capabilities' AND CAST({$alias}.meta_value AS CHAR) LIKE '%\"{$roles[$i]}\"%' ) )"; 517 } 518 $where .= ' )'; 519 520 $this->query_from .= $from; 521 $this->query_where .= $where; 522 $this->query_fields = 'DISTINCT ' . $wpdb->users . '.*'; 523 504 524 } 505 525 506 $qv['meta_query'][] = $cap_meta_query; 526 // Add Multisite/Network check 527 if( is_multisite() ) { 528 $from = " INNER JOIN wp_usermeta AS network_meta ON (wp_users.ID = network_meta.user_id)"; 529 $where = " AND ( (network_meta.meta_key = '" . $wpdb->get_blog_prefix( $blog_id ) . "capabilities' ) )"; 530 } 531 507 532 } 508 533 509 534 $meta_query = new WP_Meta_Query();