PluginProbe
Assistant – Every Day Productivity Apps / trunk
Assistant – Every Day Productivity Apps vtrunk
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 / backend / src / Controllers / UsersController.php

UsersController.php in Assistant – Every Day Productivity Apps trunk, at backend/src/Controllers/UsersController.php

131 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FL\Assistant\Controllers;
4
5 use Exception;
6 use FL\Assistant\Data\Repository\UsersRepository;
7 use FL\Assistant\Data\Transformers\UserTransformer;
8 use FL\Assistant\Data\UserState;
9 use FL\Assistant\System\Contracts\ControllerAbstract;
10 use WP_REST_Request;
11 use WP_REST_Response;
12 use WP_REST_Server;
13
14 /**
15 * REST API logic for users.
16 */
17 class UsersController extends ControllerAbstract {
18
19 /**
20 * @var UsersRepository
21 */
22 protected $users;
23 /**
24 * @var UserTransformer
25 */
26 protected $transformer;
27
28 public function __construct( UsersRepository $users, UserTransformer $transformer ) {
29 $this->users = $users;
30 $this->transformer = $transformer;
31 }
32
33
34 /**
35 * Register routes.
36 */
37 public function register_routes() {
38 $this->route(
39 '/users', [
40 [
41 'methods' => WP_REST_Server::READABLE,
42 'callback' => [ $this, 'index' ],
43 'permission_callback' => function () {
44 return current_user_can( 'list_users' );
45 },
46 ],
47 ]
48 );
49
50 $this->route(
51 '/users/(?P<id>\d+)', [
52 [
53 'methods' => WP_REST_Server::READABLE,
54 'callback' => [ $this, 'read' ],
55 'args' => [
56 'id' => [
57 'required' => true,
58 'type' => 'number',
59 ],
60 ],
61 'permission_callback' => function () {
62 return current_user_can( 'list_users' );
63 },
64 ],
65 ]
66 );
67
68 $this->route(
69 '/users/count', [
70 [
71 'methods' => WP_REST_Server::READABLE,
72 'callback' => [ $this, 'users_count' ],
73 'permission_callback' => function () {
74 return current_user_can( 'list_users' );
75 },
76 ],
77 ]
78 );
79
80 }
81
82 /**
83 * Returns an array of users and related data.
84 *
85 * @param WP_REST_Request $request
86 *
87 * @return mixed|WP_REST_Response
88 */
89 public function index( WP_REST_Request $request ) {
90
91 $params = $request->get_params();
92 $pager = $this->users->paginate( $params, $this->transformer );
93
94 return rest_ensure_response( $pager->to_array() );
95 }
96
97 /**
98 * Returns data for a single user.
99 *
100 * @param WP_REST_Request $request
101 *
102 * @return mixed|WP_REST_Response
103 * @throws Exception
104 */
105 public function read( WP_REST_Request $request ) {
106 $id = $request->get_param( 'id' );
107 $user = $this->users->find( $id, $this->transformer );
108
109 return rest_ensure_response( $user );
110 }
111
112 /**
113 * Returns an array of counts by user role.
114 *
115 * @param WP_REST_Request $request
116 *
117 * @return mixed|WP_REST_Response
118 * @throws Exception
119 */
120 public function users_count( WP_REST_Request $request ) {
121
122 $response = $this->users->counts_by_user_role();
123
124 return rest_ensure_response( $response );
125 }
126
127
128
129
130 }
131