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 / Core / Exporter.php
advanced-access-manager / Application / Core Last commit date
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 Importer.php 8 years ago Log.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
291 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', $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 } else {
103 do_action('aam-export', 'system', $feature, $this);
104 }
105 }
106 }
107
108 /**
109 *
110 * @param type $features
111 */
112 protected function exportRoles($features) {
113 foreach($features as $feature) {
114 if ($feature == 'menu') {
115 $this->pushData('options', '/^aam_menu_role/');
116 } elseif ($feature == 'metabox') {
117 $this->pushData('options', '/^aam_metabox_role/');
118 } elseif ($feature == 'post') {
119 $this->pushData('options', '/^aam_type_post_role/');
120 $this->pushData('options', '/^aam_term_[\d]+\|.+_role/');
121 $this->pushData('postmeta', '/^aam-post-access-role/');
122 } elseif ($feature == 'redirect') {
123 $this->pushData('options', '/^aam_redirect_role/');
124 $this->pushData('options', '/^aam_loginredirect_role/');
125 $this->pushData('options', '/^aam_logoutredirect_role/');
126 }
127 }
128 }
129
130 /**
131 *
132 * @param type $features
133 */
134 protected function exportUsers($features) {
135 global $wpdb;
136
137 foreach($features as $feature) {
138 if ($feature == 'menu') {
139 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_menu/');
140 } elseif ($feature == 'metabox') {
141 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_metabox/');
142 } elseif ($feature == 'post') {
143 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_type_post/');
144 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_term_[\d]+\|/');
145 $this->pushData('postmeta', '/^aam-post-access-user/');
146 } elseif ($feature == 'redirect') {
147 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_redirect/');
148 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_loginredirect/');
149 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_logoutredirect/');
150 } elseif ($feature == 'capability') {
151 $this->pushData('usermeta', '/^' . $wpdb->prefix . 'aam_capability/');
152 }
153 }
154 }
155
156 /**
157 *
158 * @param type $features
159 */
160 protected function exportVisitor($features) {
161 foreach($features as $feature) {
162 if ($feature == 'metabox') {
163 $this->pushData('options', '/^aam_visitor_metabox/');
164 } elseif ($feature == 'post') {
165 $this->pushData('options', '/^aam_visitor_type_post/');
166 $this->pushData('options', '/^aam_visitor_term_/');
167 $this->pushData('postmeta', '/^aam-post-access-visitor/');
168 } elseif ($feature == 'redirect') {
169 $this->pushData('options', '/^aam_visitor_redirect/');
170 }
171 }
172 }
173
174 /**
175 *
176 * @param type $features
177 */
178 protected function exportDefault($features) {
179 foreach($features as $feature) {
180 if ($feature == 'menu') {
181 $this->pushData('options', '/^aam_menu_default/');
182 } elseif ($feature == 'metabox') {
183 $this->pushData('options', '/^aam_metabox_default/');
184 } elseif ($feature == 'post') {
185 $this->pushData('options', '/^aam_type_post_default/');
186 $this->pushData('options', '/^aam_term_[\d]+\|.+_default/');
187 $this->pushData('postmeta', '/^aam-post-access-default/');
188 } elseif ($feature == 'redirect') {
189 $this->pushData('options', '/^aam_redirect_default/');
190 $this->pushData('options', '/^aam_loginredirect_default/');
191 $this->pushData('options', '/^aam_logoutredirect_default/');
192 }
193 }
194 }
195
196 /**
197 *
198 * @param type $group
199 * @param type $regexp
200 */
201 public function pushData($group, $regexp) {
202 $cache = $this->getCache();
203
204 if (is_array($cache[$group])) {
205 foreach($cache[$group] as $option) {
206 if (isset($option->user_id)) {
207 $id = $option->user_id;
208 } elseif (isset($option->post_id)) {
209 $id = $option->post_id;
210 } else {
211 $id = null;
212 }
213
214 if (isset($option->option_name)) {
215 if (preg_match($regexp, $option->option_name)) {
216 $this->add(
217 $this->stripPrefix($option->option_name),
218 $option->option_value,
219 '_' . $group,
220 $id
221 );
222 }
223 } elseif (isset($option->meta_key)) {
224 if (preg_match($regexp, $option->meta_key)) {
225 $this->add(
226 $this->stripPrefix($option->meta_key),
227 $option->meta_value,
228 '_' . $group,
229 $id
230 );
231 }
232 }
233 }
234 }
235 }
236
237 /**
238 *
239 * @global type $wpdb
240 * @param type $key
241 * @return type
242 */
243 public function stripPrefix($key) {
244 global $wpdb;
245
246 return preg_replace('/^' . $wpdb->prefix . '/', '_', $key);
247 }
248
249 /**
250 *
251 * @param type $key
252 * @param type $value
253 * @param type $group
254 */
255 public function add($key, $value, $group = '_options', $id = null) {
256 if (is_null($id)) {
257 $this->output['dataset'][$group][$key] = $value;
258 } else {
259 $this->output['dataset'][$group][$id][$key] = $value;
260 }
261 }
262
263 /**
264 *
265 * @global type $wpdb
266 * @return type
267 */
268 protected function getCache() {
269 global $wpdb;
270
271 if (empty($this->cache)) {
272 $query = "SELECT option_name, option_value FROM {$wpdb->options} ";
273 $query .= "WHERE option_name LIKE 'aam%'";
274
275 $this->cache['options'] = $wpdb->get_results($query);
276
277 $query = "SELECT user_id, meta_key, meta_value FROM {$wpdb->usermeta} ";
278 $query .= "WHERE meta_key LIKE '{$wpdb->prefix}aam%'";
279
280 $this->cache['usermeta'] = $wpdb->get_results($query);
281
282 $query = "SELECT post_id, meta_key, meta_value FROM {$wpdb->postmeta} ";
283 $query .= "WHERE meta_key LIKE 'aam%'";
284
285 $this->cache['postmeta'] = $wpdb->get_results($query);
286 }
287
288 return $this->cache;
289 }
290
291 }