PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 4.0
Advanced Access Manager – Access Governance for WordPress v4.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 / User.php
advanced-access-manager / Application / Backend / Feature Last commit date
Abstract.php 9 years ago Capability.php 9 years ago Contact.php 9 years ago Extension.php 9 years ago LoginRedirect.php 9 years ago Menu.php 9 years ago Metabox.php 9 years ago Post.php 9 years ago Redirect.php 9 years ago Role.php 9 years ago Security.php 9 years ago Teaser.php 9 years ago User.php 9 years ago Utility.php 9 years ago
User.php
169 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_User {
17
18 /**
19 * Constructor
20 *
21 * @return void
22 *
23 * @access public
24 * @throws Exception
25 */
26 public function __construct() {
27 $cap = AAM_Core_Config::get('page.capability', 'administrator');
28 if (!AAM::getUser()->hasCapability($cap)) {
29 Throw new Exception(__('Access Denied', AAM_KEY));
30 }
31 }
32
33 /**
34 * Retrieve list of users
35 *
36 * Based on filters, get list of users
37 *
38 * @return string JSON encoded list of users
39 *
40 * @access public
41 */
42 public function getTable() {
43 //get total number of users
44 $total = count_users();
45 $result = $this->query();
46
47 $response = array(
48 'recordsTotal' => $total['total_users'],
49 'recordsFiltered' => $result->get_total(),
50 'draw' => AAM_Core_Request::request('draw'),
51 'data' => array(),
52 );
53
54 foreach ($result->get_results() as $user) {
55 $response['data'][] = array(
56 $user->ID,
57 implode(', ', $this->getUserRoles($user->roles)),
58 ($user->display_name ? $user->display_name : $user->user_nicename),
59 implode(',', $this->prepareRowActions($user)),
60 AAM_Core_API::maxLevel($user->allcaps)
61 );
62 }
63
64 return json_encode($response);
65 }
66
67 /**
68 * Get list of user roles
69 *
70 * @param array $roles
71 *
72 * @return array
73 *
74 * @access protected
75 */
76 protected function getUserRoles($roles) {
77 $response = array();
78
79 $names = AAM_Core_API::getRoles()->get_names();
80
81 if (is_array($roles)) {
82 foreach($roles as $role) {
83 if (isset($names[$role])) {
84 $response[] = translate_user_role($names[$role]);
85 }
86 }
87 }
88
89 return $response;
90 }
91
92 /**
93 * Prepare user row actions
94 *
95 * @param WP_User $user
96 *
97 * @return array
98 *
99 * @access protected
100 */
101 protected function prepareRowActions(WP_User $user) {
102 $max = AAM_Core_API::maxLevel(wp_get_current_user()->allcaps);
103
104 $allowed = ($max >= AAM_Core_API::maxLevel($user->allcaps));
105
106 if ($allowed || ($user->ID == get_current_user_id())) {
107 $actions = array('manage');
108
109 $actions[] = ($user->user_status ? 'unlock' : 'lock');
110 $actions[] = 'edit';
111 $actions[] = 'switch';
112 } else {
113 $actions = array();
114 }
115
116 return $actions;
117 }
118
119 /**
120 * Query database for list of users
121 *
122 * Based on filters and settings get the list of users from database
123 *
124 * @return \WP_User_Query
125 *
126 * @access public
127 */
128 public function query() {
129 $search = trim(AAM_Core_Request::request('search.value'));
130
131 $args = array(
132 'blog_id' => get_current_blog_id(),
133 'fields' => 'all',
134 'number' => AAM_Core_Request::request('length'),
135 'offset' => AAM_Core_Request::request('start'),
136 'search' => ($search ? $search . '*' : ''),
137 'search_columns' => array(
138 'user_login', 'user_email', 'display_name'
139 ),
140 'orderby' => 'user_nicename',
141 'order' => 'ASC'
142 );
143
144 return new WP_User_Query($args);
145 }
146
147 /**
148 * Block user
149 *
150 * @return string
151 *
152 * @access public
153 */
154 public function block() {
155 $subject = AAM_Backend_View::getSubject();
156
157 //user is not allowed to lock himself
158 if ($subject->getId() != get_current_user_id()) {
159 $result = $subject->block();
160 } else {
161 $result = false;
162 }
163
164 return json_encode(
165 array('status' => ($result ? 'success' : 'failure'))
166 );
167 }
168
169 }