Changeset 59892
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php
r59754 r59892 258 258 * 259 259 * @since 4.7.0 260 * @since 6.8.0 Added support for the search_columns query param. 260 261 * 261 262 * @param WP_REST_Request $request Full details about the request. … … 332 333 $prepared_args['search_columns'] = array( 'ID', 'user_login', 'user_nicename', 'display_name' ); 333 334 } 335 $search_columns = $request->get_param( 'search_columns' ); 336 $valid_columns = isset( $prepared_args['search_columns'] ) 337 ? $prepared_args['search_columns'] 338 : array( 'ID', 'user_login', 'user_nicename', 'user_email', 'display_name' ); 339 $search_columns_mapping = array( 340 'id' => 'ID', 341 'username' => 'user_login', 342 'slug' => 'user_nicename', 343 'email' => 'user_email', 344 'name' => 'display_name', 345 ); 346 $search_columns = array_map( 347 static function ( $column ) use ( $search_columns_mapping ) { 348 return $search_columns_mapping[ $column ]; 349 }, 350 $search_columns 351 ); 352 $search_columns = array_intersect( $search_columns, $valid_columns ); 353 if ( ! empty( $search_columns ) ) { 354 $prepared_args['search_columns'] = $search_columns; 355 } 334 356 $prepared_args['search'] = '*' . $prepared_args['search'] . '*'; 335 357 } … … 1614 1636 ); 1615 1637 1638 $query_params['search_columns'] = array( 1639 'default' => array(), 1640 'description' => __( 'Array of column names to be searched.' ), 1641 'type' => 'array', 1642 'items' => array( 1643 'enum' => array( 'email', 'name', 'id', 'username', 'slug' ), 1644 'type' => 'string', 1645 ), 1646 ); 1647 1616 1648 /** 1617 1649 * Filters REST API collection parameters for the users controller. -
trunk/tests/phpunit/tests/rest-api/rest-users-controller.php
r58283 r59892 213 213 'slug', 214 214 'who', 215 'search_columns', 215 216 'has_published_posts', 216 217 ), … … 709 710 710 711 wp_set_current_user( self::$editor ); 712 $response = rest_get_server()->dispatch( $request ); 713 $this->assertCount( 0, $response->get_data() ); 714 } 715 716 /** 717 * @ticket 62596 718 */ 719 public function test_get_items_search_columns() { 720 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 721 $request->set_param( 'search', 'yololololo' ); 722 $response = rest_get_server()->dispatch( $request ); 723 $this->assertCount( 0, $response->get_data() ); 724 725 self::factory()->user->create( 726 array( 727 'display_name' => 'Adam', 728 'user_email' => 'yololololo@example.localhost', 729 ) 730 ); 731 732 wp_set_current_user( self::$user ); 733 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 734 $request->set_param( 'search', 'yololololo' ); 735 $request->set_param( 'search_columns', 'email' ); 736 $response = rest_get_server()->dispatch( $request ); 737 $this->assertCount( 1, $response->get_data() ); 738 739 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 740 $request->set_param( 'search', 'yololololo' ); 741 $request->set_param( 'search_columns', 'name' ); 742 $response = rest_get_server()->dispatch( $request ); 743 $this->assertCount( 0, $response->get_data() ); 744 745 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 746 $request->set_param( 'search', 'Adam' ); 747 $request->set_param( 'search_columns', 'name' ); 748 $response = rest_get_server()->dispatch( $request ); 749 $this->assertCount( 1, $response->get_data() ); 750 } 751 752 /** 753 * @ticket 62596 754 */ 755 public function test_get_items_search_columns_without_permission() { 756 self::factory()->user->create( 757 array( 758 'display_name' => 'Adam', 759 'user_email' => 'yololololo@example.localhost', 760 ) 761 ); 762 763 // Test user without sufficient capabilities - 'list_users'. 764 wp_set_current_user( self::$editor ); 765 766 $request = new WP_REST_Request( 'GET', '/wp/v2/users' ); 767 $request->set_param( 'search', 'yololololo' ); 768 $request->set_param( 'search_columns', 'email' ); 711 769 $response = rest_get_server()->dispatch( $request ); 712 770 $this->assertCount( 0, $response->get_data() ); -
trunk/tests/qunit/fixtures/wp-api-generated.js
r59880 r59892 9605 9605 }, 9606 9606 "required": false 9607 }, 9608 "search_columns": { 9609 "default": [], 9610 "description": "Array of column names to be searched.", 9611 "type": "array", 9612 "items": { 9613 "enum": [ 9614 "email", 9615 "name", 9616 "id", 9617 "username", 9618 "slug" 9619 ], 9620 "type": "string" 9621 }, 9622 "required": false 9607 9623 } 9608 9624 }
Note: See TracChangeset
for help on using the changeset viewer.