Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/elemento.../modules/wp-rest/classes
File: user-query.php
<?php
[0] Fix | Delete
[1] Fix | Delete
namespace Elementor\Modules\WpRest\Classes;
[2] Fix | Delete
[3] Fix | Delete
use Elementor\Core\Utils\Collection;
[4] Fix | Delete
use Elementor\Modules\WpRest\Base\Query as Base;
[5] Fix | Delete
[6] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[7] Fix | Delete
exit; // Exit if accessed directly.
[8] Fix | Delete
}
[9] Fix | Delete
[10] Fix | Delete
class User_Query extends Base {
[11] Fix | Delete
const ENDPOINT = 'user';
[12] Fix | Delete
const SEARCH_FILTER_ACCEPTED_ARGS = 1;
[13] Fix | Delete
/**
[14] Fix | Delete
* @param \WP_REST_Request $request
[15] Fix | Delete
* @return \WP_REST_Response
[16] Fix | Delete
*/
[17] Fix | Delete
protected function get( \WP_REST_Request $request ) {
[18] Fix | Delete
$params = $request->get_params();
[19] Fix | Delete
$search_term = trim( $params[ self::SEARCH_TERM_KEY ] ?? '' );
[20] Fix | Delete
[21] Fix | Delete
if ( empty( $search_term ) ) {
[22] Fix | Delete
return new \WP_REST_Response( [
[23] Fix | Delete
'success' => true,
[24] Fix | Delete
'data' => [
[25] Fix | Delete
'value' => [],
[26] Fix | Delete
],
[27] Fix | Delete
], 200 );
[28] Fix | Delete
}
[29] Fix | Delete
[30] Fix | Delete
$keys_format_map = $params[ self::KEYS_CONVERSION_MAP_KEY ];
[31] Fix | Delete
[32] Fix | Delete
$requested_count = $params[ self::ITEMS_COUNT_KEY ] ?? 0;
[33] Fix | Delete
$validated_count = max( $requested_count, 1 );
[34] Fix | Delete
$count = min( $validated_count, self::MAX_RESPONSE_COUNT );
[35] Fix | Delete
[36] Fix | Delete
$query_args = [
[37] Fix | Delete
'number' => $count,
[38] Fix | Delete
'search' => "*$search_term*",
[39] Fix | Delete
];
[40] Fix | Delete
[41] Fix | Delete
if ( ! empty( $params[ self::META_QUERY_KEY ] ) && is_array( $params[ self::META_QUERY_KEY ] ) ) {
[42] Fix | Delete
$query_args['meta_query'] = $params[ self::META_QUERY_KEY ];
[43] Fix | Delete
}
[44] Fix | Delete
[45] Fix | Delete
$this->add_filter_to_customize_query();
[46] Fix | Delete
$users = Collection::make( get_users( $query_args ) );
[47] Fix | Delete
$this->remove_filter_to_customize_query();
[48] Fix | Delete
[49] Fix | Delete
global $wp_roles;
[50] Fix | Delete
$roles = $wp_roles->roles;
[51] Fix | Delete
[52] Fix | Delete
return new \WP_REST_Response( [
[53] Fix | Delete
'success' => true,
[54] Fix | Delete
'data' => [
[55] Fix | Delete
'value' => array_values( $users
[56] Fix | Delete
->map( function ( $user ) use ( $keys_format_map, $roles ) {
[57] Fix | Delete
$user_object = (array) $user;
[58] Fix | Delete
$user_object['display_name'] = $user->data->display_name;
[59] Fix | Delete
[60] Fix | Delete
if ( isset( $user_object['roles'][0] ) ) {
[61] Fix | Delete
$user_role = $user_object['roles'][0];
[62] Fix | Delete
$role = $roles[ $user_role ]['name'];
[63] Fix | Delete
$user_object['role'] = $role ?? ucfirst( $user_role );
[64] Fix | Delete
}
[65] Fix | Delete
[66] Fix | Delete
return $this->translate_keys( $user_object, $keys_format_map );
[67] Fix | Delete
} )
[68] Fix | Delete
->all() ),
[69] Fix | Delete
],
[70] Fix | Delete
], 200 );
[71] Fix | Delete
}
[72] Fix | Delete
[73] Fix | Delete
public function customize_user_query( $columns ) {
[74] Fix | Delete
if ( ! in_array( 'ID', $columns, true ) ) {
[75] Fix | Delete
$columns[] = 'ID';
[76] Fix | Delete
}
[77] Fix | Delete
[78] Fix | Delete
return $columns;
[79] Fix | Delete
}
[80] Fix | Delete
[81] Fix | Delete
/**
[82] Fix | Delete
* @return void
[83] Fix | Delete
*/
[84] Fix | Delete
private function add_filter_to_customize_query() {
[85] Fix | Delete
$priority = self::SEARCH_FILTER_PRIORITY;
[86] Fix | Delete
$accepted_args = self::SEARCH_FILTER_ACCEPTED_ARGS;
[87] Fix | Delete
[88] Fix | Delete
add_filter( 'user_search_columns', [ $this, 'customize_user_query' ], $priority, $accepted_args );
[89] Fix | Delete
}
[90] Fix | Delete
[91] Fix | Delete
/**
[92] Fix | Delete
* @return void
[93] Fix | Delete
*/
[94] Fix | Delete
private function remove_filter_to_customize_query() {
[95] Fix | Delete
$priority = self::SEARCH_FILTER_PRIORITY;
[96] Fix | Delete
$accepted_args = self::SEARCH_FILTER_ACCEPTED_ARGS;
[97] Fix | Delete
[98] Fix | Delete
remove_filter( 'user_search_columns', [ $this, 'customize_user_query' ], $priority, $accepted_args );
[99] Fix | Delete
}
[100] Fix | Delete
[101] Fix | Delete
/**
[102] Fix | Delete
* @return array
[103] Fix | Delete
*/
[104] Fix | Delete
protected function get_endpoint_registration_args(): array {
[105] Fix | Delete
return [
[106] Fix | Delete
self::SEARCH_TERM_KEY => [
[107] Fix | Delete
'description' => 'Posts to search',
[108] Fix | Delete
'type' => 'string',
[109] Fix | Delete
'required' => false,
[110] Fix | Delete
'default' => '',
[111] Fix | Delete
'sanitize_callback' => 'sanitize_text_field',
[112] Fix | Delete
],
[113] Fix | Delete
self::KEYS_CONVERSION_MAP_KEY => [
[114] Fix | Delete
'description' => 'Specify keys to extract and convert, i.e. ["key_1" => "new_key_1"].',
[115] Fix | Delete
'type' => [ 'array', 'string' ],
[116] Fix | Delete
'required' => false,
[117] Fix | Delete
'default' => [
[118] Fix | Delete
'ID' => 'id',
[119] Fix | Delete
'display_name' => 'label',
[120] Fix | Delete
'role' => 'groupLabel',
[121] Fix | Delete
],
[122] Fix | Delete
'sanitize_callback' => fn ( ...$args ) => self::sanitize_string_array( ...$args ),
[123] Fix | Delete
],
[124] Fix | Delete
self::ITEMS_COUNT_KEY => [
[125] Fix | Delete
'description' => 'Posts per page',
[126] Fix | Delete
'type' => 'integer',
[127] Fix | Delete
'required' => false,
[128] Fix | Delete
'default' => self::MAX_RESPONSE_COUNT,
[129] Fix | Delete
],
[130] Fix | Delete
];
[131] Fix | Delete
}
[132] Fix | Delete
[133] Fix | Delete
[134] Fix | Delete
[135] Fix | Delete
protected static function get_allowed_param_keys(): array {
[136] Fix | Delete
return [
[137] Fix | Delete
self::KEYS_CONVERSION_MAP_KEY,
[138] Fix | Delete
self::ITEMS_COUNT_KEY,
[139] Fix | Delete
];
[140] Fix | Delete
}
[141] Fix | Delete
[142] Fix | Delete
protected static function get_keys_to_encode(): array {
[143] Fix | Delete
return [ self::KEYS_CONVERSION_MAP_KEY ];
[144] Fix | Delete
}
[145] Fix | Delete
}
[146] Fix | Delete
[147] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function