PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.0
Elementor Website Builder – more than just a page builder v4.2.0
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / modules / wp-rest / classes / user-query.php

user-query.php in Elementor Website Builder – more than just a page builder 4.2.0, at modules/wp-rest/classes/user-query.php

132 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Elementor\Modules\WpRest\Classes;
4
5 use Elementor\Core\Utils\Collection;
6 use Elementor\Modules\WpRest\Base\Query as Base;
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 /**
13 * @deprecated Use wp/v2/users instead. This endpoint proxies to wp/v2/users internally
14 * and will be removed in 4.6.0 version.
15 */
16 class User_Query extends Base {
17 const ENDPOINT = 'user';
18
19 protected function get( \WP_REST_Request $request ) {
20 $params = $request->get_params();
21 $search_term = trim( $params[ self::SEARCH_TERM_KEY ] ?? '' );
22
23 if ( empty( $search_term ) ) {
24 return new \WP_REST_Response( [
25 'success' => true,
26 'data' => [
27 'value' => [],
28 ],
29 ], 200 );
30 }
31
32 $keys_format_map = $params[ self::KEYS_CONVERSION_MAP_KEY ];
33
34 $requested_count = $params[ self::ITEMS_COUNT_KEY ] ?? 0;
35 $validated_count = max( $requested_count, 1 );
36 $count = min( $validated_count, self::MAX_RESPONSE_COUNT );
37
38 $wp_request = new \WP_REST_Request( 'GET', '/wp/v2/users' );
39 $wp_request->set_param( 'search', $search_term );
40 $wp_request->set_param( 'per_page', $count );
41 $wp_request->set_param( 'context', 'edit' );
42
43 $response = rest_do_request( $wp_request );
44
45 if ( $response->is_error() ) {
46 return new \WP_REST_Response( [
47 'success' => true,
48 'data' => [
49 'value' => [],
50 ],
51 ], 200 );
52 }
53
54 global $wp_roles;
55 $roles = $wp_roles->roles;
56
57 $users = Collection::make( $response->get_data() );
58
59 $result = new \WP_REST_Response( [
60 'success' => true,
61 'data' => [
62 'value' => array_values( $users->map( function ( $user ) use ( $keys_format_map, $roles ) {
63 $user_data = [
64 'ID' => $user['id'],
65 'display_name' => $user['name'],
66 ];
67
68 if ( ! empty( $user['roles'][0] ) ) {
69 $user_role = $user['roles'][0];
70 $role_name = $roles[ $user_role ]['name'] ?? ucfirst( $user_role );
71 $user_data['role'] = $role_name;
72 }
73
74 return $this->translate_keys( $user_data, $keys_format_map );
75 } )->all() ),
76 ],
77 ], 200 );
78
79 _doing_it_wrong(
80 'elementor/v1/user',
81 'Use wp/v2/users instead. This endpoint will be removed in 4.6.0 version.',
82 '4.0.4'
83 );
84
85 return $result;
86 }
87
88 protected function permission_check( \WP_REST_Request $request ): bool {
89 return current_user_can( 'list_users' );
90 }
91
92 protected function get_endpoint_registration_args(): array {
93 return [
94 self::SEARCH_TERM_KEY => [
95 'description' => 'Users to search',
96 'type' => 'string',
97 'required' => false,
98 'default' => '',
99 'sanitize_callback' => 'sanitize_text_field',
100 ],
101 self::KEYS_CONVERSION_MAP_KEY => [
102 'description' => 'Specify keys to extract and convert, i.e. ["key_1" => "new_key_1"].',
103 'type' => [ 'array', 'string' ],
104 'required' => false,
105 'default' => [
106 'ID' => 'id',
107 'display_name' => 'label',
108 'role' => 'groupLabel',
109 ],
110 'sanitize_callback' => fn ( ...$args ) => self::sanitize_string_array( ...$args ),
111 ],
112 self::ITEMS_COUNT_KEY => [
113 'description' => 'Number of users to return',
114 'type' => 'integer',
115 'required' => false,
116 'default' => self::MAX_RESPONSE_COUNT,
117 ],
118 ];
119 }
120
121 protected static function get_allowed_param_keys(): array {
122 return [
123 self::KEYS_CONVERSION_MAP_KEY,
124 self::ITEMS_COUNT_KEY,
125 ];
126 }
127
128 protected static function get_keys_to_encode(): array {
129 return [ self::KEYS_CONVERSION_MAP_KEY ];
130 }
131 }
132