PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.8.2
Advanced Access Manager – Access Governance for WordPress v5.8.2
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 / Main / Policy.php
advanced-access-manager / Application / Backend / Feature / Main Last commit date
404Redirect.php 7 years ago Capability.php 7 years ago GetStarted.php 7 years ago LoginRedirect.php 7 years ago LogoutRedirect.php 7 years ago Menu.php 7 years ago Metabox.php 7 years ago Policy.php 7 years ago Post.php 7 years ago Redirect.php 7 years ago Route.php 7 years ago Toolbar.php 7 years ago Uri.php 7 years ago
Policy.php
223 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 * WordPress API manager
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Backend_Feature_Main_Policy extends AAM_Backend_Feature_Abstract {
17
18 /**
19 *
20 * @return type
21 */
22 public function getTable() {
23 return wp_json_encode($this->retrievePolicies());
24 }
25
26 /**
27 * Install policy
28 *
29 * @return string
30 *
31 * @access public
32 * @since v5.7.3
33 */
34 public function install() {
35 $package = (object) AAM_Core_Request::post('package');
36
37 if (!empty($package->content)) {
38 $json = base64_decode($package->content);
39
40 $result = wp_insert_post(array(
41 'post_author' => get_current_user_id(),
42 'post_content' => $json,
43 'post_title' => $package->title,
44 'post_excerpt' => $package->description,
45 'post_status' => 'publish',
46 'post_type' => 'aam_policy'
47 ));
48
49 if (!is_wp_error($result)) {
50 $response = array('status' => 'success');
51 } else {
52 $response = array(
53 'status' => 'failure', 'reason' => $result->get_error_message()
54 );
55 }
56 } else {
57 $response = array(
58 'status' => 'failure',
59 'reason' => __('Failed to fetch policy. Please try again.', AAM_KEY)
60 );
61 }
62
63 return wp_json_encode($response);
64 }
65
66 /**
67 * Save post properties
68 *
69 * @return string
70 *
71 * @access public
72 */
73 public function save() {
74 $subject = AAM_Backend_Subject::getInstance();
75 $id = AAM_Core_Request::post('id');
76 $effect = AAM_Core_Request::post('effect');
77
78 //clear cache
79 AAM_Core_API::clearCache();
80
81 $result = $subject->save($id, $effect, 'policy');
82
83 return wp_json_encode(array(
84 'status' => ($result ? 'success' : 'failure')
85 ));
86 }
87
88 /**
89 * @inheritdoc
90 */
91 public static function getTemplate() {
92 return 'main/policy.phtml';
93 }
94
95 /**
96 * Check inheritance status
97 *
98 * Check if menu settings are overwritten
99 *
100 * @return boolean
101 *
102 * @access protected
103 */
104 protected function isOverwritten() {
105 $object = AAM_Backend_Subject::getInstance()->getObject('policy');
106
107 return $object->isOverwritten();
108 }
109
110 /**
111 *
112 * @return type
113 */
114 protected function retrievePolicies() {
115 $search = trim(AAM_Core_Request::request('search.value'));
116
117 $list = get_posts(array(
118 'post_type' => 'aam_policy',
119 'numberposts' => AAM_Core_Request::request('length'),
120 'offset' => AAM_Core_Request::request('start'),
121 's' => ($search ? $search . '*' : ''),
122 ));
123
124 $response = array(
125 'recordsTotal' => count($list),
126 'recordsFiltered' => count($list),
127 'draw' => AAM_Core_Request::request('draw'),
128 'data' => array(),
129 );
130
131 foreach($list as $record) {
132 $policy = json_decode($record->post_content);
133
134 if ($policy) {
135 $response['data'][] = array(
136 $record->ID,
137 $this->buildTitle($record),
138 $this->buildActionList($record),
139 get_edit_post_link($record->ID, 'link')
140 );
141 }
142 }
143
144 return $response;
145 }
146
147 /**
148 *
149 * @global type $wpdb
150 * @param type $type
151 * @param type $search
152 * @return type
153 */
154 protected function getPolicyCount($type, $search) {
155 global $wpdb;
156
157 $query = "SELECT COUNT(*) AS total FROM {$wpdb->posts} ";
158 $query .= "WHERE (post_type = %s) AND (post_title LIKE %s) AND (post_status = %s)";
159
160 $args = array($type, "{$search}%", 'publish');
161
162 return $wpdb->get_var($wpdb->prepare($query, $args));
163 }
164
165 /**
166 *
167 * @param type $record
168 * @return string
169 */
170 protected function buildTitle($record) {
171 $title = (!empty($record->post_title) ? $record->post_title : __('(no title)'));
172 $title .= '<br/>';
173
174 if (isset($record->post_excerpt)) {
175 $title .= '<small>' . esc_js($record->post_excerpt) . '</small>';
176 }
177
178 return $title;
179 }
180
181 /**
182 *
183 * @param type $record
184 * @return type
185 */
186 protected function buildActionList($record) {
187 //'assign,edit,clone,delete'
188 $subject = AAM_Backend_Subject::getInstance();
189 $object = $subject->getObject('policy');
190 $actions = array();
191
192 $actions[] = $object->has($record->ID) ? 'unassign' : 'assign';
193 $actions[] = 'edit';
194 $actions[] = 'delete';
195
196 return implode(',', $actions);
197 }
198
199 /**
200 * Register Menu feature
201 *
202 * @return void
203 *
204 * @access public
205 */
206 public static function register() {
207 AAM_Backend_Feature::registerFeature((object) array(
208 'uid' => 'policy',
209 'position' => 2,
210 'title' => __('Access Policies', AAM_KEY) . '<span class="badge">NEW</span>',
211 'capability' => 'aam_manage_policy',
212 'type' => 'main',
213 'subjects' => array(
214 AAM_Core_Subject_Role::UID,
215 AAM_Core_Subject_User::UID,
216 AAM_Core_Subject_Visitor::UID,
217 AAM_Core_Subject_Default::UID
218 ),
219 'view' => __CLASS__
220 ));
221 }
222
223 }