@@ -11,670 +11,670 @@ discard block |
||
11 | 11 | class EEH_Debug_Tools |
12 | 12 | { |
13 | 13 | |
14 | - /** |
|
15 | - * instance of the EEH_Autoloader object |
|
16 | - * |
|
17 | - * @var $_instance |
|
18 | - * @access private |
|
19 | - */ |
|
20 | - private static $_instance; |
|
21 | - |
|
22 | - /** |
|
23 | - * @var array |
|
24 | - */ |
|
25 | - protected $_memory_usage_points = array(); |
|
26 | - |
|
27 | - |
|
28 | - |
|
29 | - /** |
|
30 | - * @singleton method used to instantiate class object |
|
31 | - * @access public |
|
32 | - * @return EEH_Debug_Tools |
|
33 | - */ |
|
34 | - public static function instance() |
|
35 | - { |
|
36 | - // check if class object is instantiated, and instantiated properly |
|
37 | - if (! self::$_instance instanceof EEH_Debug_Tools) { |
|
38 | - self::$_instance = new self(); |
|
39 | - } |
|
40 | - return self::$_instance; |
|
41 | - } |
|
42 | - |
|
43 | - |
|
44 | - |
|
45 | - /** |
|
46 | - * private class constructor |
|
47 | - */ |
|
48 | - private function __construct() |
|
49 | - { |
|
50 | - // load Kint PHP debugging library |
|
51 | - if (! class_exists('Kint') && file_exists(EE_PLUGIN_DIR_PATH . 'tests' . DS . 'kint' . DS . 'Kint.class.php')) { |
|
52 | - // despite EE4 having a check for an existing copy of the Kint debugging class, |
|
53 | - // if another plugin was loaded AFTER EE4 and they did NOT perform a similar check, |
|
54 | - // then hilarity would ensue as PHP throws a "Cannot redeclare class Kint" error |
|
55 | - // so we've moved it to our test folder so that it is not included with production releases |
|
56 | - // plz use https://wordpress.org/plugins/kint-debugger/ if testing production versions of EE |
|
57 | - require_once(EE_PLUGIN_DIR_PATH . 'tests' . DS . 'kint' . DS . 'Kint.class.php'); |
|
58 | - } |
|
59 | - // if ( ! defined('DOING_AJAX') || $_REQUEST['noheader'] !== 'true' || ! isset( $_REQUEST['noheader'], $_REQUEST['TB_iframe'] ) ) { |
|
60 | - // add_action( 'shutdown', array($this,'espresso_session_footer_dump') ); |
|
61 | - // } |
|
62 | - $plugin = basename(EE_PLUGIN_DIR_PATH); |
|
63 | - add_action("activate_{$plugin}", array('EEH_Debug_Tools', 'ee_plugin_activation_errors')); |
|
64 | - add_action('activated_plugin', array('EEH_Debug_Tools', 'ee_plugin_activation_errors')); |
|
65 | - add_action('shutdown', array('EEH_Debug_Tools', 'show_db_name')); |
|
66 | - } |
|
67 | - |
|
68 | - |
|
69 | - |
|
70 | - /** |
|
71 | - * show_db_name |
|
72 | - * |
|
73 | - * @return void |
|
74 | - */ |
|
75 | - public static function show_db_name() |
|
76 | - { |
|
77 | - if (! defined('DOING_AJAX') && (defined('EE_ERROR_EMAILS') && EE_ERROR_EMAILS)) { |
|
78 | - echo '<p style="font-size:10px;font-weight:normal;color:#E76700;margin: 1em 2em; text-align: right;">DB_NAME: ' |
|
79 | - . DB_NAME |
|
80 | - . '</p>'; |
|
81 | - } |
|
82 | - if (EE_DEBUG) { |
|
83 | - Benchmark::displayResults(); |
|
84 | - } |
|
85 | - } |
|
86 | - |
|
87 | - |
|
88 | - |
|
89 | - /** |
|
90 | - * dump EE_Session object at bottom of page after everything else has happened |
|
91 | - * |
|
92 | - * @return void |
|
93 | - */ |
|
94 | - public function espresso_session_footer_dump() |
|
95 | - { |
|
96 | - if ((defined('WP_DEBUG') && WP_DEBUG) |
|
97 | - && ! defined('DOING_AJAX') |
|
98 | - && class_exists('Kint') |
|
99 | - && function_exists('wp_get_current_user') |
|
100 | - && current_user_can('update_core') |
|
101 | - && class_exists('EE_Registry') |
|
102 | - ) { |
|
103 | - Kint::dump(EE_Registry::instance()->SSN->id()); |
|
104 | - Kint::dump(EE_Registry::instance()->SSN); |
|
105 | - // Kint::dump( EE_Registry::instance()->SSN->get_session_data('cart')->get_tickets() ); |
|
106 | - $this->espresso_list_hooked_functions(); |
|
107 | - Benchmark::displayResults(); |
|
108 | - } |
|
109 | - } |
|
110 | - |
|
111 | - |
|
112 | - |
|
113 | - /** |
|
114 | - * List All Hooked Functions |
|
115 | - * to list all functions for a specific hook, add ee_list_hooks={hook-name} to URL |
|
116 | - * http://wp.smashingmagazine.com/2009/08/18/10-useful-wordpress-hook-hacks/ |
|
117 | - * |
|
118 | - * @param string $tag |
|
119 | - * @return void |
|
120 | - */ |
|
121 | - public function espresso_list_hooked_functions($tag = '') |
|
122 | - { |
|
123 | - global $wp_filter; |
|
124 | - echo '<br/><br/><br/><h3>Hooked Functions</h3>'; |
|
125 | - if ($tag) { |
|
126 | - $hook[ $tag ] = $wp_filter[ $tag ]; |
|
127 | - if (! is_array($hook[ $tag ])) { |
|
128 | - trigger_error("Nothing found for '$tag' hook", E_USER_WARNING); |
|
129 | - return; |
|
130 | - } |
|
131 | - echo '<h5>For Tag: ' . $tag . '</h5>'; |
|
132 | - } else { |
|
133 | - $hook = is_array($wp_filter) ? $wp_filter : array($wp_filter); |
|
134 | - ksort($hook); |
|
135 | - } |
|
136 | - foreach ($hook as $tag_name => $priorities) { |
|
137 | - echo "<br />>>>>>\t<strong>$tag_name</strong><br />"; |
|
138 | - ksort($priorities); |
|
139 | - foreach ($priorities as $priority => $function) { |
|
140 | - echo $priority; |
|
141 | - foreach ($function as $name => $properties) { |
|
142 | - echo "\t$name<br />"; |
|
143 | - } |
|
144 | - } |
|
145 | - } |
|
146 | - } |
|
147 | - |
|
148 | - |
|
149 | - |
|
150 | - /** |
|
151 | - * registered_filter_callbacks |
|
152 | - * |
|
153 | - * @param string $hook_name |
|
154 | - * @return array |
|
155 | - */ |
|
156 | - public static function registered_filter_callbacks($hook_name = '') |
|
157 | - { |
|
158 | - $filters = array(); |
|
159 | - global $wp_filter; |
|
160 | - if (isset($wp_filter[ $hook_name ])) { |
|
161 | - $filters[ $hook_name ] = array(); |
|
162 | - foreach ($wp_filter[ $hook_name ] as $priority => $callbacks) { |
|
163 | - $filters[ $hook_name ][ $priority ] = array(); |
|
164 | - foreach ($callbacks as $callback) { |
|
165 | - $filters[ $hook_name ][ $priority ][] = $callback['function']; |
|
166 | - } |
|
167 | - } |
|
168 | - } |
|
169 | - return $filters; |
|
170 | - } |
|
171 | - |
|
172 | - |
|
173 | - |
|
174 | - /** |
|
175 | - * captures plugin activation errors for debugging |
|
176 | - * |
|
177 | - * @return void |
|
178 | - * @throws EE_Error |
|
179 | - */ |
|
180 | - public static function ee_plugin_activation_errors() |
|
181 | - { |
|
182 | - if (WP_DEBUG) { |
|
183 | - $activation_errors = ob_get_contents(); |
|
184 | - if (! empty($activation_errors)) { |
|
185 | - $activation_errors = date('Y-m-d H:i:s') . "\n" . $activation_errors; |
|
186 | - } |
|
187 | - espresso_load_required('EEH_File', EE_HELPERS . 'EEH_File.helper.php'); |
|
188 | - if (class_exists('EEH_File')) { |
|
189 | - try { |
|
190 | - EEH_File::ensure_file_exists_and_is_writable( |
|
191 | - EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html' |
|
192 | - ); |
|
193 | - EEH_File::write_to_file( |
|
194 | - EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html', |
|
195 | - $activation_errors |
|
196 | - ); |
|
197 | - } catch (EE_Error $e) { |
|
198 | - EE_Error::add_error( |
|
199 | - sprintf( |
|
200 | - __( |
|
201 | - 'The Event Espresso activation errors file could not be setup because: %s', |
|
202 | - 'event_espresso' |
|
203 | - ), |
|
204 | - $e->getMessage() |
|
205 | - ), |
|
206 | - __FILE__, |
|
207 | - __FUNCTION__, |
|
208 | - __LINE__ |
|
209 | - ); |
|
210 | - } |
|
211 | - } else { |
|
212 | - // old school attempt |
|
213 | - file_put_contents( |
|
214 | - EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html', |
|
215 | - $activation_errors |
|
216 | - ); |
|
217 | - } |
|
218 | - $activation_errors = get_option('ee_plugin_activation_errors', '') . $activation_errors; |
|
219 | - update_option('ee_plugin_activation_errors', $activation_errors); |
|
220 | - } |
|
221 | - } |
|
222 | - |
|
223 | - |
|
224 | - |
|
225 | - /** |
|
226 | - * This basically mimics the WordPress _doing_it_wrong() function except adds our own messaging etc. |
|
227 | - * Very useful for providing helpful messages to developers when the method of doing something has been deprecated, |
|
228 | - * or we want to make sure they use something the right way. |
|
229 | - * |
|
230 | - * @access public |
|
231 | - * @param string $function The function that was called |
|
232 | - * @param string $message A message explaining what has been done incorrectly |
|
233 | - * @param string $version The version of Event Espresso where the error was added |
|
234 | - * @param string $applies_when a version string for when you want the doing_it_wrong notice to begin appearing |
|
235 | - * for a deprecated function. This allows deprecation to occur during one version, |
|
236 | - * but not have any notices appear until a later version. This allows developers |
|
237 | - * extra time to update their code before notices appear. |
|
238 | - * @param int $error_type |
|
239 | - * @uses trigger_error() |
|
240 | - */ |
|
241 | - public function doing_it_wrong( |
|
242 | - $function, |
|
243 | - $message, |
|
244 | - $version, |
|
245 | - $applies_when = '', |
|
246 | - $error_type = null |
|
247 | - ) { |
|
248 | - $applies_when = ! empty($applies_when) ? $applies_when : espresso_version(); |
|
249 | - $error_type = $error_type !== null ? $error_type : E_USER_NOTICE; |
|
250 | - // because we swapped the parameter order around for the last two params, |
|
251 | - // let's verify that some third party isn't still passing an error type value for the third param |
|
252 | - if (is_int($applies_when)) { |
|
253 | - $error_type = $applies_when; |
|
254 | - $applies_when = espresso_version(); |
|
255 | - } |
|
256 | - // if not displaying notices yet, then just leave |
|
257 | - if (version_compare(espresso_version(), $applies_when, '<')) { |
|
258 | - return; |
|
259 | - } |
|
260 | - do_action('AHEE__EEH_Debug_Tools__doing_it_wrong_run', $function, $message, $version); |
|
261 | - $version = $version === null |
|
262 | - ? '' |
|
263 | - : sprintf( |
|
264 | - __('(This message was added in version %s of Event Espresso)', 'event_espresso'), |
|
265 | - $version |
|
266 | - ); |
|
267 | - $error_message = sprintf( |
|
268 | - esc_html__('%1$s was called %2$sincorrectly%3$s. %4$s %5$s', 'event_espresso'), |
|
269 | - $function, |
|
270 | - '<strong>', |
|
271 | - '</strong>', |
|
272 | - $message, |
|
273 | - $version |
|
274 | - ); |
|
275 | - // don't trigger error if doing ajax, |
|
276 | - // instead we'll add a transient EE_Error notice that in theory should show on the next request. |
|
277 | - if (defined('DOING_AJAX') && DOING_AJAX) { |
|
278 | - $error_message .= ' ' . esc_html__( |
|
279 | - 'This is a doing_it_wrong message that was triggered during an ajax request. The request params on this request were: ', |
|
280 | - 'event_espresso' |
|
281 | - ); |
|
282 | - $error_message .= '<ul><li>'; |
|
283 | - $error_message .= implode('</li><li>', EE_Registry::instance()->REQ->params()); |
|
284 | - $error_message .= '</ul>'; |
|
285 | - EE_Error::add_error($error_message, 'debug::doing_it_wrong', $function, '42'); |
|
286 | - // now we set this on the transient so it shows up on the next request. |
|
287 | - EE_Error::get_notices(false, true); |
|
288 | - } else { |
|
289 | - trigger_error($error_message, $error_type); |
|
290 | - } |
|
291 | - } |
|
292 | - |
|
293 | - |
|
294 | - |
|
295 | - |
|
296 | - /** |
|
297 | - * Logger helpers |
|
298 | - */ |
|
299 | - /** |
|
300 | - * debug |
|
301 | - * |
|
302 | - * @param string $class |
|
303 | - * @param string $func |
|
304 | - * @param string $line |
|
305 | - * @param array $info |
|
306 | - * @param bool $display_request |
|
307 | - * @param string $debug_index |
|
308 | - * @param string $debug_key |
|
309 | - * @throws EE_Error |
|
310 | - * @throws \EventEspresso\core\exceptions\InvalidSessionDataException |
|
311 | - */ |
|
312 | - public static function log( |
|
313 | - $class = '', |
|
314 | - $func = '', |
|
315 | - $line = '', |
|
316 | - $info = array(), |
|
317 | - $display_request = false, |
|
318 | - $debug_index = '', |
|
319 | - $debug_key = 'EE_DEBUG_SPCO' |
|
320 | - ) { |
|
321 | - if (WP_DEBUG) { |
|
322 | - $debug_key = $debug_key . '_' . EE_Session::instance()->id(); |
|
323 | - $debug_data = get_option($debug_key, array()); |
|
324 | - $default_data = array( |
|
325 | - $class => $func . '() : ' . $line, |
|
326 | - 'REQ' => $display_request ? $_REQUEST : '', |
|
327 | - ); |
|
328 | - // don't serialize objects |
|
329 | - $info = self::strip_objects($info); |
|
330 | - $index = ! empty($debug_index) ? $debug_index : 0; |
|
331 | - if (! isset($debug_data[ $index ])) { |
|
332 | - $debug_data[ $index ] = array(); |
|
333 | - } |
|
334 | - $debug_data[ $index ][ microtime() ] = array_merge($default_data, $info); |
|
335 | - update_option($debug_key, $debug_data); |
|
336 | - } |
|
337 | - } |
|
338 | - |
|
339 | - |
|
340 | - |
|
341 | - /** |
|
342 | - * strip_objects |
|
343 | - * |
|
344 | - * @param array $info |
|
345 | - * @return array |
|
346 | - */ |
|
347 | - public static function strip_objects($info = array()) |
|
348 | - { |
|
349 | - foreach ($info as $key => $value) { |
|
350 | - if (is_array($value)) { |
|
351 | - $info[ $key ] = self::strip_objects($value); |
|
352 | - } elseif (is_object($value)) { |
|
353 | - $object_class = get_class($value); |
|
354 | - $info[ $object_class ] = array(); |
|
355 | - $info[ $object_class ]['ID'] = method_exists($value, 'ID') ? $value->ID() : spl_object_hash($value); |
|
356 | - if (method_exists($value, 'ID')) { |
|
357 | - $info[ $object_class ]['ID'] = $value->ID(); |
|
358 | - } |
|
359 | - if (method_exists($value, 'status')) { |
|
360 | - $info[ $object_class ]['status'] = $value->status(); |
|
361 | - } elseif (method_exists($value, 'status_ID')) { |
|
362 | - $info[ $object_class ]['status'] = $value->status_ID(); |
|
363 | - } |
|
364 | - unset($info[ $key ]); |
|
365 | - } |
|
366 | - } |
|
367 | - return (array) $info; |
|
368 | - } |
|
369 | - |
|
370 | - |
|
371 | - |
|
372 | - /** |
|
373 | - * @param mixed $var |
|
374 | - * @param string $var_name |
|
375 | - * @param string $file |
|
376 | - * @param int|string $line |
|
377 | - * @param int|string $heading_tag |
|
378 | - * @param bool $die |
|
379 | - * @param string $margin |
|
380 | - */ |
|
381 | - public static function printv( |
|
382 | - $var, |
|
383 | - $var_name = '', |
|
384 | - $file = '', |
|
385 | - $line = '', |
|
386 | - $heading_tag = 5, |
|
387 | - $die = false, |
|
388 | - $margin = '' |
|
389 | - ) { |
|
390 | - $var_name = ! $var_name ? 'string' : $var_name; |
|
391 | - $var_name = ucwords(str_replace('$', '', $var_name)); |
|
392 | - $is_method = method_exists($var_name, $var); |
|
393 | - $var_name = ucwords(str_replace('_', ' ', $var_name)); |
|
394 | - $heading_tag = EEH_Debug_Tools::headingTag($heading_tag); |
|
395 | - $result = EEH_Debug_Tools::headingSpacer($heading_tag); |
|
396 | - $result .= EEH_Debug_Tools::heading($var_name, $heading_tag, $margin, $line); |
|
397 | - $result .= $is_method |
|
398 | - ? EEH_Debug_Tools::grey_span('::') . EEH_Debug_Tools::orange_span($var . '()') |
|
399 | - : EEH_Debug_Tools::grey_span(' : ') . EEH_Debug_Tools::orange_span($var); |
|
400 | - $result .= EEH_Debug_Tools::file_and_line($file, $line, $heading_tag); |
|
401 | - $result .= EEH_Debug_Tools::headingX($heading_tag); |
|
402 | - if ($die) { |
|
403 | - die($result); |
|
404 | - } |
|
405 | - echo $result; |
|
406 | - } |
|
407 | - |
|
408 | - |
|
409 | - protected static function headingTag($heading_tag) |
|
410 | - { |
|
411 | - $heading_tag = absint($heading_tag); |
|
412 | - return $heading_tag > 0 && $heading_tag < 7 ? "h{$heading_tag}" : 'h5'; |
|
413 | - } |
|
414 | - |
|
415 | - |
|
416 | - protected static function headingSpacer($heading_tag) |
|
417 | - { |
|
418 | - return EEH_Debug_Tools::plainOutput() && ($heading_tag === 'h1' || $heading_tag === 'h2') |
|
419 | - ? "\n" |
|
420 | - : ''; |
|
421 | - } |
|
422 | - |
|
423 | - |
|
424 | - protected static function plainOutput() |
|
425 | - { |
|
426 | - return defined('EE_TESTS_DIR') |
|
427 | - || (defined('DOING_AJAX') && DOING_AJAX) |
|
428 | - || ( |
|
429 | - isset($_SERVER['REQUEST_URI']) |
|
430 | - && strpos(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), 'wp-json') !== false |
|
431 | - ); |
|
432 | - } |
|
433 | - |
|
434 | - |
|
435 | - /** |
|
436 | - * @param string $var_name |
|
437 | - * @param string $heading_tag |
|
438 | - * @param string $margin |
|
439 | - * @param int $line |
|
440 | - * @return string |
|
441 | - */ |
|
442 | - protected static function heading($var_name = '', $heading_tag = 'h5', $margin = '', $line = 0) |
|
443 | - { |
|
444 | - if (EEH_Debug_Tools::plainOutput()) { |
|
445 | - $heading = ''; |
|
446 | - if ($heading_tag === 'h1' || $heading_tag === 'h2') { |
|
447 | - $heading .= "\n"; |
|
448 | - } |
|
449 | - $heading .= "\n{$line}) {$var_name}"; |
|
450 | - return $heading; |
|
451 | - } |
|
452 | - $margin = "25px 0 0 {$margin}"; |
|
453 | - return '<' . $heading_tag . ' style="color:#2EA2CC; margin:' . $margin . ';"><b>' . $var_name . '</b>'; |
|
454 | - } |
|
455 | - |
|
456 | - |
|
457 | - |
|
458 | - /** |
|
459 | - * @param string $heading_tag |
|
460 | - * @return string |
|
461 | - */ |
|
462 | - protected static function headingX($heading_tag = 'h5') |
|
463 | - { |
|
464 | - if (EEH_Debug_Tools::plainOutput()) { |
|
465 | - return ''; |
|
466 | - } |
|
467 | - return '</' . $heading_tag . '>'; |
|
468 | - } |
|
469 | - |
|
470 | - |
|
471 | - |
|
472 | - /** |
|
473 | - * @param string $content |
|
474 | - * @return string |
|
475 | - */ |
|
476 | - protected static function grey_span($content = '') |
|
477 | - { |
|
478 | - if (EEH_Debug_Tools::plainOutput()) { |
|
479 | - return $content; |
|
480 | - } |
|
481 | - return '<span style="color:#999">' . $content . '</span>'; |
|
482 | - } |
|
483 | - |
|
484 | - |
|
485 | - |
|
486 | - /** |
|
487 | - * @param string $file |
|
488 | - * @param int $line |
|
489 | - * @return string |
|
490 | - */ |
|
491 | - protected static function file_and_line($file, $line, $heading_tag) |
|
492 | - { |
|
493 | - if ($file === '' || $line === '') { |
|
494 | - return ''; |
|
495 | - } |
|
496 | - $file = str_replace(EE_PLUGIN_DIR_PATH, '/', $file); |
|
497 | - if (EEH_Debug_Tools::plainOutput()) { |
|
498 | - if ($heading_tag === 'h1' || $heading_tag === 'h2') { |
|
499 | - return " ({$file})"; |
|
500 | - } |
|
501 | - return ''; |
|
502 | - } |
|
503 | - return '<br /><span style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;">' |
|
504 | - . $file |
|
505 | - . '<br />line no: ' |
|
506 | - . $line |
|
507 | - . '</span>'; |
|
508 | - } |
|
509 | - |
|
510 | - |
|
511 | - |
|
512 | - /** |
|
513 | - * @param string $content |
|
514 | - * @return string |
|
515 | - */ |
|
516 | - protected static function orange_span($content = '') |
|
517 | - { |
|
518 | - if (EEH_Debug_Tools::plainOutput()) { |
|
519 | - return $content; |
|
520 | - } |
|
521 | - return '<span style="color:#E76700">' . $content . '</span>'; |
|
522 | - } |
|
523 | - |
|
524 | - |
|
525 | - |
|
526 | - /** |
|
527 | - * @param mixed $var |
|
528 | - * @return string |
|
529 | - */ |
|
530 | - protected static function pre_span($var) |
|
531 | - { |
|
532 | - ob_start(); |
|
533 | - var_dump($var); |
|
534 | - $var = ob_get_clean(); |
|
535 | - if (EEH_Debug_Tools::plainOutput()) { |
|
536 | - return $var; |
|
537 | - } |
|
538 | - return '<pre style="color:#999; padding:1em; background: #fff">' . $var . '</pre>'; |
|
539 | - } |
|
540 | - |
|
541 | - |
|
542 | - |
|
543 | - /** |
|
544 | - * @param mixed $var |
|
545 | - * @param string $var_name |
|
546 | - * @param string $file |
|
547 | - * @param int|string $line |
|
548 | - * @param int|string $heading_tag |
|
549 | - * @param bool $die |
|
550 | - */ |
|
551 | - public static function printr( |
|
552 | - $var, |
|
553 | - $var_name = '', |
|
554 | - $file = '', |
|
555 | - $line = '', |
|
556 | - $heading_tag = 5, |
|
557 | - $die = false |
|
558 | - ) { |
|
559 | - // return; |
|
560 | - $file = str_replace(rtrim(ABSPATH, '\\/'), '', $file); |
|
561 | - $margin = is_admin() ? ' 180px' : '0'; |
|
562 | - // $print_r = false; |
|
563 | - if (is_string($var)) { |
|
564 | - EEH_Debug_Tools::printv($var, $var_name, $file, $line, $heading_tag, $die, $margin); |
|
565 | - return; |
|
566 | - } |
|
567 | - if (is_object($var)) { |
|
568 | - $var_name = ! $var_name ? 'object' : $var_name; |
|
569 | - // $print_r = true; |
|
570 | - } elseif (is_array($var)) { |
|
571 | - $var_name = ! $var_name ? 'array' : $var_name; |
|
572 | - // $print_r = true; |
|
573 | - } elseif (is_numeric($var)) { |
|
574 | - $var_name = ! $var_name ? 'numeric' : $var_name; |
|
575 | - } elseif ($var === null) { |
|
576 | - $var_name = ! $var_name ? 'null' : $var_name; |
|
577 | - } |
|
578 | - $var_name = ucwords(str_replace(array('$', '_'), array('', ' '), $var_name)); |
|
579 | - $heading_tag = EEH_Debug_Tools::headingTag($heading_tag); |
|
580 | - $result = EEH_Debug_Tools::headingSpacer($heading_tag); |
|
581 | - $result .= EEH_Debug_Tools::heading($var_name, $heading_tag, $margin, $line); |
|
582 | - $result .= EEH_Debug_Tools::grey_span(' : ') . EEH_Debug_Tools::orange_span( |
|
583 | - EEH_Debug_Tools::pre_span($var) |
|
584 | - ); |
|
585 | - $result .= EEH_Debug_Tools::file_and_line($file, $line, $heading_tag); |
|
586 | - $result .= EEH_Debug_Tools::headingX($heading_tag); |
|
587 | - if ($die) { |
|
588 | - die($result); |
|
589 | - } |
|
590 | - echo $result; |
|
591 | - } |
|
592 | - |
|
593 | - |
|
594 | - |
|
595 | - /******************** deprecated ********************/ |
|
596 | - |
|
597 | - |
|
598 | - |
|
599 | - /** |
|
600 | - * @deprecated 4.9.39.rc.034 |
|
601 | - */ |
|
602 | - public function reset_times() |
|
603 | - { |
|
604 | - Benchmark::resetTimes(); |
|
605 | - } |
|
606 | - |
|
607 | - |
|
608 | - |
|
609 | - /** |
|
610 | - * @deprecated 4.9.39.rc.034 |
|
611 | - * @param null $timer_name |
|
612 | - */ |
|
613 | - public function start_timer($timer_name = null) |
|
614 | - { |
|
615 | - Benchmark::startTimer($timer_name); |
|
616 | - } |
|
617 | - |
|
618 | - |
|
619 | - |
|
620 | - /** |
|
621 | - * @deprecated 4.9.39.rc.034 |
|
622 | - * @param string $timer_name |
|
623 | - */ |
|
624 | - public function stop_timer($timer_name = '') |
|
625 | - { |
|
626 | - Benchmark::stopTimer($timer_name); |
|
627 | - } |
|
628 | - |
|
629 | - |
|
630 | - |
|
631 | - /** |
|
632 | - * @deprecated 4.9.39.rc.034 |
|
633 | - * @param string $label The label to show for this time eg "Start of calling Some_Class::some_function" |
|
634 | - * @param boolean $output_now whether to echo now, or wait until EEH_Debug_Tools::show_times() is called |
|
635 | - * @return void |
|
636 | - */ |
|
637 | - public function measure_memory($label, $output_now = false) |
|
638 | - { |
|
639 | - Benchmark::measureMemory($label, $output_now); |
|
640 | - } |
|
641 | - |
|
642 | - |
|
643 | - |
|
644 | - /** |
|
645 | - * @deprecated 4.9.39.rc.034 |
|
646 | - * @param int $size |
|
647 | - * @return string |
|
648 | - */ |
|
649 | - public function convert($size) |
|
650 | - { |
|
651 | - return Benchmark::convert($size); |
|
652 | - } |
|
653 | - |
|
654 | - |
|
655 | - |
|
656 | - /** |
|
657 | - * @deprecated 4.9.39.rc.034 |
|
658 | - * @param bool $output_now |
|
659 | - * @return string |
|
660 | - */ |
|
661 | - public function show_times($output_now = true) |
|
662 | - { |
|
663 | - return Benchmark::displayResults($output_now); |
|
664 | - } |
|
665 | - |
|
666 | - |
|
667 | - |
|
668 | - /** |
|
669 | - * @deprecated 4.9.39.rc.034 |
|
670 | - * @param string $timer_name |
|
671 | - * @param float $total_time |
|
672 | - * @return string |
|
673 | - */ |
|
674 | - public function format_time($timer_name, $total_time) |
|
675 | - { |
|
676 | - return Benchmark::formatTime($timer_name, $total_time); |
|
677 | - } |
|
14 | + /** |
|
15 | + * instance of the EEH_Autoloader object |
|
16 | + * |
|
17 | + * @var $_instance |
|
18 | + * @access private |
|
19 | + */ |
|
20 | + private static $_instance; |
|
21 | + |
|
22 | + /** |
|
23 | + * @var array |
|
24 | + */ |
|
25 | + protected $_memory_usage_points = array(); |
|
26 | + |
|
27 | + |
|
28 | + |
|
29 | + /** |
|
30 | + * @singleton method used to instantiate class object |
|
31 | + * @access public |
|
32 | + * @return EEH_Debug_Tools |
|
33 | + */ |
|
34 | + public static function instance() |
|
35 | + { |
|
36 | + // check if class object is instantiated, and instantiated properly |
|
37 | + if (! self::$_instance instanceof EEH_Debug_Tools) { |
|
38 | + self::$_instance = new self(); |
|
39 | + } |
|
40 | + return self::$_instance; |
|
41 | + } |
|
42 | + |
|
43 | + |
|
44 | + |
|
45 | + /** |
|
46 | + * private class constructor |
|
47 | + */ |
|
48 | + private function __construct() |
|
49 | + { |
|
50 | + // load Kint PHP debugging library |
|
51 | + if (! class_exists('Kint') && file_exists(EE_PLUGIN_DIR_PATH . 'tests' . DS . 'kint' . DS . 'Kint.class.php')) { |
|
52 | + // despite EE4 having a check for an existing copy of the Kint debugging class, |
|
53 | + // if another plugin was loaded AFTER EE4 and they did NOT perform a similar check, |
|
54 | + // then hilarity would ensue as PHP throws a "Cannot redeclare class Kint" error |
|
55 | + // so we've moved it to our test folder so that it is not included with production releases |
|
56 | + // plz use https://wordpress.org/plugins/kint-debugger/ if testing production versions of EE |
|
57 | + require_once(EE_PLUGIN_DIR_PATH . 'tests' . DS . 'kint' . DS . 'Kint.class.php'); |
|
58 | + } |
|
59 | + // if ( ! defined('DOING_AJAX') || $_REQUEST['noheader'] !== 'true' || ! isset( $_REQUEST['noheader'], $_REQUEST['TB_iframe'] ) ) { |
|
60 | + // add_action( 'shutdown', array($this,'espresso_session_footer_dump') ); |
|
61 | + // } |
|
62 | + $plugin = basename(EE_PLUGIN_DIR_PATH); |
|
63 | + add_action("activate_{$plugin}", array('EEH_Debug_Tools', 'ee_plugin_activation_errors')); |
|
64 | + add_action('activated_plugin', array('EEH_Debug_Tools', 'ee_plugin_activation_errors')); |
|
65 | + add_action('shutdown', array('EEH_Debug_Tools', 'show_db_name')); |
|
66 | + } |
|
67 | + |
|
68 | + |
|
69 | + |
|
70 | + /** |
|
71 | + * show_db_name |
|
72 | + * |
|
73 | + * @return void |
|
74 | + */ |
|
75 | + public static function show_db_name() |
|
76 | + { |
|
77 | + if (! defined('DOING_AJAX') && (defined('EE_ERROR_EMAILS') && EE_ERROR_EMAILS)) { |
|
78 | + echo '<p style="font-size:10px;font-weight:normal;color:#E76700;margin: 1em 2em; text-align: right;">DB_NAME: ' |
|
79 | + . DB_NAME |
|
80 | + . '</p>'; |
|
81 | + } |
|
82 | + if (EE_DEBUG) { |
|
83 | + Benchmark::displayResults(); |
|
84 | + } |
|
85 | + } |
|
86 | + |
|
87 | + |
|
88 | + |
|
89 | + /** |
|
90 | + * dump EE_Session object at bottom of page after everything else has happened |
|
91 | + * |
|
92 | + * @return void |
|
93 | + */ |
|
94 | + public function espresso_session_footer_dump() |
|
95 | + { |
|
96 | + if ((defined('WP_DEBUG') && WP_DEBUG) |
|
97 | + && ! defined('DOING_AJAX') |
|
98 | + && class_exists('Kint') |
|
99 | + && function_exists('wp_get_current_user') |
|
100 | + && current_user_can('update_core') |
|
101 | + && class_exists('EE_Registry') |
|
102 | + ) { |
|
103 | + Kint::dump(EE_Registry::instance()->SSN->id()); |
|
104 | + Kint::dump(EE_Registry::instance()->SSN); |
|
105 | + // Kint::dump( EE_Registry::instance()->SSN->get_session_data('cart')->get_tickets() ); |
|
106 | + $this->espresso_list_hooked_functions(); |
|
107 | + Benchmark::displayResults(); |
|
108 | + } |
|
109 | + } |
|
110 | + |
|
111 | + |
|
112 | + |
|
113 | + /** |
|
114 | + * List All Hooked Functions |
|
115 | + * to list all functions for a specific hook, add ee_list_hooks={hook-name} to URL |
|
116 | + * http://wp.smashingmagazine.com/2009/08/18/10-useful-wordpress-hook-hacks/ |
|
117 | + * |
|
118 | + * @param string $tag |
|
119 | + * @return void |
|
120 | + */ |
|
121 | + public function espresso_list_hooked_functions($tag = '') |
|
122 | + { |
|
123 | + global $wp_filter; |
|
124 | + echo '<br/><br/><br/><h3>Hooked Functions</h3>'; |
|
125 | + if ($tag) { |
|
126 | + $hook[ $tag ] = $wp_filter[ $tag ]; |
|
127 | + if (! is_array($hook[ $tag ])) { |
|
128 | + trigger_error("Nothing found for '$tag' hook", E_USER_WARNING); |
|
129 | + return; |
|
130 | + } |
|
131 | + echo '<h5>For Tag: ' . $tag . '</h5>'; |
|
132 | + } else { |
|
133 | + $hook = is_array($wp_filter) ? $wp_filter : array($wp_filter); |
|
134 | + ksort($hook); |
|
135 | + } |
|
136 | + foreach ($hook as $tag_name => $priorities) { |
|
137 | + echo "<br />>>>>>\t<strong>$tag_name</strong><br />"; |
|
138 | + ksort($priorities); |
|
139 | + foreach ($priorities as $priority => $function) { |
|
140 | + echo $priority; |
|
141 | + foreach ($function as $name => $properties) { |
|
142 | + echo "\t$name<br />"; |
|
143 | + } |
|
144 | + } |
|
145 | + } |
|
146 | + } |
|
147 | + |
|
148 | + |
|
149 | + |
|
150 | + /** |
|
151 | + * registered_filter_callbacks |
|
152 | + * |
|
153 | + * @param string $hook_name |
|
154 | + * @return array |
|
155 | + */ |
|
156 | + public static function registered_filter_callbacks($hook_name = '') |
|
157 | + { |
|
158 | + $filters = array(); |
|
159 | + global $wp_filter; |
|
160 | + if (isset($wp_filter[ $hook_name ])) { |
|
161 | + $filters[ $hook_name ] = array(); |
|
162 | + foreach ($wp_filter[ $hook_name ] as $priority => $callbacks) { |
|
163 | + $filters[ $hook_name ][ $priority ] = array(); |
|
164 | + foreach ($callbacks as $callback) { |
|
165 | + $filters[ $hook_name ][ $priority ][] = $callback['function']; |
|
166 | + } |
|
167 | + } |
|
168 | + } |
|
169 | + return $filters; |
|
170 | + } |
|
171 | + |
|
172 | + |
|
173 | + |
|
174 | + /** |
|
175 | + * captures plugin activation errors for debugging |
|
176 | + * |
|
177 | + * @return void |
|
178 | + * @throws EE_Error |
|
179 | + */ |
|
180 | + public static function ee_plugin_activation_errors() |
|
181 | + { |
|
182 | + if (WP_DEBUG) { |
|
183 | + $activation_errors = ob_get_contents(); |
|
184 | + if (! empty($activation_errors)) { |
|
185 | + $activation_errors = date('Y-m-d H:i:s') . "\n" . $activation_errors; |
|
186 | + } |
|
187 | + espresso_load_required('EEH_File', EE_HELPERS . 'EEH_File.helper.php'); |
|
188 | + if (class_exists('EEH_File')) { |
|
189 | + try { |
|
190 | + EEH_File::ensure_file_exists_and_is_writable( |
|
191 | + EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html' |
|
192 | + ); |
|
193 | + EEH_File::write_to_file( |
|
194 | + EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html', |
|
195 | + $activation_errors |
|
196 | + ); |
|
197 | + } catch (EE_Error $e) { |
|
198 | + EE_Error::add_error( |
|
199 | + sprintf( |
|
200 | + __( |
|
201 | + 'The Event Espresso activation errors file could not be setup because: %s', |
|
202 | + 'event_espresso' |
|
203 | + ), |
|
204 | + $e->getMessage() |
|
205 | + ), |
|
206 | + __FILE__, |
|
207 | + __FUNCTION__, |
|
208 | + __LINE__ |
|
209 | + ); |
|
210 | + } |
|
211 | + } else { |
|
212 | + // old school attempt |
|
213 | + file_put_contents( |
|
214 | + EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html', |
|
215 | + $activation_errors |
|
216 | + ); |
|
217 | + } |
|
218 | + $activation_errors = get_option('ee_plugin_activation_errors', '') . $activation_errors; |
|
219 | + update_option('ee_plugin_activation_errors', $activation_errors); |
|
220 | + } |
|
221 | + } |
|
222 | + |
|
223 | + |
|
224 | + |
|
225 | + /** |
|
226 | + * This basically mimics the WordPress _doing_it_wrong() function except adds our own messaging etc. |
|
227 | + * Very useful for providing helpful messages to developers when the method of doing something has been deprecated, |
|
228 | + * or we want to make sure they use something the right way. |
|
229 | + * |
|
230 | + * @access public |
|
231 | + * @param string $function The function that was called |
|
232 | + * @param string $message A message explaining what has been done incorrectly |
|
233 | + * @param string $version The version of Event Espresso where the error was added |
|
234 | + * @param string $applies_when a version string for when you want the doing_it_wrong notice to begin appearing |
|
235 | + * for a deprecated function. This allows deprecation to occur during one version, |
|
236 | + * but not have any notices appear until a later version. This allows developers |
|
237 | + * extra time to update their code before notices appear. |
|
238 | + * @param int $error_type |
|
239 | + * @uses trigger_error() |
|
240 | + */ |
|
241 | + public function doing_it_wrong( |
|
242 | + $function, |
|
243 | + $message, |
|
244 | + $version, |
|
245 | + $applies_when = '', |
|
246 | + $error_type = null |
|
247 | + ) { |
|
248 | + $applies_when = ! empty($applies_when) ? $applies_when : espresso_version(); |
|
249 | + $error_type = $error_type !== null ? $error_type : E_USER_NOTICE; |
|
250 | + // because we swapped the parameter order around for the last two params, |
|
251 | + // let's verify that some third party isn't still passing an error type value for the third param |
|
252 | + if (is_int($applies_when)) { |
|
253 | + $error_type = $applies_when; |
|
254 | + $applies_when = espresso_version(); |
|
255 | + } |
|
256 | + // if not displaying notices yet, then just leave |
|
257 | + if (version_compare(espresso_version(), $applies_when, '<')) { |
|
258 | + return; |
|
259 | + } |
|
260 | + do_action('AHEE__EEH_Debug_Tools__doing_it_wrong_run', $function, $message, $version); |
|
261 | + $version = $version === null |
|
262 | + ? '' |
|
263 | + : sprintf( |
|
264 | + __('(This message was added in version %s of Event Espresso)', 'event_espresso'), |
|
265 | + $version |
|
266 | + ); |
|
267 | + $error_message = sprintf( |
|
268 | + esc_html__('%1$s was called %2$sincorrectly%3$s. %4$s %5$s', 'event_espresso'), |
|
269 | + $function, |
|
270 | + '<strong>', |
|
271 | + '</strong>', |
|
272 | + $message, |
|
273 | + $version |
|
274 | + ); |
|
275 | + // don't trigger error if doing ajax, |
|
276 | + // instead we'll add a transient EE_Error notice that in theory should show on the next request. |
|
277 | + if (defined('DOING_AJAX') && DOING_AJAX) { |
|
278 | + $error_message .= ' ' . esc_html__( |
|
279 | + 'This is a doing_it_wrong message that was triggered during an ajax request. The request params on this request were: ', |
|
280 | + 'event_espresso' |
|
281 | + ); |
|
282 | + $error_message .= '<ul><li>'; |
|
283 | + $error_message .= implode('</li><li>', EE_Registry::instance()->REQ->params()); |
|
284 | + $error_message .= '</ul>'; |
|
285 | + EE_Error::add_error($error_message, 'debug::doing_it_wrong', $function, '42'); |
|
286 | + // now we set this on the transient so it shows up on the next request. |
|
287 | + EE_Error::get_notices(false, true); |
|
288 | + } else { |
|
289 | + trigger_error($error_message, $error_type); |
|
290 | + } |
|
291 | + } |
|
292 | + |
|
293 | + |
|
294 | + |
|
295 | + |
|
296 | + /** |
|
297 | + * Logger helpers |
|
298 | + */ |
|
299 | + /** |
|
300 | + * debug |
|
301 | + * |
|
302 | + * @param string $class |
|
303 | + * @param string $func |
|
304 | + * @param string $line |
|
305 | + * @param array $info |
|
306 | + * @param bool $display_request |
|
307 | + * @param string $debug_index |
|
308 | + * @param string $debug_key |
|
309 | + * @throws EE_Error |
|
310 | + * @throws \EventEspresso\core\exceptions\InvalidSessionDataException |
|
311 | + */ |
|
312 | + public static function log( |
|
313 | + $class = '', |
|
314 | + $func = '', |
|
315 | + $line = '', |
|
316 | + $info = array(), |
|
317 | + $display_request = false, |
|
318 | + $debug_index = '', |
|
319 | + $debug_key = 'EE_DEBUG_SPCO' |
|
320 | + ) { |
|
321 | + if (WP_DEBUG) { |
|
322 | + $debug_key = $debug_key . '_' . EE_Session::instance()->id(); |
|
323 | + $debug_data = get_option($debug_key, array()); |
|
324 | + $default_data = array( |
|
325 | + $class => $func . '() : ' . $line, |
|
326 | + 'REQ' => $display_request ? $_REQUEST : '', |
|
327 | + ); |
|
328 | + // don't serialize objects |
|
329 | + $info = self::strip_objects($info); |
|
330 | + $index = ! empty($debug_index) ? $debug_index : 0; |
|
331 | + if (! isset($debug_data[ $index ])) { |
|
332 | + $debug_data[ $index ] = array(); |
|
333 | + } |
|
334 | + $debug_data[ $index ][ microtime() ] = array_merge($default_data, $info); |
|
335 | + update_option($debug_key, $debug_data); |
|
336 | + } |
|
337 | + } |
|
338 | + |
|
339 | + |
|
340 | + |
|
341 | + /** |
|
342 | + * strip_objects |
|
343 | + * |
|
344 | + * @param array $info |
|
345 | + * @return array |
|
346 | + */ |
|
347 | + public static function strip_objects($info = array()) |
|
348 | + { |
|
349 | + foreach ($info as $key => $value) { |
|
350 | + if (is_array($value)) { |
|
351 | + $info[ $key ] = self::strip_objects($value); |
|
352 | + } elseif (is_object($value)) { |
|
353 | + $object_class = get_class($value); |
|
354 | + $info[ $object_class ] = array(); |
|
355 | + $info[ $object_class ]['ID'] = method_exists($value, 'ID') ? $value->ID() : spl_object_hash($value); |
|
356 | + if (method_exists($value, 'ID')) { |
|
357 | + $info[ $object_class ]['ID'] = $value->ID(); |
|
358 | + } |
|
359 | + if (method_exists($value, 'status')) { |
|
360 | + $info[ $object_class ]['status'] = $value->status(); |
|
361 | + } elseif (method_exists($value, 'status_ID')) { |
|
362 | + $info[ $object_class ]['status'] = $value->status_ID(); |
|
363 | + } |
|
364 | + unset($info[ $key ]); |
|
365 | + } |
|
366 | + } |
|
367 | + return (array) $info; |
|
368 | + } |
|
369 | + |
|
370 | + |
|
371 | + |
|
372 | + /** |
|
373 | + * @param mixed $var |
|
374 | + * @param string $var_name |
|
375 | + * @param string $file |
|
376 | + * @param int|string $line |
|
377 | + * @param int|string $heading_tag |
|
378 | + * @param bool $die |
|
379 | + * @param string $margin |
|
380 | + */ |
|
381 | + public static function printv( |
|
382 | + $var, |
|
383 | + $var_name = '', |
|
384 | + $file = '', |
|
385 | + $line = '', |
|
386 | + $heading_tag = 5, |
|
387 | + $die = false, |
|
388 | + $margin = '' |
|
389 | + ) { |
|
390 | + $var_name = ! $var_name ? 'string' : $var_name; |
|
391 | + $var_name = ucwords(str_replace('$', '', $var_name)); |
|
392 | + $is_method = method_exists($var_name, $var); |
|
393 | + $var_name = ucwords(str_replace('_', ' ', $var_name)); |
|
394 | + $heading_tag = EEH_Debug_Tools::headingTag($heading_tag); |
|
395 | + $result = EEH_Debug_Tools::headingSpacer($heading_tag); |
|
396 | + $result .= EEH_Debug_Tools::heading($var_name, $heading_tag, $margin, $line); |
|
397 | + $result .= $is_method |
|
398 | + ? EEH_Debug_Tools::grey_span('::') . EEH_Debug_Tools::orange_span($var . '()') |
|
399 | + : EEH_Debug_Tools::grey_span(' : ') . EEH_Debug_Tools::orange_span($var); |
|
400 | + $result .= EEH_Debug_Tools::file_and_line($file, $line, $heading_tag); |
|
401 | + $result .= EEH_Debug_Tools::headingX($heading_tag); |
|
402 | + if ($die) { |
|
403 | + die($result); |
|
404 | + } |
|
405 | + echo $result; |
|
406 | + } |
|
407 | + |
|
408 | + |
|
409 | + protected static function headingTag($heading_tag) |
|
410 | + { |
|
411 | + $heading_tag = absint($heading_tag); |
|
412 | + return $heading_tag > 0 && $heading_tag < 7 ? "h{$heading_tag}" : 'h5'; |
|
413 | + } |
|
414 | + |
|
415 | + |
|
416 | + protected static function headingSpacer($heading_tag) |
|
417 | + { |
|
418 | + return EEH_Debug_Tools::plainOutput() && ($heading_tag === 'h1' || $heading_tag === 'h2') |
|
419 | + ? "\n" |
|
420 | + : ''; |
|
421 | + } |
|
422 | + |
|
423 | + |
|
424 | + protected static function plainOutput() |
|
425 | + { |
|
426 | + return defined('EE_TESTS_DIR') |
|
427 | + || (defined('DOING_AJAX') && DOING_AJAX) |
|
428 | + || ( |
|
429 | + isset($_SERVER['REQUEST_URI']) |
|
430 | + && strpos(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), 'wp-json') !== false |
|
431 | + ); |
|
432 | + } |
|
433 | + |
|
434 | + |
|
435 | + /** |
|
436 | + * @param string $var_name |
|
437 | + * @param string $heading_tag |
|
438 | + * @param string $margin |
|
439 | + * @param int $line |
|
440 | + * @return string |
|
441 | + */ |
|
442 | + protected static function heading($var_name = '', $heading_tag = 'h5', $margin = '', $line = 0) |
|
443 | + { |
|
444 | + if (EEH_Debug_Tools::plainOutput()) { |
|
445 | + $heading = ''; |
|
446 | + if ($heading_tag === 'h1' || $heading_tag === 'h2') { |
|
447 | + $heading .= "\n"; |
|
448 | + } |
|
449 | + $heading .= "\n{$line}) {$var_name}"; |
|
450 | + return $heading; |
|
451 | + } |
|
452 | + $margin = "25px 0 0 {$margin}"; |
|
453 | + return '<' . $heading_tag . ' style="color:#2EA2CC; margin:' . $margin . ';"><b>' . $var_name . '</b>'; |
|
454 | + } |
|
455 | + |
|
456 | + |
|
457 | + |
|
458 | + /** |
|
459 | + * @param string $heading_tag |
|
460 | + * @return string |
|
461 | + */ |
|
462 | + protected static function headingX($heading_tag = 'h5') |
|
463 | + { |
|
464 | + if (EEH_Debug_Tools::plainOutput()) { |
|
465 | + return ''; |
|
466 | + } |
|
467 | + return '</' . $heading_tag . '>'; |
|
468 | + } |
|
469 | + |
|
470 | + |
|
471 | + |
|
472 | + /** |
|
473 | + * @param string $content |
|
474 | + * @return string |
|
475 | + */ |
|
476 | + protected static function grey_span($content = '') |
|
477 | + { |
|
478 | + if (EEH_Debug_Tools::plainOutput()) { |
|
479 | + return $content; |
|
480 | + } |
|
481 | + return '<span style="color:#999">' . $content . '</span>'; |
|
482 | + } |
|
483 | + |
|
484 | + |
|
485 | + |
|
486 | + /** |
|
487 | + * @param string $file |
|
488 | + * @param int $line |
|
489 | + * @return string |
|
490 | + */ |
|
491 | + protected static function file_and_line($file, $line, $heading_tag) |
|
492 | + { |
|
493 | + if ($file === '' || $line === '') { |
|
494 | + return ''; |
|
495 | + } |
|
496 | + $file = str_replace(EE_PLUGIN_DIR_PATH, '/', $file); |
|
497 | + if (EEH_Debug_Tools::plainOutput()) { |
|
498 | + if ($heading_tag === 'h1' || $heading_tag === 'h2') { |
|
499 | + return " ({$file})"; |
|
500 | + } |
|
501 | + return ''; |
|
502 | + } |
|
503 | + return '<br /><span style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;">' |
|
504 | + . $file |
|
505 | + . '<br />line no: ' |
|
506 | + . $line |
|
507 | + . '</span>'; |
|
508 | + } |
|
509 | + |
|
510 | + |
|
511 | + |
|
512 | + /** |
|
513 | + * @param string $content |
|
514 | + * @return string |
|
515 | + */ |
|
516 | + protected static function orange_span($content = '') |
|
517 | + { |
|
518 | + if (EEH_Debug_Tools::plainOutput()) { |
|
519 | + return $content; |
|
520 | + } |
|
521 | + return '<span style="color:#E76700">' . $content . '</span>'; |
|
522 | + } |
|
523 | + |
|
524 | + |
|
525 | + |
|
526 | + /** |
|
527 | + * @param mixed $var |
|
528 | + * @return string |
|
529 | + */ |
|
530 | + protected static function pre_span($var) |
|
531 | + { |
|
532 | + ob_start(); |
|
533 | + var_dump($var); |
|
534 | + $var = ob_get_clean(); |
|
535 | + if (EEH_Debug_Tools::plainOutput()) { |
|
536 | + return $var; |
|
537 | + } |
|
538 | + return '<pre style="color:#999; padding:1em; background: #fff">' . $var . '</pre>'; |
|
539 | + } |
|
540 | + |
|
541 | + |
|
542 | + |
|
543 | + /** |
|
544 | + * @param mixed $var |
|
545 | + * @param string $var_name |
|
546 | + * @param string $file |
|
547 | + * @param int|string $line |
|
548 | + * @param int|string $heading_tag |
|
549 | + * @param bool $die |
|
550 | + */ |
|
551 | + public static function printr( |
|
552 | + $var, |
|
553 | + $var_name = '', |
|
554 | + $file = '', |
|
555 | + $line = '', |
|
556 | + $heading_tag = 5, |
|
557 | + $die = false |
|
558 | + ) { |
|
559 | + // return; |
|
560 | + $file = str_replace(rtrim(ABSPATH, '\\/'), '', $file); |
|
561 | + $margin = is_admin() ? ' 180px' : '0'; |
|
562 | + // $print_r = false; |
|
563 | + if (is_string($var)) { |
|
564 | + EEH_Debug_Tools::printv($var, $var_name, $file, $line, $heading_tag, $die, $margin); |
|
565 | + return; |
|
566 | + } |
|
567 | + if (is_object($var)) { |
|
568 | + $var_name = ! $var_name ? 'object' : $var_name; |
|
569 | + // $print_r = true; |
|
570 | + } elseif (is_array($var)) { |
|
571 | + $var_name = ! $var_name ? 'array' : $var_name; |
|
572 | + // $print_r = true; |
|
573 | + } elseif (is_numeric($var)) { |
|
574 | + $var_name = ! $var_name ? 'numeric' : $var_name; |
|
575 | + } elseif ($var === null) { |
|
576 | + $var_name = ! $var_name ? 'null' : $var_name; |
|
577 | + } |
|
578 | + $var_name = ucwords(str_replace(array('$', '_'), array('', ' '), $var_name)); |
|
579 | + $heading_tag = EEH_Debug_Tools::headingTag($heading_tag); |
|
580 | + $result = EEH_Debug_Tools::headingSpacer($heading_tag); |
|
581 | + $result .= EEH_Debug_Tools::heading($var_name, $heading_tag, $margin, $line); |
|
582 | + $result .= EEH_Debug_Tools::grey_span(' : ') . EEH_Debug_Tools::orange_span( |
|
583 | + EEH_Debug_Tools::pre_span($var) |
|
584 | + ); |
|
585 | + $result .= EEH_Debug_Tools::file_and_line($file, $line, $heading_tag); |
|
586 | + $result .= EEH_Debug_Tools::headingX($heading_tag); |
|
587 | + if ($die) { |
|
588 | + die($result); |
|
589 | + } |
|
590 | + echo $result; |
|
591 | + } |
|
592 | + |
|
593 | + |
|
594 | + |
|
595 | + /******************** deprecated ********************/ |
|
596 | + |
|
597 | + |
|
598 | + |
|
599 | + /** |
|
600 | + * @deprecated 4.9.39.rc.034 |
|
601 | + */ |
|
602 | + public function reset_times() |
|
603 | + { |
|
604 | + Benchmark::resetTimes(); |
|
605 | + } |
|
606 | + |
|
607 | + |
|
608 | + |
|
609 | + /** |
|
610 | + * @deprecated 4.9.39.rc.034 |
|
611 | + * @param null $timer_name |
|
612 | + */ |
|
613 | + public function start_timer($timer_name = null) |
|
614 | + { |
|
615 | + Benchmark::startTimer($timer_name); |
|
616 | + } |
|
617 | + |
|
618 | + |
|
619 | + |
|
620 | + /** |
|
621 | + * @deprecated 4.9.39.rc.034 |
|
622 | + * @param string $timer_name |
|
623 | + */ |
|
624 | + public function stop_timer($timer_name = '') |
|
625 | + { |
|
626 | + Benchmark::stopTimer($timer_name); |
|
627 | + } |
|
628 | + |
|
629 | + |
|
630 | + |
|
631 | + /** |
|
632 | + * @deprecated 4.9.39.rc.034 |
|
633 | + * @param string $label The label to show for this time eg "Start of calling Some_Class::some_function" |
|
634 | + * @param boolean $output_now whether to echo now, or wait until EEH_Debug_Tools::show_times() is called |
|
635 | + * @return void |
|
636 | + */ |
|
637 | + public function measure_memory($label, $output_now = false) |
|
638 | + { |
|
639 | + Benchmark::measureMemory($label, $output_now); |
|
640 | + } |
|
641 | + |
|
642 | + |
|
643 | + |
|
644 | + /** |
|
645 | + * @deprecated 4.9.39.rc.034 |
|
646 | + * @param int $size |
|
647 | + * @return string |
|
648 | + */ |
|
649 | + public function convert($size) |
|
650 | + { |
|
651 | + return Benchmark::convert($size); |
|
652 | + } |
|
653 | + |
|
654 | + |
|
655 | + |
|
656 | + /** |
|
657 | + * @deprecated 4.9.39.rc.034 |
|
658 | + * @param bool $output_now |
|
659 | + * @return string |
|
660 | + */ |
|
661 | + public function show_times($output_now = true) |
|
662 | + { |
|
663 | + return Benchmark::displayResults($output_now); |
|
664 | + } |
|
665 | + |
|
666 | + |
|
667 | + |
|
668 | + /** |
|
669 | + * @deprecated 4.9.39.rc.034 |
|
670 | + * @param string $timer_name |
|
671 | + * @param float $total_time |
|
672 | + * @return string |
|
673 | + */ |
|
674 | + public function format_time($timer_name, $total_time) |
|
675 | + { |
|
676 | + return Benchmark::formatTime($timer_name, $total_time); |
|
677 | + } |
|
678 | 678 | } |
679 | 679 | |
680 | 680 | |
@@ -684,31 +684,31 @@ discard block |
||
684 | 684 | * Plugin URI: http://upthemes.com/plugins/kint-debugger/ |
685 | 685 | */ |
686 | 686 | if (class_exists('Kint') && ! function_exists('dump_wp_query')) { |
687 | - function dump_wp_query() |
|
688 | - { |
|
689 | - global $wp_query; |
|
690 | - d($wp_query); |
|
691 | - } |
|
687 | + function dump_wp_query() |
|
688 | + { |
|
689 | + global $wp_query; |
|
690 | + d($wp_query); |
|
691 | + } |
|
692 | 692 | } |
693 | 693 | /** |
694 | 694 | * borrowed from Kint Debugger |
695 | 695 | * Plugin URI: http://upthemes.com/plugins/kint-debugger/ |
696 | 696 | */ |
697 | 697 | if (class_exists('Kint') && ! function_exists('dump_wp')) { |
698 | - function dump_wp() |
|
699 | - { |
|
700 | - global $wp; |
|
701 | - d($wp); |
|
702 | - } |
|
698 | + function dump_wp() |
|
699 | + { |
|
700 | + global $wp; |
|
701 | + d($wp); |
|
702 | + } |
|
703 | 703 | } |
704 | 704 | /** |
705 | 705 | * borrowed from Kint Debugger |
706 | 706 | * Plugin URI: http://upthemes.com/plugins/kint-debugger/ |
707 | 707 | */ |
708 | 708 | if (class_exists('Kint') && ! function_exists('dump_post')) { |
709 | - function dump_post() |
|
710 | - { |
|
711 | - global $post; |
|
712 | - d($post); |
|
713 | - } |
|
709 | + function dump_post() |
|
710 | + { |
|
711 | + global $post; |
|
712 | + d($post); |
|
713 | + } |
|
714 | 714 | } |
@@ -31,338 +31,338 @@ |
||
31 | 31 | class EspressoEventAttendees extends EspressoShortcode |
32 | 32 | { |
33 | 33 | |
34 | - private $query_params = array( |
|
35 | - 0 => array(), |
|
36 | - ); |
|
34 | + private $query_params = array( |
|
35 | + 0 => array(), |
|
36 | + ); |
|
37 | 37 | |
38 | - private $template_args = array( |
|
39 | - 'contacts' => array(), |
|
40 | - 'event' => null, |
|
41 | - 'datetime' => null, |
|
42 | - 'ticket' => null, |
|
43 | - ); |
|
38 | + private $template_args = array( |
|
39 | + 'contacts' => array(), |
|
40 | + 'event' => null, |
|
41 | + 'datetime' => null, |
|
42 | + 'ticket' => null, |
|
43 | + ); |
|
44 | 44 | |
45 | - /** |
|
46 | - * the actual shortcode tag that gets registered with WordPress |
|
47 | - * |
|
48 | - * @return string |
|
49 | - */ |
|
50 | - public function getTag() |
|
51 | - { |
|
52 | - return 'ESPRESSO_EVENT_ATTENDEES'; |
|
53 | - } |
|
45 | + /** |
|
46 | + * the actual shortcode tag that gets registered with WordPress |
|
47 | + * |
|
48 | + * @return string |
|
49 | + */ |
|
50 | + public function getTag() |
|
51 | + { |
|
52 | + return 'ESPRESSO_EVENT_ATTENDEES'; |
|
53 | + } |
|
54 | 54 | |
55 | 55 | |
56 | - /** |
|
57 | - * the time in seconds to cache the results of the processShortcode() method |
|
58 | - * 0 means the processShortcode() results will NOT be cached at all |
|
59 | - * |
|
60 | - * @return int |
|
61 | - */ |
|
62 | - public function cacheExpiration() |
|
63 | - { |
|
64 | - return 0; |
|
65 | - } |
|
56 | + /** |
|
57 | + * the time in seconds to cache the results of the processShortcode() method |
|
58 | + * 0 means the processShortcode() results will NOT be cached at all |
|
59 | + * |
|
60 | + * @return int |
|
61 | + */ |
|
62 | + public function cacheExpiration() |
|
63 | + { |
|
64 | + return 0; |
|
65 | + } |
|
66 | 66 | |
67 | 67 | |
68 | - /** |
|
69 | - * a place for adding any initialization code that needs to run prior to wp_header(). |
|
70 | - * this may be required for shortcodes that utilize a corresponding module, |
|
71 | - * and need to enqueue assets for that module |
|
72 | - * |
|
73 | - * @return void |
|
74 | - */ |
|
75 | - public function initializeShortcode() |
|
76 | - { |
|
77 | - $this->shortcodeHasBeenInitialized(); |
|
78 | - } |
|
68 | + /** |
|
69 | + * a place for adding any initialization code that needs to run prior to wp_header(). |
|
70 | + * this may be required for shortcodes that utilize a corresponding module, |
|
71 | + * and need to enqueue assets for that module |
|
72 | + * |
|
73 | + * @return void |
|
74 | + */ |
|
75 | + public function initializeShortcode() |
|
76 | + { |
|
77 | + $this->shortcodeHasBeenInitialized(); |
|
78 | + } |
|
79 | 79 | |
80 | 80 | |
81 | - /** |
|
82 | - * process_shortcode - ESPRESSO_EVENT_ATTENDEES - Returns a list of attendees to an event. |
|
83 | - * [ESPRESSO_EVENT_ATTENDEES] |
|
84 | - * - defaults to attendees for earliest active event, or earliest upcoming event. |
|
85 | - * [ESPRESSO_EVENT_ATTENDEES event_id=123] |
|
86 | - * - attendees for specific event. |
|
87 | - * [ESPRESSO_EVENT_ATTENDEES datetime_id=245] |
|
88 | - * - attendees for a specific datetime. |
|
89 | - * [ESPRESSO_EVENT_ATTENDEES ticket_id=123] |
|
90 | - * - attendees for a specific ticket. |
|
91 | - * [ESPRESSO_EVENT_ATTENDEES status=all] |
|
92 | - * - specific registration status (use status id) or all for all attendees regardless of status. |
|
93 | - * Note default is to only return approved attendees |
|
94 | - * [ESPRESSO_EVENT_ATTENDEES show_gravatar=true] |
|
95 | - * - default is to not return gravatar. Otherwise if this is set then return gravatar for email address given. |
|
96 | - * [ESPRESSO_EVENT_ATTENDEES display_on_archives=true] |
|
97 | - * - default is to not display attendees list on archive pages. |
|
98 | - * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
99 | - * If more than one of those params is included, then preference is given to the following: |
|
100 | - * - event_id is used whenever its present and any others are ignored. |
|
101 | - * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
102 | - * - otherwise ticket_id is used if present. |
|
103 | - * |
|
104 | - * @param array $attributes |
|
105 | - * @return string |
|
106 | - * @throws EE_Error |
|
107 | - * @throws InvalidDataTypeException |
|
108 | - * @throws InvalidInterfaceException |
|
109 | - * @throws InvalidArgumentException |
|
110 | - * @throws DomainException |
|
111 | - */ |
|
112 | - public function processShortcode($attributes = array()) |
|
113 | - { |
|
114 | - // grab attributes and merge with defaults |
|
115 | - $attributes = $this->getAttributes((array) $attributes); |
|
116 | - $attributes['limit'] = (int) $attributes['limit']; |
|
117 | - $display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN); |
|
118 | - // don't display on archives unless 'display_on_archives' is true |
|
119 | - if ($attributes['limit'] === 0 || (! $display_on_archives && is_archive())) { |
|
120 | - return ''; |
|
121 | - } |
|
122 | - try { |
|
123 | - $this->setBaseTemplateArguments($attributes); |
|
124 | - $this->validateEntities($attributes); |
|
125 | - $this->setBaseQueryParams(); |
|
126 | - } catch (EntityNotFoundException $e) { |
|
127 | - if (WP_DEBUG) { |
|
128 | - return '<div class="important-notice ee-error">' |
|
129 | - . $e->getMessage() |
|
130 | - . '</div>'; |
|
131 | - } |
|
132 | - return ''; |
|
133 | - } |
|
134 | - $this->setAdditionalQueryParams($attributes); |
|
135 | - // get contacts! |
|
136 | - $this->template_args['contacts'] = EEM_Attendee::instance()->get_all($this->query_params); |
|
137 | - // all set let's load up the template and return. |
|
138 | - return EEH_Template::locate_template( |
|
139 | - 'loop-espresso_event_attendees.php', |
|
140 | - $this->template_args |
|
141 | - ); |
|
142 | - } |
|
81 | + /** |
|
82 | + * process_shortcode - ESPRESSO_EVENT_ATTENDEES - Returns a list of attendees to an event. |
|
83 | + * [ESPRESSO_EVENT_ATTENDEES] |
|
84 | + * - defaults to attendees for earliest active event, or earliest upcoming event. |
|
85 | + * [ESPRESSO_EVENT_ATTENDEES event_id=123] |
|
86 | + * - attendees for specific event. |
|
87 | + * [ESPRESSO_EVENT_ATTENDEES datetime_id=245] |
|
88 | + * - attendees for a specific datetime. |
|
89 | + * [ESPRESSO_EVENT_ATTENDEES ticket_id=123] |
|
90 | + * - attendees for a specific ticket. |
|
91 | + * [ESPRESSO_EVENT_ATTENDEES status=all] |
|
92 | + * - specific registration status (use status id) or all for all attendees regardless of status. |
|
93 | + * Note default is to only return approved attendees |
|
94 | + * [ESPRESSO_EVENT_ATTENDEES show_gravatar=true] |
|
95 | + * - default is to not return gravatar. Otherwise if this is set then return gravatar for email address given. |
|
96 | + * [ESPRESSO_EVENT_ATTENDEES display_on_archives=true] |
|
97 | + * - default is to not display attendees list on archive pages. |
|
98 | + * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
99 | + * If more than one of those params is included, then preference is given to the following: |
|
100 | + * - event_id is used whenever its present and any others are ignored. |
|
101 | + * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
102 | + * - otherwise ticket_id is used if present. |
|
103 | + * |
|
104 | + * @param array $attributes |
|
105 | + * @return string |
|
106 | + * @throws EE_Error |
|
107 | + * @throws InvalidDataTypeException |
|
108 | + * @throws InvalidInterfaceException |
|
109 | + * @throws InvalidArgumentException |
|
110 | + * @throws DomainException |
|
111 | + */ |
|
112 | + public function processShortcode($attributes = array()) |
|
113 | + { |
|
114 | + // grab attributes and merge with defaults |
|
115 | + $attributes = $this->getAttributes((array) $attributes); |
|
116 | + $attributes['limit'] = (int) $attributes['limit']; |
|
117 | + $display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN); |
|
118 | + // don't display on archives unless 'display_on_archives' is true |
|
119 | + if ($attributes['limit'] === 0 || (! $display_on_archives && is_archive())) { |
|
120 | + return ''; |
|
121 | + } |
|
122 | + try { |
|
123 | + $this->setBaseTemplateArguments($attributes); |
|
124 | + $this->validateEntities($attributes); |
|
125 | + $this->setBaseQueryParams(); |
|
126 | + } catch (EntityNotFoundException $e) { |
|
127 | + if (WP_DEBUG) { |
|
128 | + return '<div class="important-notice ee-error">' |
|
129 | + . $e->getMessage() |
|
130 | + . '</div>'; |
|
131 | + } |
|
132 | + return ''; |
|
133 | + } |
|
134 | + $this->setAdditionalQueryParams($attributes); |
|
135 | + // get contacts! |
|
136 | + $this->template_args['contacts'] = EEM_Attendee::instance()->get_all($this->query_params); |
|
137 | + // all set let's load up the template and return. |
|
138 | + return EEH_Template::locate_template( |
|
139 | + 'loop-espresso_event_attendees.php', |
|
140 | + $this->template_args |
|
141 | + ); |
|
142 | + } |
|
143 | 143 | |
144 | 144 | |
145 | - /** |
|
146 | - * merge incoming attributes with filtered defaults |
|
147 | - * |
|
148 | - * @param array $attributes |
|
149 | - * @return array |
|
150 | - */ |
|
151 | - private function getAttributes(array $attributes) |
|
152 | - { |
|
153 | - return (array) apply_filters( |
|
154 | - 'EES_Espresso_Event_Attendees__process_shortcode__default_shortcode_atts', |
|
155 | - $attributes + array( |
|
156 | - 'event_id' => null, |
|
157 | - 'datetime_id' => null, |
|
158 | - 'ticket_id' => null, |
|
159 | - 'status' => EEM_Registration::status_id_approved, |
|
160 | - 'show_gravatar' => false, |
|
161 | - 'display_on_archives' => false, |
|
162 | - 'limit' => 10, |
|
163 | - ) |
|
164 | - ); |
|
165 | - } |
|
145 | + /** |
|
146 | + * merge incoming attributes with filtered defaults |
|
147 | + * |
|
148 | + * @param array $attributes |
|
149 | + * @return array |
|
150 | + */ |
|
151 | + private function getAttributes(array $attributes) |
|
152 | + { |
|
153 | + return (array) apply_filters( |
|
154 | + 'EES_Espresso_Event_Attendees__process_shortcode__default_shortcode_atts', |
|
155 | + $attributes + array( |
|
156 | + 'event_id' => null, |
|
157 | + 'datetime_id' => null, |
|
158 | + 'ticket_id' => null, |
|
159 | + 'status' => EEM_Registration::status_id_approved, |
|
160 | + 'show_gravatar' => false, |
|
161 | + 'display_on_archives' => false, |
|
162 | + 'limit' => 10, |
|
163 | + ) |
|
164 | + ); |
|
165 | + } |
|
166 | 166 | |
167 | 167 | |
168 | - /** |
|
169 | - * Set all the base template arguments from the incoming attributes. |
|
170 | - * * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
171 | - * If more than one of those params is included, then preference is given to the following: |
|
172 | - * - event_id is used whenever its present and any others are ignored. |
|
173 | - * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
174 | - * - otherwise ticket_id is used if present. |
|
175 | - * |
|
176 | - * @param array $attributes |
|
177 | - * @throws EE_Error |
|
178 | - * @throws InvalidDataTypeException |
|
179 | - * @throws InvalidInterfaceException |
|
180 | - * @throws InvalidArgumentException |
|
181 | - */ |
|
182 | - private function setBaseTemplateArguments(array $attributes) |
|
183 | - { |
|
184 | - $this->template_args['show_gravatar'] = $attributes['show_gravatar']; |
|
185 | - $this->template_args['event'] = $this->getEvent($attributes); |
|
186 | - $this->template_args['datetime'] = empty($attributes['event_id']) |
|
187 | - ? $this->getDatetime($attributes) |
|
188 | - : null; |
|
189 | - $this->template_args['ticket'] = empty($attributes['datetime_id']) && empty($attributes['event_id']) |
|
190 | - ? $this->getTicket($attributes) |
|
191 | - : null; |
|
192 | - } |
|
168 | + /** |
|
169 | + * Set all the base template arguments from the incoming attributes. |
|
170 | + * * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
171 | + * If more than one of those params is included, then preference is given to the following: |
|
172 | + * - event_id is used whenever its present and any others are ignored. |
|
173 | + * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
174 | + * - otherwise ticket_id is used if present. |
|
175 | + * |
|
176 | + * @param array $attributes |
|
177 | + * @throws EE_Error |
|
178 | + * @throws InvalidDataTypeException |
|
179 | + * @throws InvalidInterfaceException |
|
180 | + * @throws InvalidArgumentException |
|
181 | + */ |
|
182 | + private function setBaseTemplateArguments(array $attributes) |
|
183 | + { |
|
184 | + $this->template_args['show_gravatar'] = $attributes['show_gravatar']; |
|
185 | + $this->template_args['event'] = $this->getEvent($attributes); |
|
186 | + $this->template_args['datetime'] = empty($attributes['event_id']) |
|
187 | + ? $this->getDatetime($attributes) |
|
188 | + : null; |
|
189 | + $this->template_args['ticket'] = empty($attributes['datetime_id']) && empty($attributes['event_id']) |
|
190 | + ? $this->getTicket($attributes) |
|
191 | + : null; |
|
192 | + } |
|
193 | 193 | |
194 | 194 | |
195 | - /** |
|
196 | - * Validates the presence of entities for the given attribute values. |
|
197 | - * |
|
198 | - * @param array $attributes |
|
199 | - * @throws EntityNotFoundException |
|
200 | - */ |
|
201 | - private function validateEntities(array $attributes) |
|
202 | - { |
|
203 | - if (! $this->template_args['event'] instanceof EE_Event |
|
204 | - || ( |
|
205 | - empty($attributes['event_id']) |
|
206 | - && $attributes['datetime_id'] |
|
207 | - && ! $this->template_args['datetime'] instanceof EE_Datetime |
|
208 | - ) |
|
209 | - || ( |
|
210 | - empty($attributes['event_id']) |
|
211 | - && empty($attributes['datetime_id']) |
|
212 | - && $attributes['ticket_id'] |
|
213 | - && ! $this->template_args['ticket'] instanceof EE_Ticket |
|
214 | - ) |
|
215 | - ) { |
|
216 | - throw new EntityNotFoundException( |
|
217 | - '', |
|
218 | - '', |
|
219 | - esc_html__( |
|
220 | - 'The [ESPRESSO_EVENT_ATTENDEES] shortcode has been used incorrectly. Please double check the arguments you used for any typos. In the case of ID type arguments, its possible the given ID does not correspond to existing data in the database.', |
|
221 | - 'event_espresso' |
|
222 | - ) |
|
223 | - ); |
|
224 | - } |
|
225 | - } |
|
195 | + /** |
|
196 | + * Validates the presence of entities for the given attribute values. |
|
197 | + * |
|
198 | + * @param array $attributes |
|
199 | + * @throws EntityNotFoundException |
|
200 | + */ |
|
201 | + private function validateEntities(array $attributes) |
|
202 | + { |
|
203 | + if (! $this->template_args['event'] instanceof EE_Event |
|
204 | + || ( |
|
205 | + empty($attributes['event_id']) |
|
206 | + && $attributes['datetime_id'] |
|
207 | + && ! $this->template_args['datetime'] instanceof EE_Datetime |
|
208 | + ) |
|
209 | + || ( |
|
210 | + empty($attributes['event_id']) |
|
211 | + && empty($attributes['datetime_id']) |
|
212 | + && $attributes['ticket_id'] |
|
213 | + && ! $this->template_args['ticket'] instanceof EE_Ticket |
|
214 | + ) |
|
215 | + ) { |
|
216 | + throw new EntityNotFoundException( |
|
217 | + '', |
|
218 | + '', |
|
219 | + esc_html__( |
|
220 | + 'The [ESPRESSO_EVENT_ATTENDEES] shortcode has been used incorrectly. Please double check the arguments you used for any typos. In the case of ID type arguments, its possible the given ID does not correspond to existing data in the database.', |
|
221 | + 'event_espresso' |
|
222 | + ) |
|
223 | + ); |
|
224 | + } |
|
225 | + } |
|
226 | 226 | |
227 | 227 | |
228 | - /** |
|
229 | - * Sets the query params for the base query elements. |
|
230 | - */ |
|
231 | - private function setBaseQueryParams() |
|
232 | - { |
|
233 | - switch (true) { |
|
234 | - case $this->template_args['datetime'] instanceof EE_Datetime: |
|
235 | - $this->query_params = array( |
|
236 | - 0 => array( |
|
237 | - 'Registration.Ticket.Datetime.DTT_ID' => $this->template_args['datetime']->ID(), |
|
238 | - ), |
|
239 | - 'default_where_conditions' => 'this_model_only', |
|
240 | - ); |
|
241 | - break; |
|
242 | - case $this->template_args['ticket'] instanceof EE_Ticket: |
|
243 | - $this->query_params[0] = array( |
|
244 | - 'Registration.TKT_ID' => $this->template_args['ticket']->ID(), |
|
245 | - ); |
|
246 | - break; |
|
247 | - case $this->template_args['event'] instanceof EE_Event: |
|
248 | - $this->query_params[0] = array( |
|
249 | - 'Registration.EVT_ID' => $this->template_args['event']->ID(), |
|
250 | - ); |
|
251 | - break; |
|
252 | - } |
|
253 | - } |
|
228 | + /** |
|
229 | + * Sets the query params for the base query elements. |
|
230 | + */ |
|
231 | + private function setBaseQueryParams() |
|
232 | + { |
|
233 | + switch (true) { |
|
234 | + case $this->template_args['datetime'] instanceof EE_Datetime: |
|
235 | + $this->query_params = array( |
|
236 | + 0 => array( |
|
237 | + 'Registration.Ticket.Datetime.DTT_ID' => $this->template_args['datetime']->ID(), |
|
238 | + ), |
|
239 | + 'default_where_conditions' => 'this_model_only', |
|
240 | + ); |
|
241 | + break; |
|
242 | + case $this->template_args['ticket'] instanceof EE_Ticket: |
|
243 | + $this->query_params[0] = array( |
|
244 | + 'Registration.TKT_ID' => $this->template_args['ticket']->ID(), |
|
245 | + ); |
|
246 | + break; |
|
247 | + case $this->template_args['event'] instanceof EE_Event: |
|
248 | + $this->query_params[0] = array( |
|
249 | + 'Registration.EVT_ID' => $this->template_args['event']->ID(), |
|
250 | + ); |
|
251 | + break; |
|
252 | + } |
|
253 | + } |
|
254 | 254 | |
255 | 255 | |
256 | - /** |
|
257 | - * @param array $attributes |
|
258 | - * @return EE_Event|null |
|
259 | - * @throws EE_Error |
|
260 | - * @throws InvalidDataTypeException |
|
261 | - * @throws InvalidInterfaceException |
|
262 | - * @throws InvalidArgumentException |
|
263 | - */ |
|
264 | - private function getEvent(array $attributes) |
|
265 | - { |
|
266 | - switch (true) { |
|
267 | - case ! empty($attributes['event_id']): |
|
268 | - $event = EEM_Event::instance()->get_one_by_ID($attributes['event_id']); |
|
269 | - break; |
|
270 | - case ! empty($attributes['datetime_id']): |
|
271 | - $event = EEM_Event::instance()->get_one(array( |
|
272 | - array( |
|
273 | - 'Datetime.DTT_ID' => $attributes['datetime_id'], |
|
274 | - ), |
|
275 | - )); |
|
276 | - break; |
|
277 | - case ! empty($attributes['ticket_id']): |
|
278 | - $event = EEM_Event::instance()->get_one(array( |
|
279 | - array( |
|
280 | - 'Datetime.Ticket.TKT_ID' => $attributes['ticket_id'], |
|
281 | - ), |
|
282 | - 'default_where_conditions' => 'none' |
|
283 | - )); |
|
284 | - break; |
|
285 | - case is_espresso_event(): |
|
286 | - $event = EEH_Event_View::get_event(); |
|
287 | - break; |
|
288 | - default: |
|
289 | - // one last shot... |
|
290 | - // try getting the earliest active event |
|
291 | - $events = EEM_Event::instance()->get_active_events(array( |
|
292 | - 'limit' => 1, |
|
293 | - 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
294 | - )); |
|
295 | - // if none then get the next upcoming |
|
296 | - $events = empty($events) |
|
297 | - ? EEM_Event::instance()->get_upcoming_events(array( |
|
298 | - 'limit' => 1, |
|
299 | - 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
300 | - )) |
|
301 | - : $events; |
|
302 | - $event = reset($events); |
|
303 | - } |
|
256 | + /** |
|
257 | + * @param array $attributes |
|
258 | + * @return EE_Event|null |
|
259 | + * @throws EE_Error |
|
260 | + * @throws InvalidDataTypeException |
|
261 | + * @throws InvalidInterfaceException |
|
262 | + * @throws InvalidArgumentException |
|
263 | + */ |
|
264 | + private function getEvent(array $attributes) |
|
265 | + { |
|
266 | + switch (true) { |
|
267 | + case ! empty($attributes['event_id']): |
|
268 | + $event = EEM_Event::instance()->get_one_by_ID($attributes['event_id']); |
|
269 | + break; |
|
270 | + case ! empty($attributes['datetime_id']): |
|
271 | + $event = EEM_Event::instance()->get_one(array( |
|
272 | + array( |
|
273 | + 'Datetime.DTT_ID' => $attributes['datetime_id'], |
|
274 | + ), |
|
275 | + )); |
|
276 | + break; |
|
277 | + case ! empty($attributes['ticket_id']): |
|
278 | + $event = EEM_Event::instance()->get_one(array( |
|
279 | + array( |
|
280 | + 'Datetime.Ticket.TKT_ID' => $attributes['ticket_id'], |
|
281 | + ), |
|
282 | + 'default_where_conditions' => 'none' |
|
283 | + )); |
|
284 | + break; |
|
285 | + case is_espresso_event(): |
|
286 | + $event = EEH_Event_View::get_event(); |
|
287 | + break; |
|
288 | + default: |
|
289 | + // one last shot... |
|
290 | + // try getting the earliest active event |
|
291 | + $events = EEM_Event::instance()->get_active_events(array( |
|
292 | + 'limit' => 1, |
|
293 | + 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
294 | + )); |
|
295 | + // if none then get the next upcoming |
|
296 | + $events = empty($events) |
|
297 | + ? EEM_Event::instance()->get_upcoming_events(array( |
|
298 | + 'limit' => 1, |
|
299 | + 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
300 | + )) |
|
301 | + : $events; |
|
302 | + $event = reset($events); |
|
303 | + } |
|
304 | 304 | |
305 | - return $event instanceof EE_Event ? $event : null; |
|
306 | - } |
|
305 | + return $event instanceof EE_Event ? $event : null; |
|
306 | + } |
|
307 | 307 | |
308 | 308 | |
309 | - /** |
|
310 | - * @param array $attributes |
|
311 | - * @return EE_Datetime|null |
|
312 | - * @throws EE_Error |
|
313 | - * @throws InvalidDataTypeException |
|
314 | - * @throws InvalidInterfaceException |
|
315 | - * @throws InvalidArgumentException |
|
316 | - */ |
|
317 | - private function getDatetime(array $attributes) |
|
318 | - { |
|
319 | - if (! empty($attributes['datetime_id'])) { |
|
320 | - $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']); |
|
321 | - if ($datetime instanceof EE_Datetime) { |
|
322 | - return $datetime; |
|
323 | - } |
|
324 | - } |
|
325 | - return null; |
|
326 | - } |
|
309 | + /** |
|
310 | + * @param array $attributes |
|
311 | + * @return EE_Datetime|null |
|
312 | + * @throws EE_Error |
|
313 | + * @throws InvalidDataTypeException |
|
314 | + * @throws InvalidInterfaceException |
|
315 | + * @throws InvalidArgumentException |
|
316 | + */ |
|
317 | + private function getDatetime(array $attributes) |
|
318 | + { |
|
319 | + if (! empty($attributes['datetime_id'])) { |
|
320 | + $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']); |
|
321 | + if ($datetime instanceof EE_Datetime) { |
|
322 | + return $datetime; |
|
323 | + } |
|
324 | + } |
|
325 | + return null; |
|
326 | + } |
|
327 | 327 | |
328 | 328 | |
329 | - /** |
|
330 | - * @param array $attributes |
|
331 | - * @return \EE_Base_Class|EE_Ticket|null |
|
332 | - * @throws EE_Error |
|
333 | - * @throws InvalidDataTypeException |
|
334 | - * @throws InvalidInterfaceException |
|
335 | - * @throws InvalidArgumentException |
|
336 | - */ |
|
337 | - private function getTicket(array $attributes) |
|
338 | - { |
|
339 | - if (! empty($attributes['ticket_id'])) { |
|
340 | - $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']); |
|
341 | - if ($ticket instanceof EE_Ticket) { |
|
342 | - return $ticket; |
|
343 | - } |
|
344 | - } |
|
345 | - return null; |
|
346 | - } |
|
329 | + /** |
|
330 | + * @param array $attributes |
|
331 | + * @return \EE_Base_Class|EE_Ticket|null |
|
332 | + * @throws EE_Error |
|
333 | + * @throws InvalidDataTypeException |
|
334 | + * @throws InvalidInterfaceException |
|
335 | + * @throws InvalidArgumentException |
|
336 | + */ |
|
337 | + private function getTicket(array $attributes) |
|
338 | + { |
|
339 | + if (! empty($attributes['ticket_id'])) { |
|
340 | + $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']); |
|
341 | + if ($ticket instanceof EE_Ticket) { |
|
342 | + return $ticket; |
|
343 | + } |
|
344 | + } |
|
345 | + return null; |
|
346 | + } |
|
347 | 347 | |
348 | 348 | |
349 | - /** |
|
350 | - * @param array $attributes |
|
351 | - * @throws EE_Error |
|
352 | - */ |
|
353 | - private function setAdditionalQueryParams(array $attributes) |
|
354 | - { |
|
355 | - $reg_status_array = EEM_Registration::reg_status_array(); |
|
356 | - if (isset($reg_status_array[ $attributes['status'] ])) { |
|
357 | - $this->query_params[0]['Registration.STS_ID'] = $attributes['status']; |
|
358 | - } |
|
359 | - if (absint($attributes['limit'])) { |
|
360 | - $this->query_params['limit'] = $attributes['limit']; |
|
361 | - } |
|
362 | - $this->query_params['group_by'] = array('ATT_ID'); |
|
363 | - $this->query_params['order_by'] = (array) apply_filters( |
|
364 | - 'FHEE__EES_Espresso_Event_Attendees__process_shortcode__order_by', |
|
365 | - array('ATT_lname' => 'ASC', 'ATT_fname' => 'ASC') |
|
366 | - ); |
|
367 | - } |
|
349 | + /** |
|
350 | + * @param array $attributes |
|
351 | + * @throws EE_Error |
|
352 | + */ |
|
353 | + private function setAdditionalQueryParams(array $attributes) |
|
354 | + { |
|
355 | + $reg_status_array = EEM_Registration::reg_status_array(); |
|
356 | + if (isset($reg_status_array[ $attributes['status'] ])) { |
|
357 | + $this->query_params[0]['Registration.STS_ID'] = $attributes['status']; |
|
358 | + } |
|
359 | + if (absint($attributes['limit'])) { |
|
360 | + $this->query_params['limit'] = $attributes['limit']; |
|
361 | + } |
|
362 | + $this->query_params['group_by'] = array('ATT_ID'); |
|
363 | + $this->query_params['order_by'] = (array) apply_filters( |
|
364 | + 'FHEE__EES_Espresso_Event_Attendees__process_shortcode__order_by', |
|
365 | + array('ATT_lname' => 'ASC', 'ATT_fname' => 'ASC') |
|
366 | + ); |
|
367 | + } |
|
368 | 368 | } |
@@ -116,7 +116,7 @@ discard block |
||
116 | 116 | $attributes['limit'] = (int) $attributes['limit']; |
117 | 117 | $display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN); |
118 | 118 | // don't display on archives unless 'display_on_archives' is true |
119 | - if ($attributes['limit'] === 0 || (! $display_on_archives && is_archive())) { |
|
119 | + if ($attributes['limit'] === 0 || ( ! $display_on_archives && is_archive())) { |
|
120 | 120 | return ''; |
121 | 121 | } |
122 | 122 | try { |
@@ -200,7 +200,7 @@ discard block |
||
200 | 200 | */ |
201 | 201 | private function validateEntities(array $attributes) |
202 | 202 | { |
203 | - if (! $this->template_args['event'] instanceof EE_Event |
|
203 | + if ( ! $this->template_args['event'] instanceof EE_Event |
|
204 | 204 | || ( |
205 | 205 | empty($attributes['event_id']) |
206 | 206 | && $attributes['datetime_id'] |
@@ -316,7 +316,7 @@ discard block |
||
316 | 316 | */ |
317 | 317 | private function getDatetime(array $attributes) |
318 | 318 | { |
319 | - if (! empty($attributes['datetime_id'])) { |
|
319 | + if ( ! empty($attributes['datetime_id'])) { |
|
320 | 320 | $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']); |
321 | 321 | if ($datetime instanceof EE_Datetime) { |
322 | 322 | return $datetime; |
@@ -336,7 +336,7 @@ discard block |
||
336 | 336 | */ |
337 | 337 | private function getTicket(array $attributes) |
338 | 338 | { |
339 | - if (! empty($attributes['ticket_id'])) { |
|
339 | + if ( ! empty($attributes['ticket_id'])) { |
|
340 | 340 | $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']); |
341 | 341 | if ($ticket instanceof EE_Ticket) { |
342 | 342 | return $ticket; |
@@ -353,7 +353,7 @@ discard block |
||
353 | 353 | private function setAdditionalQueryParams(array $attributes) |
354 | 354 | { |
355 | 355 | $reg_status_array = EEM_Registration::reg_status_array(); |
356 | - if (isset($reg_status_array[ $attributes['status'] ])) { |
|
356 | + if (isset($reg_status_array[$attributes['status']])) { |
|
357 | 357 | $this->query_params[0]['Registration.STS_ID'] = $attributes['status']; |
358 | 358 | } |
359 | 359 | if (absint($attributes['limit'])) { |
@@ -25,122 +25,122 @@ |
||
25 | 25 | */ |
26 | 26 | class RouteMatchSpecificationManager |
27 | 27 | { |
28 | - /** |
|
29 | - * @var CollectionInterface[]|RouteMatchSpecificationInterface[] $specifications |
|
30 | - */ |
|
31 | - private $specifications; |
|
28 | + /** |
|
29 | + * @var CollectionInterface[]|RouteMatchSpecificationInterface[] $specifications |
|
30 | + */ |
|
31 | + private $specifications; |
|
32 | 32 | |
33 | - /** |
|
34 | - * @var RouteMatchSpecificationFactory $specifications_factory |
|
35 | - */ |
|
36 | - private $specifications_factory; |
|
33 | + /** |
|
34 | + * @var RouteMatchSpecificationFactory $specifications_factory |
|
35 | + */ |
|
36 | + private $specifications_factory; |
|
37 | 37 | |
38 | 38 | |
39 | - /** |
|
40 | - * RouteMatchSpecificationManager constructor. |
|
41 | - * |
|
42 | - * @param RouteMatchSpecificationCollection $specifications |
|
43 | - * @param RouteMatchSpecificationFactory $specifications_factory |
|
44 | - */ |
|
45 | - public function __construct( |
|
46 | - RouteMatchSpecificationCollection $specifications, |
|
47 | - RouteMatchSpecificationFactory $specifications_factory |
|
48 | - ) { |
|
49 | - $this->specifications = $specifications; |
|
50 | - $this->specifications_factory = $specifications_factory; |
|
51 | - add_action('AHEE__EE_System__loadRouteMatchSpecifications', array($this, 'initialize')); |
|
52 | - } |
|
39 | + /** |
|
40 | + * RouteMatchSpecificationManager constructor. |
|
41 | + * |
|
42 | + * @param RouteMatchSpecificationCollection $specifications |
|
43 | + * @param RouteMatchSpecificationFactory $specifications_factory |
|
44 | + */ |
|
45 | + public function __construct( |
|
46 | + RouteMatchSpecificationCollection $specifications, |
|
47 | + RouteMatchSpecificationFactory $specifications_factory |
|
48 | + ) { |
|
49 | + $this->specifications = $specifications; |
|
50 | + $this->specifications_factory = $specifications_factory; |
|
51 | + add_action('AHEE__EE_System__loadRouteMatchSpecifications', array($this, 'initialize')); |
|
52 | + } |
|
53 | 53 | |
54 | 54 | |
55 | - /** |
|
56 | - * Perform any early setup required for block editors to functions |
|
57 | - * |
|
58 | - * @return void |
|
59 | - * @throws CollectionLoaderException |
|
60 | - * @throws CollectionDetailsException |
|
61 | - */ |
|
62 | - public function initialize() |
|
63 | - { |
|
64 | - $this->populateSpecificationCollection(); |
|
65 | - } |
|
55 | + /** |
|
56 | + * Perform any early setup required for block editors to functions |
|
57 | + * |
|
58 | + * @return void |
|
59 | + * @throws CollectionLoaderException |
|
60 | + * @throws CollectionDetailsException |
|
61 | + */ |
|
62 | + public function initialize() |
|
63 | + { |
|
64 | + $this->populateSpecificationCollection(); |
|
65 | + } |
|
66 | 66 | |
67 | 67 | |
68 | - /** |
|
69 | - * @return CollectionInterface|RouteMatchSpecificationInterface[] |
|
70 | - * @throws CollectionLoaderException |
|
71 | - * @throws CollectionDetailsException |
|
72 | - * @since $VID:$ |
|
73 | - */ |
|
74 | - private function populateSpecificationCollection() |
|
75 | - { |
|
76 | - $loader = new CollectionLoader( |
|
77 | - new CollectionDetails( |
|
78 | - // collection name |
|
79 | - RouteMatchSpecificationCollection::COLLECTION_NAME, |
|
80 | - // collection interface |
|
81 | - 'EventEspresso\core\domain\entities\route_match\RouteMatchSpecificationInterface', |
|
82 | - // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
83 | - apply_filters( |
|
84 | - 'FHEE__EventEspresso_core_services_route_match_RouteMatchSpecificationManager__populateSpecificationCollection__collection_FQCNs', |
|
85 | - array( |
|
86 | - 'EventEspresso\core\domain\entities\route_match\specifications\admin', |
|
87 | - 'EventEspresso\core\domain\entities\route_match\specifications\frontend', |
|
88 | - ) |
|
89 | - ), |
|
90 | - // filepaths to classes to add |
|
91 | - array(), |
|
92 | - // file mask to use if parsing folder for files to add |
|
93 | - '', |
|
94 | - // what to use as identifier for collection entities |
|
95 | - // using CLASS NAME prevents duplicates (works like a singleton) |
|
96 | - CollectionDetails::ID_CLASS_NAME |
|
97 | - ), |
|
98 | - $this->specifications, |
|
99 | - null, |
|
100 | - $this->specifications_factory |
|
101 | - ); |
|
102 | - return $loader->getCollection(); |
|
103 | - } |
|
68 | + /** |
|
69 | + * @return CollectionInterface|RouteMatchSpecificationInterface[] |
|
70 | + * @throws CollectionLoaderException |
|
71 | + * @throws CollectionDetailsException |
|
72 | + * @since $VID:$ |
|
73 | + */ |
|
74 | + private function populateSpecificationCollection() |
|
75 | + { |
|
76 | + $loader = new CollectionLoader( |
|
77 | + new CollectionDetails( |
|
78 | + // collection name |
|
79 | + RouteMatchSpecificationCollection::COLLECTION_NAME, |
|
80 | + // collection interface |
|
81 | + 'EventEspresso\core\domain\entities\route_match\RouteMatchSpecificationInterface', |
|
82 | + // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
83 | + apply_filters( |
|
84 | + 'FHEE__EventEspresso_core_services_route_match_RouteMatchSpecificationManager__populateSpecificationCollection__collection_FQCNs', |
|
85 | + array( |
|
86 | + 'EventEspresso\core\domain\entities\route_match\specifications\admin', |
|
87 | + 'EventEspresso\core\domain\entities\route_match\specifications\frontend', |
|
88 | + ) |
|
89 | + ), |
|
90 | + // filepaths to classes to add |
|
91 | + array(), |
|
92 | + // file mask to use if parsing folder for files to add |
|
93 | + '', |
|
94 | + // what to use as identifier for collection entities |
|
95 | + // using CLASS NAME prevents duplicates (works like a singleton) |
|
96 | + CollectionDetails::ID_CLASS_NAME |
|
97 | + ), |
|
98 | + $this->specifications, |
|
99 | + null, |
|
100 | + $this->specifications_factory |
|
101 | + ); |
|
102 | + return $loader->getCollection(); |
|
103 | + } |
|
104 | 104 | |
105 | 105 | |
106 | - /** |
|
107 | - * Given the FQCN for a RouteMatchSpecification, will return true if the current request matches |
|
108 | - * |
|
109 | - * @param string $routeMatchSpecificationFqcn fully qualified class name |
|
110 | - * @return bool |
|
111 | - * @throws InvalidClassException |
|
112 | - * @since $VID:$ |
|
113 | - */ |
|
114 | - public function routeMatchesCurrentRequest($routeMatchSpecificationFqcn) |
|
115 | - { |
|
116 | - /** @var RouteMatchSpecificationInterface $specification */ |
|
117 | - $specification = $this->specifications->get($routeMatchSpecificationFqcn); |
|
118 | - if (! $specification instanceof $routeMatchSpecificationFqcn) { |
|
119 | - throw new InvalidClassException($routeMatchSpecificationFqcn); |
|
120 | - } |
|
121 | - return $specification->isMatchingRoute(); |
|
122 | - } |
|
106 | + /** |
|
107 | + * Given the FQCN for a RouteMatchSpecification, will return true if the current request matches |
|
108 | + * |
|
109 | + * @param string $routeMatchSpecificationFqcn fully qualified class name |
|
110 | + * @return bool |
|
111 | + * @throws InvalidClassException |
|
112 | + * @since $VID:$ |
|
113 | + */ |
|
114 | + public function routeMatchesCurrentRequest($routeMatchSpecificationFqcn) |
|
115 | + { |
|
116 | + /** @var RouteMatchSpecificationInterface $specification */ |
|
117 | + $specification = $this->specifications->get($routeMatchSpecificationFqcn); |
|
118 | + if (! $specification instanceof $routeMatchSpecificationFqcn) { |
|
119 | + throw new InvalidClassException($routeMatchSpecificationFqcn); |
|
120 | + } |
|
121 | + return $specification->isMatchingRoute(); |
|
122 | + } |
|
123 | 123 | |
124 | 124 | |
125 | - /** |
|
126 | - * Handy method for development that returns |
|
127 | - * a list of existing RouteMatchSpecification classes |
|
128 | - * matching the current request that can be used to identify it. |
|
129 | - * If no matches are returned (or nothing acceptable) |
|
130 | - * then create a new one that better matches your requirements. |
|
131 | - * |
|
132 | - * @return array |
|
133 | - * @since $VID:$ |
|
134 | - */ |
|
135 | - public function findRouteMatchSpecificationsMatchingCurrentRequest() |
|
136 | - { |
|
137 | - $matches = array(); |
|
138 | - foreach ($this->specifications as $specification) { |
|
139 | - /** @var RouteMatchSpecificationInterface $specification */ |
|
140 | - if ($specification->isMatchingRoute()) { |
|
141 | - $matches[] = get_class($specification); |
|
142 | - } |
|
143 | - } |
|
144 | - return $matches; |
|
145 | - } |
|
125 | + /** |
|
126 | + * Handy method for development that returns |
|
127 | + * a list of existing RouteMatchSpecification classes |
|
128 | + * matching the current request that can be used to identify it. |
|
129 | + * If no matches are returned (or nothing acceptable) |
|
130 | + * then create a new one that better matches your requirements. |
|
131 | + * |
|
132 | + * @return array |
|
133 | + * @since $VID:$ |
|
134 | + */ |
|
135 | + public function findRouteMatchSpecificationsMatchingCurrentRequest() |
|
136 | + { |
|
137 | + $matches = array(); |
|
138 | + foreach ($this->specifications as $specification) { |
|
139 | + /** @var RouteMatchSpecificationInterface $specification */ |
|
140 | + if ($specification->isMatchingRoute()) { |
|
141 | + $matches[] = get_class($specification); |
|
142 | + } |
|
143 | + } |
|
144 | + return $matches; |
|
145 | + } |
|
146 | 146 | } |
@@ -15,17 +15,17 @@ |
||
15 | 15 | class EspressoBlockRenderer extends RouteMatchSpecification |
16 | 16 | { |
17 | 17 | |
18 | - /** |
|
19 | - * returns true if current request matches specification |
|
20 | - * |
|
21 | - * @since $VID:$ |
|
22 | - * @return boolean |
|
23 | - */ |
|
24 | - public function isMatchingRoute() |
|
25 | - { |
|
26 | - return strpos( |
|
27 | - $this->request->requestUri(), |
|
28 | - 'wp-json/gutenberg/v1/block-renderer/eventespresso' |
|
29 | - ) !== false; |
|
30 | - } |
|
18 | + /** |
|
19 | + * returns true if current request matches specification |
|
20 | + * |
|
21 | + * @since $VID:$ |
|
22 | + * @return boolean |
|
23 | + */ |
|
24 | + public function isMatchingRoute() |
|
25 | + { |
|
26 | + return strpos( |
|
27 | + $this->request->requestUri(), |
|
28 | + 'wp-json/gutenberg/v1/block-renderer/eventespresso' |
|
29 | + ) !== false; |
|
30 | + } |
|
31 | 31 | } |
@@ -20,1023 +20,1023 @@ |
||
20 | 20 | class EE_Dependency_Map |
21 | 21 | { |
22 | 22 | |
23 | - /** |
|
24 | - * This means that the requested class dependency is not present in the dependency map |
|
25 | - */ |
|
26 | - const not_registered = 0; |
|
27 | - |
|
28 | - /** |
|
29 | - * This instructs class loaders to ALWAYS return a newly instantiated object for the requested class. |
|
30 | - */ |
|
31 | - const load_new_object = 1; |
|
32 | - |
|
33 | - /** |
|
34 | - * This instructs class loaders to return a previously instantiated and cached object for the requested class. |
|
35 | - * IF a previously instantiated object does not exist, a new one will be created and added to the cache. |
|
36 | - */ |
|
37 | - const load_from_cache = 2; |
|
38 | - |
|
39 | - /** |
|
40 | - * When registering a dependency, |
|
41 | - * this indicates to keep any existing dependencies that already exist, |
|
42 | - * and simply discard any new dependencies declared in the incoming data |
|
43 | - */ |
|
44 | - const KEEP_EXISTING_DEPENDENCIES = 0; |
|
45 | - |
|
46 | - /** |
|
47 | - * When registering a dependency, |
|
48 | - * this indicates to overwrite any existing dependencies that already exist using the incoming data |
|
49 | - */ |
|
50 | - const OVERWRITE_DEPENDENCIES = 1; |
|
51 | - |
|
52 | - |
|
53 | - /** |
|
54 | - * @type EE_Dependency_Map $_instance |
|
55 | - */ |
|
56 | - protected static $_instance; |
|
57 | - |
|
58 | - /** |
|
59 | - * @var ClassInterfaceCache $class_cache |
|
60 | - */ |
|
61 | - private $class_cache; |
|
62 | - |
|
63 | - /** |
|
64 | - * @type RequestInterface $request |
|
65 | - */ |
|
66 | - protected $request; |
|
67 | - |
|
68 | - /** |
|
69 | - * @type LegacyRequestInterface $legacy_request |
|
70 | - */ |
|
71 | - protected $legacy_request; |
|
72 | - |
|
73 | - /** |
|
74 | - * @type ResponseInterface $response |
|
75 | - */ |
|
76 | - protected $response; |
|
77 | - |
|
78 | - /** |
|
79 | - * @type LoaderInterface $loader |
|
80 | - */ |
|
81 | - protected $loader; |
|
82 | - |
|
83 | - /** |
|
84 | - * @type array $_dependency_map |
|
85 | - */ |
|
86 | - protected $_dependency_map = array(); |
|
87 | - |
|
88 | - /** |
|
89 | - * @type array $_class_loaders |
|
90 | - */ |
|
91 | - protected $_class_loaders = array(); |
|
92 | - |
|
93 | - |
|
94 | - /** |
|
95 | - * EE_Dependency_Map constructor. |
|
96 | - * |
|
97 | - * @param ClassInterfaceCache $class_cache |
|
98 | - */ |
|
99 | - protected function __construct(ClassInterfaceCache $class_cache) |
|
100 | - { |
|
101 | - $this->class_cache = $class_cache; |
|
102 | - do_action('EE_Dependency_Map____construct', $this); |
|
103 | - } |
|
104 | - |
|
105 | - |
|
106 | - /** |
|
107 | - * @return void |
|
108 | - */ |
|
109 | - public function initialize() |
|
110 | - { |
|
111 | - $this->_register_core_dependencies(); |
|
112 | - $this->_register_core_class_loaders(); |
|
113 | - $this->_register_core_aliases(); |
|
114 | - } |
|
115 | - |
|
116 | - |
|
117 | - /** |
|
118 | - * @singleton method used to instantiate class object |
|
119 | - * @param ClassInterfaceCache|null $class_cache |
|
120 | - * @return EE_Dependency_Map |
|
121 | - */ |
|
122 | - public static function instance(ClassInterfaceCache $class_cache = null) |
|
123 | - { |
|
124 | - // check if class object is instantiated, and instantiated properly |
|
125 | - if (! self::$_instance instanceof EE_Dependency_Map |
|
126 | - && $class_cache instanceof ClassInterfaceCache |
|
127 | - ) { |
|
128 | - self::$_instance = new EE_Dependency_Map($class_cache); |
|
129 | - } |
|
130 | - return self::$_instance; |
|
131 | - } |
|
132 | - |
|
133 | - |
|
134 | - /** |
|
135 | - * @param RequestInterface $request |
|
136 | - */ |
|
137 | - public function setRequest(RequestInterface $request) |
|
138 | - { |
|
139 | - $this->request = $request; |
|
140 | - } |
|
141 | - |
|
142 | - |
|
143 | - /** |
|
144 | - * @param LegacyRequestInterface $legacy_request |
|
145 | - */ |
|
146 | - public function setLegacyRequest(LegacyRequestInterface $legacy_request) |
|
147 | - { |
|
148 | - $this->legacy_request = $legacy_request; |
|
149 | - } |
|
150 | - |
|
151 | - |
|
152 | - /** |
|
153 | - * @param ResponseInterface $response |
|
154 | - */ |
|
155 | - public function setResponse(ResponseInterface $response) |
|
156 | - { |
|
157 | - $this->response = $response; |
|
158 | - } |
|
159 | - |
|
160 | - |
|
161 | - /** |
|
162 | - * @param LoaderInterface $loader |
|
163 | - */ |
|
164 | - public function setLoader(LoaderInterface $loader) |
|
165 | - { |
|
166 | - $this->loader = $loader; |
|
167 | - } |
|
168 | - |
|
169 | - |
|
170 | - /** |
|
171 | - * @param string $class |
|
172 | - * @param array $dependencies |
|
173 | - * @param int $overwrite |
|
174 | - * @return bool |
|
175 | - */ |
|
176 | - public static function register_dependencies( |
|
177 | - $class, |
|
178 | - array $dependencies, |
|
179 | - $overwrite = EE_Dependency_Map::KEEP_EXISTING_DEPENDENCIES |
|
180 | - ) { |
|
181 | - return self::$_instance->registerDependencies($class, $dependencies, $overwrite); |
|
182 | - } |
|
183 | - |
|
184 | - |
|
185 | - /** |
|
186 | - * Assigns an array of class names and corresponding load sources (new or cached) |
|
187 | - * to the class specified by the first parameter. |
|
188 | - * IMPORTANT !!! |
|
189 | - * The order of elements in the incoming $dependencies array MUST match |
|
190 | - * the order of the constructor parameters for the class in question. |
|
191 | - * This is especially important when overriding any existing dependencies that are registered. |
|
192 | - * the third parameter controls whether any duplicate dependencies are overwritten or not. |
|
193 | - * |
|
194 | - * @param string $class |
|
195 | - * @param array $dependencies |
|
196 | - * @param int $overwrite |
|
197 | - * @return bool |
|
198 | - */ |
|
199 | - public function registerDependencies( |
|
200 | - $class, |
|
201 | - array $dependencies, |
|
202 | - $overwrite = EE_Dependency_Map::KEEP_EXISTING_DEPENDENCIES |
|
203 | - ) { |
|
204 | - $class = trim($class, '\\'); |
|
205 | - $registered = false; |
|
206 | - if (empty(self::$_instance->_dependency_map[ $class ])) { |
|
207 | - self::$_instance->_dependency_map[ $class ] = array(); |
|
208 | - } |
|
209 | - // we need to make sure that any aliases used when registering a dependency |
|
210 | - // get resolved to the correct class name |
|
211 | - foreach ($dependencies as $dependency => $load_source) { |
|
212 | - $alias = self::$_instance->getFqnForAlias($dependency); |
|
213 | - if ($overwrite === EE_Dependency_Map::OVERWRITE_DEPENDENCIES |
|
214 | - || ! isset(self::$_instance->_dependency_map[ $class ][ $alias ]) |
|
215 | - ) { |
|
216 | - unset($dependencies[ $dependency ]); |
|
217 | - $dependencies[ $alias ] = $load_source; |
|
218 | - $registered = true; |
|
219 | - } |
|
220 | - } |
|
221 | - // now add our two lists of dependencies together. |
|
222 | - // using Union (+=) favours the arrays in precedence from left to right, |
|
223 | - // so $dependencies is NOT overwritten because it is listed first |
|
224 | - // ie: with A = B + C, entries in B take precedence over duplicate entries in C |
|
225 | - // Union is way faster than array_merge() but should be used with caution... |
|
226 | - // especially with numerically indexed arrays |
|
227 | - $dependencies += self::$_instance->_dependency_map[ $class ]; |
|
228 | - // now we need to ensure that the resulting dependencies |
|
229 | - // array only has the entries that are required for the class |
|
230 | - // so first count how many dependencies were originally registered for the class |
|
231 | - $dependency_count = count(self::$_instance->_dependency_map[ $class ]); |
|
232 | - // if that count is non-zero (meaning dependencies were already registered) |
|
233 | - self::$_instance->_dependency_map[ $class ] = $dependency_count |
|
234 | - // then truncate the final array to match that count |
|
235 | - ? array_slice($dependencies, 0, $dependency_count) |
|
236 | - // otherwise just take the incoming array because nothing previously existed |
|
237 | - : $dependencies; |
|
238 | - return $registered; |
|
239 | - } |
|
240 | - |
|
241 | - |
|
242 | - /** |
|
243 | - * @param string $class_name |
|
244 | - * @param string $loader |
|
245 | - * @return bool |
|
246 | - * @throws DomainException |
|
247 | - */ |
|
248 | - public static function register_class_loader($class_name, $loader = 'load_core') |
|
249 | - { |
|
250 | - if (! $loader instanceof Closure && strpos($class_name, '\\') !== false) { |
|
251 | - throw new DomainException( |
|
252 | - esc_html__('Don\'t use class loaders for FQCNs.', 'event_espresso') |
|
253 | - ); |
|
254 | - } |
|
255 | - // check that loader is callable or method starts with "load_" and exists in EE_Registry |
|
256 | - if (! is_callable($loader) |
|
257 | - && ( |
|
258 | - strpos($loader, 'load_') !== 0 |
|
259 | - || ! method_exists('EE_Registry', $loader) |
|
260 | - ) |
|
261 | - ) { |
|
262 | - throw new DomainException( |
|
263 | - sprintf( |
|
264 | - esc_html__( |
|
265 | - '"%1$s" is not a valid loader method on EE_Registry.', |
|
266 | - 'event_espresso' |
|
267 | - ), |
|
268 | - $loader |
|
269 | - ) |
|
270 | - ); |
|
271 | - } |
|
272 | - $class_name = self::$_instance->getFqnForAlias($class_name); |
|
273 | - if (! isset(self::$_instance->_class_loaders[ $class_name ])) { |
|
274 | - self::$_instance->_class_loaders[ $class_name ] = $loader; |
|
275 | - return true; |
|
276 | - } |
|
277 | - return false; |
|
278 | - } |
|
279 | - |
|
280 | - |
|
281 | - /** |
|
282 | - * @return array |
|
283 | - */ |
|
284 | - public function dependency_map() |
|
285 | - { |
|
286 | - return $this->_dependency_map; |
|
287 | - } |
|
288 | - |
|
289 | - |
|
290 | - /** |
|
291 | - * returns TRUE if dependency map contains a listing for the provided class name |
|
292 | - * |
|
293 | - * @param string $class_name |
|
294 | - * @return boolean |
|
295 | - */ |
|
296 | - public function has($class_name = '') |
|
297 | - { |
|
298 | - // all legacy models have the same dependencies |
|
299 | - if (strpos($class_name, 'EEM_') === 0) { |
|
300 | - $class_name = 'LEGACY_MODELS'; |
|
301 | - } |
|
302 | - return isset($this->_dependency_map[ $class_name ]) ? true : false; |
|
303 | - } |
|
304 | - |
|
305 | - |
|
306 | - /** |
|
307 | - * returns TRUE if dependency map contains a listing for the provided class name AND dependency |
|
308 | - * |
|
309 | - * @param string $class_name |
|
310 | - * @param string $dependency |
|
311 | - * @return bool |
|
312 | - */ |
|
313 | - public function has_dependency_for_class($class_name = '', $dependency = '') |
|
314 | - { |
|
315 | - // all legacy models have the same dependencies |
|
316 | - if (strpos($class_name, 'EEM_') === 0) { |
|
317 | - $class_name = 'LEGACY_MODELS'; |
|
318 | - } |
|
319 | - $dependency = $this->getFqnForAlias($dependency, $class_name); |
|
320 | - return isset($this->_dependency_map[ $class_name ][ $dependency ]) |
|
321 | - ? true |
|
322 | - : false; |
|
323 | - } |
|
324 | - |
|
325 | - |
|
326 | - /** |
|
327 | - * returns loading strategy for whether a previously cached dependency should be loaded or a new instance returned |
|
328 | - * |
|
329 | - * @param string $class_name |
|
330 | - * @param string $dependency |
|
331 | - * @return int |
|
332 | - */ |
|
333 | - public function loading_strategy_for_class_dependency($class_name = '', $dependency = '') |
|
334 | - { |
|
335 | - // all legacy models have the same dependencies |
|
336 | - if (strpos($class_name, 'EEM_') === 0) { |
|
337 | - $class_name = 'LEGACY_MODELS'; |
|
338 | - } |
|
339 | - $dependency = $this->getFqnForAlias($dependency); |
|
340 | - return $this->has_dependency_for_class($class_name, $dependency) |
|
341 | - ? $this->_dependency_map[ $class_name ][ $dependency ] |
|
342 | - : EE_Dependency_Map::not_registered; |
|
343 | - } |
|
344 | - |
|
345 | - |
|
346 | - /** |
|
347 | - * @param string $class_name |
|
348 | - * @return string | Closure |
|
349 | - */ |
|
350 | - public function class_loader($class_name) |
|
351 | - { |
|
352 | - // all legacy models use load_model() |
|
353 | - if (strpos($class_name, 'EEM_') === 0) { |
|
354 | - return 'load_model'; |
|
355 | - } |
|
356 | - // EE_CPT_*_Strategy classes like EE_CPT_Event_Strategy, EE_CPT_Venue_Strategy, etc |
|
357 | - // perform strpos() first to avoid loading regex every time we load a class |
|
358 | - if (strpos($class_name, 'EE_CPT_') === 0 |
|
359 | - && preg_match('/^EE_CPT_([a-zA-Z]+)_Strategy$/', $class_name) |
|
360 | - ) { |
|
361 | - return 'load_core'; |
|
362 | - } |
|
363 | - $class_name = $this->getFqnForAlias($class_name); |
|
364 | - return isset($this->_class_loaders[ $class_name ]) ? $this->_class_loaders[ $class_name ] : ''; |
|
365 | - } |
|
366 | - |
|
367 | - |
|
368 | - /** |
|
369 | - * @return array |
|
370 | - */ |
|
371 | - public function class_loaders() |
|
372 | - { |
|
373 | - return $this->_class_loaders; |
|
374 | - } |
|
375 | - |
|
376 | - |
|
377 | - /** |
|
378 | - * adds an alias for a classname |
|
379 | - * |
|
380 | - * @param string $fqcn the class name that should be used (concrete class to replace interface) |
|
381 | - * @param string $alias the class name that would be type hinted for (abstract parent or interface) |
|
382 | - * @param string $for_class the class that has the dependency (is type hinting for the interface) |
|
383 | - */ |
|
384 | - public function add_alias($fqcn, $alias, $for_class = '') |
|
385 | - { |
|
386 | - $this->class_cache->addAlias($fqcn, $alias, $for_class); |
|
387 | - } |
|
388 | - |
|
389 | - |
|
390 | - /** |
|
391 | - * Returns TRUE if the provided fully qualified name IS an alias |
|
392 | - * WHY? |
|
393 | - * Because if a class is type hinting for a concretion, |
|
394 | - * then why would we need to find another class to supply it? |
|
395 | - * ie: if a class asks for `Fully/Qualified/Namespace/SpecificClassName`, |
|
396 | - * then give it an instance of `Fully/Qualified/Namespace/SpecificClassName`. |
|
397 | - * Don't go looking for some substitute. |
|
398 | - * Whereas if a class is type hinting for an interface... |
|
399 | - * then we need to find an actual class to use. |
|
400 | - * So the interface IS the alias for some other FQN, |
|
401 | - * and we need to find out if `Fully/Qualified/Namespace/SomeInterface` |
|
402 | - * represents some other class. |
|
403 | - * |
|
404 | - * @param string $fqn |
|
405 | - * @param string $for_class |
|
406 | - * @return bool |
|
407 | - */ |
|
408 | - public function isAlias($fqn = '', $for_class = '') |
|
409 | - { |
|
410 | - return $this->class_cache->isAlias($fqn, $for_class); |
|
411 | - } |
|
412 | - |
|
413 | - |
|
414 | - /** |
|
415 | - * Returns a FQN for provided alias if one exists, otherwise returns the original $alias |
|
416 | - * functions recursively, so that multiple aliases can be used to drill down to a FQN |
|
417 | - * for example: |
|
418 | - * if the following two entries were added to the _aliases array: |
|
419 | - * array( |
|
420 | - * 'interface_alias' => 'some\namespace\interface' |
|
421 | - * 'some\namespace\interface' => 'some\namespace\classname' |
|
422 | - * ) |
|
423 | - * then one could use EE_Registry::instance()->create( 'interface_alias' ) |
|
424 | - * to load an instance of 'some\namespace\classname' |
|
425 | - * |
|
426 | - * @param string $alias |
|
427 | - * @param string $for_class |
|
428 | - * @return string |
|
429 | - */ |
|
430 | - public function getFqnForAlias($alias = '', $for_class = '') |
|
431 | - { |
|
432 | - return (string) $this->class_cache->getFqnForAlias($alias, $for_class); |
|
433 | - } |
|
434 | - |
|
435 | - |
|
436 | - /** |
|
437 | - * Registers the core dependencies and whether a previously instantiated object should be loaded from the cache, |
|
438 | - * if one exists, or whether a new object should be generated every time the requested class is loaded. |
|
439 | - * This is done by using the following class constants: |
|
440 | - * EE_Dependency_Map::load_from_cache - loads previously instantiated object |
|
441 | - * EE_Dependency_Map::load_new_object - generates a new object every time |
|
442 | - */ |
|
443 | - protected function _register_core_dependencies() |
|
444 | - { |
|
445 | - $this->_dependency_map = array( |
|
446 | - 'EE_Request_Handler' => array( |
|
447 | - 'EE_Request' => EE_Dependency_Map::load_from_cache, |
|
448 | - ), |
|
449 | - 'EE_System' => array( |
|
450 | - 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
451 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
452 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
453 | - 'EE_Maintenance_Mode' => EE_Dependency_Map::load_from_cache, |
|
454 | - ), |
|
455 | - 'EE_Session' => array( |
|
456 | - 'EventEspresso\core\services\cache\TransientCacheStorage' => EE_Dependency_Map::load_from_cache, |
|
457 | - 'EventEspresso\core\domain\values\session\SessionLifespan' => EE_Dependency_Map::load_from_cache, |
|
458 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
459 | - 'EE_Encryption' => EE_Dependency_Map::load_from_cache, |
|
460 | - ), |
|
461 | - 'EE_Cart' => array( |
|
462 | - 'EE_Session' => EE_Dependency_Map::load_from_cache, |
|
463 | - ), |
|
464 | - 'EE_Front_Controller' => array( |
|
465 | - 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
466 | - 'EE_Request_Handler' => EE_Dependency_Map::load_from_cache, |
|
467 | - 'EE_Module_Request_Router' => EE_Dependency_Map::load_from_cache, |
|
468 | - ), |
|
469 | - 'EE_Messenger_Collection_Loader' => array( |
|
470 | - 'EE_Messenger_Collection' => EE_Dependency_Map::load_new_object, |
|
471 | - ), |
|
472 | - 'EE_Message_Type_Collection_Loader' => array( |
|
473 | - 'EE_Message_Type_Collection' => EE_Dependency_Map::load_new_object, |
|
474 | - ), |
|
475 | - 'EE_Message_Resource_Manager' => array( |
|
476 | - 'EE_Messenger_Collection_Loader' => EE_Dependency_Map::load_new_object, |
|
477 | - 'EE_Message_Type_Collection_Loader' => EE_Dependency_Map::load_new_object, |
|
478 | - 'EEM_Message_Template_Group' => EE_Dependency_Map::load_from_cache, |
|
479 | - ), |
|
480 | - 'EE_Message_Factory' => array( |
|
481 | - 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
482 | - ), |
|
483 | - 'EE_messages' => array( |
|
484 | - 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
485 | - ), |
|
486 | - 'EE_Messages_Generator' => array( |
|
487 | - 'EE_Messages_Queue' => EE_Dependency_Map::load_new_object, |
|
488 | - 'EE_Messages_Data_Handler_Collection' => EE_Dependency_Map::load_new_object, |
|
489 | - 'EE_Message_Template_Group_Collection' => EE_Dependency_Map::load_new_object, |
|
490 | - 'EEH_Parse_Shortcodes' => EE_Dependency_Map::load_from_cache, |
|
491 | - ), |
|
492 | - 'EE_Messages_Processor' => array( |
|
493 | - 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
494 | - ), |
|
495 | - 'EE_Messages_Queue' => array( |
|
496 | - 'EE_Message_Repository' => EE_Dependency_Map::load_new_object, |
|
497 | - ), |
|
498 | - 'EE_Messages_Template_Defaults' => array( |
|
499 | - 'EEM_Message_Template_Group' => EE_Dependency_Map::load_from_cache, |
|
500 | - 'EEM_Message_Template' => EE_Dependency_Map::load_from_cache, |
|
501 | - ), |
|
502 | - 'EE_Message_To_Generate_From_Request' => array( |
|
503 | - 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
504 | - 'EE_Request_Handler' => EE_Dependency_Map::load_from_cache, |
|
505 | - ), |
|
506 | - 'EventEspresso\core\services\commands\CommandBus' => array( |
|
507 | - 'EventEspresso\core\services\commands\CommandHandlerManager' => EE_Dependency_Map::load_from_cache, |
|
508 | - ), |
|
509 | - 'EventEspresso\services\commands\CommandHandler' => array( |
|
510 | - 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
511 | - 'CommandBusInterface' => EE_Dependency_Map::load_from_cache, |
|
512 | - ), |
|
513 | - 'EventEspresso\core\services\commands\CommandHandlerManager' => array( |
|
514 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
515 | - ), |
|
516 | - 'EventEspresso\core\services\commands\CompositeCommandHandler' => array( |
|
517 | - 'EventEspresso\core\services\commands\CommandBus' => EE_Dependency_Map::load_from_cache, |
|
518 | - 'EventEspresso\core\services\commands\CommandFactory' => EE_Dependency_Map::load_from_cache, |
|
519 | - ), |
|
520 | - 'EventEspresso\core\services\commands\CommandFactory' => array( |
|
521 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
522 | - ), |
|
523 | - 'EventEspresso\core\services\commands\middleware\CapChecker' => array( |
|
524 | - 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => EE_Dependency_Map::load_from_cache, |
|
525 | - ), |
|
526 | - 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => array( |
|
527 | - 'EE_Capabilities' => EE_Dependency_Map::load_from_cache, |
|
528 | - ), |
|
529 | - 'EventEspresso\core\domain\services\capabilities\RegistrationsCapChecker' => array( |
|
530 | - 'EE_Capabilities' => EE_Dependency_Map::load_from_cache, |
|
531 | - ), |
|
532 | - 'EventEspresso\core\services\commands\registration\CreateRegistrationCommandHandler' => array( |
|
533 | - 'EventEspresso\core\domain\services\registration\CreateRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
534 | - ), |
|
535 | - 'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommandHandler' => array( |
|
536 | - 'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
537 | - ), |
|
538 | - 'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommandHandler' => array( |
|
539 | - 'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
540 | - ), |
|
541 | - 'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler' => array( |
|
542 | - 'EventEspresso\core\domain\services\registration\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
543 | - ), |
|
544 | - 'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler' => array( |
|
545 | - 'EventEspresso\core\domain\services\registration\UpdateRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
546 | - ), |
|
547 | - 'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommandHandler' => array( |
|
548 | - 'EventEspresso\core\domain\services\ticket\CreateTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
549 | - ), |
|
550 | - 'EventEspresso\core\services\commands\ticket\CancelTicketLineItemCommandHandler' => array( |
|
551 | - 'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
552 | - ), |
|
553 | - 'EventEspresso\core\domain\services\registration\CancelRegistrationService' => array( |
|
554 | - 'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
555 | - ), |
|
556 | - 'EventEspresso\core\services\commands\attendee\CreateAttendeeCommandHandler' => array( |
|
557 | - 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
558 | - ), |
|
559 | - 'EventEspresso\core\services\database\TableManager' => array( |
|
560 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
561 | - ), |
|
562 | - 'EE_Data_Migration_Class_Base' => array( |
|
563 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
564 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
565 | - ), |
|
566 | - 'EE_DMS_Core_4_1_0' => array( |
|
567 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
568 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
569 | - ), |
|
570 | - 'EE_DMS_Core_4_2_0' => array( |
|
571 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
572 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
573 | - ), |
|
574 | - 'EE_DMS_Core_4_3_0' => array( |
|
575 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
576 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
577 | - ), |
|
578 | - 'EE_DMS_Core_4_4_0' => array( |
|
579 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
580 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
581 | - ), |
|
582 | - 'EE_DMS_Core_4_5_0' => array( |
|
583 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
584 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
585 | - ), |
|
586 | - 'EE_DMS_Core_4_6_0' => array( |
|
587 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
588 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
589 | - ), |
|
590 | - 'EE_DMS_Core_4_7_0' => array( |
|
591 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
592 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
593 | - ), |
|
594 | - 'EE_DMS_Core_4_8_0' => array( |
|
595 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
596 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
597 | - ), |
|
598 | - 'EE_DMS_Core_4_9_0' => array( |
|
599 | - 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
600 | - 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
601 | - ), |
|
602 | - 'EventEspresso\core\services\assets\I18nRegistry' => array( |
|
603 | - array(), |
|
604 | - 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
605 | - ), |
|
606 | - 'EventEspresso\core\services\assets\Registry' => array( |
|
607 | - 'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_from_cache, |
|
608 | - 'EventEspresso\core\services\assets\I18nRegistry' => EE_Dependency_Map::load_from_cache, |
|
609 | - ), |
|
610 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoCancelled' => array( |
|
611 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
612 | - ), |
|
613 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoCheckout' => array( |
|
614 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
615 | - ), |
|
616 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoEventAttendees' => array( |
|
617 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
618 | - ), |
|
619 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoEvents' => array( |
|
620 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
621 | - ), |
|
622 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoThankYou' => array( |
|
623 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
624 | - ), |
|
625 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoTicketSelector' => array( |
|
626 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
627 | - ), |
|
628 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoTxnPage' => array( |
|
629 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
630 | - ), |
|
631 | - 'EventEspresso\core\services\cache\BasicCacheManager' => array( |
|
632 | - 'EventEspresso\core\services\cache\TransientCacheStorage' => EE_Dependency_Map::load_from_cache, |
|
633 | - ), |
|
634 | - 'EventEspresso\core\services\cache\PostRelatedCacheManager' => array( |
|
635 | - 'EventEspresso\core\services\cache\TransientCacheStorage' => EE_Dependency_Map::load_from_cache, |
|
636 | - ), |
|
637 | - 'EventEspresso\core\domain\services\validation\email\EmailValidationService' => array( |
|
638 | - 'EE_Registration_Config' => EE_Dependency_Map::load_from_cache, |
|
639 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
640 | - ), |
|
641 | - 'EventEspresso\core\domain\values\EmailAddress' => array( |
|
642 | - null, |
|
643 | - 'EventEspresso\core\domain\services\validation\email\EmailValidationService' => EE_Dependency_Map::load_from_cache, |
|
644 | - ), |
|
645 | - 'EventEspresso\core\services\orm\ModelFieldFactory' => array( |
|
646 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
647 | - ), |
|
648 | - 'LEGACY_MODELS' => array( |
|
649 | - null, |
|
650 | - 'EventEspresso\core\services\database\ModelFieldFactory' => EE_Dependency_Map::load_from_cache, |
|
651 | - ), |
|
652 | - 'EE_Module_Request_Router' => array( |
|
653 | - 'EE_Request' => EE_Dependency_Map::load_from_cache, |
|
654 | - ), |
|
655 | - 'EE_Registration_Processor' => array( |
|
656 | - 'EE_Request' => EE_Dependency_Map::load_from_cache, |
|
657 | - ), |
|
658 | - 'EventEspresso\core\services\notifications\PersistentAdminNoticeManager' => array( |
|
659 | - null, |
|
660 | - 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => EE_Dependency_Map::load_from_cache, |
|
661 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
662 | - ), |
|
663 | - 'EventEspresso\core\services\licensing\LicenseService' => array( |
|
664 | - 'EventEspresso\core\domain\services\pue\Stats' => EE_Dependency_Map::load_from_cache, |
|
665 | - 'EventEspresso\core\domain\services\pue\Config' => EE_Dependency_Map::load_from_cache, |
|
666 | - ), |
|
667 | - 'EE_Admin_Transactions_List_Table' => array( |
|
668 | - null, |
|
669 | - 'EventEspresso\core\domain\values\session\SessionLifespan' => EE_Dependency_Map::load_from_cache, |
|
670 | - ), |
|
671 | - 'EventEspresso\core\domain\services\pue\Stats' => array( |
|
672 | - 'EventEspresso\core\domain\services\pue\Config' => EE_Dependency_Map::load_from_cache, |
|
673 | - 'EE_Maintenance_Mode' => EE_Dependency_Map::load_from_cache, |
|
674 | - 'EventEspresso\core\domain\services\pue\StatsGatherer' => EE_Dependency_Map::load_from_cache, |
|
675 | - ), |
|
676 | - 'EventEspresso\core\domain\services\pue\Config' => array( |
|
677 | - 'EE_Network_Config' => EE_Dependency_Map::load_from_cache, |
|
678 | - 'EE_Config' => EE_Dependency_Map::load_from_cache, |
|
679 | - ), |
|
680 | - 'EventEspresso\core\domain\services\pue\StatsGatherer' => array( |
|
681 | - 'EEM_Payment_Method' => EE_Dependency_Map::load_from_cache, |
|
682 | - 'EEM_Event' => EE_Dependency_Map::load_from_cache, |
|
683 | - 'EEM_Datetime' => EE_Dependency_Map::load_from_cache, |
|
684 | - 'EEM_Ticket' => EE_Dependency_Map::load_from_cache, |
|
685 | - 'EEM_Registration' => EE_Dependency_Map::load_from_cache, |
|
686 | - 'EEM_Transaction' => EE_Dependency_Map::load_from_cache, |
|
687 | - 'EE_Config' => EE_Dependency_Map::load_from_cache, |
|
688 | - ), |
|
689 | - 'EventEspresso\core\domain\services\admin\ExitModal' => array( |
|
690 | - 'EventEspresso\core\services\assets\Registry' => EE_Dependency_Map::load_from_cache, |
|
691 | - ), |
|
692 | - 'EventEspresso\core\domain\services\admin\PluginUpsells' => array( |
|
693 | - 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
694 | - ), |
|
695 | - 'EventEspresso\caffeinated\modules\recaptcha_invisible\InvisibleRecaptcha' => array( |
|
696 | - 'EE_Registration_Config' => EE_Dependency_Map::load_from_cache, |
|
697 | - 'EE_Session' => EE_Dependency_Map::load_from_cache, |
|
698 | - ), |
|
699 | - 'EventEspresso\caffeinated\modules\recaptcha_invisible\RecaptchaAdminSettings' => array( |
|
700 | - 'EE_Registration_Config' => EE_Dependency_Map::load_from_cache, |
|
701 | - ), |
|
702 | - 'EventEspresso\modules\ticket_selector\ProcessTicketSelector' => array( |
|
703 | - 'EE_Core_Config' => EE_Dependency_Map::load_from_cache, |
|
704 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
705 | - 'EE_Session' => EE_Dependency_Map::load_from_cache, |
|
706 | - 'EEM_Ticket' => EE_Dependency_Map::load_from_cache, |
|
707 | - 'EventEspresso\modules\ticket_selector\TicketDatetimeAvailabilityTracker' => EE_Dependency_Map::load_from_cache, |
|
708 | - ), |
|
709 | - 'EventEspresso\modules\ticket_selector\TicketDatetimeAvailabilityTracker' => array( |
|
710 | - 'EEM_Datetime' => EE_Dependency_Map::load_from_cache, |
|
711 | - ), |
|
712 | - 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' => array( |
|
713 | - 'EE_Core_Config' => EE_Dependency_Map::load_from_cache, |
|
714 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
715 | - ), |
|
716 | - 'EventEspresso\core\domain\services\custom_post_types\RegisterCustomPostTypes' => array( |
|
717 | - 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' => EE_Dependency_Map::load_from_cache, |
|
718 | - ), |
|
719 | - 'EventEspresso\core\domain\services\custom_post_types\RegisterCustomTaxonomies' => array( |
|
720 | - 'EventEspresso\core\domain\entities\custom_post_types\CustomTaxonomyDefinitions' => EE_Dependency_Map::load_from_cache, |
|
721 | - ), |
|
722 | - 'EE_CPT_Strategy' => array( |
|
723 | - 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' => EE_Dependency_Map::load_from_cache, |
|
724 | - 'EventEspresso\core\domain\entities\custom_post_types\CustomTaxonomyDefinitions' => EE_Dependency_Map::load_from_cache, |
|
725 | - ), |
|
726 | - 'EventEspresso\core\services\loaders\ObjectIdentifier' => array( |
|
727 | - 'EventEspresso\core\services\loaders\ClassInterfaceCache' => EE_Dependency_Map::load_from_cache, |
|
728 | - ), |
|
729 | - 'EventEspresso\core\domain\services\assets\CoreAssetManager' => array( |
|
730 | - 'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_from_cache, |
|
731 | - 'EE_Currency_Config' => EE_Dependency_Map::load_from_cache, |
|
732 | - 'EE_Template_Config' => EE_Dependency_Map::load_from_cache, |
|
733 | - 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
734 | - 'EventEspresso\core\services\assets\Registry' => EE_Dependency_Map::load_from_cache, |
|
735 | - ), |
|
736 | - 'EventEspresso\core\domain\services\admin\privacy\policy\PrivacyPolicy' => array( |
|
737 | - 'EEM_Payment_Method' => EE_Dependency_Map::load_from_cache, |
|
738 | - 'EventEspresso\core\domain\values\session\SessionLifespan' => EE_Dependency_Map::load_from_cache |
|
739 | - ), |
|
740 | - 'EventEspresso\core\domain\services\admin\privacy\export\ExportAttendee' => array( |
|
741 | - 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
742 | - ), |
|
743 | - 'EventEspresso\core\domain\services\admin\privacy\export\ExportAttendeeBillingData' => array( |
|
744 | - 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
745 | - 'EEM_Payment_Method' => EE_Dependency_Map::load_from_cache |
|
746 | - ), |
|
747 | - 'EventEspresso\core\domain\services\admin\privacy\export\ExportCheckins' => array( |
|
748 | - 'EEM_Checkin' => EE_Dependency_Map::load_from_cache, |
|
749 | - ), |
|
750 | - 'EventEspresso\core\domain\services\admin\privacy\export\ExportRegistration' => array( |
|
751 | - 'EEM_Registration' => EE_Dependency_Map::load_from_cache, |
|
752 | - ), |
|
753 | - 'EventEspresso\core\domain\services\admin\privacy\export\ExportTransaction' => array( |
|
754 | - 'EEM_Transaction' => EE_Dependency_Map::load_from_cache, |
|
755 | - ), |
|
756 | - 'EventEspresso\core\domain\services\admin\privacy\erasure\EraseAttendeeData' => array( |
|
757 | - 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
758 | - ), |
|
759 | - 'EventEspresso\core\domain\services\admin\privacy\erasure\EraseAnswers' => array( |
|
760 | - 'EEM_Answer' => EE_Dependency_Map::load_from_cache, |
|
761 | - 'EEM_Question' => EE_Dependency_Map::load_from_cache, |
|
762 | - ), |
|
763 | - 'EventEspresso\core\CPTs\CptQueryModifier' => array( |
|
764 | - null, |
|
765 | - null, |
|
766 | - null, |
|
767 | - 'EE_Request_Handler' => EE_Dependency_Map::load_from_cache, |
|
768 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
769 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
770 | - ), |
|
771 | - 'EventEspresso\core\domain\services\admin\privacy\forms\PrivacySettingsFormHandler' => array( |
|
772 | - 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
773 | - 'EE_Config' => EE_Dependency_Map::load_from_cache |
|
774 | - ), |
|
775 | - 'EventEspresso\core\services\editor\BlockRegistrationManager' => array( |
|
776 | - 'EventEspresso\core\services\assets\BlockAssetManagerCollection' => EE_Dependency_Map::load_from_cache, |
|
777 | - 'EventEspresso\core\domain\entities\editor\BlockCollection' => EE_Dependency_Map::load_from_cache, |
|
778 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationManager' => EE_Dependency_Map::load_from_cache, |
|
779 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
780 | - ), |
|
781 | - 'EventEspresso\core\domain\entities\editor\CoreBlocksAssetManager' => array( |
|
782 | - 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
783 | - 'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_from_cache, |
|
784 | - 'EventEspresso\core\services\assets\Registry' => EE_Dependency_Map::load_from_cache, |
|
785 | - ), |
|
786 | - 'EventEspresso\core\domain\entities\editor\blocks\EventAttendees' => array( |
|
787 | - 'EventEspresso\core\domain\entities\editor\CoreBlocksAssetManager' => self::load_from_cache, |
|
788 | - 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
789 | - 'EventEspresso\core\domain\entities\shortcodes\EspressoEventAttendees' => self::load_from_cache, |
|
790 | - ), |
|
791 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationDependencyResolver' => array( |
|
792 | - 'EventEspresso\core\services\container\Mirror' => EE_Dependency_Map::load_from_cache, |
|
793 | - 'EventEspresso\core\services\loaders\ClassInterfaceCache' => EE_Dependency_Map::load_from_cache, |
|
794 | - 'EE_Dependency_Map' => EE_Dependency_Map::load_from_cache, |
|
795 | - ), |
|
796 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationFactory' => array( |
|
797 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationDependencyResolver' => EE_Dependency_Map::load_from_cache, |
|
798 | - 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
799 | - ), |
|
800 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationManager' => array( |
|
801 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationCollection' => EE_Dependency_Map::load_from_cache, |
|
802 | - 'EventEspresso\core\services\route_match\RouteMatchSpecificationFactory' => EE_Dependency_Map::load_from_cache, |
|
803 | - ), |
|
804 | - ); |
|
805 | - } |
|
806 | - |
|
807 | - |
|
808 | - /** |
|
809 | - * Registers how core classes are loaded. |
|
810 | - * This can either be done by simply providing the name of one of the EE_Registry loader methods such as: |
|
811 | - * 'EE_Request_Handler' => 'load_core' |
|
812 | - * 'EE_Messages_Queue' => 'load_lib' |
|
813 | - * 'EEH_Debug_Tools' => 'load_helper' |
|
814 | - * or, if greater control is required, by providing a custom closure. For example: |
|
815 | - * 'Some_Class' => function () { |
|
816 | - * return new Some_Class(); |
|
817 | - * }, |
|
818 | - * This is required for instantiating dependencies |
|
819 | - * where an interface has been type hinted in a class constructor. For example: |
|
820 | - * 'Required_Interface' => function () { |
|
821 | - * return new A_Class_That_Implements_Required_Interface(); |
|
822 | - * }, |
|
823 | - */ |
|
824 | - protected function _register_core_class_loaders() |
|
825 | - { |
|
826 | - $this->_class_loaders = array( |
|
827 | - // load_core |
|
828 | - 'EE_Dependency_Map' => function () { |
|
829 | - return $this; |
|
830 | - }, |
|
831 | - 'EE_Capabilities' => 'load_core', |
|
832 | - 'EE_Encryption' => 'load_core', |
|
833 | - 'EE_Front_Controller' => 'load_core', |
|
834 | - 'EE_Module_Request_Router' => 'load_core', |
|
835 | - 'EE_Registry' => 'load_core', |
|
836 | - 'EE_Request' => function () { |
|
837 | - return $this->legacy_request; |
|
838 | - }, |
|
839 | - 'EventEspresso\core\services\request\Request' => function () { |
|
840 | - return $this->request; |
|
841 | - }, |
|
842 | - 'EventEspresso\core\services\request\Response' => function () { |
|
843 | - return $this->response; |
|
844 | - }, |
|
845 | - 'EE_Base' => 'load_core', |
|
846 | - 'EE_Request_Handler' => 'load_core', |
|
847 | - 'EE_Session' => 'load_core', |
|
848 | - 'EE_Cron_Tasks' => 'load_core', |
|
849 | - 'EE_System' => 'load_core', |
|
850 | - 'EE_Maintenance_Mode' => 'load_core', |
|
851 | - 'EE_Register_CPTs' => 'load_core', |
|
852 | - 'EE_Admin' => 'load_core', |
|
853 | - 'EE_CPT_Strategy' => 'load_core', |
|
854 | - // load_lib |
|
855 | - 'EE_Message_Resource_Manager' => 'load_lib', |
|
856 | - 'EE_Message_Type_Collection' => 'load_lib', |
|
857 | - 'EE_Message_Type_Collection_Loader' => 'load_lib', |
|
858 | - 'EE_Messenger_Collection' => 'load_lib', |
|
859 | - 'EE_Messenger_Collection_Loader' => 'load_lib', |
|
860 | - 'EE_Messages_Processor' => 'load_lib', |
|
861 | - 'EE_Message_Repository' => 'load_lib', |
|
862 | - 'EE_Messages_Queue' => 'load_lib', |
|
863 | - 'EE_Messages_Data_Handler_Collection' => 'load_lib', |
|
864 | - 'EE_Message_Template_Group_Collection' => 'load_lib', |
|
865 | - 'EE_Payment_Method_Manager' => 'load_lib', |
|
866 | - 'EE_Messages_Generator' => function () { |
|
867 | - return EE_Registry::instance()->load_lib( |
|
868 | - 'Messages_Generator', |
|
869 | - array(), |
|
870 | - false, |
|
871 | - false |
|
872 | - ); |
|
873 | - }, |
|
874 | - 'EE_Messages_Template_Defaults' => function ($arguments = array()) { |
|
875 | - return EE_Registry::instance()->load_lib( |
|
876 | - 'Messages_Template_Defaults', |
|
877 | - $arguments, |
|
878 | - false, |
|
879 | - false |
|
880 | - ); |
|
881 | - }, |
|
882 | - // load_helper |
|
883 | - 'EEH_Parse_Shortcodes' => function () { |
|
884 | - if (EE_Registry::instance()->load_helper('Parse_Shortcodes')) { |
|
885 | - return new EEH_Parse_Shortcodes(); |
|
886 | - } |
|
887 | - return null; |
|
888 | - }, |
|
889 | - 'EE_Template_Config' => function () { |
|
890 | - return EE_Config::instance()->template_settings; |
|
891 | - }, |
|
892 | - 'EE_Currency_Config' => function () { |
|
893 | - return EE_Config::instance()->currency; |
|
894 | - }, |
|
895 | - 'EE_Registration_Config' => function () { |
|
896 | - return EE_Config::instance()->registration; |
|
897 | - }, |
|
898 | - 'EE_Core_Config' => function () { |
|
899 | - return EE_Config::instance()->core; |
|
900 | - }, |
|
901 | - 'EventEspresso\core\services\loaders\Loader' => function () { |
|
902 | - return LoaderFactory::getLoader(); |
|
903 | - }, |
|
904 | - 'EE_Network_Config' => function () { |
|
905 | - return EE_Network_Config::instance(); |
|
906 | - }, |
|
907 | - 'EE_Config' => function () { |
|
908 | - return EE_Config::instance(); |
|
909 | - }, |
|
910 | - 'EventEspresso\core\domain\Domain' => function () { |
|
911 | - return DomainFactory::getEventEspressoCoreDomain(); |
|
912 | - }, |
|
913 | - 'EE_Admin_Config' => function () { |
|
914 | - return EE_Config::instance()->admin; |
|
915 | - }, |
|
916 | - ); |
|
917 | - } |
|
918 | - |
|
919 | - |
|
920 | - /** |
|
921 | - * can be used for supplying alternate names for classes, |
|
922 | - * or for connecting interface names to instantiable classes |
|
923 | - */ |
|
924 | - protected function _register_core_aliases() |
|
925 | - { |
|
926 | - $aliases = array( |
|
927 | - 'CommandBusInterface' => 'EventEspresso\core\services\commands\CommandBusInterface', |
|
928 | - 'EventEspresso\core\services\commands\CommandBusInterface' => 'EventEspresso\core\services\commands\CommandBus', |
|
929 | - 'CommandHandlerManagerInterface' => 'EventEspresso\core\services\commands\CommandHandlerManagerInterface', |
|
930 | - 'EventEspresso\core\services\commands\CommandHandlerManagerInterface' => 'EventEspresso\core\services\commands\CommandHandlerManager', |
|
931 | - 'CapChecker' => 'EventEspresso\core\services\commands\middleware\CapChecker', |
|
932 | - 'AddActionHook' => 'EventEspresso\core\services\commands\middleware\AddActionHook', |
|
933 | - 'CapabilitiesChecker' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker', |
|
934 | - 'CapabilitiesCheckerInterface' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface', |
|
935 | - 'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker', |
|
936 | - 'CreateRegistrationService' => 'EventEspresso\core\domain\services\registration\CreateRegistrationService', |
|
937 | - 'CreateRegistrationCommandHandler' => 'EventEspresso\core\services\commands\registration\CreateRegistrationCommand', |
|
938 | - 'CopyRegistrationDetailsCommandHandler' => 'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommand', |
|
939 | - 'CopyRegistrationPaymentsCommandHandler' => 'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommand', |
|
940 | - 'CancelRegistrationAndTicketLineItemCommandHandler' => 'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler', |
|
941 | - 'UpdateRegistrationAndTransactionAfterChangeCommandHandler' => 'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler', |
|
942 | - 'CreateTicketLineItemCommandHandler' => 'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommand', |
|
943 | - 'CreateTransactionCommandHandler' => 'EventEspresso\core\services\commands\transaction\CreateTransactionCommandHandler', |
|
944 | - 'CreateAttendeeCommandHandler' => 'EventEspresso\core\services\commands\attendee\CreateAttendeeCommandHandler', |
|
945 | - 'TableManager' => 'EventEspresso\core\services\database\TableManager', |
|
946 | - 'TableAnalysis' => 'EventEspresso\core\services\database\TableAnalysis', |
|
947 | - 'EspressoShortcode' => 'EventEspresso\core\services\shortcodes\EspressoShortcode', |
|
948 | - 'ShortcodeInterface' => 'EventEspresso\core\services\shortcodes\ShortcodeInterface', |
|
949 | - 'EventEspresso\core\services\shortcodes\ShortcodeInterface' => 'EventEspresso\core\services\shortcodes\EspressoShortcode', |
|
950 | - 'EventEspresso\core\services\cache\CacheStorageInterface' => 'EventEspresso\core\services\cache\TransientCacheStorage', |
|
951 | - 'LoaderInterface' => 'EventEspresso\core\services\loaders\LoaderInterface', |
|
952 | - 'EventEspresso\core\services\loaders\LoaderInterface' => 'EventEspresso\core\services\loaders\Loader', |
|
953 | - 'CommandFactoryInterface' => 'EventEspresso\core\services\commands\CommandFactoryInterface', |
|
954 | - 'EventEspresso\core\services\commands\CommandFactoryInterface' => 'EventEspresso\core\services\commands\CommandFactory', |
|
955 | - 'EmailValidatorInterface' => 'EventEspresso\core\domain\services\validation\email\EmailValidatorInterface', |
|
956 | - 'EventEspresso\core\domain\services\validation\email\EmailValidatorInterface' => 'EventEspresso\core\domain\services\validation\email\EmailValidationService', |
|
957 | - 'NoticeConverterInterface' => 'EventEspresso\core\services\notices\NoticeConverterInterface', |
|
958 | - 'EventEspresso\core\services\notices\NoticeConverterInterface' => 'EventEspresso\core\services\notices\ConvertNoticesToEeErrors', |
|
959 | - 'NoticesContainerInterface' => 'EventEspresso\core\services\notices\NoticesContainerInterface', |
|
960 | - 'EventEspresso\core\services\notices\NoticesContainerInterface' => 'EventEspresso\core\services\notices\NoticesContainer', |
|
961 | - 'EventEspresso\core\services\request\RequestInterface' => 'EventEspresso\core\services\request\Request', |
|
962 | - 'EventEspresso\core\services\request\ResponseInterface' => 'EventEspresso\core\services\request\Response', |
|
963 | - 'EventEspresso\core\domain\DomainInterface' => 'EventEspresso\core\domain\Domain', |
|
964 | - ); |
|
965 | - foreach ($aliases as $alias => $fqn) { |
|
966 | - if (is_array($fqn)) { |
|
967 | - foreach ($fqn as $class => $for_class) { |
|
968 | - $this->class_cache->addAlias($class, $alias, $for_class); |
|
969 | - } |
|
970 | - continue; |
|
971 | - } |
|
972 | - $this->class_cache->addAlias($fqn, $alias); |
|
973 | - } |
|
974 | - if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) { |
|
975 | - $this->class_cache->addAlias( |
|
976 | - 'EventEspresso\core\services\notices\ConvertNoticesToAdminNotices', |
|
977 | - 'EventEspresso\core\services\notices\NoticeConverterInterface' |
|
978 | - ); |
|
979 | - } |
|
980 | - } |
|
981 | - |
|
982 | - |
|
983 | - /** |
|
984 | - * This is used to reset the internal map and class_loaders to their original default state at the beginning of the |
|
985 | - * request Primarily used by unit tests. |
|
986 | - */ |
|
987 | - public function reset() |
|
988 | - { |
|
989 | - $this->_register_core_class_loaders(); |
|
990 | - $this->_register_core_dependencies(); |
|
991 | - } |
|
992 | - |
|
993 | - |
|
994 | - /** |
|
995 | - * PLZ NOTE: a better name for this method would be is_alias() |
|
996 | - * because it returns TRUE if the provided fully qualified name IS an alias |
|
997 | - * WHY? |
|
998 | - * Because if a class is type hinting for a concretion, |
|
999 | - * then why would we need to find another class to supply it? |
|
1000 | - * ie: if a class asks for `Fully/Qualified/Namespace/SpecificClassName`, |
|
1001 | - * then give it an instance of `Fully/Qualified/Namespace/SpecificClassName`. |
|
1002 | - * Don't go looking for some substitute. |
|
1003 | - * Whereas if a class is type hinting for an interface... |
|
1004 | - * then we need to find an actual class to use. |
|
1005 | - * So the interface IS the alias for some other FQN, |
|
1006 | - * and we need to find out if `Fully/Qualified/Namespace/SomeInterface` |
|
1007 | - * represents some other class. |
|
1008 | - * |
|
1009 | - * @deprecated 4.9.62.p |
|
1010 | - * @param string $fqn |
|
1011 | - * @param string $for_class |
|
1012 | - * @return bool |
|
1013 | - */ |
|
1014 | - public function has_alias($fqn = '', $for_class = '') |
|
1015 | - { |
|
1016 | - return $this->isAlias($fqn, $for_class); |
|
1017 | - } |
|
1018 | - |
|
1019 | - |
|
1020 | - /** |
|
1021 | - * PLZ NOTE: a better name for this method would be get_fqn_for_alias() |
|
1022 | - * because it returns a FQN for provided alias if one exists, otherwise returns the original $alias |
|
1023 | - * functions recursively, so that multiple aliases can be used to drill down to a FQN |
|
1024 | - * for example: |
|
1025 | - * if the following two entries were added to the _aliases array: |
|
1026 | - * array( |
|
1027 | - * 'interface_alias' => 'some\namespace\interface' |
|
1028 | - * 'some\namespace\interface' => 'some\namespace\classname' |
|
1029 | - * ) |
|
1030 | - * then one could use EE_Registry::instance()->create( 'interface_alias' ) |
|
1031 | - * to load an instance of 'some\namespace\classname' |
|
1032 | - * |
|
1033 | - * @deprecated 4.9.62.p |
|
1034 | - * @param string $alias |
|
1035 | - * @param string $for_class |
|
1036 | - * @return string |
|
1037 | - */ |
|
1038 | - public function get_alias($alias = '', $for_class = '') |
|
1039 | - { |
|
1040 | - return $this->getFqnForAlias($alias, $for_class); |
|
1041 | - } |
|
23 | + /** |
|
24 | + * This means that the requested class dependency is not present in the dependency map |
|
25 | + */ |
|
26 | + const not_registered = 0; |
|
27 | + |
|
28 | + /** |
|
29 | + * This instructs class loaders to ALWAYS return a newly instantiated object for the requested class. |
|
30 | + */ |
|
31 | + const load_new_object = 1; |
|
32 | + |
|
33 | + /** |
|
34 | + * This instructs class loaders to return a previously instantiated and cached object for the requested class. |
|
35 | + * IF a previously instantiated object does not exist, a new one will be created and added to the cache. |
|
36 | + */ |
|
37 | + const load_from_cache = 2; |
|
38 | + |
|
39 | + /** |
|
40 | + * When registering a dependency, |
|
41 | + * this indicates to keep any existing dependencies that already exist, |
|
42 | + * and simply discard any new dependencies declared in the incoming data |
|
43 | + */ |
|
44 | + const KEEP_EXISTING_DEPENDENCIES = 0; |
|
45 | + |
|
46 | + /** |
|
47 | + * When registering a dependency, |
|
48 | + * this indicates to overwrite any existing dependencies that already exist using the incoming data |
|
49 | + */ |
|
50 | + const OVERWRITE_DEPENDENCIES = 1; |
|
51 | + |
|
52 | + |
|
53 | + /** |
|
54 | + * @type EE_Dependency_Map $_instance |
|
55 | + */ |
|
56 | + protected static $_instance; |
|
57 | + |
|
58 | + /** |
|
59 | + * @var ClassInterfaceCache $class_cache |
|
60 | + */ |
|
61 | + private $class_cache; |
|
62 | + |
|
63 | + /** |
|
64 | + * @type RequestInterface $request |
|
65 | + */ |
|
66 | + protected $request; |
|
67 | + |
|
68 | + /** |
|
69 | + * @type LegacyRequestInterface $legacy_request |
|
70 | + */ |
|
71 | + protected $legacy_request; |
|
72 | + |
|
73 | + /** |
|
74 | + * @type ResponseInterface $response |
|
75 | + */ |
|
76 | + protected $response; |
|
77 | + |
|
78 | + /** |
|
79 | + * @type LoaderInterface $loader |
|
80 | + */ |
|
81 | + protected $loader; |
|
82 | + |
|
83 | + /** |
|
84 | + * @type array $_dependency_map |
|
85 | + */ |
|
86 | + protected $_dependency_map = array(); |
|
87 | + |
|
88 | + /** |
|
89 | + * @type array $_class_loaders |
|
90 | + */ |
|
91 | + protected $_class_loaders = array(); |
|
92 | + |
|
93 | + |
|
94 | + /** |
|
95 | + * EE_Dependency_Map constructor. |
|
96 | + * |
|
97 | + * @param ClassInterfaceCache $class_cache |
|
98 | + */ |
|
99 | + protected function __construct(ClassInterfaceCache $class_cache) |
|
100 | + { |
|
101 | + $this->class_cache = $class_cache; |
|
102 | + do_action('EE_Dependency_Map____construct', $this); |
|
103 | + } |
|
104 | + |
|
105 | + |
|
106 | + /** |
|
107 | + * @return void |
|
108 | + */ |
|
109 | + public function initialize() |
|
110 | + { |
|
111 | + $this->_register_core_dependencies(); |
|
112 | + $this->_register_core_class_loaders(); |
|
113 | + $this->_register_core_aliases(); |
|
114 | + } |
|
115 | + |
|
116 | + |
|
117 | + /** |
|
118 | + * @singleton method used to instantiate class object |
|
119 | + * @param ClassInterfaceCache|null $class_cache |
|
120 | + * @return EE_Dependency_Map |
|
121 | + */ |
|
122 | + public static function instance(ClassInterfaceCache $class_cache = null) |
|
123 | + { |
|
124 | + // check if class object is instantiated, and instantiated properly |
|
125 | + if (! self::$_instance instanceof EE_Dependency_Map |
|
126 | + && $class_cache instanceof ClassInterfaceCache |
|
127 | + ) { |
|
128 | + self::$_instance = new EE_Dependency_Map($class_cache); |
|
129 | + } |
|
130 | + return self::$_instance; |
|
131 | + } |
|
132 | + |
|
133 | + |
|
134 | + /** |
|
135 | + * @param RequestInterface $request |
|
136 | + */ |
|
137 | + public function setRequest(RequestInterface $request) |
|
138 | + { |
|
139 | + $this->request = $request; |
|
140 | + } |
|
141 | + |
|
142 | + |
|
143 | + /** |
|
144 | + * @param LegacyRequestInterface $legacy_request |
|
145 | + */ |
|
146 | + public function setLegacyRequest(LegacyRequestInterface $legacy_request) |
|
147 | + { |
|
148 | + $this->legacy_request = $legacy_request; |
|
149 | + } |
|
150 | + |
|
151 | + |
|
152 | + /** |
|
153 | + * @param ResponseInterface $response |
|
154 | + */ |
|
155 | + public function setResponse(ResponseInterface $response) |
|
156 | + { |
|
157 | + $this->response = $response; |
|
158 | + } |
|
159 | + |
|
160 | + |
|
161 | + /** |
|
162 | + * @param LoaderInterface $loader |
|
163 | + */ |
|
164 | + public function setLoader(LoaderInterface $loader) |
|
165 | + { |
|
166 | + $this->loader = $loader; |
|
167 | + } |
|
168 | + |
|
169 | + |
|
170 | + /** |
|
171 | + * @param string $class |
|
172 | + * @param array $dependencies |
|
173 | + * @param int $overwrite |
|
174 | + * @return bool |
|
175 | + */ |
|
176 | + public static function register_dependencies( |
|
177 | + $class, |
|
178 | + array $dependencies, |
|
179 | + $overwrite = EE_Dependency_Map::KEEP_EXISTING_DEPENDENCIES |
|
180 | + ) { |
|
181 | + return self::$_instance->registerDependencies($class, $dependencies, $overwrite); |
|
182 | + } |
|
183 | + |
|
184 | + |
|
185 | + /** |
|
186 | + * Assigns an array of class names and corresponding load sources (new or cached) |
|
187 | + * to the class specified by the first parameter. |
|
188 | + * IMPORTANT !!! |
|
189 | + * The order of elements in the incoming $dependencies array MUST match |
|
190 | + * the order of the constructor parameters for the class in question. |
|
191 | + * This is especially important when overriding any existing dependencies that are registered. |
|
192 | + * the third parameter controls whether any duplicate dependencies are overwritten or not. |
|
193 | + * |
|
194 | + * @param string $class |
|
195 | + * @param array $dependencies |
|
196 | + * @param int $overwrite |
|
197 | + * @return bool |
|
198 | + */ |
|
199 | + public function registerDependencies( |
|
200 | + $class, |
|
201 | + array $dependencies, |
|
202 | + $overwrite = EE_Dependency_Map::KEEP_EXISTING_DEPENDENCIES |
|
203 | + ) { |
|
204 | + $class = trim($class, '\\'); |
|
205 | + $registered = false; |
|
206 | + if (empty(self::$_instance->_dependency_map[ $class ])) { |
|
207 | + self::$_instance->_dependency_map[ $class ] = array(); |
|
208 | + } |
|
209 | + // we need to make sure that any aliases used when registering a dependency |
|
210 | + // get resolved to the correct class name |
|
211 | + foreach ($dependencies as $dependency => $load_source) { |
|
212 | + $alias = self::$_instance->getFqnForAlias($dependency); |
|
213 | + if ($overwrite === EE_Dependency_Map::OVERWRITE_DEPENDENCIES |
|
214 | + || ! isset(self::$_instance->_dependency_map[ $class ][ $alias ]) |
|
215 | + ) { |
|
216 | + unset($dependencies[ $dependency ]); |
|
217 | + $dependencies[ $alias ] = $load_source; |
|
218 | + $registered = true; |
|
219 | + } |
|
220 | + } |
|
221 | + // now add our two lists of dependencies together. |
|
222 | + // using Union (+=) favours the arrays in precedence from left to right, |
|
223 | + // so $dependencies is NOT overwritten because it is listed first |
|
224 | + // ie: with A = B + C, entries in B take precedence over duplicate entries in C |
|
225 | + // Union is way faster than array_merge() but should be used with caution... |
|
226 | + // especially with numerically indexed arrays |
|
227 | + $dependencies += self::$_instance->_dependency_map[ $class ]; |
|
228 | + // now we need to ensure that the resulting dependencies |
|
229 | + // array only has the entries that are required for the class |
|
230 | + // so first count how many dependencies were originally registered for the class |
|
231 | + $dependency_count = count(self::$_instance->_dependency_map[ $class ]); |
|
232 | + // if that count is non-zero (meaning dependencies were already registered) |
|
233 | + self::$_instance->_dependency_map[ $class ] = $dependency_count |
|
234 | + // then truncate the final array to match that count |
|
235 | + ? array_slice($dependencies, 0, $dependency_count) |
|
236 | + // otherwise just take the incoming array because nothing previously existed |
|
237 | + : $dependencies; |
|
238 | + return $registered; |
|
239 | + } |
|
240 | + |
|
241 | + |
|
242 | + /** |
|
243 | + * @param string $class_name |
|
244 | + * @param string $loader |
|
245 | + * @return bool |
|
246 | + * @throws DomainException |
|
247 | + */ |
|
248 | + public static function register_class_loader($class_name, $loader = 'load_core') |
|
249 | + { |
|
250 | + if (! $loader instanceof Closure && strpos($class_name, '\\') !== false) { |
|
251 | + throw new DomainException( |
|
252 | + esc_html__('Don\'t use class loaders for FQCNs.', 'event_espresso') |
|
253 | + ); |
|
254 | + } |
|
255 | + // check that loader is callable or method starts with "load_" and exists in EE_Registry |
|
256 | + if (! is_callable($loader) |
|
257 | + && ( |
|
258 | + strpos($loader, 'load_') !== 0 |
|
259 | + || ! method_exists('EE_Registry', $loader) |
|
260 | + ) |
|
261 | + ) { |
|
262 | + throw new DomainException( |
|
263 | + sprintf( |
|
264 | + esc_html__( |
|
265 | + '"%1$s" is not a valid loader method on EE_Registry.', |
|
266 | + 'event_espresso' |
|
267 | + ), |
|
268 | + $loader |
|
269 | + ) |
|
270 | + ); |
|
271 | + } |
|
272 | + $class_name = self::$_instance->getFqnForAlias($class_name); |
|
273 | + if (! isset(self::$_instance->_class_loaders[ $class_name ])) { |
|
274 | + self::$_instance->_class_loaders[ $class_name ] = $loader; |
|
275 | + return true; |
|
276 | + } |
|
277 | + return false; |
|
278 | + } |
|
279 | + |
|
280 | + |
|
281 | + /** |
|
282 | + * @return array |
|
283 | + */ |
|
284 | + public function dependency_map() |
|
285 | + { |
|
286 | + return $this->_dependency_map; |
|
287 | + } |
|
288 | + |
|
289 | + |
|
290 | + /** |
|
291 | + * returns TRUE if dependency map contains a listing for the provided class name |
|
292 | + * |
|
293 | + * @param string $class_name |
|
294 | + * @return boolean |
|
295 | + */ |
|
296 | + public function has($class_name = '') |
|
297 | + { |
|
298 | + // all legacy models have the same dependencies |
|
299 | + if (strpos($class_name, 'EEM_') === 0) { |
|
300 | + $class_name = 'LEGACY_MODELS'; |
|
301 | + } |
|
302 | + return isset($this->_dependency_map[ $class_name ]) ? true : false; |
|
303 | + } |
|
304 | + |
|
305 | + |
|
306 | + /** |
|
307 | + * returns TRUE if dependency map contains a listing for the provided class name AND dependency |
|
308 | + * |
|
309 | + * @param string $class_name |
|
310 | + * @param string $dependency |
|
311 | + * @return bool |
|
312 | + */ |
|
313 | + public function has_dependency_for_class($class_name = '', $dependency = '') |
|
314 | + { |
|
315 | + // all legacy models have the same dependencies |
|
316 | + if (strpos($class_name, 'EEM_') === 0) { |
|
317 | + $class_name = 'LEGACY_MODELS'; |
|
318 | + } |
|
319 | + $dependency = $this->getFqnForAlias($dependency, $class_name); |
|
320 | + return isset($this->_dependency_map[ $class_name ][ $dependency ]) |
|
321 | + ? true |
|
322 | + : false; |
|
323 | + } |
|
324 | + |
|
325 | + |
|
326 | + /** |
|
327 | + * returns loading strategy for whether a previously cached dependency should be loaded or a new instance returned |
|
328 | + * |
|
329 | + * @param string $class_name |
|
330 | + * @param string $dependency |
|
331 | + * @return int |
|
332 | + */ |
|
333 | + public function loading_strategy_for_class_dependency($class_name = '', $dependency = '') |
|
334 | + { |
|
335 | + // all legacy models have the same dependencies |
|
336 | + if (strpos($class_name, 'EEM_') === 0) { |
|
337 | + $class_name = 'LEGACY_MODELS'; |
|
338 | + } |
|
339 | + $dependency = $this->getFqnForAlias($dependency); |
|
340 | + return $this->has_dependency_for_class($class_name, $dependency) |
|
341 | + ? $this->_dependency_map[ $class_name ][ $dependency ] |
|
342 | + : EE_Dependency_Map::not_registered; |
|
343 | + } |
|
344 | + |
|
345 | + |
|
346 | + /** |
|
347 | + * @param string $class_name |
|
348 | + * @return string | Closure |
|
349 | + */ |
|
350 | + public function class_loader($class_name) |
|
351 | + { |
|
352 | + // all legacy models use load_model() |
|
353 | + if (strpos($class_name, 'EEM_') === 0) { |
|
354 | + return 'load_model'; |
|
355 | + } |
|
356 | + // EE_CPT_*_Strategy classes like EE_CPT_Event_Strategy, EE_CPT_Venue_Strategy, etc |
|
357 | + // perform strpos() first to avoid loading regex every time we load a class |
|
358 | + if (strpos($class_name, 'EE_CPT_') === 0 |
|
359 | + && preg_match('/^EE_CPT_([a-zA-Z]+)_Strategy$/', $class_name) |
|
360 | + ) { |
|
361 | + return 'load_core'; |
|
362 | + } |
|
363 | + $class_name = $this->getFqnForAlias($class_name); |
|
364 | + return isset($this->_class_loaders[ $class_name ]) ? $this->_class_loaders[ $class_name ] : ''; |
|
365 | + } |
|
366 | + |
|
367 | + |
|
368 | + /** |
|
369 | + * @return array |
|
370 | + */ |
|
371 | + public function class_loaders() |
|
372 | + { |
|
373 | + return $this->_class_loaders; |
|
374 | + } |
|
375 | + |
|
376 | + |
|
377 | + /** |
|
378 | + * adds an alias for a classname |
|
379 | + * |
|
380 | + * @param string $fqcn the class name that should be used (concrete class to replace interface) |
|
381 | + * @param string $alias the class name that would be type hinted for (abstract parent or interface) |
|
382 | + * @param string $for_class the class that has the dependency (is type hinting for the interface) |
|
383 | + */ |
|
384 | + public function add_alias($fqcn, $alias, $for_class = '') |
|
385 | + { |
|
386 | + $this->class_cache->addAlias($fqcn, $alias, $for_class); |
|
387 | + } |
|
388 | + |
|
389 | + |
|
390 | + /** |
|
391 | + * Returns TRUE if the provided fully qualified name IS an alias |
|
392 | + * WHY? |
|
393 | + * Because if a class is type hinting for a concretion, |
|
394 | + * then why would we need to find another class to supply it? |
|
395 | + * ie: if a class asks for `Fully/Qualified/Namespace/SpecificClassName`, |
|
396 | + * then give it an instance of `Fully/Qualified/Namespace/SpecificClassName`. |
|
397 | + * Don't go looking for some substitute. |
|
398 | + * Whereas if a class is type hinting for an interface... |
|
399 | + * then we need to find an actual class to use. |
|
400 | + * So the interface IS the alias for some other FQN, |
|
401 | + * and we need to find out if `Fully/Qualified/Namespace/SomeInterface` |
|
402 | + * represents some other class. |
|
403 | + * |
|
404 | + * @param string $fqn |
|
405 | + * @param string $for_class |
|
406 | + * @return bool |
|
407 | + */ |
|
408 | + public function isAlias($fqn = '', $for_class = '') |
|
409 | + { |
|
410 | + return $this->class_cache->isAlias($fqn, $for_class); |
|
411 | + } |
|
412 | + |
|
413 | + |
|
414 | + /** |
|
415 | + * Returns a FQN for provided alias if one exists, otherwise returns the original $alias |
|
416 | + * functions recursively, so that multiple aliases can be used to drill down to a FQN |
|
417 | + * for example: |
|
418 | + * if the following two entries were added to the _aliases array: |
|
419 | + * array( |
|
420 | + * 'interface_alias' => 'some\namespace\interface' |
|
421 | + * 'some\namespace\interface' => 'some\namespace\classname' |
|
422 | + * ) |
|
423 | + * then one could use EE_Registry::instance()->create( 'interface_alias' ) |
|
424 | + * to load an instance of 'some\namespace\classname' |
|
425 | + * |
|
426 | + * @param string $alias |
|
427 | + * @param string $for_class |
|
428 | + * @return string |
|
429 | + */ |
|
430 | + public function getFqnForAlias($alias = '', $for_class = '') |
|
431 | + { |
|
432 | + return (string) $this->class_cache->getFqnForAlias($alias, $for_class); |
|
433 | + } |
|
434 | + |
|
435 | + |
|
436 | + /** |
|
437 | + * Registers the core dependencies and whether a previously instantiated object should be loaded from the cache, |
|
438 | + * if one exists, or whether a new object should be generated every time the requested class is loaded. |
|
439 | + * This is done by using the following class constants: |
|
440 | + * EE_Dependency_Map::load_from_cache - loads previously instantiated object |
|
441 | + * EE_Dependency_Map::load_new_object - generates a new object every time |
|
442 | + */ |
|
443 | + protected function _register_core_dependencies() |
|
444 | + { |
|
445 | + $this->_dependency_map = array( |
|
446 | + 'EE_Request_Handler' => array( |
|
447 | + 'EE_Request' => EE_Dependency_Map::load_from_cache, |
|
448 | + ), |
|
449 | + 'EE_System' => array( |
|
450 | + 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
451 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
452 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
453 | + 'EE_Maintenance_Mode' => EE_Dependency_Map::load_from_cache, |
|
454 | + ), |
|
455 | + 'EE_Session' => array( |
|
456 | + 'EventEspresso\core\services\cache\TransientCacheStorage' => EE_Dependency_Map::load_from_cache, |
|
457 | + 'EventEspresso\core\domain\values\session\SessionLifespan' => EE_Dependency_Map::load_from_cache, |
|
458 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
459 | + 'EE_Encryption' => EE_Dependency_Map::load_from_cache, |
|
460 | + ), |
|
461 | + 'EE_Cart' => array( |
|
462 | + 'EE_Session' => EE_Dependency_Map::load_from_cache, |
|
463 | + ), |
|
464 | + 'EE_Front_Controller' => array( |
|
465 | + 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
466 | + 'EE_Request_Handler' => EE_Dependency_Map::load_from_cache, |
|
467 | + 'EE_Module_Request_Router' => EE_Dependency_Map::load_from_cache, |
|
468 | + ), |
|
469 | + 'EE_Messenger_Collection_Loader' => array( |
|
470 | + 'EE_Messenger_Collection' => EE_Dependency_Map::load_new_object, |
|
471 | + ), |
|
472 | + 'EE_Message_Type_Collection_Loader' => array( |
|
473 | + 'EE_Message_Type_Collection' => EE_Dependency_Map::load_new_object, |
|
474 | + ), |
|
475 | + 'EE_Message_Resource_Manager' => array( |
|
476 | + 'EE_Messenger_Collection_Loader' => EE_Dependency_Map::load_new_object, |
|
477 | + 'EE_Message_Type_Collection_Loader' => EE_Dependency_Map::load_new_object, |
|
478 | + 'EEM_Message_Template_Group' => EE_Dependency_Map::load_from_cache, |
|
479 | + ), |
|
480 | + 'EE_Message_Factory' => array( |
|
481 | + 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
482 | + ), |
|
483 | + 'EE_messages' => array( |
|
484 | + 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
485 | + ), |
|
486 | + 'EE_Messages_Generator' => array( |
|
487 | + 'EE_Messages_Queue' => EE_Dependency_Map::load_new_object, |
|
488 | + 'EE_Messages_Data_Handler_Collection' => EE_Dependency_Map::load_new_object, |
|
489 | + 'EE_Message_Template_Group_Collection' => EE_Dependency_Map::load_new_object, |
|
490 | + 'EEH_Parse_Shortcodes' => EE_Dependency_Map::load_from_cache, |
|
491 | + ), |
|
492 | + 'EE_Messages_Processor' => array( |
|
493 | + 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
494 | + ), |
|
495 | + 'EE_Messages_Queue' => array( |
|
496 | + 'EE_Message_Repository' => EE_Dependency_Map::load_new_object, |
|
497 | + ), |
|
498 | + 'EE_Messages_Template_Defaults' => array( |
|
499 | + 'EEM_Message_Template_Group' => EE_Dependency_Map::load_from_cache, |
|
500 | + 'EEM_Message_Template' => EE_Dependency_Map::load_from_cache, |
|
501 | + ), |
|
502 | + 'EE_Message_To_Generate_From_Request' => array( |
|
503 | + 'EE_Message_Resource_Manager' => EE_Dependency_Map::load_from_cache, |
|
504 | + 'EE_Request_Handler' => EE_Dependency_Map::load_from_cache, |
|
505 | + ), |
|
506 | + 'EventEspresso\core\services\commands\CommandBus' => array( |
|
507 | + 'EventEspresso\core\services\commands\CommandHandlerManager' => EE_Dependency_Map::load_from_cache, |
|
508 | + ), |
|
509 | + 'EventEspresso\services\commands\CommandHandler' => array( |
|
510 | + 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
511 | + 'CommandBusInterface' => EE_Dependency_Map::load_from_cache, |
|
512 | + ), |
|
513 | + 'EventEspresso\core\services\commands\CommandHandlerManager' => array( |
|
514 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
515 | + ), |
|
516 | + 'EventEspresso\core\services\commands\CompositeCommandHandler' => array( |
|
517 | + 'EventEspresso\core\services\commands\CommandBus' => EE_Dependency_Map::load_from_cache, |
|
518 | + 'EventEspresso\core\services\commands\CommandFactory' => EE_Dependency_Map::load_from_cache, |
|
519 | + ), |
|
520 | + 'EventEspresso\core\services\commands\CommandFactory' => array( |
|
521 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
522 | + ), |
|
523 | + 'EventEspresso\core\services\commands\middleware\CapChecker' => array( |
|
524 | + 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => EE_Dependency_Map::load_from_cache, |
|
525 | + ), |
|
526 | + 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => array( |
|
527 | + 'EE_Capabilities' => EE_Dependency_Map::load_from_cache, |
|
528 | + ), |
|
529 | + 'EventEspresso\core\domain\services\capabilities\RegistrationsCapChecker' => array( |
|
530 | + 'EE_Capabilities' => EE_Dependency_Map::load_from_cache, |
|
531 | + ), |
|
532 | + 'EventEspresso\core\services\commands\registration\CreateRegistrationCommandHandler' => array( |
|
533 | + 'EventEspresso\core\domain\services\registration\CreateRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
534 | + ), |
|
535 | + 'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommandHandler' => array( |
|
536 | + 'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
537 | + ), |
|
538 | + 'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommandHandler' => array( |
|
539 | + 'EventEspresso\core\domain\services\registration\CopyRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
540 | + ), |
|
541 | + 'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler' => array( |
|
542 | + 'EventEspresso\core\domain\services\registration\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
543 | + ), |
|
544 | + 'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler' => array( |
|
545 | + 'EventEspresso\core\domain\services\registration\UpdateRegistrationService' => EE_Dependency_Map::load_from_cache, |
|
546 | + ), |
|
547 | + 'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommandHandler' => array( |
|
548 | + 'EventEspresso\core\domain\services\ticket\CreateTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
549 | + ), |
|
550 | + 'EventEspresso\core\services\commands\ticket\CancelTicketLineItemCommandHandler' => array( |
|
551 | + 'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
552 | + ), |
|
553 | + 'EventEspresso\core\domain\services\registration\CancelRegistrationService' => array( |
|
554 | + 'EventEspresso\core\domain\services\ticket\CancelTicketLineItemService' => EE_Dependency_Map::load_from_cache, |
|
555 | + ), |
|
556 | + 'EventEspresso\core\services\commands\attendee\CreateAttendeeCommandHandler' => array( |
|
557 | + 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
558 | + ), |
|
559 | + 'EventEspresso\core\services\database\TableManager' => array( |
|
560 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
561 | + ), |
|
562 | + 'EE_Data_Migration_Class_Base' => array( |
|
563 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
564 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
565 | + ), |
|
566 | + 'EE_DMS_Core_4_1_0' => array( |
|
567 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
568 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
569 | + ), |
|
570 | + 'EE_DMS_Core_4_2_0' => array( |
|
571 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
572 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
573 | + ), |
|
574 | + 'EE_DMS_Core_4_3_0' => array( |
|
575 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
576 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
577 | + ), |
|
578 | + 'EE_DMS_Core_4_4_0' => array( |
|
579 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
580 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
581 | + ), |
|
582 | + 'EE_DMS_Core_4_5_0' => array( |
|
583 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
584 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
585 | + ), |
|
586 | + 'EE_DMS_Core_4_6_0' => array( |
|
587 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
588 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
589 | + ), |
|
590 | + 'EE_DMS_Core_4_7_0' => array( |
|
591 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
592 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
593 | + ), |
|
594 | + 'EE_DMS_Core_4_8_0' => array( |
|
595 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
596 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
597 | + ), |
|
598 | + 'EE_DMS_Core_4_9_0' => array( |
|
599 | + 'EventEspresso\core\services\database\TableAnalysis' => EE_Dependency_Map::load_from_cache, |
|
600 | + 'EventEspresso\core\services\database\TableManager' => EE_Dependency_Map::load_from_cache, |
|
601 | + ), |
|
602 | + 'EventEspresso\core\services\assets\I18nRegistry' => array( |
|
603 | + array(), |
|
604 | + 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
605 | + ), |
|
606 | + 'EventEspresso\core\services\assets\Registry' => array( |
|
607 | + 'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_from_cache, |
|
608 | + 'EventEspresso\core\services\assets\I18nRegistry' => EE_Dependency_Map::load_from_cache, |
|
609 | + ), |
|
610 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoCancelled' => array( |
|
611 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
612 | + ), |
|
613 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoCheckout' => array( |
|
614 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
615 | + ), |
|
616 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoEventAttendees' => array( |
|
617 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
618 | + ), |
|
619 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoEvents' => array( |
|
620 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
621 | + ), |
|
622 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoThankYou' => array( |
|
623 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
624 | + ), |
|
625 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoTicketSelector' => array( |
|
626 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
627 | + ), |
|
628 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoTxnPage' => array( |
|
629 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => EE_Dependency_Map::load_from_cache, |
|
630 | + ), |
|
631 | + 'EventEspresso\core\services\cache\BasicCacheManager' => array( |
|
632 | + 'EventEspresso\core\services\cache\TransientCacheStorage' => EE_Dependency_Map::load_from_cache, |
|
633 | + ), |
|
634 | + 'EventEspresso\core\services\cache\PostRelatedCacheManager' => array( |
|
635 | + 'EventEspresso\core\services\cache\TransientCacheStorage' => EE_Dependency_Map::load_from_cache, |
|
636 | + ), |
|
637 | + 'EventEspresso\core\domain\services\validation\email\EmailValidationService' => array( |
|
638 | + 'EE_Registration_Config' => EE_Dependency_Map::load_from_cache, |
|
639 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
640 | + ), |
|
641 | + 'EventEspresso\core\domain\values\EmailAddress' => array( |
|
642 | + null, |
|
643 | + 'EventEspresso\core\domain\services\validation\email\EmailValidationService' => EE_Dependency_Map::load_from_cache, |
|
644 | + ), |
|
645 | + 'EventEspresso\core\services\orm\ModelFieldFactory' => array( |
|
646 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
647 | + ), |
|
648 | + 'LEGACY_MODELS' => array( |
|
649 | + null, |
|
650 | + 'EventEspresso\core\services\database\ModelFieldFactory' => EE_Dependency_Map::load_from_cache, |
|
651 | + ), |
|
652 | + 'EE_Module_Request_Router' => array( |
|
653 | + 'EE_Request' => EE_Dependency_Map::load_from_cache, |
|
654 | + ), |
|
655 | + 'EE_Registration_Processor' => array( |
|
656 | + 'EE_Request' => EE_Dependency_Map::load_from_cache, |
|
657 | + ), |
|
658 | + 'EventEspresso\core\services\notifications\PersistentAdminNoticeManager' => array( |
|
659 | + null, |
|
660 | + 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker' => EE_Dependency_Map::load_from_cache, |
|
661 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
662 | + ), |
|
663 | + 'EventEspresso\core\services\licensing\LicenseService' => array( |
|
664 | + 'EventEspresso\core\domain\services\pue\Stats' => EE_Dependency_Map::load_from_cache, |
|
665 | + 'EventEspresso\core\domain\services\pue\Config' => EE_Dependency_Map::load_from_cache, |
|
666 | + ), |
|
667 | + 'EE_Admin_Transactions_List_Table' => array( |
|
668 | + null, |
|
669 | + 'EventEspresso\core\domain\values\session\SessionLifespan' => EE_Dependency_Map::load_from_cache, |
|
670 | + ), |
|
671 | + 'EventEspresso\core\domain\services\pue\Stats' => array( |
|
672 | + 'EventEspresso\core\domain\services\pue\Config' => EE_Dependency_Map::load_from_cache, |
|
673 | + 'EE_Maintenance_Mode' => EE_Dependency_Map::load_from_cache, |
|
674 | + 'EventEspresso\core\domain\services\pue\StatsGatherer' => EE_Dependency_Map::load_from_cache, |
|
675 | + ), |
|
676 | + 'EventEspresso\core\domain\services\pue\Config' => array( |
|
677 | + 'EE_Network_Config' => EE_Dependency_Map::load_from_cache, |
|
678 | + 'EE_Config' => EE_Dependency_Map::load_from_cache, |
|
679 | + ), |
|
680 | + 'EventEspresso\core\domain\services\pue\StatsGatherer' => array( |
|
681 | + 'EEM_Payment_Method' => EE_Dependency_Map::load_from_cache, |
|
682 | + 'EEM_Event' => EE_Dependency_Map::load_from_cache, |
|
683 | + 'EEM_Datetime' => EE_Dependency_Map::load_from_cache, |
|
684 | + 'EEM_Ticket' => EE_Dependency_Map::load_from_cache, |
|
685 | + 'EEM_Registration' => EE_Dependency_Map::load_from_cache, |
|
686 | + 'EEM_Transaction' => EE_Dependency_Map::load_from_cache, |
|
687 | + 'EE_Config' => EE_Dependency_Map::load_from_cache, |
|
688 | + ), |
|
689 | + 'EventEspresso\core\domain\services\admin\ExitModal' => array( |
|
690 | + 'EventEspresso\core\services\assets\Registry' => EE_Dependency_Map::load_from_cache, |
|
691 | + ), |
|
692 | + 'EventEspresso\core\domain\services\admin\PluginUpsells' => array( |
|
693 | + 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
694 | + ), |
|
695 | + 'EventEspresso\caffeinated\modules\recaptcha_invisible\InvisibleRecaptcha' => array( |
|
696 | + 'EE_Registration_Config' => EE_Dependency_Map::load_from_cache, |
|
697 | + 'EE_Session' => EE_Dependency_Map::load_from_cache, |
|
698 | + ), |
|
699 | + 'EventEspresso\caffeinated\modules\recaptcha_invisible\RecaptchaAdminSettings' => array( |
|
700 | + 'EE_Registration_Config' => EE_Dependency_Map::load_from_cache, |
|
701 | + ), |
|
702 | + 'EventEspresso\modules\ticket_selector\ProcessTicketSelector' => array( |
|
703 | + 'EE_Core_Config' => EE_Dependency_Map::load_from_cache, |
|
704 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
705 | + 'EE_Session' => EE_Dependency_Map::load_from_cache, |
|
706 | + 'EEM_Ticket' => EE_Dependency_Map::load_from_cache, |
|
707 | + 'EventEspresso\modules\ticket_selector\TicketDatetimeAvailabilityTracker' => EE_Dependency_Map::load_from_cache, |
|
708 | + ), |
|
709 | + 'EventEspresso\modules\ticket_selector\TicketDatetimeAvailabilityTracker' => array( |
|
710 | + 'EEM_Datetime' => EE_Dependency_Map::load_from_cache, |
|
711 | + ), |
|
712 | + 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' => array( |
|
713 | + 'EE_Core_Config' => EE_Dependency_Map::load_from_cache, |
|
714 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
715 | + ), |
|
716 | + 'EventEspresso\core\domain\services\custom_post_types\RegisterCustomPostTypes' => array( |
|
717 | + 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' => EE_Dependency_Map::load_from_cache, |
|
718 | + ), |
|
719 | + 'EventEspresso\core\domain\services\custom_post_types\RegisterCustomTaxonomies' => array( |
|
720 | + 'EventEspresso\core\domain\entities\custom_post_types\CustomTaxonomyDefinitions' => EE_Dependency_Map::load_from_cache, |
|
721 | + ), |
|
722 | + 'EE_CPT_Strategy' => array( |
|
723 | + 'EventEspresso\core\domain\entities\custom_post_types\CustomPostTypeDefinitions' => EE_Dependency_Map::load_from_cache, |
|
724 | + 'EventEspresso\core\domain\entities\custom_post_types\CustomTaxonomyDefinitions' => EE_Dependency_Map::load_from_cache, |
|
725 | + ), |
|
726 | + 'EventEspresso\core\services\loaders\ObjectIdentifier' => array( |
|
727 | + 'EventEspresso\core\services\loaders\ClassInterfaceCache' => EE_Dependency_Map::load_from_cache, |
|
728 | + ), |
|
729 | + 'EventEspresso\core\domain\services\assets\CoreAssetManager' => array( |
|
730 | + 'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_from_cache, |
|
731 | + 'EE_Currency_Config' => EE_Dependency_Map::load_from_cache, |
|
732 | + 'EE_Template_Config' => EE_Dependency_Map::load_from_cache, |
|
733 | + 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
734 | + 'EventEspresso\core\services\assets\Registry' => EE_Dependency_Map::load_from_cache, |
|
735 | + ), |
|
736 | + 'EventEspresso\core\domain\services\admin\privacy\policy\PrivacyPolicy' => array( |
|
737 | + 'EEM_Payment_Method' => EE_Dependency_Map::load_from_cache, |
|
738 | + 'EventEspresso\core\domain\values\session\SessionLifespan' => EE_Dependency_Map::load_from_cache |
|
739 | + ), |
|
740 | + 'EventEspresso\core\domain\services\admin\privacy\export\ExportAttendee' => array( |
|
741 | + 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
742 | + ), |
|
743 | + 'EventEspresso\core\domain\services\admin\privacy\export\ExportAttendeeBillingData' => array( |
|
744 | + 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
745 | + 'EEM_Payment_Method' => EE_Dependency_Map::load_from_cache |
|
746 | + ), |
|
747 | + 'EventEspresso\core\domain\services\admin\privacy\export\ExportCheckins' => array( |
|
748 | + 'EEM_Checkin' => EE_Dependency_Map::load_from_cache, |
|
749 | + ), |
|
750 | + 'EventEspresso\core\domain\services\admin\privacy\export\ExportRegistration' => array( |
|
751 | + 'EEM_Registration' => EE_Dependency_Map::load_from_cache, |
|
752 | + ), |
|
753 | + 'EventEspresso\core\domain\services\admin\privacy\export\ExportTransaction' => array( |
|
754 | + 'EEM_Transaction' => EE_Dependency_Map::load_from_cache, |
|
755 | + ), |
|
756 | + 'EventEspresso\core\domain\services\admin\privacy\erasure\EraseAttendeeData' => array( |
|
757 | + 'EEM_Attendee' => EE_Dependency_Map::load_from_cache, |
|
758 | + ), |
|
759 | + 'EventEspresso\core\domain\services\admin\privacy\erasure\EraseAnswers' => array( |
|
760 | + 'EEM_Answer' => EE_Dependency_Map::load_from_cache, |
|
761 | + 'EEM_Question' => EE_Dependency_Map::load_from_cache, |
|
762 | + ), |
|
763 | + 'EventEspresso\core\CPTs\CptQueryModifier' => array( |
|
764 | + null, |
|
765 | + null, |
|
766 | + null, |
|
767 | + 'EE_Request_Handler' => EE_Dependency_Map::load_from_cache, |
|
768 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
769 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
770 | + ), |
|
771 | + 'EventEspresso\core\domain\services\admin\privacy\forms\PrivacySettingsFormHandler' => array( |
|
772 | + 'EE_Registry' => EE_Dependency_Map::load_from_cache, |
|
773 | + 'EE_Config' => EE_Dependency_Map::load_from_cache |
|
774 | + ), |
|
775 | + 'EventEspresso\core\services\editor\BlockRegistrationManager' => array( |
|
776 | + 'EventEspresso\core\services\assets\BlockAssetManagerCollection' => EE_Dependency_Map::load_from_cache, |
|
777 | + 'EventEspresso\core\domain\entities\editor\BlockCollection' => EE_Dependency_Map::load_from_cache, |
|
778 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationManager' => EE_Dependency_Map::load_from_cache, |
|
779 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
780 | + ), |
|
781 | + 'EventEspresso\core\domain\entities\editor\CoreBlocksAssetManager' => array( |
|
782 | + 'EventEspresso\core\domain\Domain' => EE_Dependency_Map::load_from_cache, |
|
783 | + 'EventEspresso\core\services\assets\AssetCollection' => EE_Dependency_Map::load_from_cache, |
|
784 | + 'EventEspresso\core\services\assets\Registry' => EE_Dependency_Map::load_from_cache, |
|
785 | + ), |
|
786 | + 'EventEspresso\core\domain\entities\editor\blocks\EventAttendees' => array( |
|
787 | + 'EventEspresso\core\domain\entities\editor\CoreBlocksAssetManager' => self::load_from_cache, |
|
788 | + 'EventEspresso\core\services\request\Request' => EE_Dependency_Map::load_from_cache, |
|
789 | + 'EventEspresso\core\domain\entities\shortcodes\EspressoEventAttendees' => self::load_from_cache, |
|
790 | + ), |
|
791 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationDependencyResolver' => array( |
|
792 | + 'EventEspresso\core\services\container\Mirror' => EE_Dependency_Map::load_from_cache, |
|
793 | + 'EventEspresso\core\services\loaders\ClassInterfaceCache' => EE_Dependency_Map::load_from_cache, |
|
794 | + 'EE_Dependency_Map' => EE_Dependency_Map::load_from_cache, |
|
795 | + ), |
|
796 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationFactory' => array( |
|
797 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationDependencyResolver' => EE_Dependency_Map::load_from_cache, |
|
798 | + 'EventEspresso\core\services\loaders\Loader' => EE_Dependency_Map::load_from_cache, |
|
799 | + ), |
|
800 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationManager' => array( |
|
801 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationCollection' => EE_Dependency_Map::load_from_cache, |
|
802 | + 'EventEspresso\core\services\route_match\RouteMatchSpecificationFactory' => EE_Dependency_Map::load_from_cache, |
|
803 | + ), |
|
804 | + ); |
|
805 | + } |
|
806 | + |
|
807 | + |
|
808 | + /** |
|
809 | + * Registers how core classes are loaded. |
|
810 | + * This can either be done by simply providing the name of one of the EE_Registry loader methods such as: |
|
811 | + * 'EE_Request_Handler' => 'load_core' |
|
812 | + * 'EE_Messages_Queue' => 'load_lib' |
|
813 | + * 'EEH_Debug_Tools' => 'load_helper' |
|
814 | + * or, if greater control is required, by providing a custom closure. For example: |
|
815 | + * 'Some_Class' => function () { |
|
816 | + * return new Some_Class(); |
|
817 | + * }, |
|
818 | + * This is required for instantiating dependencies |
|
819 | + * where an interface has been type hinted in a class constructor. For example: |
|
820 | + * 'Required_Interface' => function () { |
|
821 | + * return new A_Class_That_Implements_Required_Interface(); |
|
822 | + * }, |
|
823 | + */ |
|
824 | + protected function _register_core_class_loaders() |
|
825 | + { |
|
826 | + $this->_class_loaders = array( |
|
827 | + // load_core |
|
828 | + 'EE_Dependency_Map' => function () { |
|
829 | + return $this; |
|
830 | + }, |
|
831 | + 'EE_Capabilities' => 'load_core', |
|
832 | + 'EE_Encryption' => 'load_core', |
|
833 | + 'EE_Front_Controller' => 'load_core', |
|
834 | + 'EE_Module_Request_Router' => 'load_core', |
|
835 | + 'EE_Registry' => 'load_core', |
|
836 | + 'EE_Request' => function () { |
|
837 | + return $this->legacy_request; |
|
838 | + }, |
|
839 | + 'EventEspresso\core\services\request\Request' => function () { |
|
840 | + return $this->request; |
|
841 | + }, |
|
842 | + 'EventEspresso\core\services\request\Response' => function () { |
|
843 | + return $this->response; |
|
844 | + }, |
|
845 | + 'EE_Base' => 'load_core', |
|
846 | + 'EE_Request_Handler' => 'load_core', |
|
847 | + 'EE_Session' => 'load_core', |
|
848 | + 'EE_Cron_Tasks' => 'load_core', |
|
849 | + 'EE_System' => 'load_core', |
|
850 | + 'EE_Maintenance_Mode' => 'load_core', |
|
851 | + 'EE_Register_CPTs' => 'load_core', |
|
852 | + 'EE_Admin' => 'load_core', |
|
853 | + 'EE_CPT_Strategy' => 'load_core', |
|
854 | + // load_lib |
|
855 | + 'EE_Message_Resource_Manager' => 'load_lib', |
|
856 | + 'EE_Message_Type_Collection' => 'load_lib', |
|
857 | + 'EE_Message_Type_Collection_Loader' => 'load_lib', |
|
858 | + 'EE_Messenger_Collection' => 'load_lib', |
|
859 | + 'EE_Messenger_Collection_Loader' => 'load_lib', |
|
860 | + 'EE_Messages_Processor' => 'load_lib', |
|
861 | + 'EE_Message_Repository' => 'load_lib', |
|
862 | + 'EE_Messages_Queue' => 'load_lib', |
|
863 | + 'EE_Messages_Data_Handler_Collection' => 'load_lib', |
|
864 | + 'EE_Message_Template_Group_Collection' => 'load_lib', |
|
865 | + 'EE_Payment_Method_Manager' => 'load_lib', |
|
866 | + 'EE_Messages_Generator' => function () { |
|
867 | + return EE_Registry::instance()->load_lib( |
|
868 | + 'Messages_Generator', |
|
869 | + array(), |
|
870 | + false, |
|
871 | + false |
|
872 | + ); |
|
873 | + }, |
|
874 | + 'EE_Messages_Template_Defaults' => function ($arguments = array()) { |
|
875 | + return EE_Registry::instance()->load_lib( |
|
876 | + 'Messages_Template_Defaults', |
|
877 | + $arguments, |
|
878 | + false, |
|
879 | + false |
|
880 | + ); |
|
881 | + }, |
|
882 | + // load_helper |
|
883 | + 'EEH_Parse_Shortcodes' => function () { |
|
884 | + if (EE_Registry::instance()->load_helper('Parse_Shortcodes')) { |
|
885 | + return new EEH_Parse_Shortcodes(); |
|
886 | + } |
|
887 | + return null; |
|
888 | + }, |
|
889 | + 'EE_Template_Config' => function () { |
|
890 | + return EE_Config::instance()->template_settings; |
|
891 | + }, |
|
892 | + 'EE_Currency_Config' => function () { |
|
893 | + return EE_Config::instance()->currency; |
|
894 | + }, |
|
895 | + 'EE_Registration_Config' => function () { |
|
896 | + return EE_Config::instance()->registration; |
|
897 | + }, |
|
898 | + 'EE_Core_Config' => function () { |
|
899 | + return EE_Config::instance()->core; |
|
900 | + }, |
|
901 | + 'EventEspresso\core\services\loaders\Loader' => function () { |
|
902 | + return LoaderFactory::getLoader(); |
|
903 | + }, |
|
904 | + 'EE_Network_Config' => function () { |
|
905 | + return EE_Network_Config::instance(); |
|
906 | + }, |
|
907 | + 'EE_Config' => function () { |
|
908 | + return EE_Config::instance(); |
|
909 | + }, |
|
910 | + 'EventEspresso\core\domain\Domain' => function () { |
|
911 | + return DomainFactory::getEventEspressoCoreDomain(); |
|
912 | + }, |
|
913 | + 'EE_Admin_Config' => function () { |
|
914 | + return EE_Config::instance()->admin; |
|
915 | + }, |
|
916 | + ); |
|
917 | + } |
|
918 | + |
|
919 | + |
|
920 | + /** |
|
921 | + * can be used for supplying alternate names for classes, |
|
922 | + * or for connecting interface names to instantiable classes |
|
923 | + */ |
|
924 | + protected function _register_core_aliases() |
|
925 | + { |
|
926 | + $aliases = array( |
|
927 | + 'CommandBusInterface' => 'EventEspresso\core\services\commands\CommandBusInterface', |
|
928 | + 'EventEspresso\core\services\commands\CommandBusInterface' => 'EventEspresso\core\services\commands\CommandBus', |
|
929 | + 'CommandHandlerManagerInterface' => 'EventEspresso\core\services\commands\CommandHandlerManagerInterface', |
|
930 | + 'EventEspresso\core\services\commands\CommandHandlerManagerInterface' => 'EventEspresso\core\services\commands\CommandHandlerManager', |
|
931 | + 'CapChecker' => 'EventEspresso\core\services\commands\middleware\CapChecker', |
|
932 | + 'AddActionHook' => 'EventEspresso\core\services\commands\middleware\AddActionHook', |
|
933 | + 'CapabilitiesChecker' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker', |
|
934 | + 'CapabilitiesCheckerInterface' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface', |
|
935 | + 'EventEspresso\core\domain\services\capabilities\CapabilitiesCheckerInterface' => 'EventEspresso\core\domain\services\capabilities\CapabilitiesChecker', |
|
936 | + 'CreateRegistrationService' => 'EventEspresso\core\domain\services\registration\CreateRegistrationService', |
|
937 | + 'CreateRegistrationCommandHandler' => 'EventEspresso\core\services\commands\registration\CreateRegistrationCommand', |
|
938 | + 'CopyRegistrationDetailsCommandHandler' => 'EventEspresso\core\services\commands\registration\CopyRegistrationDetailsCommand', |
|
939 | + 'CopyRegistrationPaymentsCommandHandler' => 'EventEspresso\core\services\commands\registration\CopyRegistrationPaymentsCommand', |
|
940 | + 'CancelRegistrationAndTicketLineItemCommandHandler' => 'EventEspresso\core\services\commands\registration\CancelRegistrationAndTicketLineItemCommandHandler', |
|
941 | + 'UpdateRegistrationAndTransactionAfterChangeCommandHandler' => 'EventEspresso\core\services\commands\registration\UpdateRegistrationAndTransactionAfterChangeCommandHandler', |
|
942 | + 'CreateTicketLineItemCommandHandler' => 'EventEspresso\core\services\commands\ticket\CreateTicketLineItemCommand', |
|
943 | + 'CreateTransactionCommandHandler' => 'EventEspresso\core\services\commands\transaction\CreateTransactionCommandHandler', |
|
944 | + 'CreateAttendeeCommandHandler' => 'EventEspresso\core\services\commands\attendee\CreateAttendeeCommandHandler', |
|
945 | + 'TableManager' => 'EventEspresso\core\services\database\TableManager', |
|
946 | + 'TableAnalysis' => 'EventEspresso\core\services\database\TableAnalysis', |
|
947 | + 'EspressoShortcode' => 'EventEspresso\core\services\shortcodes\EspressoShortcode', |
|
948 | + 'ShortcodeInterface' => 'EventEspresso\core\services\shortcodes\ShortcodeInterface', |
|
949 | + 'EventEspresso\core\services\shortcodes\ShortcodeInterface' => 'EventEspresso\core\services\shortcodes\EspressoShortcode', |
|
950 | + 'EventEspresso\core\services\cache\CacheStorageInterface' => 'EventEspresso\core\services\cache\TransientCacheStorage', |
|
951 | + 'LoaderInterface' => 'EventEspresso\core\services\loaders\LoaderInterface', |
|
952 | + 'EventEspresso\core\services\loaders\LoaderInterface' => 'EventEspresso\core\services\loaders\Loader', |
|
953 | + 'CommandFactoryInterface' => 'EventEspresso\core\services\commands\CommandFactoryInterface', |
|
954 | + 'EventEspresso\core\services\commands\CommandFactoryInterface' => 'EventEspresso\core\services\commands\CommandFactory', |
|
955 | + 'EmailValidatorInterface' => 'EventEspresso\core\domain\services\validation\email\EmailValidatorInterface', |
|
956 | + 'EventEspresso\core\domain\services\validation\email\EmailValidatorInterface' => 'EventEspresso\core\domain\services\validation\email\EmailValidationService', |
|
957 | + 'NoticeConverterInterface' => 'EventEspresso\core\services\notices\NoticeConverterInterface', |
|
958 | + 'EventEspresso\core\services\notices\NoticeConverterInterface' => 'EventEspresso\core\services\notices\ConvertNoticesToEeErrors', |
|
959 | + 'NoticesContainerInterface' => 'EventEspresso\core\services\notices\NoticesContainerInterface', |
|
960 | + 'EventEspresso\core\services\notices\NoticesContainerInterface' => 'EventEspresso\core\services\notices\NoticesContainer', |
|
961 | + 'EventEspresso\core\services\request\RequestInterface' => 'EventEspresso\core\services\request\Request', |
|
962 | + 'EventEspresso\core\services\request\ResponseInterface' => 'EventEspresso\core\services\request\Response', |
|
963 | + 'EventEspresso\core\domain\DomainInterface' => 'EventEspresso\core\domain\Domain', |
|
964 | + ); |
|
965 | + foreach ($aliases as $alias => $fqn) { |
|
966 | + if (is_array($fqn)) { |
|
967 | + foreach ($fqn as $class => $for_class) { |
|
968 | + $this->class_cache->addAlias($class, $alias, $for_class); |
|
969 | + } |
|
970 | + continue; |
|
971 | + } |
|
972 | + $this->class_cache->addAlias($fqn, $alias); |
|
973 | + } |
|
974 | + if (! (defined('DOING_AJAX') && DOING_AJAX) && is_admin()) { |
|
975 | + $this->class_cache->addAlias( |
|
976 | + 'EventEspresso\core\services\notices\ConvertNoticesToAdminNotices', |
|
977 | + 'EventEspresso\core\services\notices\NoticeConverterInterface' |
|
978 | + ); |
|
979 | + } |
|
980 | + } |
|
981 | + |
|
982 | + |
|
983 | + /** |
|
984 | + * This is used to reset the internal map and class_loaders to their original default state at the beginning of the |
|
985 | + * request Primarily used by unit tests. |
|
986 | + */ |
|
987 | + public function reset() |
|
988 | + { |
|
989 | + $this->_register_core_class_loaders(); |
|
990 | + $this->_register_core_dependencies(); |
|
991 | + } |
|
992 | + |
|
993 | + |
|
994 | + /** |
|
995 | + * PLZ NOTE: a better name for this method would be is_alias() |
|
996 | + * because it returns TRUE if the provided fully qualified name IS an alias |
|
997 | + * WHY? |
|
998 | + * Because if a class is type hinting for a concretion, |
|
999 | + * then why would we need to find another class to supply it? |
|
1000 | + * ie: if a class asks for `Fully/Qualified/Namespace/SpecificClassName`, |
|
1001 | + * then give it an instance of `Fully/Qualified/Namespace/SpecificClassName`. |
|
1002 | + * Don't go looking for some substitute. |
|
1003 | + * Whereas if a class is type hinting for an interface... |
|
1004 | + * then we need to find an actual class to use. |
|
1005 | + * So the interface IS the alias for some other FQN, |
|
1006 | + * and we need to find out if `Fully/Qualified/Namespace/SomeInterface` |
|
1007 | + * represents some other class. |
|
1008 | + * |
|
1009 | + * @deprecated 4.9.62.p |
|
1010 | + * @param string $fqn |
|
1011 | + * @param string $for_class |
|
1012 | + * @return bool |
|
1013 | + */ |
|
1014 | + public function has_alias($fqn = '', $for_class = '') |
|
1015 | + { |
|
1016 | + return $this->isAlias($fqn, $for_class); |
|
1017 | + } |
|
1018 | + |
|
1019 | + |
|
1020 | + /** |
|
1021 | + * PLZ NOTE: a better name for this method would be get_fqn_for_alias() |
|
1022 | + * because it returns a FQN for provided alias if one exists, otherwise returns the original $alias |
|
1023 | + * functions recursively, so that multiple aliases can be used to drill down to a FQN |
|
1024 | + * for example: |
|
1025 | + * if the following two entries were added to the _aliases array: |
|
1026 | + * array( |
|
1027 | + * 'interface_alias' => 'some\namespace\interface' |
|
1028 | + * 'some\namespace\interface' => 'some\namespace\classname' |
|
1029 | + * ) |
|
1030 | + * then one could use EE_Registry::instance()->create( 'interface_alias' ) |
|
1031 | + * to load an instance of 'some\namespace\classname' |
|
1032 | + * |
|
1033 | + * @deprecated 4.9.62.p |
|
1034 | + * @param string $alias |
|
1035 | + * @param string $for_class |
|
1036 | + * @return string |
|
1037 | + */ |
|
1038 | + public function get_alias($alias = '', $for_class = '') |
|
1039 | + { |
|
1040 | + return $this->getFqnForAlias($alias, $for_class); |
|
1041 | + } |
|
1042 | 1042 | } |
@@ -32,223 +32,223 @@ |
||
32 | 32 | class BlockRegistrationManager extends BlockManager |
33 | 33 | { |
34 | 34 | |
35 | - /** |
|
36 | - * @var BlockAssetManagerCollection $block_asset_manager_collection |
|
37 | - */ |
|
38 | - protected $block_asset_manager_collection; |
|
39 | - |
|
40 | - /** |
|
41 | - * @var RouteMatchSpecificationManager $route_manager |
|
42 | - */ |
|
43 | - protected $route_manager; |
|
44 | - |
|
45 | - /** |
|
46 | - * array for tracking asset managers required by blocks for the current route |
|
47 | - * |
|
48 | - * @var array $block_asset_managers |
|
49 | - */ |
|
50 | - protected $block_asset_managers = array(); |
|
51 | - |
|
52 | - |
|
53 | - /** |
|
54 | - * BlockRegistrationManager constructor. |
|
55 | - * |
|
56 | - * @param BlockAssetManagerCollection $block_asset_manager_collection |
|
57 | - * @param BlockCollection $blocks |
|
58 | - * @param RouteMatchSpecificationManager $route_manager |
|
59 | - * @param RequestInterface $request |
|
60 | - */ |
|
61 | - public function __construct( |
|
62 | - BlockAssetManagerCollection $block_asset_manager_collection, |
|
63 | - BlockCollection $blocks, |
|
64 | - RouteMatchSpecificationManager $route_manager, |
|
65 | - RequestInterface $request |
|
66 | - ) { |
|
67 | - $this->block_asset_manager_collection = $block_asset_manager_collection; |
|
68 | - $this->route_manager = $route_manager; |
|
69 | - parent::__construct($blocks, $request); |
|
70 | - } |
|
71 | - |
|
72 | - |
|
73 | - /** |
|
74 | - * Returns the name of a hookpoint to be used to call initialize() |
|
75 | - * |
|
76 | - * @return string |
|
77 | - */ |
|
78 | - public function initHook() |
|
79 | - { |
|
80 | - return 'AHEE__EE_System__initialize'; |
|
81 | - } |
|
82 | - |
|
83 | - |
|
84 | - /** |
|
85 | - * Perform any early setup required for block editors to functions |
|
86 | - * |
|
87 | - * @return void |
|
88 | - * @throws Exception |
|
89 | - */ |
|
90 | - public function initialize() |
|
91 | - { |
|
92 | - $this->initializeBlocks(); |
|
93 | - add_action('AHEE__EE_System__initialize_last', array($this, 'registerBlocks')); |
|
94 | - add_action('wp_loaded', array($this, 'unloadAssets')); |
|
95 | - add_filter('block_categories', array($this, 'addEspressoBlockCategories')); |
|
96 | - } |
|
97 | - |
|
98 | - |
|
99 | - /** |
|
100 | - * @param array $categories |
|
101 | - * @since $VID:$ |
|
102 | - * @return array |
|
103 | - */ |
|
104 | - public function addEspressoBlockCategories(array $categories) |
|
105 | - { |
|
106 | - return array_merge( |
|
107 | - $categories, |
|
108 | - array( |
|
109 | - array( |
|
110 | - 'slug' => 'event-espresso', |
|
111 | - 'title' => 'Event Espresso', |
|
112 | - ), |
|
113 | - ) |
|
114 | - ); |
|
115 | - } |
|
116 | - |
|
117 | - |
|
118 | - /** |
|
119 | - * @return CollectionInterface|BlockInterface[] |
|
120 | - * @throws CollectionLoaderException |
|
121 | - * @throws CollectionDetailsException |
|
122 | - */ |
|
123 | - protected function populateBlockCollection() |
|
124 | - { |
|
125 | - $loader = new CollectionLoader( |
|
126 | - new CollectionDetails( |
|
127 | - // collection name |
|
128 | - 'editor_blocks', |
|
129 | - // collection interface |
|
130 | - 'EventEspresso\core\domain\entities\editor\BlockInterface', |
|
131 | - // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
132 | - apply_filters( |
|
133 | - 'FHEE__EventEspresso_core_services_editor_BlockManager__populateBlockCollection__collection_FQCNs', |
|
134 | - array('EventEspresso\core\domain\entities\editor\blocks') |
|
135 | - ), |
|
136 | - // filepaths to classes to add |
|
137 | - array(), |
|
138 | - // file mask to use if parsing folder for files to add |
|
139 | - '', |
|
140 | - // what to use as identifier for collection entities |
|
141 | - // using CLASS NAME prevents duplicates (works like a singleton) |
|
142 | - CollectionDetails::ID_CLASS_NAME |
|
143 | - ), |
|
144 | - $this->blocks |
|
145 | - ); |
|
146 | - return $loader->getCollection(); |
|
147 | - } |
|
148 | - |
|
149 | - |
|
150 | - /** |
|
151 | - * populates the BlockCollection and calls initialize() on all installed blocks |
|
152 | - * |
|
153 | - * @return void |
|
154 | - * @throws Exception |
|
155 | - */ |
|
156 | - public function initializeBlocks() |
|
157 | - { |
|
158 | - try { |
|
159 | - $this->populateBlockCollection(); |
|
160 | - // cycle thru block loaders and initialize each loader |
|
161 | - foreach ($this->blocks as $block) { |
|
162 | - $block->initialize(); |
|
163 | - $this->trackAssetManagersForBlocks($block); |
|
164 | - if (! $this->block_asset_manager_collection->has($block->assetManager())) { |
|
165 | - $this->block_asset_manager_collection->add($block->assetManager()); |
|
166 | - $block->assetManager()->setAssetHandles(); |
|
167 | - } |
|
168 | - } |
|
169 | - } catch (Exception $exception) { |
|
170 | - new ExceptionStackTraceDisplay($exception); |
|
171 | - } |
|
172 | - } |
|
173 | - |
|
174 | - |
|
175 | - /** |
|
176 | - * track blocks with routes that match the current request |
|
177 | - * |
|
178 | - * @param BlockInterface $block |
|
179 | - * @throws InvalidClassException |
|
180 | - */ |
|
181 | - private function trackAssetManagersForBlocks(BlockInterface $block) |
|
182 | - { |
|
183 | - $supported_routes = $block->supportedRoutes(); |
|
184 | - foreach ($supported_routes as $supported_route) { |
|
185 | - if ($this->route_manager->routeMatchesCurrentRequest($supported_route)) { |
|
186 | - $this->block_asset_managers[ $block->blockType() ] = $block->assetManager()->assetNamespace(); |
|
187 | - } |
|
188 | - } |
|
189 | - } |
|
190 | - |
|
191 | - |
|
192 | - /** |
|
193 | - * returns true if the block should be registered for the current request |
|
194 | - * else removes block from block_routes array and returns false |
|
195 | - * |
|
196 | - * @param BlockInterface $block |
|
197 | - * @return boolean |
|
198 | - * @throws InvalidClassException |
|
199 | - */ |
|
200 | - public function matchesRoute(BlockInterface $block) |
|
201 | - { |
|
202 | - if (isset($this->block_asset_managers[ $block->blockType() ])) { |
|
203 | - return true; |
|
204 | - } |
|
205 | - unset($this->block_asset_managers[ $block->blockType() ]); |
|
206 | - return false; |
|
207 | - } |
|
208 | - |
|
209 | - |
|
210 | - /** |
|
211 | - * calls registerBlock() and load assets for all installed blocks |
|
212 | - * |
|
213 | - * @return void |
|
214 | - * @throws Exception |
|
215 | - */ |
|
216 | - public function registerBlocks() |
|
217 | - { |
|
218 | - try { |
|
219 | - // cycle thru block loader folders |
|
220 | - foreach ($this->blocks as $block) { |
|
221 | - if (! $this->matchesRoute($block)) { |
|
222 | - continue; |
|
223 | - } |
|
224 | - // perform any setup required for the block |
|
225 | - $block_type = $block->registerBlock(); |
|
226 | - if (! $block_type instanceof WP_Block_Type) { |
|
227 | - throw new InvalidEntityException($block_type, 'WP_Block_Type'); |
|
228 | - } |
|
229 | - do_action( |
|
230 | - 'FHEE__EventEspresso_core_services_editor_BlockManager__registerBlocks__block_type_registered', |
|
231 | - $block, |
|
232 | - $block_type |
|
233 | - ); |
|
234 | - } |
|
235 | - } catch (Exception $exception) { |
|
236 | - new ExceptionStackTraceDisplay($exception); |
|
237 | - } |
|
238 | - } |
|
239 | - |
|
240 | - public function unloadAssets() |
|
241 | - { |
|
242 | - $assets = array_flip($this->block_asset_managers); |
|
243 | - foreach ($this->block_asset_manager_collection as $asset_manager) { |
|
244 | - // if there are no longer any blocks that require these assets, |
|
245 | - if (! isset($assets[ $asset_manager->assetNamespace() ])) { |
|
246 | - // then unset asset enqueueing and bail |
|
247 | - remove_action('wp_enqueue_scripts', array($asset_manager, 'addManifestFile'), 0); |
|
248 | - remove_action('admin_enqueue_scripts', array($asset_manager, 'addManifestFile'), 0); |
|
249 | - remove_action('wp_enqueue_scripts', array($asset_manager, 'addAssets'), 2); |
|
250 | - remove_action('admin_enqueue_scripts', array($asset_manager, 'addAssets'), 2); |
|
251 | - } |
|
252 | - } |
|
253 | - } |
|
35 | + /** |
|
36 | + * @var BlockAssetManagerCollection $block_asset_manager_collection |
|
37 | + */ |
|
38 | + protected $block_asset_manager_collection; |
|
39 | + |
|
40 | + /** |
|
41 | + * @var RouteMatchSpecificationManager $route_manager |
|
42 | + */ |
|
43 | + protected $route_manager; |
|
44 | + |
|
45 | + /** |
|
46 | + * array for tracking asset managers required by blocks for the current route |
|
47 | + * |
|
48 | + * @var array $block_asset_managers |
|
49 | + */ |
|
50 | + protected $block_asset_managers = array(); |
|
51 | + |
|
52 | + |
|
53 | + /** |
|
54 | + * BlockRegistrationManager constructor. |
|
55 | + * |
|
56 | + * @param BlockAssetManagerCollection $block_asset_manager_collection |
|
57 | + * @param BlockCollection $blocks |
|
58 | + * @param RouteMatchSpecificationManager $route_manager |
|
59 | + * @param RequestInterface $request |
|
60 | + */ |
|
61 | + public function __construct( |
|
62 | + BlockAssetManagerCollection $block_asset_manager_collection, |
|
63 | + BlockCollection $blocks, |
|
64 | + RouteMatchSpecificationManager $route_manager, |
|
65 | + RequestInterface $request |
|
66 | + ) { |
|
67 | + $this->block_asset_manager_collection = $block_asset_manager_collection; |
|
68 | + $this->route_manager = $route_manager; |
|
69 | + parent::__construct($blocks, $request); |
|
70 | + } |
|
71 | + |
|
72 | + |
|
73 | + /** |
|
74 | + * Returns the name of a hookpoint to be used to call initialize() |
|
75 | + * |
|
76 | + * @return string |
|
77 | + */ |
|
78 | + public function initHook() |
|
79 | + { |
|
80 | + return 'AHEE__EE_System__initialize'; |
|
81 | + } |
|
82 | + |
|
83 | + |
|
84 | + /** |
|
85 | + * Perform any early setup required for block editors to functions |
|
86 | + * |
|
87 | + * @return void |
|
88 | + * @throws Exception |
|
89 | + */ |
|
90 | + public function initialize() |
|
91 | + { |
|
92 | + $this->initializeBlocks(); |
|
93 | + add_action('AHEE__EE_System__initialize_last', array($this, 'registerBlocks')); |
|
94 | + add_action('wp_loaded', array($this, 'unloadAssets')); |
|
95 | + add_filter('block_categories', array($this, 'addEspressoBlockCategories')); |
|
96 | + } |
|
97 | + |
|
98 | + |
|
99 | + /** |
|
100 | + * @param array $categories |
|
101 | + * @since $VID:$ |
|
102 | + * @return array |
|
103 | + */ |
|
104 | + public function addEspressoBlockCategories(array $categories) |
|
105 | + { |
|
106 | + return array_merge( |
|
107 | + $categories, |
|
108 | + array( |
|
109 | + array( |
|
110 | + 'slug' => 'event-espresso', |
|
111 | + 'title' => 'Event Espresso', |
|
112 | + ), |
|
113 | + ) |
|
114 | + ); |
|
115 | + } |
|
116 | + |
|
117 | + |
|
118 | + /** |
|
119 | + * @return CollectionInterface|BlockInterface[] |
|
120 | + * @throws CollectionLoaderException |
|
121 | + * @throws CollectionDetailsException |
|
122 | + */ |
|
123 | + protected function populateBlockCollection() |
|
124 | + { |
|
125 | + $loader = new CollectionLoader( |
|
126 | + new CollectionDetails( |
|
127 | + // collection name |
|
128 | + 'editor_blocks', |
|
129 | + // collection interface |
|
130 | + 'EventEspresso\core\domain\entities\editor\BlockInterface', |
|
131 | + // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
132 | + apply_filters( |
|
133 | + 'FHEE__EventEspresso_core_services_editor_BlockManager__populateBlockCollection__collection_FQCNs', |
|
134 | + array('EventEspresso\core\domain\entities\editor\blocks') |
|
135 | + ), |
|
136 | + // filepaths to classes to add |
|
137 | + array(), |
|
138 | + // file mask to use if parsing folder for files to add |
|
139 | + '', |
|
140 | + // what to use as identifier for collection entities |
|
141 | + // using CLASS NAME prevents duplicates (works like a singleton) |
|
142 | + CollectionDetails::ID_CLASS_NAME |
|
143 | + ), |
|
144 | + $this->blocks |
|
145 | + ); |
|
146 | + return $loader->getCollection(); |
|
147 | + } |
|
148 | + |
|
149 | + |
|
150 | + /** |
|
151 | + * populates the BlockCollection and calls initialize() on all installed blocks |
|
152 | + * |
|
153 | + * @return void |
|
154 | + * @throws Exception |
|
155 | + */ |
|
156 | + public function initializeBlocks() |
|
157 | + { |
|
158 | + try { |
|
159 | + $this->populateBlockCollection(); |
|
160 | + // cycle thru block loaders and initialize each loader |
|
161 | + foreach ($this->blocks as $block) { |
|
162 | + $block->initialize(); |
|
163 | + $this->trackAssetManagersForBlocks($block); |
|
164 | + if (! $this->block_asset_manager_collection->has($block->assetManager())) { |
|
165 | + $this->block_asset_manager_collection->add($block->assetManager()); |
|
166 | + $block->assetManager()->setAssetHandles(); |
|
167 | + } |
|
168 | + } |
|
169 | + } catch (Exception $exception) { |
|
170 | + new ExceptionStackTraceDisplay($exception); |
|
171 | + } |
|
172 | + } |
|
173 | + |
|
174 | + |
|
175 | + /** |
|
176 | + * track blocks with routes that match the current request |
|
177 | + * |
|
178 | + * @param BlockInterface $block |
|
179 | + * @throws InvalidClassException |
|
180 | + */ |
|
181 | + private function trackAssetManagersForBlocks(BlockInterface $block) |
|
182 | + { |
|
183 | + $supported_routes = $block->supportedRoutes(); |
|
184 | + foreach ($supported_routes as $supported_route) { |
|
185 | + if ($this->route_manager->routeMatchesCurrentRequest($supported_route)) { |
|
186 | + $this->block_asset_managers[ $block->blockType() ] = $block->assetManager()->assetNamespace(); |
|
187 | + } |
|
188 | + } |
|
189 | + } |
|
190 | + |
|
191 | + |
|
192 | + /** |
|
193 | + * returns true if the block should be registered for the current request |
|
194 | + * else removes block from block_routes array and returns false |
|
195 | + * |
|
196 | + * @param BlockInterface $block |
|
197 | + * @return boolean |
|
198 | + * @throws InvalidClassException |
|
199 | + */ |
|
200 | + public function matchesRoute(BlockInterface $block) |
|
201 | + { |
|
202 | + if (isset($this->block_asset_managers[ $block->blockType() ])) { |
|
203 | + return true; |
|
204 | + } |
|
205 | + unset($this->block_asset_managers[ $block->blockType() ]); |
|
206 | + return false; |
|
207 | + } |
|
208 | + |
|
209 | + |
|
210 | + /** |
|
211 | + * calls registerBlock() and load assets for all installed blocks |
|
212 | + * |
|
213 | + * @return void |
|
214 | + * @throws Exception |
|
215 | + */ |
|
216 | + public function registerBlocks() |
|
217 | + { |
|
218 | + try { |
|
219 | + // cycle thru block loader folders |
|
220 | + foreach ($this->blocks as $block) { |
|
221 | + if (! $this->matchesRoute($block)) { |
|
222 | + continue; |
|
223 | + } |
|
224 | + // perform any setup required for the block |
|
225 | + $block_type = $block->registerBlock(); |
|
226 | + if (! $block_type instanceof WP_Block_Type) { |
|
227 | + throw new InvalidEntityException($block_type, 'WP_Block_Type'); |
|
228 | + } |
|
229 | + do_action( |
|
230 | + 'FHEE__EventEspresso_core_services_editor_BlockManager__registerBlocks__block_type_registered', |
|
231 | + $block, |
|
232 | + $block_type |
|
233 | + ); |
|
234 | + } |
|
235 | + } catch (Exception $exception) { |
|
236 | + new ExceptionStackTraceDisplay($exception); |
|
237 | + } |
|
238 | + } |
|
239 | + |
|
240 | + public function unloadAssets() |
|
241 | + { |
|
242 | + $assets = array_flip($this->block_asset_managers); |
|
243 | + foreach ($this->block_asset_manager_collection as $asset_manager) { |
|
244 | + // if there are no longer any blocks that require these assets, |
|
245 | + if (! isset($assets[ $asset_manager->assetNamespace() ])) { |
|
246 | + // then unset asset enqueueing and bail |
|
247 | + remove_action('wp_enqueue_scripts', array($asset_manager, 'addManifestFile'), 0); |
|
248 | + remove_action('admin_enqueue_scripts', array($asset_manager, 'addManifestFile'), 0); |
|
249 | + remove_action('wp_enqueue_scripts', array($asset_manager, 'addAssets'), 2); |
|
250 | + remove_action('admin_enqueue_scripts', array($asset_manager, 'addAssets'), 2); |
|
251 | + } |
|
252 | + } |
|
253 | + } |
|
254 | 254 | } |
@@ -21,211 +21,211 @@ |
||
21 | 21 | abstract class Block implements BlockInterface |
22 | 22 | { |
23 | 23 | |
24 | - /** |
|
25 | - * BlockAssetManager that this editor block uses for asset registration |
|
26 | - * |
|
27 | - * @var BlockAssetManagerInterface $block_asset_manager |
|
28 | - */ |
|
29 | - protected $block_asset_manager; |
|
30 | - |
|
31 | - /** |
|
32 | - * @var RequestInterface $request |
|
33 | - */ |
|
34 | - protected $request; |
|
35 | - |
|
36 | - /** |
|
37 | - * @var array $attributes |
|
38 | - */ |
|
39 | - private $attributes; |
|
40 | - |
|
41 | - /** |
|
42 | - * If set to true, then the block will render its content client side |
|
43 | - * If false, then the block will render its content server side using the renderBlock() method |
|
44 | - * |
|
45 | - * @var bool $dynamic |
|
46 | - */ |
|
47 | - private $dynamic = false; |
|
48 | - |
|
49 | - /** |
|
50 | - * @var string $block_type |
|
51 | - */ |
|
52 | - private $block_type; |
|
53 | - |
|
54 | - /** |
|
55 | - * @var array $supported_routes |
|
56 | - */ |
|
57 | - private $supported_routes; |
|
58 | - |
|
59 | - /** |
|
60 | - * @var WP_Block_Type $wp_block_type |
|
61 | - */ |
|
62 | - private $wp_block_type; |
|
63 | - |
|
64 | - |
|
65 | - /** |
|
66 | - * BlockLoader constructor. |
|
67 | - * |
|
68 | - * @param BlockAssetManagerInterface $block_asset_manager |
|
69 | - * @param RequestInterface $request |
|
70 | - */ |
|
71 | - public function __construct(BlockAssetManagerInterface $block_asset_manager, RequestInterface $request) |
|
72 | - { |
|
73 | - $this->block_asset_manager = $block_asset_manager; |
|
74 | - $this->request = $request; |
|
75 | - } |
|
76 | - |
|
77 | - |
|
78 | - /** |
|
79 | - * @return string |
|
80 | - */ |
|
81 | - public function blockType() |
|
82 | - { |
|
83 | - return $this->block_type; |
|
84 | - } |
|
85 | - |
|
86 | - |
|
87 | - /** |
|
88 | - * @return string |
|
89 | - */ |
|
90 | - public function namespacedBlockType() |
|
91 | - { |
|
92 | - return self::NAME_SPACE . '/' . $this->block_type; |
|
93 | - } |
|
94 | - |
|
95 | - |
|
96 | - /** |
|
97 | - * @param string $block_type |
|
98 | - */ |
|
99 | - protected function setBlockType($block_type) |
|
100 | - { |
|
101 | - $this->block_type = $block_type; |
|
102 | - } |
|
103 | - |
|
104 | - |
|
105 | - /** |
|
106 | - * BlockAssetManager that this editor block uses for asset registration |
|
107 | - * |
|
108 | - * @return BlockAssetManagerInterface |
|
109 | - */ |
|
110 | - public function assetManager() |
|
111 | - { |
|
112 | - return $this->block_asset_manager; |
|
113 | - } |
|
114 | - |
|
115 | - |
|
116 | - /** |
|
117 | - * @param WP_Block_Type $wp_block_type |
|
118 | - */ |
|
119 | - protected function setWpBlockType($wp_block_type) |
|
120 | - { |
|
121 | - $this->wp_block_type = $wp_block_type; |
|
122 | - } |
|
123 | - |
|
124 | - /** |
|
125 | - * returns an array of fully qualified class names |
|
126 | - * for RouteMatchSpecificationInterface objects |
|
127 | - * that specify routes that the block should be loaded for. |
|
128 | - * |
|
129 | - * @return array |
|
130 | - */ |
|
131 | - public function supportedRoutes() |
|
132 | - { |
|
133 | - return $this->supported_routes; |
|
134 | - } |
|
135 | - |
|
136 | - |
|
137 | - /** |
|
138 | - * @param array $supported_routes |
|
139 | - */ |
|
140 | - protected function setSupportedRoutes(array $supported_routes) |
|
141 | - { |
|
142 | - $this->supported_routes = $supported_routes; |
|
143 | - } |
|
144 | - |
|
145 | - |
|
146 | - /** |
|
147 | - * @return array |
|
148 | - */ |
|
149 | - public function attributes() |
|
150 | - { |
|
151 | - return $this->attributes; |
|
152 | - } |
|
153 | - |
|
154 | - |
|
155 | - /** |
|
156 | - * @param array $attributes |
|
157 | - */ |
|
158 | - public function setAttributes(array $attributes) |
|
159 | - { |
|
160 | - $this->attributes = $attributes; |
|
161 | - } |
|
162 | - |
|
163 | - |
|
164 | - /** |
|
165 | - * @return bool |
|
166 | - */ |
|
167 | - public function isDynamic() |
|
168 | - { |
|
169 | - return $this->dynamic; |
|
170 | - } |
|
171 | - |
|
172 | - |
|
173 | - /** |
|
174 | - * @param bool $dynamic |
|
175 | - */ |
|
176 | - public function setDynamic($dynamic = true) |
|
177 | - { |
|
178 | - $this->dynamic = filter_var($dynamic, FILTER_VALIDATE_BOOLEAN); |
|
179 | - } |
|
180 | - |
|
181 | - |
|
182 | - /** |
|
183 | - * Registers the Editor Block with WP core; |
|
184 | - * Returns the registered block type on success, or false on failure. |
|
185 | - * |
|
186 | - * @return WP_Block_Type|false |
|
187 | - */ |
|
188 | - public function registerBlock() |
|
189 | - { |
|
190 | - $args = array( |
|
191 | - 'attributes' => $this->attributes(), |
|
192 | - 'editor_script' => $this->block_asset_manager->getEditorScriptHandle(), |
|
193 | - 'editor_style' => $this->block_asset_manager->getEditorStyleHandle(), |
|
194 | - 'script' => $this->block_asset_manager->getScriptHandle(), |
|
195 | - 'style' => $this->block_asset_manager->getStyleHandle(), |
|
196 | - ); |
|
197 | - if ($this->isDynamic()) { |
|
198 | - $args['render_callback'] = array($this, 'renderBlock'); |
|
199 | - } |
|
200 | - $wp_block_type = register_block_type( |
|
201 | - new WP_Block_Type( |
|
202 | - $this->namespacedBlockType(), |
|
203 | - $args |
|
204 | - ) |
|
205 | - ); |
|
206 | - $this->setWpBlockType($wp_block_type); |
|
207 | - return $wp_block_type; |
|
208 | - } |
|
209 | - |
|
210 | - |
|
211 | - /** |
|
212 | - * @return WP_Block_Type|false The registered block type on success, or false on failure. |
|
213 | - */ |
|
214 | - public function unRegisterBlock() |
|
215 | - { |
|
216 | - return unregister_block_type($this->namespacedBlockType()); |
|
217 | - } |
|
218 | - |
|
219 | - |
|
220 | - |
|
221 | - /** |
|
222 | - * @return array |
|
223 | - */ |
|
224 | - public function getEditorContainer() |
|
225 | - { |
|
226 | - return array( |
|
227 | - $this->namespacedBlockType(), |
|
228 | - array(), |
|
229 | - ); |
|
230 | - } |
|
24 | + /** |
|
25 | + * BlockAssetManager that this editor block uses for asset registration |
|
26 | + * |
|
27 | + * @var BlockAssetManagerInterface $block_asset_manager |
|
28 | + */ |
|
29 | + protected $block_asset_manager; |
|
30 | + |
|
31 | + /** |
|
32 | + * @var RequestInterface $request |
|
33 | + */ |
|
34 | + protected $request; |
|
35 | + |
|
36 | + /** |
|
37 | + * @var array $attributes |
|
38 | + */ |
|
39 | + private $attributes; |
|
40 | + |
|
41 | + /** |
|
42 | + * If set to true, then the block will render its content client side |
|
43 | + * If false, then the block will render its content server side using the renderBlock() method |
|
44 | + * |
|
45 | + * @var bool $dynamic |
|
46 | + */ |
|
47 | + private $dynamic = false; |
|
48 | + |
|
49 | + /** |
|
50 | + * @var string $block_type |
|
51 | + */ |
|
52 | + private $block_type; |
|
53 | + |
|
54 | + /** |
|
55 | + * @var array $supported_routes |
|
56 | + */ |
|
57 | + private $supported_routes; |
|
58 | + |
|
59 | + /** |
|
60 | + * @var WP_Block_Type $wp_block_type |
|
61 | + */ |
|
62 | + private $wp_block_type; |
|
63 | + |
|
64 | + |
|
65 | + /** |
|
66 | + * BlockLoader constructor. |
|
67 | + * |
|
68 | + * @param BlockAssetManagerInterface $block_asset_manager |
|
69 | + * @param RequestInterface $request |
|
70 | + */ |
|
71 | + public function __construct(BlockAssetManagerInterface $block_asset_manager, RequestInterface $request) |
|
72 | + { |
|
73 | + $this->block_asset_manager = $block_asset_manager; |
|
74 | + $this->request = $request; |
|
75 | + } |
|
76 | + |
|
77 | + |
|
78 | + /** |
|
79 | + * @return string |
|
80 | + */ |
|
81 | + public function blockType() |
|
82 | + { |
|
83 | + return $this->block_type; |
|
84 | + } |
|
85 | + |
|
86 | + |
|
87 | + /** |
|
88 | + * @return string |
|
89 | + */ |
|
90 | + public function namespacedBlockType() |
|
91 | + { |
|
92 | + return self::NAME_SPACE . '/' . $this->block_type; |
|
93 | + } |
|
94 | + |
|
95 | + |
|
96 | + /** |
|
97 | + * @param string $block_type |
|
98 | + */ |
|
99 | + protected function setBlockType($block_type) |
|
100 | + { |
|
101 | + $this->block_type = $block_type; |
|
102 | + } |
|
103 | + |
|
104 | + |
|
105 | + /** |
|
106 | + * BlockAssetManager that this editor block uses for asset registration |
|
107 | + * |
|
108 | + * @return BlockAssetManagerInterface |
|
109 | + */ |
|
110 | + public function assetManager() |
|
111 | + { |
|
112 | + return $this->block_asset_manager; |
|
113 | + } |
|
114 | + |
|
115 | + |
|
116 | + /** |
|
117 | + * @param WP_Block_Type $wp_block_type |
|
118 | + */ |
|
119 | + protected function setWpBlockType($wp_block_type) |
|
120 | + { |
|
121 | + $this->wp_block_type = $wp_block_type; |
|
122 | + } |
|
123 | + |
|
124 | + /** |
|
125 | + * returns an array of fully qualified class names |
|
126 | + * for RouteMatchSpecificationInterface objects |
|
127 | + * that specify routes that the block should be loaded for. |
|
128 | + * |
|
129 | + * @return array |
|
130 | + */ |
|
131 | + public function supportedRoutes() |
|
132 | + { |
|
133 | + return $this->supported_routes; |
|
134 | + } |
|
135 | + |
|
136 | + |
|
137 | + /** |
|
138 | + * @param array $supported_routes |
|
139 | + */ |
|
140 | + protected function setSupportedRoutes(array $supported_routes) |
|
141 | + { |
|
142 | + $this->supported_routes = $supported_routes; |
|
143 | + } |
|
144 | + |
|
145 | + |
|
146 | + /** |
|
147 | + * @return array |
|
148 | + */ |
|
149 | + public function attributes() |
|
150 | + { |
|
151 | + return $this->attributes; |
|
152 | + } |
|
153 | + |
|
154 | + |
|
155 | + /** |
|
156 | + * @param array $attributes |
|
157 | + */ |
|
158 | + public function setAttributes(array $attributes) |
|
159 | + { |
|
160 | + $this->attributes = $attributes; |
|
161 | + } |
|
162 | + |
|
163 | + |
|
164 | + /** |
|
165 | + * @return bool |
|
166 | + */ |
|
167 | + public function isDynamic() |
|
168 | + { |
|
169 | + return $this->dynamic; |
|
170 | + } |
|
171 | + |
|
172 | + |
|
173 | + /** |
|
174 | + * @param bool $dynamic |
|
175 | + */ |
|
176 | + public function setDynamic($dynamic = true) |
|
177 | + { |
|
178 | + $this->dynamic = filter_var($dynamic, FILTER_VALIDATE_BOOLEAN); |
|
179 | + } |
|
180 | + |
|
181 | + |
|
182 | + /** |
|
183 | + * Registers the Editor Block with WP core; |
|
184 | + * Returns the registered block type on success, or false on failure. |
|
185 | + * |
|
186 | + * @return WP_Block_Type|false |
|
187 | + */ |
|
188 | + public function registerBlock() |
|
189 | + { |
|
190 | + $args = array( |
|
191 | + 'attributes' => $this->attributes(), |
|
192 | + 'editor_script' => $this->block_asset_manager->getEditorScriptHandle(), |
|
193 | + 'editor_style' => $this->block_asset_manager->getEditorStyleHandle(), |
|
194 | + 'script' => $this->block_asset_manager->getScriptHandle(), |
|
195 | + 'style' => $this->block_asset_manager->getStyleHandle(), |
|
196 | + ); |
|
197 | + if ($this->isDynamic()) { |
|
198 | + $args['render_callback'] = array($this, 'renderBlock'); |
|
199 | + } |
|
200 | + $wp_block_type = register_block_type( |
|
201 | + new WP_Block_Type( |
|
202 | + $this->namespacedBlockType(), |
|
203 | + $args |
|
204 | + ) |
|
205 | + ); |
|
206 | + $this->setWpBlockType($wp_block_type); |
|
207 | + return $wp_block_type; |
|
208 | + } |
|
209 | + |
|
210 | + |
|
211 | + /** |
|
212 | + * @return WP_Block_Type|false The registered block type on success, or false on failure. |
|
213 | + */ |
|
214 | + public function unRegisterBlock() |
|
215 | + { |
|
216 | + return unregister_block_type($this->namespacedBlockType()); |
|
217 | + } |
|
218 | + |
|
219 | + |
|
220 | + |
|
221 | + /** |
|
222 | + * @return array |
|
223 | + */ |
|
224 | + public function getEditorContainer() |
|
225 | + { |
|
226 | + return array( |
|
227 | + $this->namespacedBlockType(), |
|
228 | + array(), |
|
229 | + ); |
|
230 | + } |
|
231 | 231 | } |
@@ -24,148 +24,148 @@ |
||
24 | 24 | class EventAttendees extends Block |
25 | 25 | { |
26 | 26 | |
27 | - const BLOCK_TYPE = 'event-attendees'; |
|
27 | + const BLOCK_TYPE = 'event-attendees'; |
|
28 | 28 | |
29 | - /** |
|
30 | - * @var EspressoEventAttendees $shortcode |
|
31 | - */ |
|
32 | - protected $shortcode; |
|
29 | + /** |
|
30 | + * @var EspressoEventAttendees $shortcode |
|
31 | + */ |
|
32 | + protected $shortcode; |
|
33 | 33 | |
34 | 34 | |
35 | - /** |
|
36 | - * EventAttendees constructor. |
|
37 | - * |
|
38 | - * @param CoreBlocksAssetManager $block_asset_manager |
|
39 | - * @param RequestInterface $request |
|
40 | - * @param EspressoEventAttendees $shortcode |
|
41 | - */ |
|
42 | - public function __construct( |
|
43 | - CoreBlocksAssetManager $block_asset_manager, |
|
44 | - RequestInterface $request, |
|
45 | - EspressoEventAttendees $shortcode |
|
46 | - ) { |
|
47 | - parent::__construct($block_asset_manager, $request); |
|
48 | - $this->shortcode = $shortcode; |
|
49 | - } |
|
35 | + /** |
|
36 | + * EventAttendees constructor. |
|
37 | + * |
|
38 | + * @param CoreBlocksAssetManager $block_asset_manager |
|
39 | + * @param RequestInterface $request |
|
40 | + * @param EspressoEventAttendees $shortcode |
|
41 | + */ |
|
42 | + public function __construct( |
|
43 | + CoreBlocksAssetManager $block_asset_manager, |
|
44 | + RequestInterface $request, |
|
45 | + EspressoEventAttendees $shortcode |
|
46 | + ) { |
|
47 | + parent::__construct($block_asset_manager, $request); |
|
48 | + $this->shortcode = $shortcode; |
|
49 | + } |
|
50 | 50 | |
51 | 51 | |
52 | - /** |
|
53 | - * Perform any early setup required by the block |
|
54 | - * including setting the block type and supported post types |
|
55 | - * |
|
56 | - * @return void |
|
57 | - */ |
|
58 | - public function initialize() |
|
59 | - { |
|
60 | - $this->setBlockType(self::BLOCK_TYPE); |
|
61 | - $this->setSupportedRoutes( |
|
62 | - array( |
|
63 | - 'EventEspresso\core\domain\entities\route_match\specifications\admin\EspressoPostTypeEditor', |
|
64 | - 'EventEspresso\core\domain\entities\route_match\specifications\admin\WordPressPostTypeEditor', |
|
65 | - 'EventEspresso\core\domain\entities\route_match\specifications\frontend\EspressoBlockRenderer', |
|
66 | - ) |
|
67 | - ); |
|
68 | - $EVT_ID = $this->request->getRequestParam('page') === 'espresso_events' |
|
69 | - ? $this->request->getRequestParam('post', 0) |
|
70 | - : 0; |
|
71 | - $this->setAttributes( |
|
72 | - array( |
|
73 | - 'eventId' => array( |
|
74 | - 'type' => 'number', |
|
75 | - 'default' => $EVT_ID, |
|
76 | - ), |
|
77 | - 'datetimeId' => array( |
|
78 | - 'type' => 'number', |
|
79 | - 'default' => 0, |
|
80 | - ), |
|
81 | - 'ticketId' => array( |
|
82 | - 'type' => 'number', |
|
83 | - 'default' => 0, |
|
84 | - ), |
|
85 | - 'status' => array( |
|
86 | - 'type' => 'string', |
|
87 | - 'default' => EEM_Registration::status_id_approved, |
|
88 | - ), |
|
89 | - 'limit' => array( |
|
90 | - 'type' => 'number', |
|
91 | - 'default' => 10, |
|
92 | - ), |
|
93 | - 'showGravatar' => array( |
|
94 | - 'type' => 'boolean', |
|
95 | - 'default' => false, |
|
96 | - ), |
|
97 | - 'displayOnArchives' => array( |
|
98 | - 'type' => 'boolean', |
|
99 | - 'default' => false, |
|
100 | - ), |
|
101 | - ) |
|
102 | - ); |
|
103 | - $this->setDynamic(); |
|
104 | - } |
|
52 | + /** |
|
53 | + * Perform any early setup required by the block |
|
54 | + * including setting the block type and supported post types |
|
55 | + * |
|
56 | + * @return void |
|
57 | + */ |
|
58 | + public function initialize() |
|
59 | + { |
|
60 | + $this->setBlockType(self::BLOCK_TYPE); |
|
61 | + $this->setSupportedRoutes( |
|
62 | + array( |
|
63 | + 'EventEspresso\core\domain\entities\route_match\specifications\admin\EspressoPostTypeEditor', |
|
64 | + 'EventEspresso\core\domain\entities\route_match\specifications\admin\WordPressPostTypeEditor', |
|
65 | + 'EventEspresso\core\domain\entities\route_match\specifications\frontend\EspressoBlockRenderer', |
|
66 | + ) |
|
67 | + ); |
|
68 | + $EVT_ID = $this->request->getRequestParam('page') === 'espresso_events' |
|
69 | + ? $this->request->getRequestParam('post', 0) |
|
70 | + : 0; |
|
71 | + $this->setAttributes( |
|
72 | + array( |
|
73 | + 'eventId' => array( |
|
74 | + 'type' => 'number', |
|
75 | + 'default' => $EVT_ID, |
|
76 | + ), |
|
77 | + 'datetimeId' => array( |
|
78 | + 'type' => 'number', |
|
79 | + 'default' => 0, |
|
80 | + ), |
|
81 | + 'ticketId' => array( |
|
82 | + 'type' => 'number', |
|
83 | + 'default' => 0, |
|
84 | + ), |
|
85 | + 'status' => array( |
|
86 | + 'type' => 'string', |
|
87 | + 'default' => EEM_Registration::status_id_approved, |
|
88 | + ), |
|
89 | + 'limit' => array( |
|
90 | + 'type' => 'number', |
|
91 | + 'default' => 10, |
|
92 | + ), |
|
93 | + 'showGravatar' => array( |
|
94 | + 'type' => 'boolean', |
|
95 | + 'default' => false, |
|
96 | + ), |
|
97 | + 'displayOnArchives' => array( |
|
98 | + 'type' => 'boolean', |
|
99 | + 'default' => false, |
|
100 | + ), |
|
101 | + ) |
|
102 | + ); |
|
103 | + $this->setDynamic(); |
|
104 | + } |
|
105 | 105 | |
106 | 106 | |
107 | - /** |
|
108 | - * returns an array where the key corresponds to the incoming attribute name from the WP block |
|
109 | - * and the value corresponds to the attribute name for the existing EspressoEventAttendees shortcode |
|
110 | - * |
|
111 | - * @since $VID:$ |
|
112 | - * @return array |
|
113 | - */ |
|
114 | - private function getAttributesMap() |
|
115 | - { |
|
116 | - return array( |
|
117 | - 'eventId' => array('attribute' => 'event_id', 'sanitize' => 'absint'), |
|
118 | - 'datetimeId' => array('attribute' => 'datetime_id', 'sanitize' => 'absint'), |
|
119 | - 'ticketId' => array('attribute' => 'ticket_id', 'sanitize' => 'absint'), |
|
120 | - 'status' => array('attribute' => 'status', 'sanitize' => 'sanitize_text_field'), |
|
121 | - 'limit' => array('attribute' => 'limit', 'sanitize' => 'intval'), |
|
122 | - 'showGravatar' => array('attribute' => 'show_gravatar', 'sanitize' => 'bool'), |
|
123 | - 'displayOnArchives' => array('attribute' => 'display_on_archives', 'sanitize' => 'bool'), |
|
124 | - ); |
|
125 | - } |
|
107 | + /** |
|
108 | + * returns an array where the key corresponds to the incoming attribute name from the WP block |
|
109 | + * and the value corresponds to the attribute name for the existing EspressoEventAttendees shortcode |
|
110 | + * |
|
111 | + * @since $VID:$ |
|
112 | + * @return array |
|
113 | + */ |
|
114 | + private function getAttributesMap() |
|
115 | + { |
|
116 | + return array( |
|
117 | + 'eventId' => array('attribute' => 'event_id', 'sanitize' => 'absint'), |
|
118 | + 'datetimeId' => array('attribute' => 'datetime_id', 'sanitize' => 'absint'), |
|
119 | + 'ticketId' => array('attribute' => 'ticket_id', 'sanitize' => 'absint'), |
|
120 | + 'status' => array('attribute' => 'status', 'sanitize' => 'sanitize_text_field'), |
|
121 | + 'limit' => array('attribute' => 'limit', 'sanitize' => 'intval'), |
|
122 | + 'showGravatar' => array('attribute' => 'show_gravatar', 'sanitize' => 'bool'), |
|
123 | + 'displayOnArchives' => array('attribute' => 'display_on_archives', 'sanitize' => 'bool'), |
|
124 | + ); |
|
125 | + } |
|
126 | 126 | |
127 | 127 | |
128 | - /** |
|
129 | - * @param array $attributes |
|
130 | - * @since $VID:$ |
|
131 | - * @return array |
|
132 | - */ |
|
133 | - private function parseAttributes(array $attributes) |
|
134 | - { |
|
135 | - foreach ($attributes as $attribute => $value) { |
|
136 | - $convert = $this->getAttributesMap(); |
|
137 | - if (isset($convert[ $attribute ])) { |
|
138 | - $sanitize = $convert[ $attribute ]['sanitize']; |
|
139 | - if ($sanitize === 'bool') { |
|
140 | - $attributes[ $convert[ $attribute ]['attribute'] ] = filter_var( |
|
141 | - $value, |
|
142 | - FILTER_VALIDATE_BOOLEAN |
|
143 | - ); |
|
144 | - } else { |
|
145 | - $attributes[ $convert[ $attribute ]['attribute'] ] = $sanitize($value); |
|
146 | - } |
|
147 | - if ($attribute !== $convert[ $attribute ]['attribute']) { |
|
148 | - unset($attributes[ $attribute ]); |
|
149 | - } |
|
150 | - } |
|
151 | - } |
|
152 | - return $attributes; |
|
153 | - } |
|
128 | + /** |
|
129 | + * @param array $attributes |
|
130 | + * @since $VID:$ |
|
131 | + * @return array |
|
132 | + */ |
|
133 | + private function parseAttributes(array $attributes) |
|
134 | + { |
|
135 | + foreach ($attributes as $attribute => $value) { |
|
136 | + $convert = $this->getAttributesMap(); |
|
137 | + if (isset($convert[ $attribute ])) { |
|
138 | + $sanitize = $convert[ $attribute ]['sanitize']; |
|
139 | + if ($sanitize === 'bool') { |
|
140 | + $attributes[ $convert[ $attribute ]['attribute'] ] = filter_var( |
|
141 | + $value, |
|
142 | + FILTER_VALIDATE_BOOLEAN |
|
143 | + ); |
|
144 | + } else { |
|
145 | + $attributes[ $convert[ $attribute ]['attribute'] ] = $sanitize($value); |
|
146 | + } |
|
147 | + if ($attribute !== $convert[ $attribute ]['attribute']) { |
|
148 | + unset($attributes[ $attribute ]); |
|
149 | + } |
|
150 | + } |
|
151 | + } |
|
152 | + return $attributes; |
|
153 | + } |
|
154 | 154 | |
155 | 155 | |
156 | - /** |
|
157 | - * returns the rendered HTML for the block |
|
158 | - * |
|
159 | - * @param array $attributes |
|
160 | - * @return string |
|
161 | - * @throws EE_Error |
|
162 | - * @throws InvalidDataTypeException |
|
163 | - * @throws InvalidInterfaceException |
|
164 | - * @throws InvalidArgumentException |
|
165 | - * @throws DomainException |
|
166 | - */ |
|
167 | - public function renderBlock(array $attributes = array()) |
|
168 | - { |
|
169 | - return $this->shortcode->processShortcode($this->parseAttributes($attributes)); |
|
170 | - } |
|
156 | + /** |
|
157 | + * returns the rendered HTML for the block |
|
158 | + * |
|
159 | + * @param array $attributes |
|
160 | + * @return string |
|
161 | + * @throws EE_Error |
|
162 | + * @throws InvalidDataTypeException |
|
163 | + * @throws InvalidInterfaceException |
|
164 | + * @throws InvalidArgumentException |
|
165 | + * @throws DomainException |
|
166 | + */ |
|
167 | + public function renderBlock(array $attributes = array()) |
|
168 | + { |
|
169 | + return $this->shortcode->processShortcode($this->parseAttributes($attributes)); |
|
170 | + } |
|
171 | 171 | } |
@@ -120,18 +120,18 @@ |
||
120 | 120 | { |
121 | 121 | foreach ($attributes as $attribute => $value) { |
122 | 122 | $convert = $this->getAttributesMap(); |
123 | - if (isset($convert[ $attribute ])) { |
|
124 | - $sanitize = $convert[ $attribute ]['sanitize']; |
|
123 | + if (isset($convert[$attribute])) { |
|
124 | + $sanitize = $convert[$attribute]['sanitize']; |
|
125 | 125 | if ($sanitize === 'bool') { |
126 | - $attributes[ $convert[ $attribute ]['attribute'] ] = filter_var( |
|
126 | + $attributes[$convert[$attribute]['attribute']] = filter_var( |
|
127 | 127 | $value, |
128 | 128 | FILTER_VALIDATE_BOOLEAN |
129 | 129 | ); |
130 | 130 | } else { |
131 | - $attributes[ $convert[ $attribute ]['attribute'] ] = $sanitize($value); |
|
131 | + $attributes[$convert[$attribute]['attribute']] = $sanitize($value); |
|
132 | 132 | } |
133 | - if ($attribute !== $convert[ $attribute ]['attribute']) { |
|
134 | - unset($attributes[ $attribute ]); |
|
133 | + if ($attribute !== $convert[$attribute]['attribute']) { |
|
134 | + unset($attributes[$attribute]); |
|
135 | 135 | } |
136 | 136 | } |
137 | 137 | } |
@@ -15,23 +15,23 @@ |
||
15 | 15 | */ |
16 | 16 | class WordPressPostsEditorEdit extends RouteMatchSpecification |
17 | 17 | { |
18 | - /** |
|
19 | - * returns true if current request matches specification |
|
20 | - * |
|
21 | - * @since $VID:$ |
|
22 | - * @return boolean |
|
23 | - */ |
|
24 | - public function isMatchingRoute() |
|
25 | - { |
|
26 | - global $post; |
|
27 | - return strpos($this->request->requestUri(), 'wp-admin/post.php') !== false |
|
28 | - && ( |
|
29 | - $this->request->getRequestParam('post_type', 'post') === 'post' |
|
30 | - || ( |
|
31 | - $post instanceof WP_Post |
|
32 | - && $post->post_type === 'post' |
|
33 | - ) |
|
34 | - ) |
|
35 | - && $this->request->getRequestParam('action') === 'edit'; |
|
36 | - } |
|
18 | + /** |
|
19 | + * returns true if current request matches specification |
|
20 | + * |
|
21 | + * @since $VID:$ |
|
22 | + * @return boolean |
|
23 | + */ |
|
24 | + public function isMatchingRoute() |
|
25 | + { |
|
26 | + global $post; |
|
27 | + return strpos($this->request->requestUri(), 'wp-admin/post.php') !== false |
|
28 | + && ( |
|
29 | + $this->request->getRequestParam('post_type', 'post') === 'post' |
|
30 | + || ( |
|
31 | + $post instanceof WP_Post |
|
32 | + && $post->post_type === 'post' |
|
33 | + ) |
|
34 | + ) |
|
35 | + && $this->request->getRequestParam('action') === 'edit'; |
|
36 | + } |
|
37 | 37 | } |