PluginProbe ʕ •ᴥ•ʔ
Advanced Access Manager – Access Governance for WordPress / 5.3.5
Advanced Access Manager – Access Governance for WordPress v5.3.5
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 / Core / Exporter.php
advanced-access-manager / Application / Core Last commit date
Api 8 years ago ConfigPress 8 years ago Object 8 years ago Subject 8 years ago API.php 8 years ago Cache.php 8 years ago Compatibility.php 8 years ago Config.php 8 years ago ConfigPress.php 8 years ago Console.php 8 years ago Exporter.php 8 years ago Gateway.php 8 years ago Importer.php 8 years ago JwtAuth.php 8 years ago Login.php 8 years ago Media.php 8 years ago Object.php 8 years ago Request.php 8 years ago Server.php 8 years ago Subject.php 8 years ago
Exporter.php
296 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 * AAM Exporter
12 *
13 * @package AAM
14 * @author Vasyl Martyniuk <vasyl@vasyltech.com>
15 */
16 class AAM_Core_Exporter {
17
18 /**
19 *
20 * @var type
21 */
22 protected $config = array();
23
24 /**
25 * Undocumented variable
26 *
27 * @var [type]
28 */
29 protected $blog = null;
30
31 /**
32 *
33 * @var type
34 */
35 protected $output = array();
36
37 /**
38 *
39 * @var type
40 */
41 protected $cache = array();
42
43 /**
44 *
45 * @param type $config
46 */
47 public function __construct($config, $blog = null) {
48 $this->config = $config;
49 $this->blog = ($blog ? $blog : get_current_blog_id());
50 }
51
52 /**
53 *
54 * @return type
55 */
56 public function run() {
57 $this->output = array(
58 'version' => AAM_Core_API::version(),
59 'plugin' => AAM_KEY,
60 'datetime' => date('Y-m-d H:i:s'),
61 'metadata' => $this->config,
62 'dataset' => array()
63 );
64
65 foreach($this->config as $backet => $features) {
66 $method = 'export' . ucfirst($backet);
67
68 if (method_exists($this, $method)) {
69 call_user_func(array($this, $method), explode(',', $features));
70 } else {
71 $this->output = apply_filters(
72 'aam-export-filter', $this->output, $backet, $this->config
73 );
74 }
75 }
76
77 return $this->output;
78 }
79
80 /**
81 *
82 * @global type $wpdb
83 * @param type $features
84 */
85 protected function exportSystem($features) {
86 global $wpdb;
87
88 foreach($features as $feature) {
89 if ($feature == 'roles') {
90 $this->add('_user_roles', serialize(
91 AAM_Core_API::getOption(
92 $wpdb->get_blog_prefix($this->blog) . 'user_roles',
93 array(),
94 $this->blog
95 )
96 ));
97 } elseif ($feature == 'utilities') {
98 $this->add(
99 AAM_Core_Config::OPTION,
100 serialize(AAM_Core_API::getOption(AAM_Core_Config::OPTION)
101 ));
102 } elseif ($feature == 'configpress') {
103 $this->add(
104 'aam-configpress',
105 AAM_Core_ConfigPress::getInstance()->read()
106 );
107 } else {
108 do_action('aam-export-action', 'system', $feature, $this);
109 }
110 }
111 }
112
113 /**
114 *
115 * @param type $features
116 */
117 protected function exportRoles($features) {
118 foreach($features as $feature) {
119 if ($feature == 'menu') {
120 $this->pushData('options', '/^aam_menu_role/');
121 } elseif ($feature == 'metabox') {
122 $this->pushData('options', '/^aam_metabox_role/');
123 } elseif ($feature == 'post') {
124 $this->pushData('options', '/^aam_type_post_role/');
125 $this->pushData('options', '/^aam_term_[\d]+\|.+_role/');
126 $this->pushData('postmeta', '/^aam-post-access-role/');
127 } elseif ($feature == 'redirect') {
128 $this->pushData('options', '/^aam_redirect_role/');
129 $this->pushData('options', '/^aam_loginredirect_role/');
130 $this->pushData('options', '/^aam_logoutredirect_role/');
131 }
132 }
133 }
134
135 /**
136 *
137 * @param type $features
138 */
139 protected function exportUsers($features) {
140 global $wpdb;
141
142 foreach($features as $feature) {
143 if ($feature == 'menu') {
144 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_menu/');
145 } elseif ($feature == 'metabox') {
146 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_metabox/');
147 } elseif ($feature == 'post') {
148 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_type_post/');
149 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_term_[\d]+\|/');
150 $this->pushData('postmeta', '/^aam-post-access-user/');
151 } elseif ($feature == 'redirect') {
152 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_redirect/');
153 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_loginredirect/');
154 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_logoutredirect/');
155 } elseif ($feature == 'capability') {
156 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_capability/');
157 }
158 }
159 }
160
161 /**
162 *
163 * @param type $features
164 */
165 protected function exportVisitor($features) {
166 foreach($features as $feature) {
167 if ($feature == 'metabox') {
168 $this->pushData('options', '/^aam_visitor_metabox/');
169 } elseif ($feature == 'post') {
170 $this->pushData('options', '/^aam_visitor_type_post/');
171 $this->pushData('options', '/^aam_visitor_term_/');
172 $this->pushData('postmeta', '/^aam-post-access-visitor/');
173 } elseif ($feature == 'redirect') {
174 $this->pushData('options', '/^aam_visitor_redirect/');
175 }
176 }
177 }
178
179 /**
180 *
181 * @param type $features
182 */
183 protected function exportDefault($features) {
184 foreach($features as $feature) {
185 if ($feature == 'menu') {
186 $this->pushData('options', '/^aam_menu_default/');
187 } elseif ($feature == 'metabox') {
188 $this->pushData('options', '/^aam_metabox_default/');
189 } elseif ($feature == 'post') {
190 $this->pushData('options', '/^aam_type_post_default/');
191 $this->pushData('options', '/^aam_term_[\d]+\|.+_default/');
192 $this->pushData('postmeta', '/^aam-post-access-default/');
193 } elseif ($feature == 'redirect') {
194 $this->pushData('options', '/^aam_redirect_default/');
195 $this->pushData('options', '/^aam_loginredirect_default/');
196 $this->pushData('options', '/^aam_logoutredirect_default/');
197 }
198 }
199 }
200
201 /**
202 *
203 * @param type $group
204 * @param type $regexp
205 */
206 public function pushData($group, $regexp) {
207 $cache = $this->getCache();
208
209 if (is_array($cache[$group])) {
210 foreach($cache[$group] as $option) {
211 if (isset($option->user_id)) {
212 $id = $option->user_id;
213 } elseif (isset($option->post_id)) {
214 $id = $option->post_id;
215 } else {
216 $id = null;
217 }
218
219 if (isset($option->option_name)) {
220 if (preg_match($regexp, $option->option_name)) {
221 $this->add(
222 $this->stripPrefix($option->option_name),
223 $option->option_value,
224 '_' . $group,
225 $id
226 );
227 }
228 } elseif (isset($option->meta_key)) {
229 if (preg_match($regexp, $option->meta_key)) {
230 $this->add(
231 $this->stripPrefix($option->meta_key),
232 $option->meta_value,
233 '_' . $group,
234 $id
235 );
236 }
237 }
238 }
239 }
240 }
241
242 /**
243 *
244 * @global type $wpdb
245 * @param type $key
246 * @return type
247 */
248 public function stripPrefix($key) {
249 global $wpdb;
250
251 return preg_replace('/^' . $wpdb->prefix . '/', '_', $key);
252 }
253
254 /**
255 *
256 * @param type $key
257 * @param type $value
258 * @param type $group
259 */
260 public function add($key, $value, $group = '_options', $id = null) {
261 if (is_null($id)) {
262 $this->output['dataset'][$group][$key] = $value;
263 } else {
264 $this->output['dataset'][$group][$id][$key] = $value;
265 }
266 }
267
268 /**
269 *
270 * @global type $wpdb
271 * @return type
272 */
273 protected function getCache() {
274 global $wpdb;
275
276 if (empty($this->cache)) {
277 $query = "SELECT option_name, option_value FROM {$wpdb->options} ";
278 $query .= "WHERE option_name LIKE 'aam%'";
279
280 $this->cache['options'] = $wpdb->get_results($query);
281
282 $query = "SELECT user_id, meta_key, meta_value FROM {$wpdb->usermeta} ";
283 $query .= "WHERE meta_key LIKE '{$wpdb->prefix}aam%'";
284
285 $this->cache['usermeta'] = $wpdb->get_results($query);
286
287 $query = "SELECT post_id, meta_key, meta_value FROM {$wpdb->postmeta} ";
288 $query .= "WHERE meta_key LIKE 'aam%'";
289
290 $this->cache['postmeta'] = $wpdb->get_results($query);
291 }
292
293 return $this->cache;
294 }
295
296 }