PluginProbe
Assistant – Every Day Productivity Apps / 0.2.1
Assistant – Every Day Productivity Apps v0.2.1
1.5.5 trunk 0.1.0 0.2.0 0.2.1 0.2.2 0.3.0 0.3.1 0.4 0.4.1 0.4.2 0.5.0 0.5.1 0.6.0 0.7.0 0.7.0.2 0.7.0.3 0.7.0.4 0.7.0.5 0.7.0.6 0.7.0.7 0.7.0.8 0.7.0.9 0.7.1 1.0 All 71 releases
assistant / classes / class-fl-assistant-rest-users.php

class-fl-assistant-rest-users.php in Assistant – Every Day Productivity Apps 0.2.1, at classes/class-fl-assistant-rest-users.php

149 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * REST API logic for users.
5 */
6 final class FL_Assistant_REST_Users {
7
8 /**
9 * Register routes.
10 */
11 static public function register_routes() {
12 register_rest_route(
13 FL_Assistant_REST::$namespace, '/users', array(
14 array(
15 'methods' => WP_REST_Server::READABLE,
16 'callback' => __CLASS__ . '::users',
17 'permission_callback' => function() {
18 return current_user_can( 'list_users' );
19 },
20 ),
21 )
22 );
23
24 register_rest_route(
25 FL_Assistant_REST::$namespace, '/users/count', array(
26 array(
27 'methods' => WP_REST_Server::READABLE,
28 'callback' => __CLASS__ . '::users_count',
29 'permission_callback' => function() {
30 return current_user_can( 'list_users' );
31 },
32 ),
33 )
34 );
35
36 register_rest_route(
37 FL_Assistant_REST::$namespace, '/user/(?P<id>\d+)', array(
38 array(
39 'methods' => WP_REST_Server::READABLE,
40 'callback' => __CLASS__ . '::user',
41 'args' => array(
42 'id' => array(
43 'required' => true,
44 'type' => 'number',
45 ),
46 ),
47 'permission_callback' => function() {
48 return current_user_can( 'list_users' );
49 },
50 ),
51 )
52 );
53
54 register_rest_route(
55 FL_Assistant_REST::$namespace, '/current-user/state', array(
56 array(
57 'methods' => WP_REST_Server::CREATABLE,
58 'callback' => __CLASS__ . '::update_user_state',
59 'args' => array(
60 'state' => array(
61 'required' => true,
62 'type' => 'string',
63 ),
64 ),
65 'permission_callback' => function() {
66 return ! ! wp_get_current_user()->ID;
67 },
68 ),
69 )
70 );
71 }
72
73 /**
74 * Returns an array of response data for a single user.
75 */
76 static public function get_user_response_data( $user ) {
77 $date = mysql2date( get_option( 'date_format' ), $user->user_registered );
78 return array(
79 'id' => $user->ID,
80 'content' => get_the_author_meta( 'description', $user->ID ),
81 'date' => $date,
82 'displayName' => $user->display_name,
83 'editUrl' => get_edit_user_link( $user->ID, '' ),
84 'email' => $user->user_email,
85 'meta' => $user->user_email,
86 'nicename' => $user->user_nicename,
87 'thumbnail' => get_avatar_url( $user->ID ),
88 'title' => $user->display_name,
89 'url' => get_author_posts_url( $user->ID ),
90 'username' => $user->user_login,
91 'website' => $user->user_url,
92 );
93 }
94
95 /**
96 * Returns an array of users and related data.
97 */
98 static public function users( $request ) {
99 $response = array();
100 $params = $request->get_params();
101 $users = get_users( $params );
102
103 foreach ( $users as $user ) {
104 $response[] = self::get_user_response_data( $user );
105 }
106
107 return rest_ensure_response( $response );
108 }
109
110 /**
111 * Returns an array of counts by user role.
112 */
113 static public function users_count( $request ) {
114 $counts = count_users();
115 $response = array(
116 'total' => $counts['total_users'],
117 );
118
119 foreach ( $counts['avail_roles'] as $role => $count ) {
120 $response[ $role ] = $count;
121 }
122
123 return rest_ensure_response( $response );
124 }
125
126 /**
127 * Returns data for a single user.
128 */
129 static public function user( $request ) {
130 $id = $request->get_param( 'id' );
131 $user = get_user_by( 'id', $id );
132 $response = self::get_user_response_data( $user );
133
134 return rest_ensure_response( $response );
135 }
136
137 /**
138 * Updates the saved state for a user.
139 */
140 static public function update_user_state( $request ) {
141 $id = wp_get_current_user()->ID;
142 $state = json_decode( $request->get_param( 'state' ) );
143
144 FL_Assistant_Data::update_user_state( $id, $state );
145 }
146 }
147
148 FL_Assistant_REST_Users::register_routes();
149