PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / trunk
Advanced Access Manager – Access Governance for WordPress vtrunk
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 / Audit / AuditCheckTrait.php
advanced-access-manager / application / Audit Last commit date
AuditCheckTrait.php 1 year ago CoreUserRoleOptionIntegrityCheck.php 1 year ago EditableFileSystemCheck.php 7 months ago ElevatedCoreRoleCheck.php 7 months ago EmptyUnusedRoleCheck.php 7 months ago HighPrivilegeContentModeratorCheck.php 7 months ago HighPrivilegeOrElevatedUserCheck.php 7 months ago HighPrivilegeRoleCheck.php 7 months ago HighPrivilegeUserCountCheck.php 7 months ago RestfulAutoDiscoverEndpointCheck.php 7 months ago RoleCapabilityNamingConventionCheck.php 7 months ago RoleIntegrityCheck.php 7 months ago RoleTransparencyCheck.php 7 months ago XmlRpcEndpointCheck.php 7 months ago
AuditCheckTrait.php
173 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 * Audit check trait with common methods
12 *
13 * @package AAM
14 * @version 7.0.0
15 */
16 trait AAM_Audit_AuditCheckTrait
17 {
18
19 /**
20 * Convert issue to message
21 *
22 * @param array $issue
23 *
24 * @return string|null
25 * @access public
26 * @static
27 *
28 * @version 7.0.0
29 */
30 public static function issue_to_message($issue)
31 {
32 $result = null;
33 $map = self::_get_message_templates();
34
35 if ($issue['code'] === 'APPLICATION_ERROR') {
36 $result = sprintf(
37 __('Unexpected application error: %s', 'advanced-access-manager'),
38 $issue['metadata']['message']
39 );
40 } elseif (array_key_exists($issue['code'], $map)) {
41 if (!empty($issue['metadata'])) {
42 $result = sprintf(
43 $map[$issue['code']],
44 ...array_values(array_map(function($v) {
45 return is_array($v) ? implode(', ', $v) : $v;
46 }, $issue['metadata']))
47 );
48 } else {
49 $result = $map[$issue['code']];
50 }
51 }
52
53 return $result;
54 }
55
56 /**
57 * Convert audit step results into shareable dataset
58 *
59 * @param array $results
60 *
61 * @return array
62 * @access public
63 * @static
64 *
65 * @version 7.0.0
66 */
67 public static function issues_to_shareable($results)
68 {
69 return $results['issues'];
70 }
71
72 /**
73 * Determine the final check status
74 *
75 * @param array $response
76 *
77 * @return string
78 *
79 * @access private
80 * @static
81 *
82 * @version 7.0.0
83 */
84 private static function _determine_check_status(&$result)
85 {
86 if ($result['is_completed']) {
87 if (array_key_exists('issues', $result)) {
88 $errors = self::_filter_by_issue_type($result['issues'], 'error');
89 $critical = self::_filter_by_issue_type($result['issues'], 'critical');
90 $warnings = self::_filter_by_issue_type($result['issues'], 'warning');
91 $notices = self::_filter_by_issue_type($result['issues'], 'notice');
92
93 if (!empty($errors)) {
94 $result['check_status'] = 'error';
95 } elseif (!empty($critical)) {
96 $result['check_status'] = 'critical';
97 } elseif (!empty($warnings)) {
98 $result['check_status'] = 'warning';
99 } elseif (!empty($notices)) {
100 $result['check_status'] = 'notice';
101 }
102 } else {
103 $result['check_status'] = 'ok';
104 }
105 }
106 }
107
108 /**
109 * Filter failures by type
110 *
111 * @param array $failures
112 * @param string $issue_type
113 *
114 * @return array
115 *
116 * @access private
117 * @static
118 *
119 * @version 7.0.0
120 */
121 private static function _filter_by_issue_type($failures, $issue_type)
122 {
123 return array_filter($failures, function($f) use ($issue_type) {
124 return $f['type'] === $issue_type;
125 });
126 }
127
128 /**
129 * Format detected issue
130 *
131 * @param string $code
132 * @param array $metadata [Optional]
133 * @param string $type [Optional]
134 *
135 * @return array
136 *
137 * @access private
138 * @static
139 *
140 * @version 7.0.0
141 */
142 private static function _format_issue($code, $metadata = [], $type = 'notice')
143 {
144 $result = [
145 'type' => $type,
146 'code' => $code
147 ];
148
149 if (!empty($metadata)) {
150 $result['metadata'] = $metadata;
151 }
152
153 return $result;
154 }
155
156 /**
157 * Read user_roles option from DB
158 *
159 * @return array
160 * @access private
161 *
162 * @version 7.0.0
163 */
164 private static function _read_role_key_option()
165 {
166 global $wpdb;
167
168 return AAM::api()->db->read(
169 $wpdb->get_blog_prefix(get_current_blog_id()) . 'user_roles'
170 );
171 }
172
173 }