PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.0
Advanced Access Manager – Access Governance for WordPress v5.0
6.8.4 6.8.5 6.9.0 6.9.1 6.9.10 6.9.11 6.9.12 6.9.13 6.9.14 6.9.15 6.9.16 6.9.17 6.9.18 6.9.19 6.9.2 6.9.20 6.9.21 6.9.22 6.9.23 6.9.24 6.9.25 6.9.26 6.9.27 6.9.28 6.9.29 6.9.3 6.9.30 6.9.31 6.9.32 6.9.33 6.9.34 6.9.35 6.9.36 6.9.37 6.9.38 6.9.39 6.9.4 6.9.41 6.9.42 6.9.43 6.9.44 6.9.45 6.9.46 6.9.47 6.9.48 6.9.49 6.9.5 6.9.51 6.9.6 6.9.7 6.9.8 6.9.9 7.0.0 7.0.0-alpha.6 7.0.0-alpha.7 7.0.0-beta.1 7.0.0-rc1 7.0.0-rc2 7.0.0-rc3 7.0.1 7.0.10 7.0.11 7.0.2 7.0.3 7.0.4 7.0.5 7.0.6 7.0.7 7.0.8 7.0.9 7.1.0 7.1.1 trunk 3.0 4.0 4.0.1 4.1 4.2 4.3 4.4 4.4.1 4.5 4.6 4.6.1 4.6.2 4.7 4.7.1 4.7.2 4.7.5 4.7.6 4.8 4.8.1 4.9 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 4.9.5.1 4.9.5.2 5.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1 5.1.1 5.10 5.11 5.2 5.2.1 5.2.5 5.2.6 5.2.7 5.3 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.2 5.4.3 5.4.3.1 5.4.3.2 5.5 5.5.1 5.5.2 5.6 5.6.1 5.6.1.1 5.7 5.7.1 5.7.2 5.7.3 5.8 5.8.1 5.8.2 5.8.3 5.9 5.9.1 5.9.1.1 5.9.2 5.9.2.1 5.9.3 5.9.4 5.9.5 5.9.6 5.9.6.1 5.9.6.2 5.9.6.3 5.9.7 5.9.7.1 5.9.7.2 5.9.7.3 5.9.8 5.9.8.1 5.9.9 5.9.9.1 6.0.0 6.0.1 6.0.2 6.0.3 6.0.4 6.0.5 6.1.0 6.1.1 6.2.0 6.2.1 6.2.2 6.3.0 6.3.1 6.3.2 6.3.3 6.4.0 6.4.1 6.4.2 6.4.3 6.5.0 6.5.1 6.5.2 6.5.3 6.5.4 6.6.0 6.6.1 6.6.2 6.6.3 6.6.4 6.7.0 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.8.0 6.8.1 6.8.2 6.8.3
advanced-access-manager / Application / Backend / Feature / Subject / User.php
advanced-access-manager / Application / Backend / Feature / Subject Last commit date
Role.php 8 years ago User.php 8 years ago
User.php
175 lines
1 <?php
2
3 /**
4 * ======================================================================
5 * LICENSE: This file is subject to the terms and conditions defined in *
6 * file 'license.txt', which is part of this source code package. *
7 * ======================================================================
8 */
9
10 /**
11 * User view manager
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Backend_Feature_Subject_User {
17
18 /**
19 * Retrieve list of users
20 *
21 * Based on filters, get list of users
22 *
23 * @return string JSON encoded list of users
24 *
25 * @access public
26 */
27 public function getTable() {
28 if (current_user_can('list_users')) {
29 //get total number of users
30 $total = count_users();
31 $result = $this->query();
32
33 $response = array(
34 'recordsTotal' => $total['total_users'],
35 'recordsFiltered' => $result->get_total(),
36 'draw' => AAM_Core_Request::request('draw'),
37 'data' => array(),
38 );
39
40 foreach ($result->get_results() as $user) {
41 $response['data'][] = array(
42 $user->ID,
43 implode(', ', $this->getUserRoles($user->roles)),
44 ($user->display_name ? $user->display_name : $user->user_nicename),
45 implode(',', $this->prepareRowActions($user)),
46 AAM_Core_API::maxLevel($user->allcaps)
47 );
48 }
49 } else {
50 $response = array(
51 'recordsTotal' => 0,
52 'recordsFiltered' => 0,
53 'draw' => AAM_Core_Request::request('draw'),
54 'data' => array(),
55 );
56 }
57
58 return json_encode($response);
59 }
60
61 /**
62 * Get list of user roles
63 *
64 * @param array $roles
65 *
66 * @return array
67 *
68 * @access protected
69 */
70 protected function getUserRoles($roles) {
71 $response = array();
72
73 $names = AAM_Core_API::getRoles()->get_names();
74
75 if (is_array($roles)) {
76 foreach($roles as $role) {
77 if (isset($names[$role])) {
78 $response[] = translate_user_role($names[$role]);
79 }
80 }
81 }
82
83 return $response;
84 }
85
86 /**
87 * Prepare user row actions
88 *
89 * @param WP_User $user
90 *
91 * @return array
92 *
93 * @access protected
94 */
95 protected function prepareRowActions(WP_User $user) {
96 $max = AAM_Core_API::maxLevel(wp_get_current_user()->allcaps);
97
98 $allowed = ($max >= AAM_Core_API::maxLevel($user->allcaps));
99
100 if ($allowed || ($user->ID == get_current_user_id())) {
101 $actions = array('manage');
102
103 if (AAM_Core_Config::get('secure-login', true)) {
104 if (current_user_can('aam_toggle_users')) {
105 $actions[] = ($user->user_status ? 'unlock' : 'lock');
106 }
107 }
108
109 if (current_user_can('edit_users')) {
110 $actions[] = 'edit';
111 }
112
113 if (current_user_can('aam_switch_users')) {
114 $actions[] = 'switch';
115 }
116 } else {
117 $actions = array();
118 }
119
120 return $actions;
121 }
122
123 /**
124 * Query database for list of users
125 *
126 * Based on filters and settings get the list of users from database
127 *
128 * @return \WP_User_Query
129 *
130 * @access public
131 */
132 public function query() {
133 $search = trim(AAM_Core_Request::request('search.value'));
134
135 $args = array(
136 'blog_id' => get_current_blog_id(),
137 'fields' => 'all',
138 'number' => AAM_Core_Request::request('length'),
139 'offset' => AAM_Core_Request::request('start'),
140 'search' => ($search ? $search . '*' : ''),
141 'search_columns' => array(
142 'user_login', 'user_email', 'display_name'
143 ),
144 'orderby' => 'user_nicename',
145 'order' => 'ASC'
146 );
147
148 return new WP_User_Query($args);
149 }
150
151 /**
152 * Block user
153 *
154 * @return string
155 *
156 * @access public
157 */
158 public function block() {
159 $result = false;
160
161 if (current_user_can('aam_toggle_users')) {
162 $subject = AAM_Backend_Subject::getInstance();
163
164 //user is not allowed to lock himself
165 if ($subject->getId() != get_current_user_id()) {
166 $result = $subject->block();
167 }
168 }
169
170 return json_encode(
171 array('status' => ($result ? 'success' : 'failure'))
172 );
173 }
174
175 }