@@ -1,1 +1,1 @@ |
||
1 | -<?php printf( esc_html__('Mijireh is an off-site payment method for accepting payments online through over 80+ payment gateways and is available to event organizers in many countries. An account with Mijireh is required to accept payments. Need a Mijireh account? %1$sClick here to sign up for a merchant account%2$s.', 'event_espresso'), '<a href="https://eventespresso.com/go/mijireh/" target="_blank">','</a>' ); |
|
2 | 1 | \ No newline at end of file |
2 | +<?php printf(esc_html__('Mijireh is an off-site payment method for accepting payments online through over 80+ payment gateways and is available to event organizers in many countries. An account with Mijireh is required to accept payments. Need a Mijireh account? %1$sClick here to sign up for a merchant account%2$s.', 'event_espresso'), '<a href="https://eventespresso.com/go/mijireh/" target="_blank">', '</a>'); |
|
3 | 3 | \ No newline at end of file |
@@ -1,1 +1,1 @@ |
||
1 | -<?php printf( esc_html__('PayPal Pro (Website Payments Pro) is an on-site payment method for accepting credit and debit cards and is available to event organizers in the United States, United Kingdom, and Canada. An account with PayPal is required to accept payments. Need a PayPal Pro account? Call 1-855-456-1338 or %1$sclick here to sign up for a merchant account%2$s.', 'event_espresso'), '<a href="https://eventespresso.com/go/paypalpro/" target="_blank">','</a>' ); |
|
2 | 1 | \ No newline at end of file |
2 | +<?php printf(esc_html__('PayPal Pro (Website Payments Pro) is an on-site payment method for accepting credit and debit cards and is available to event organizers in the United States, United Kingdom, and Canada. An account with PayPal is required to accept payments. Need a PayPal Pro account? Call 1-855-456-1338 or %1$sclick here to sign up for a merchant account%2$s.', 'event_espresso'), '<a href="https://eventespresso.com/go/paypalpro/" target="_blank">', '</a>'); |
|
3 | 3 | \ No newline at end of file |
@@ -2,7 +2,7 @@ |
||
2 | 2 | $closing_tag = '</a>'; |
3 | 3 | //if this is decaf, which is put on WordPress.org, we need to inform users that |
4 | 4 | //we just put an affiliate link there. See https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/ section 12 |
5 | -if( apply_filters( 'FHEE__ee_show_affiliate_links', true ) ) { |
|
6 | - $closing_tag .= esc_html__( ' (affiliate link)', 'event_espresso' ); |
|
5 | +if (apply_filters('FHEE__ee_show_affiliate_links', true)) { |
|
6 | + $closing_tag .= esc_html__(' (affiliate link)', 'event_espresso'); |
|
7 | 7 | } |
8 | -printf( esc_html__('PayPal Standard (PayPal Payments Standard) is an off-site payment method and is available to event organizers in many countries. A PayPal premier or business account is needed to accept payments. Need a PayPal account? Call 1-855-456-1338 or %1$sclick here to sign up for a merchant account%2$s.', 'event_espresso'), '<a href="https://eventespresso.com/go/paypalstandard/" target="_blank">', $closing_tag ); |
|
9 | 8 | \ No newline at end of file |
9 | +printf(esc_html__('PayPal Standard (PayPal Payments Standard) is an off-site payment method and is available to event organizers in many countries. A PayPal premier or business account is needed to accept payments. Need a PayPal account? Call 1-855-456-1338 or %1$sclick here to sign up for a merchant account%2$s.', 'event_espresso'), '<a href="https://eventespresso.com/go/paypalstandard/" target="_blank">', $closing_tag); |
|
10 | 10 | \ No newline at end of file |
@@ -15,27 +15,27 @@ |
||
15 | 15 | * @type bool $show_gravatar whether to show gravatar or not. |
16 | 16 | */ |
17 | 17 | |
18 | -$no_attendees_message = apply_filters( 'FHEE__loop-espresso_attendees-shortcode__template__no_attendees_message', __('No Attendees Yet', 'event_espresso' ) ); |
|
18 | +$no_attendees_message = apply_filters('FHEE__loop-espresso_attendees-shortcode__template__no_attendees_message', __('No Attendees Yet', 'event_espresso')); |
|
19 | 19 | |
20 | 20 | |
21 | 21 | ?> |
22 | 22 | |
23 | 23 | <div class="event-attendees"> |
24 | - <?php do_action( 'AHEE__loop-espresso_event_attendees__before', $contacts, $event, $datetime, $ticket, $show_gravatar ); ?> |
|
25 | - <?php if ( $contacts ) : ?> |
|
24 | + <?php do_action('AHEE__loop-espresso_event_attendees__before', $contacts, $event, $datetime, $ticket, $show_gravatar); ?> |
|
25 | + <?php if ($contacts) : ?> |
|
26 | 26 | <ul class="event-attendees-list"> |
27 | - <?php foreach( $contacts as $contact ) : |
|
28 | - EEH_Template::get_template_part( 'content', 'espresso_event_attendees', array( |
|
27 | + <?php foreach ($contacts as $contact) : |
|
28 | + EEH_Template::get_template_part('content', 'espresso_event_attendees', array( |
|
29 | 29 | 'contact' => $contact, |
30 | 30 | 'event' => $event, |
31 | 31 | 'datetime' => $datetime, |
32 | 32 | 'ticket' => $ticket, |
33 | 33 | 'show_gravatar' => $show_gravatar |
34 | - ) ); |
|
34 | + )); |
|
35 | 35 | endforeach; ?> |
36 | 36 | </ul> |
37 | 37 | <?php else : ?> |
38 | 38 | <p><?php echo $no_attendees_message; ?></p> |
39 | 39 | <?php endif; ?> |
40 | - <?php do_action( 'AHEE__loop-espresso_event_attendees__after', $contacts, $event, $datetime, $ticket, $show_gravatar ); ?> |
|
40 | + <?php do_action('AHEE__loop-espresso_event_attendees__after', $contacts, $event, $datetime, $ticket, $show_gravatar); ?> |
|
41 | 41 | </div> |
42 | 42 | \ No newline at end of file |
@@ -34,8 +34,11 @@ |
||
34 | 34 | ) ); |
35 | 35 | endforeach; ?> |
36 | 36 | </ul> |
37 | - <?php else : ?> |
|
38 | - <p><?php echo $no_attendees_message; ?></p> |
|
37 | + <?php else { |
|
38 | + : ?> |
|
39 | + <p><?php echo $no_attendees_message; |
|
40 | +} |
|
41 | +?></p> |
|
39 | 42 | <?php endif; ?> |
40 | 43 | <?php do_action( 'AHEE__loop-espresso_event_attendees__after', $contacts, $event, $datetime, $ticket, $show_gravatar ); ?> |
41 | 44 | </div> |
42 | 45 | \ No newline at end of file |
@@ -58,7 +58,7 @@ |
||
58 | 58 | */ |
59 | 59 | public function processCapCheck($cap_check) |
60 | 60 | { |
61 | - if (is_array($cap_check)){ |
|
61 | + if (is_array($cap_check)) { |
|
62 | 62 | foreach ($cap_check as $check) { |
63 | 63 | $this->processCapCheck($check); |
64 | 64 | } |
@@ -5,7 +5,7 @@ discard block |
||
5 | 5 | use EventEspresso\core\exceptions\InvalidClassException; |
6 | 6 | |
7 | 7 | if ( ! defined('EVENT_ESPRESSO_VERSION')) { |
8 | - exit('No direct script access allowed'); |
|
8 | + exit('No direct script access allowed'); |
|
9 | 9 | } |
10 | 10 | |
11 | 11 | |
@@ -21,89 +21,89 @@ discard block |
||
21 | 21 | class CapabilitiesChecker |
22 | 22 | { |
23 | 23 | |
24 | - /** |
|
25 | - * @type \EE_Capabilities $capabilities |
|
26 | - */ |
|
27 | - private $capabilities; |
|
28 | - |
|
29 | - |
|
30 | - |
|
31 | - /** |
|
32 | - * CapabilitiesChecker constructor |
|
33 | - * |
|
34 | - * @param \EE_Capabilities $capabilities |
|
35 | - */ |
|
36 | - public function __construct(\EE_Capabilities $capabilities) |
|
37 | - { |
|
38 | - $this->capabilities = $capabilities; |
|
39 | - } |
|
40 | - |
|
41 | - |
|
42 | - |
|
43 | - /** |
|
44 | - * @return \EE_Capabilities |
|
45 | - */ |
|
46 | - protected function capabilities() |
|
47 | - { |
|
48 | - return $this->capabilities; |
|
49 | - } |
|
50 | - |
|
51 | - |
|
52 | - |
|
53 | - /** |
|
54 | - * Verifies that the current user has ALL of the capabilities listed in the CapCheck DTO. |
|
55 | - * If any of the individual capability checks fails, then the command will NOT be executed. |
|
56 | - * |
|
57 | - * @param CapCheckInterface|CapCheckInterface[] $cap_check |
|
58 | - * @return bool |
|
59 | - * @throws InvalidClassException |
|
60 | - * @throws InsufficientPermissionsException |
|
61 | - */ |
|
62 | - public function processCapCheck($cap_check) |
|
63 | - { |
|
64 | - if (is_array($cap_check)){ |
|
65 | - foreach ($cap_check as $check) { |
|
66 | - $this->processCapCheck($check); |
|
67 | - } |
|
68 | - return true; |
|
69 | - } |
|
70 | - // at this point, $cap_check should be an individual instance of CapCheck |
|
71 | - if ( ! $cap_check instanceof CapCheckInterface) { |
|
72 | - throw new InvalidClassException( |
|
73 | - '\EventEspresso\core\domain\services\capabilities\CapCheckInterface' |
|
74 | - ); |
|
75 | - } |
|
76 | - // sometimes cap checks are conditional, and no capabilities are required |
|
77 | - if ($cap_check instanceof PublicCapabilities) { |
|
78 | - return true; |
|
79 | - } |
|
80 | - $capabilities = (array) $cap_check->capability(); |
|
81 | - foreach ($capabilities as $capability) { |
|
82 | - if ( |
|
83 | - ! $this->capabilities()->current_user_can( |
|
84 | - $capability, |
|
85 | - $cap_check->context(), |
|
86 | - $cap_check->ID() |
|
87 | - ) |
|
88 | - ) { |
|
89 | - throw new InsufficientPermissionsException($cap_check->context()); |
|
90 | - } |
|
91 | - } |
|
92 | - return true; |
|
93 | - } |
|
94 | - |
|
95 | - |
|
96 | - |
|
97 | - /** |
|
98 | - * @param string $capability - the capability to be checked, like: 'ee_edit_registrations' |
|
99 | - * @param string $context - what the user is attempting to do, like: 'Edit Registration' |
|
100 | - * @param int $ID - (optional) ID for item where current_user_can is being called from |
|
101 | - * @return bool |
|
102 | - */ |
|
103 | - public function process($capability, $context, $ID = 0) |
|
104 | - { |
|
105 | - return $this->processCapCheck(new CapCheck($capability, $context, $ID)); |
|
106 | - } |
|
24 | + /** |
|
25 | + * @type \EE_Capabilities $capabilities |
|
26 | + */ |
|
27 | + private $capabilities; |
|
28 | + |
|
29 | + |
|
30 | + |
|
31 | + /** |
|
32 | + * CapabilitiesChecker constructor |
|
33 | + * |
|
34 | + * @param \EE_Capabilities $capabilities |
|
35 | + */ |
|
36 | + public function __construct(\EE_Capabilities $capabilities) |
|
37 | + { |
|
38 | + $this->capabilities = $capabilities; |
|
39 | + } |
|
40 | + |
|
41 | + |
|
42 | + |
|
43 | + /** |
|
44 | + * @return \EE_Capabilities |
|
45 | + */ |
|
46 | + protected function capabilities() |
|
47 | + { |
|
48 | + return $this->capabilities; |
|
49 | + } |
|
50 | + |
|
51 | + |
|
52 | + |
|
53 | + /** |
|
54 | + * Verifies that the current user has ALL of the capabilities listed in the CapCheck DTO. |
|
55 | + * If any of the individual capability checks fails, then the command will NOT be executed. |
|
56 | + * |
|
57 | + * @param CapCheckInterface|CapCheckInterface[] $cap_check |
|
58 | + * @return bool |
|
59 | + * @throws InvalidClassException |
|
60 | + * @throws InsufficientPermissionsException |
|
61 | + */ |
|
62 | + public function processCapCheck($cap_check) |
|
63 | + { |
|
64 | + if (is_array($cap_check)){ |
|
65 | + foreach ($cap_check as $check) { |
|
66 | + $this->processCapCheck($check); |
|
67 | + } |
|
68 | + return true; |
|
69 | + } |
|
70 | + // at this point, $cap_check should be an individual instance of CapCheck |
|
71 | + if ( ! $cap_check instanceof CapCheckInterface) { |
|
72 | + throw new InvalidClassException( |
|
73 | + '\EventEspresso\core\domain\services\capabilities\CapCheckInterface' |
|
74 | + ); |
|
75 | + } |
|
76 | + // sometimes cap checks are conditional, and no capabilities are required |
|
77 | + if ($cap_check instanceof PublicCapabilities) { |
|
78 | + return true; |
|
79 | + } |
|
80 | + $capabilities = (array) $cap_check->capability(); |
|
81 | + foreach ($capabilities as $capability) { |
|
82 | + if ( |
|
83 | + ! $this->capabilities()->current_user_can( |
|
84 | + $capability, |
|
85 | + $cap_check->context(), |
|
86 | + $cap_check->ID() |
|
87 | + ) |
|
88 | + ) { |
|
89 | + throw new InsufficientPermissionsException($cap_check->context()); |
|
90 | + } |
|
91 | + } |
|
92 | + return true; |
|
93 | + } |
|
94 | + |
|
95 | + |
|
96 | + |
|
97 | + /** |
|
98 | + * @param string $capability - the capability to be checked, like: 'ee_edit_registrations' |
|
99 | + * @param string $context - what the user is attempting to do, like: 'Edit Registration' |
|
100 | + * @param int $ID - (optional) ID for item where current_user_can is being called from |
|
101 | + * @return bool |
|
102 | + */ |
|
103 | + public function process($capability, $context, $ID = 0) |
|
104 | + { |
|
105 | + return $this->processCapCheck(new CapCheck($capability, $context, $ID)); |
|
106 | + } |
|
107 | 107 | |
108 | 108 | |
109 | 109 |
@@ -187,7 +187,7 @@ discard block |
||
187 | 187 | |
188 | 188 | /** |
189 | 189 | * start_timer |
190 | - * @param null $timer_name |
|
190 | + * @param string $timer_name |
|
191 | 191 | */ |
192 | 192 | public function start_timer( $timer_name = NULL ){ |
193 | 193 | $this->_start_times[$timer_name] = microtime( TRUE ); |
@@ -468,12 +468,13 @@ discard block |
||
468 | 468 | |
469 | 469 | |
470 | 470 | /** |
471 | - * @param mixed $var |
|
471 | + * @param string $var |
|
472 | 472 | * @param string $var_name |
473 | 473 | * @param string $file |
474 | 474 | * @param int $line |
475 | 475 | * @param int $heading_tag |
476 | 476 | * @param bool $die |
477 | + * @param string $margin |
|
477 | 478 | */ |
478 | 479 | public static function printv( $var, $var_name = '', $file = __FILE__, $line = __LINE__, $heading_tag = 5, $die = false, $margin ) { |
479 | 480 | $var_name = ! $var_name ? 'string' : $var_name; |
@@ -480,9 +480,9 @@ discard block |
||
480 | 480 | $var_name = ucwords( str_replace( '$', '', $var_name ) ); |
481 | 481 | $is_method = method_exists( $var_name, $var ); |
482 | 482 | $var_name = ucwords( str_replace( '_', ' ', $var_name ) ); |
483 | - $heading_tag = is_int($heading_tag) ? "h{$heading_tag}" : "h5"; |
|
484 | - $result = EEH_Debug_Tools::heading($var_name, $heading_tag, $margin); |
|
485 | - $result .= $is_method |
|
483 | + $heading_tag = is_int($heading_tag) ? "h{$heading_tag}" : "h5"; |
|
484 | + $result = EEH_Debug_Tools::heading($var_name, $heading_tag, $margin); |
|
485 | + $result .= $is_method |
|
486 | 486 | ? \EEH_Debug_Tools::grey_span('::') . \EEH_Debug_Tools::orange_span($var . "()") |
487 | 487 | : \EEH_Debug_Tools::grey_span(' : ') . \EEH_Debug_Tools::orange_span($var); |
488 | 488 | $result .= \EEH_Debug_Tools::file_and_line($file, $line); |
@@ -496,93 +496,93 @@ discard block |
||
496 | 496 | |
497 | 497 | |
498 | 498 | |
499 | - /** |
|
500 | - * @param string $var_name |
|
501 | - * @param string $heading_tag |
|
502 | - * @param string $margin |
|
503 | - * @return string |
|
504 | - */ |
|
499 | + /** |
|
500 | + * @param string $var_name |
|
501 | + * @param string $heading_tag |
|
502 | + * @param string $margin |
|
503 | + * @return string |
|
504 | + */ |
|
505 | 505 | protected static function heading( $var_name = '', $heading_tag = 'h5', $margin = '' ) { |
506 | - if (defined('EE_TESTS_DIR')) { |
|
507 | - return "\n\n{$var_name}"; |
|
508 | - } |
|
509 | - return '<'.$heading_tag.' style="color:#2EA2CC; margin:25px 0 0'.$margin.';"><b>'.$var_name.'</b>'; |
|
510 | - } |
|
506 | + if (defined('EE_TESTS_DIR')) { |
|
507 | + return "\n\n{$var_name}"; |
|
508 | + } |
|
509 | + return '<'.$heading_tag.' style="color:#2EA2CC; margin:25px 0 0'.$margin.';"><b>'.$var_name.'</b>'; |
|
510 | + } |
|
511 | 511 | |
512 | 512 | |
513 | 513 | |
514 | - /** |
|
515 | - * @param string $heading_tag |
|
516 | - * @return string |
|
517 | - */ |
|
514 | + /** |
|
515 | + * @param string $heading_tag |
|
516 | + * @return string |
|
517 | + */ |
|
518 | 518 | protected static function headingx( $heading_tag = 'h5' ) { |
519 | - if (defined('EE_TESTS_DIR')) { |
|
520 | - return "\n"; |
|
521 | - } |
|
522 | - return '</' . $heading_tag . '>'; |
|
523 | - } |
|
519 | + if (defined('EE_TESTS_DIR')) { |
|
520 | + return "\n"; |
|
521 | + } |
|
522 | + return '</' . $heading_tag . '>'; |
|
523 | + } |
|
524 | 524 | |
525 | 525 | |
526 | 526 | |
527 | - /** |
|
528 | - * @param string $content |
|
529 | - * @return string |
|
530 | - */ |
|
527 | + /** |
|
528 | + * @param string $content |
|
529 | + * @return string |
|
530 | + */ |
|
531 | 531 | protected static function grey_span( $content = '' ) { |
532 | - if (defined('EE_TESTS_DIR')) { |
|
533 | - return $content; |
|
534 | - } |
|
535 | - return '<span style="color:#999">' . $content . '</span>'; |
|
536 | - } |
|
532 | + if (defined('EE_TESTS_DIR')) { |
|
533 | + return $content; |
|
534 | + } |
|
535 | + return '<span style="color:#999">' . $content . '</span>'; |
|
536 | + } |
|
537 | 537 | |
538 | 538 | |
539 | 539 | |
540 | - /** |
|
541 | - * @param string $file |
|
542 | - * @param int $line |
|
543 | - * @return string |
|
544 | - */ |
|
540 | + /** |
|
541 | + * @param string $file |
|
542 | + * @param int $line |
|
543 | + * @return string |
|
544 | + */ |
|
545 | 545 | protected static function file_and_line($file, $line) { |
546 | - if (defined('EE_TESTS_DIR')) { |
|
547 | - return "\n (" . $file . ' line no: ' . $line . ' ) '; |
|
548 | - } |
|
549 | - return '<br /><span style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;">' . $file . '<br />line no: ' . $line . '</span>'; |
|
550 | - } |
|
551 | - |
|
552 | - |
|
553 | - |
|
554 | - /** |
|
555 | - * @param string $content |
|
556 | - * @return string |
|
557 | - */ |
|
558 | - protected static function orange_span($content = '') |
|
559 | - { |
|
560 | - if (defined('EE_TESTS_DIR')) { |
|
561 | - return $content; |
|
562 | - } |
|
563 | - return '<span style="color:#E76700">' . $content . '</span>'; |
|
564 | - } |
|
565 | - |
|
566 | - |
|
567 | - |
|
568 | - /** |
|
569 | - * @param mixed $var |
|
570 | - * @return string |
|
571 | - */ |
|
572 | - protected static function pre_span($var) |
|
573 | - { |
|
574 | - ob_start(); |
|
575 | - var_dump($var); |
|
576 | - $var = ob_get_clean(); |
|
577 | - if (defined('EE_TESTS_DIR')) { |
|
578 | - return "\n" . $var; |
|
579 | - } |
|
580 | - return '<pre style="color:#999; padding:1em; background: #fff">' . $var . '</pre>'; |
|
581 | - } |
|
582 | - |
|
583 | - |
|
584 | - |
|
585 | - /** |
|
546 | + if (defined('EE_TESTS_DIR')) { |
|
547 | + return "\n (" . $file . ' line no: ' . $line . ' ) '; |
|
548 | + } |
|
549 | + return '<br /><span style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;">' . $file . '<br />line no: ' . $line . '</span>'; |
|
550 | + } |
|
551 | + |
|
552 | + |
|
553 | + |
|
554 | + /** |
|
555 | + * @param string $content |
|
556 | + * @return string |
|
557 | + */ |
|
558 | + protected static function orange_span($content = '') |
|
559 | + { |
|
560 | + if (defined('EE_TESTS_DIR')) { |
|
561 | + return $content; |
|
562 | + } |
|
563 | + return '<span style="color:#E76700">' . $content . '</span>'; |
|
564 | + } |
|
565 | + |
|
566 | + |
|
567 | + |
|
568 | + /** |
|
569 | + * @param mixed $var |
|
570 | + * @return string |
|
571 | + */ |
|
572 | + protected static function pre_span($var) |
|
573 | + { |
|
574 | + ob_start(); |
|
575 | + var_dump($var); |
|
576 | + $var = ob_get_clean(); |
|
577 | + if (defined('EE_TESTS_DIR')) { |
|
578 | + return "\n" . $var; |
|
579 | + } |
|
580 | + return '<pre style="color:#999; padding:1em; background: #fff">' . $var . '</pre>'; |
|
581 | + } |
|
582 | + |
|
583 | + |
|
584 | + |
|
585 | + /** |
|
586 | 586 | * @param mixed $var |
587 | 587 | * @param string $var_name |
588 | 588 | * @param string $file |
@@ -593,8 +593,8 @@ discard block |
||
593 | 593 | public static function printr( $var, $var_name = '', $file = __FILE__, $line = __LINE__, $heading_tag = 5, $die = false ) { |
594 | 594 | // return; |
595 | 595 | $file = str_replace( rtrim( ABSPATH, '\\/' ), '', $file ); |
596 | - $margin = is_admin() ? ' 180px' : '0'; |
|
597 | - //$print_r = false; |
|
596 | + $margin = is_admin() ? ' 180px' : '0'; |
|
597 | + //$print_r = false; |
|
598 | 598 | if ( is_string( $var ) ) { |
599 | 599 | EEH_Debug_Tools::printv( $var, $var_name, $file, $line, $heading_tag, $die, $margin ); |
600 | 600 | return; |
@@ -610,11 +610,11 @@ discard block |
||
610 | 610 | $var_name = ! $var_name ? 'null' : $var_name; |
611 | 611 | } |
612 | 612 | $var_name = ucwords( str_replace( array( '$', '_' ), array( '', ' ' ), $var_name ) ); |
613 | - $heading_tag = is_int($heading_tag) ? "h{$heading_tag}" : "h5"; |
|
614 | - $result = EEH_Debug_Tools::heading($var_name, $heading_tag, $margin); |
|
613 | + $heading_tag = is_int($heading_tag) ? "h{$heading_tag}" : "h5"; |
|
614 | + $result = EEH_Debug_Tools::heading($var_name, $heading_tag, $margin); |
|
615 | 615 | $result .= \EEH_Debug_Tools::grey_span(' : ') . \EEH_Debug_Tools::orange_span( |
616 | - \EEH_Debug_Tools::pre_span($var) |
|
617 | - ); |
|
616 | + \EEH_Debug_Tools::pre_span($var) |
|
617 | + ); |
|
618 | 618 | $result .= \EEH_Debug_Tools::file_and_line($file, $line); |
619 | 619 | $result .= \EEH_Debug_Tools::headingx($heading_tag); |
620 | 620 | if ( $die ) { |
@@ -1,4 +1,4 @@ discard block |
||
1 | -<?php if ( ! defined('EVENT_ESPRESSO_VERSION')) {exit('No direct script access allowed');} |
|
1 | +<?php if ( ! defined('EVENT_ESPRESSO_VERSION')) {exit('No direct script access allowed'); } |
|
2 | 2 | /** |
3 | 3 | * Class EEH_Debug_Tools |
4 | 4 | * |
@@ -8,7 +8,7 @@ discard block |
||
8 | 8 | * @since 4.0 |
9 | 9 | * |
10 | 10 | */ |
11 | -class EEH_Debug_Tools{ |
|
11 | +class EEH_Debug_Tools { |
|
12 | 12 | |
13 | 13 | /** |
14 | 14 | * instance of the EEH_Autoloader object |
@@ -41,7 +41,7 @@ discard block |
||
41 | 41 | */ |
42 | 42 | public static function instance() { |
43 | 43 | // check if class object is instantiated, and instantiated properly |
44 | - if ( ! self::$_instance instanceof EEH_Debug_Tools ) { |
|
44 | + if ( ! self::$_instance instanceof EEH_Debug_Tools) { |
|
45 | 45 | self::$_instance = new self(); |
46 | 46 | } |
47 | 47 | return self::$_instance; |
@@ -57,21 +57,21 @@ discard block |
||
57 | 57 | */ |
58 | 58 | private function __construct() { |
59 | 59 | // load Kint PHP debugging library |
60 | - if ( ! class_exists( 'Kint' ) && file_exists( EE_PLUGIN_DIR_PATH . 'tests' . DS . 'kint' . DS . 'Kint.class.php' )){ |
|
60 | + if ( ! class_exists('Kint') && file_exists(EE_PLUGIN_DIR_PATH.'tests'.DS.'kint'.DS.'Kint.class.php')) { |
|
61 | 61 | // despite EE4 having a check for an existing copy of the Kint debugging class, |
62 | 62 | // if another plugin was loaded AFTER EE4 and they did NOT perform a similar check, |
63 | 63 | // then hilarity would ensue as PHP throws a "Cannot redeclare class Kint" error |
64 | 64 | // so we've moved it to our test folder so that it is not included with production releases |
65 | 65 | // plz use https://wordpress.org/plugins/kint-debugger/ if testing production versions of EE |
66 | - require_once( EE_PLUGIN_DIR_PATH . 'tests' . DS . 'kint' . DS . 'Kint.class.php' ); |
|
66 | + require_once(EE_PLUGIN_DIR_PATH.'tests'.DS.'kint'.DS.'Kint.class.php'); |
|
67 | 67 | } |
68 | 68 | // if ( ! defined('DOING_AJAX') || $_REQUEST['noheader'] !== 'true' || ! isset( $_REQUEST['noheader'], $_REQUEST['TB_iframe'] ) ) { |
69 | 69 | //add_action( 'shutdown', array($this,'espresso_session_footer_dump') ); |
70 | 70 | // } |
71 | - $plugin = basename( EE_PLUGIN_DIR_PATH ); |
|
72 | - add_action( "activate_{$plugin}", array( 'EEH_Debug_Tools', 'ee_plugin_activation_errors' )); |
|
73 | - add_action( 'activated_plugin', array( 'EEH_Debug_Tools', 'ee_plugin_activation_errors' )); |
|
74 | - add_action( 'shutdown', array( 'EEH_Debug_Tools', 'show_db_name' )); |
|
71 | + $plugin = basename(EE_PLUGIN_DIR_PATH); |
|
72 | + add_action("activate_{$plugin}", array('EEH_Debug_Tools', 'ee_plugin_activation_errors')); |
|
73 | + add_action('activated_plugin', array('EEH_Debug_Tools', 'ee_plugin_activation_errors')); |
|
74 | + add_action('shutdown', array('EEH_Debug_Tools', 'show_db_name')); |
|
75 | 75 | } |
76 | 76 | |
77 | 77 | |
@@ -82,10 +82,10 @@ discard block |
||
82 | 82 | * @return void |
83 | 83 | */ |
84 | 84 | public static function show_db_name() { |
85 | - if ( ! defined( 'DOING_AJAX' ) && ( defined( 'EE_ERROR_EMAILS' ) && EE_ERROR_EMAILS )) { |
|
86 | - echo '<p style="font-size:10px;font-weight:normal;color:#E76700;margin: 1em 2em; text-align: right;">DB_NAME: '. DB_NAME .'</p>'; |
|
85 | + if ( ! defined('DOING_AJAX') && (defined('EE_ERROR_EMAILS') && EE_ERROR_EMAILS)) { |
|
86 | + echo '<p style="font-size:10px;font-weight:normal;color:#E76700;margin: 1em 2em; text-align: right;">DB_NAME: '.DB_NAME.'</p>'; |
|
87 | 87 | } |
88 | - if ( EE_DEBUG ) { |
|
88 | + if (EE_DEBUG) { |
|
89 | 89 | EEH_Debug_Tools::instance()->show_times(); |
90 | 90 | } |
91 | 91 | } |
@@ -99,15 +99,15 @@ discard block |
||
99 | 99 | */ |
100 | 100 | public function espresso_session_footer_dump() { |
101 | 101 | if ( |
102 | - ( defined( 'WP_DEBUG' ) && WP_DEBUG ) |
|
103 | - && ! defined( 'DOING_AJAX' ) |
|
104 | - && class_exists( 'Kint' ) |
|
105 | - && function_exists( 'wp_get_current_user' ) |
|
106 | - && current_user_can( 'update_core' ) |
|
107 | - && class_exists( 'EE_Registry' ) |
|
102 | + (defined('WP_DEBUG') && WP_DEBUG) |
|
103 | + && ! defined('DOING_AJAX') |
|
104 | + && class_exists('Kint') |
|
105 | + && function_exists('wp_get_current_user') |
|
106 | + && current_user_can('update_core') |
|
107 | + && class_exists('EE_Registry') |
|
108 | 108 | ) { |
109 | - Kint::dump( EE_Registry::instance()->SSN->id() ); |
|
110 | - Kint::dump( EE_Registry::instance()->SSN ); |
|
109 | + Kint::dump(EE_Registry::instance()->SSN->id()); |
|
110 | + Kint::dump(EE_Registry::instance()->SSN); |
|
111 | 111 | // Kint::dump( EE_Registry::instance()->SSN->get_session_data('cart')->get_tickets() ); |
112 | 112 | $this->espresso_list_hooked_functions(); |
113 | 113 | $this->show_times(); |
@@ -124,27 +124,27 @@ discard block |
||
124 | 124 | * @param string $tag |
125 | 125 | * @return void |
126 | 126 | */ |
127 | - public function espresso_list_hooked_functions( $tag='' ){ |
|
127 | + public function espresso_list_hooked_functions($tag = '') { |
|
128 | 128 | global $wp_filter; |
129 | 129 | echo '<br/><br/><br/><h3>Hooked Functions</h3>'; |
130 | - if ( $tag ) { |
|
131 | - $hook[$tag]=$wp_filter[$tag]; |
|
132 | - if ( ! is_array( $hook[$tag] )) { |
|
133 | - trigger_error( "Nothing found for '$tag' hook", E_USER_WARNING ); |
|
130 | + if ($tag) { |
|
131 | + $hook[$tag] = $wp_filter[$tag]; |
|
132 | + if ( ! is_array($hook[$tag])) { |
|
133 | + trigger_error("Nothing found for '$tag' hook", E_USER_WARNING); |
|
134 | 134 | return; |
135 | 135 | } |
136 | - echo '<h5>For Tag: '. $tag .'</h5>'; |
|
136 | + echo '<h5>For Tag: '.$tag.'</h5>'; |
|
137 | 137 | } |
138 | 138 | else { |
139 | - $hook=$wp_filter; |
|
140 | - ksort( $hook ); |
|
139 | + $hook = $wp_filter; |
|
140 | + ksort($hook); |
|
141 | 141 | } |
142 | - foreach( $hook as $tag_name => $priorities ) { |
|
142 | + foreach ($hook as $tag_name => $priorities) { |
|
143 | 143 | echo "<br />>>>>>\t<strong>$tag_name</strong><br />"; |
144 | - ksort( $priorities ); |
|
145 | - foreach( $priorities as $priority => $function ){ |
|
144 | + ksort($priorities); |
|
145 | + foreach ($priorities as $priority => $function) { |
|
146 | 146 | echo $priority; |
147 | - foreach( $function as $name => $properties ) { |
|
147 | + foreach ($function as $name => $properties) { |
|
148 | 148 | echo "\t$name<br />"; |
149 | 149 | } |
150 | 150 | } |
@@ -159,15 +159,15 @@ discard block |
||
159 | 159 | * @param string $hook_name |
160 | 160 | * @return array |
161 | 161 | */ |
162 | - public static function registered_filter_callbacks( $hook_name = '' ) { |
|
162 | + public static function registered_filter_callbacks($hook_name = '') { |
|
163 | 163 | $filters = array(); |
164 | 164 | global $wp_filter; |
165 | - if ( isset( $wp_filter[ $hook_name ] ) ) { |
|
166 | - $filters[ $hook_name ] = array(); |
|
167 | - foreach ( $wp_filter[ $hook_name ] as $priority => $callbacks ) { |
|
168 | - $filters[ $hook_name ][ $priority ] = array(); |
|
169 | - foreach ( $callbacks as $callback ) { |
|
170 | - $filters[ $hook_name ][ $priority ][] = $callback['function']; |
|
165 | + if (isset($wp_filter[$hook_name])) { |
|
166 | + $filters[$hook_name] = array(); |
|
167 | + foreach ($wp_filter[$hook_name] as $priority => $callbacks) { |
|
168 | + $filters[$hook_name][$priority] = array(); |
|
169 | + foreach ($callbacks as $callback) { |
|
170 | + $filters[$hook_name][$priority][] = $callback['function']; |
|
171 | 171 | } |
172 | 172 | } |
173 | 173 | } |
@@ -179,7 +179,7 @@ discard block |
||
179 | 179 | /** |
180 | 180 | * reset_times |
181 | 181 | */ |
182 | - public function reset_times(){ |
|
182 | + public function reset_times() { |
|
183 | 183 | $this->_times = array(); |
184 | 184 | } |
185 | 185 | |
@@ -189,8 +189,8 @@ discard block |
||
189 | 189 | * start_timer |
190 | 190 | * @param null $timer_name |
191 | 191 | */ |
192 | - public function start_timer( $timer_name = NULL ){ |
|
193 | - $this->_start_times[$timer_name] = microtime( TRUE ); |
|
192 | + public function start_timer($timer_name = NULL) { |
|
193 | + $this->_start_times[$timer_name] = microtime(TRUE); |
|
194 | 194 | } |
195 | 195 | |
196 | 196 | |
@@ -199,15 +199,15 @@ discard block |
||
199 | 199 | * stop_timer |
200 | 200 | * @param string $timer_name |
201 | 201 | */ |
202 | - public function stop_timer( $timer_name = '' ){ |
|
202 | + public function stop_timer($timer_name = '') { |
|
203 | 203 | $timer_name = $timer_name !== '' ? $timer_name : get_called_class(); |
204 | - if( isset( $this->_start_times[ $timer_name ] ) ){ |
|
205 | - $start_time = $this->_start_times[ $timer_name ]; |
|
206 | - unset( $this->_start_times[ $timer_name ] ); |
|
207 | - }else{ |
|
208 | - $start_time = array_pop( $this->_start_times ); |
|
204 | + if (isset($this->_start_times[$timer_name])) { |
|
205 | + $start_time = $this->_start_times[$timer_name]; |
|
206 | + unset($this->_start_times[$timer_name]); |
|
207 | + } else { |
|
208 | + $start_time = array_pop($this->_start_times); |
|
209 | 209 | } |
210 | - $this->_times[ $timer_name ] = number_format( microtime( true ) - $start_time, 8 ); |
|
210 | + $this->_times[$timer_name] = number_format(microtime(true) - $start_time, 8); |
|
211 | 211 | } |
212 | 212 | |
213 | 213 | |
@@ -217,10 +217,10 @@ discard block |
||
217 | 217 | * @param boolean $output_now whether to echo now, or wait until EEH_Debug_Tools::show_times() is called |
218 | 218 | * @return void |
219 | 219 | */ |
220 | - public function measure_memory( $label, $output_now = false ) { |
|
221 | - $memory_used = $this->convert( memory_get_peak_usage( true ) ); |
|
222 | - $this->_memory_usage_points[ $label ] = $memory_used; |
|
223 | - if( $output_now ) { |
|
220 | + public function measure_memory($label, $output_now = false) { |
|
221 | + $memory_used = $this->convert(memory_get_peak_usage(true)); |
|
222 | + $this->_memory_usage_points[$label] = $memory_used; |
|
223 | + if ($output_now) { |
|
224 | 224 | echo "\r\n<br>$label : $memory_used"; |
225 | 225 | } |
226 | 226 | } |
@@ -230,9 +230,9 @@ discard block |
||
230 | 230 | * @param int $size |
231 | 231 | * @return string |
232 | 232 | */ |
233 | - public function convert( $size ) { |
|
234 | - $unit=array('b','kb','mb','gb','tb','pb'); |
|
235 | - return @round( $size / pow( 1024, $i = floor( log( $size, 1024 ) ) ), 2 ) . ' ' . $unit[ absint( $i ) ]; |
|
233 | + public function convert($size) { |
|
234 | + $unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb'); |
|
235 | + return @round($size / pow(1024, $i = floor(log($size, 1024))), 2).' '.$unit[absint($i)]; |
|
236 | 236 | } |
237 | 237 | |
238 | 238 | |
@@ -242,25 +242,25 @@ discard block |
||
242 | 242 | * @param bool $output_now |
243 | 243 | * @return string |
244 | 244 | */ |
245 | - public function show_times($output_now=true){ |
|
245 | + public function show_times($output_now = true) { |
|
246 | 246 | $output = ''; |
247 | - if ( ! empty( $this->_times )) { |
|
247 | + if ( ! empty($this->_times)) { |
|
248 | 248 | $total = 0; |
249 | 249 | $output .= '<h2 style="margin:1em .5em 0;">Times:</h2>'; |
250 | 250 | $output .= '<span style="color:#9999CC; font-size:.8em; margin:0 1.5em 0;">( in milliseconds )</span><br />'; |
251 | - foreach( $this->_times as $timer_name => $total_time ) { |
|
252 | - $output .= $this->format_time( $timer_name, $total_time ); |
|
251 | + foreach ($this->_times as $timer_name => $total_time) { |
|
252 | + $output .= $this->format_time($timer_name, $total_time); |
|
253 | 253 | $total += $total_time; |
254 | 254 | } |
255 | 255 | $output .= '<br />'; |
256 | 256 | $output .= '<h4 style="margin:1em .5em 0;">TOTAL TIME</h4>'; |
257 | - $output .= $this->format_time( '', $total ); |
|
257 | + $output .= $this->format_time('', $total); |
|
258 | 258 | $output .= '<br />'; |
259 | 259 | } |
260 | - if ( ! empty( $this->_memory_usage_points )) { |
|
261 | - $output .= '<h2 style="margin:1em .5em 0;">Memory</h2>' . implode( '<br />', $this->_memory_usage_points ); |
|
260 | + if ( ! empty($this->_memory_usage_points)) { |
|
261 | + $output .= '<h2 style="margin:1em .5em 0;">Memory</h2>'.implode('<br />', $this->_memory_usage_points); |
|
262 | 262 | } |
263 | - if( $output_now ){ |
|
263 | + if ($output_now) { |
|
264 | 264 | echo $output; |
265 | 265 | return ''; |
266 | 266 | } |
@@ -274,9 +274,9 @@ discard block |
||
274 | 274 | * @param float $total_time |
275 | 275 | * @return string |
276 | 276 | */ |
277 | - public function format_time( $timer_name, $total_time ) { |
|
277 | + public function format_time($timer_name, $total_time) { |
|
278 | 278 | $total_time = $total_time * 1000; |
279 | - switch ( $total_time ) { |
|
279 | + switch ($total_time) { |
|
280 | 280 | case $total_time < 0.01 : |
281 | 281 | $color = '#8A549A'; |
282 | 282 | $bold = 'normal'; |
@@ -307,7 +307,7 @@ discard block |
||
307 | 307 | . '; font-weight:' |
308 | 308 | . $bold |
309 | 309 | . '; font-size:1.2em;">' |
310 | - . str_pad( number_format( $total_time, 5 ), 11, '0', STR_PAD_LEFT ) |
|
310 | + . str_pad(number_format($total_time, 5), 11, '0', STR_PAD_LEFT) |
|
311 | 311 | . '</span> ' |
312 | 312 | . $timer_name |
313 | 313 | . '<br />'; |
@@ -321,25 +321,25 @@ discard block |
||
321 | 321 | * @return void |
322 | 322 | */ |
323 | 323 | public static function ee_plugin_activation_errors() { |
324 | - if ( WP_DEBUG ) { |
|
324 | + if (WP_DEBUG) { |
|
325 | 325 | $activation_errors = ob_get_contents(); |
326 | - if ( ! empty( $activation_errors ) ) { |
|
327 | - $activation_errors = date( 'Y-m-d H:i:s' ) . "\n" . $activation_errors; |
|
326 | + if ( ! empty($activation_errors)) { |
|
327 | + $activation_errors = date('Y-m-d H:i:s')."\n".$activation_errors; |
|
328 | 328 | } |
329 | - espresso_load_required( 'EEH_File', EE_HELPERS . 'EEH_File.helper.php' ); |
|
330 | - if ( class_exists( 'EEH_File' )) { |
|
329 | + espresso_load_required('EEH_File', EE_HELPERS.'EEH_File.helper.php'); |
|
330 | + if (class_exists('EEH_File')) { |
|
331 | 331 | try { |
332 | - EEH_File::ensure_file_exists_and_is_writable( EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html' ); |
|
333 | - EEH_File::write_to_file( EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html', $activation_errors ); |
|
334 | - } catch( EE_Error $e ){ |
|
335 | - EE_Error::add_error( sprintf( __( 'The Event Espresso activation errors file could not be setup because: %s', 'event_espresso' ), $e->getMessage() ), __FILE__, __FUNCTION__, __LINE__ ); |
|
332 | + EEH_File::ensure_file_exists_and_is_writable(EVENT_ESPRESSO_UPLOAD_DIR.'logs'.DS.'espresso_plugin_activation_errors.html'); |
|
333 | + EEH_File::write_to_file(EVENT_ESPRESSO_UPLOAD_DIR.'logs'.DS.'espresso_plugin_activation_errors.html', $activation_errors); |
|
334 | + } catch (EE_Error $e) { |
|
335 | + EE_Error::add_error(sprintf(__('The Event Espresso activation errors file could not be setup because: %s', 'event_espresso'), $e->getMessage()), __FILE__, __FUNCTION__, __LINE__); |
|
336 | 336 | } |
337 | 337 | } else { |
338 | 338 | // old school attempt |
339 | - file_put_contents( EVENT_ESPRESSO_UPLOAD_DIR . 'logs' . DS . 'espresso_plugin_activation_errors.html', $activation_errors ); |
|
339 | + file_put_contents(EVENT_ESPRESSO_UPLOAD_DIR.'logs'.DS.'espresso_plugin_activation_errors.html', $activation_errors); |
|
340 | 340 | } |
341 | - $activation_errors = get_option( 'ee_plugin_activation_errors', '' ) . $activation_errors; |
|
342 | - update_option( 'ee_plugin_activation_errors', $activation_errors ); |
|
341 | + $activation_errors = get_option('ee_plugin_activation_errors', '').$activation_errors; |
|
342 | + update_option('ee_plugin_activation_errors', $activation_errors); |
|
343 | 343 | } |
344 | 344 | } |
345 | 345 | |
@@ -368,33 +368,33 @@ discard block |
||
368 | 368 | $applies_when = '', |
369 | 369 | $error_type = null |
370 | 370 | ) { |
371 | - $applies_when = ! empty( $applies_when ) ? $applies_when : espresso_version(); |
|
371 | + $applies_when = ! empty($applies_when) ? $applies_when : espresso_version(); |
|
372 | 372 | $error_type = $error_type !== null ? $error_type : E_USER_NOTICE; |
373 | 373 | // because we swapped the parameter order around for the last two params, |
374 | 374 | // let's verify that some third party isn't still passing an error type value for the third param |
375 | - if ( is_int( $applies_when ) ) { |
|
375 | + if (is_int($applies_when)) { |
|
376 | 376 | $error_type = $applies_when; |
377 | 377 | $applies_when = espresso_version(); |
378 | 378 | } |
379 | 379 | // if not displaying notices yet, then just leave |
380 | - if ( version_compare( espresso_version(), $applies_when, '<' ) ) { |
|
380 | + if (version_compare(espresso_version(), $applies_when, '<')) { |
|
381 | 381 | return; |
382 | 382 | } |
383 | - do_action( 'AHEE__EEH_Debug_Tools__doing_it_wrong_run', $function, $message, $version); |
|
384 | - $version = $version === null ? '' : sprintf( __('(This message was added in version %s of Event Espresso)', 'event_espresso' ), $version ); |
|
385 | - $error_message = sprintf( esc_html__('%1$s was called %2$sincorrectly%3$s. %4$s %5$s','event_espresso' ), $function, '<strong>', '</strong>', $message, $version ); |
|
383 | + do_action('AHEE__EEH_Debug_Tools__doing_it_wrong_run', $function, $message, $version); |
|
384 | + $version = $version === null ? '' : sprintf(__('(This message was added in version %s of Event Espresso)', 'event_espresso'), $version); |
|
385 | + $error_message = sprintf(esc_html__('%1$s was called %2$sincorrectly%3$s. %4$s %5$s', 'event_espresso'), $function, '<strong>', '</strong>', $message, $version); |
|
386 | 386 | |
387 | 387 | //don't trigger error if doing ajax, instead we'll add a transient EE_Error notice that in theory should show on the next request. |
388 | - if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { |
|
389 | - $error_message .= ' ' . esc_html__( 'This is a doing_it_wrong message that was triggered during an ajax request. The request params on this request were: ', 'event_espresso' ); |
|
388 | + if (defined('DOING_AJAX') && DOING_AJAX) { |
|
389 | + $error_message .= ' '.esc_html__('This is a doing_it_wrong message that was triggered during an ajax request. The request params on this request were: ', 'event_espresso'); |
|
390 | 390 | $error_message .= '<ul><li>'; |
391 | - $error_message .= implode( '</li><li>', EE_Registry::instance()->REQ->params() ); |
|
391 | + $error_message .= implode('</li><li>', EE_Registry::instance()->REQ->params()); |
|
392 | 392 | $error_message .= '</ul>'; |
393 | - EE_Error::add_error( $error_message, 'debug::doing_it_wrong', $function, '42' ); |
|
393 | + EE_Error::add_error($error_message, 'debug::doing_it_wrong', $function, '42'); |
|
394 | 394 | //now we set this on the transient so it shows up on the next request. |
395 | - EE_Error::get_notices( false, true ); |
|
395 | + EE_Error::get_notices(false, true); |
|
396 | 396 | } else { |
397 | - trigger_error( $error_message, $error_type ); |
|
397 | + trigger_error($error_message, $error_type); |
|
398 | 398 | } |
399 | 399 | } |
400 | 400 | |
@@ -416,22 +416,22 @@ discard block |
||
416 | 416 | * @param string $debug_index |
417 | 417 | * @param string $debug_key |
418 | 418 | */ |
419 | - public static function log( $class='', $func = '', $line = '', $info = array(), $display_request = false, $debug_index = '', $debug_key = 'EE_DEBUG_SPCO' ) { |
|
420 | - if ( WP_DEBUG && false ) { |
|
421 | - $debug_key = $debug_key . '_' . EE_Session::instance()->id(); |
|
422 | - $debug_data = get_option( $debug_key, array() ); |
|
419 | + public static function log($class = '', $func = '', $line = '', $info = array(), $display_request = false, $debug_index = '', $debug_key = 'EE_DEBUG_SPCO') { |
|
420 | + if (WP_DEBUG && false) { |
|
421 | + $debug_key = $debug_key.'_'.EE_Session::instance()->id(); |
|
422 | + $debug_data = get_option($debug_key, array()); |
|
423 | 423 | $default_data = array( |
424 | - $class => $func . '() : ' . $line, |
|
424 | + $class => $func.'() : '.$line, |
|
425 | 425 | 'REQ' => $display_request ? $_REQUEST : '', |
426 | 426 | ); |
427 | 427 | // don't serialize objects |
428 | - $info = self::strip_objects( $info ); |
|
429 | - $index = ! empty( $debug_index ) ? $debug_index : 0; |
|
430 | - if ( ! isset( $debug_data[$index] ) ) { |
|
428 | + $info = self::strip_objects($info); |
|
429 | + $index = ! empty($debug_index) ? $debug_index : 0; |
|
430 | + if ( ! isset($debug_data[$index])) { |
|
431 | 431 | $debug_data[$index] = array(); |
432 | 432 | } |
433 | - $debug_data[$index][microtime()] = array_merge( $default_data, $info ); |
|
434 | - update_option( $debug_key, $debug_data ); |
|
433 | + $debug_data[$index][microtime()] = array_merge($default_data, $info); |
|
434 | + update_option($debug_key, $debug_data); |
|
435 | 435 | } |
436 | 436 | } |
437 | 437 | |
@@ -443,26 +443,26 @@ discard block |
||
443 | 443 | * @param array $info |
444 | 444 | * @return array |
445 | 445 | */ |
446 | - public static function strip_objects( $info = array() ) { |
|
447 | - foreach ( $info as $key => $value ) { |
|
448 | - if ( is_array( $value ) ) { |
|
449 | - $info[ $key ] = self::strip_objects( $value ); |
|
450 | - } else if ( is_object( $value ) ) { |
|
451 | - $object_class = get_class( $value ); |
|
452 | - $info[ $object_class ] = array(); |
|
453 | - $info[ $object_class ][ 'ID' ] = method_exists( $value, 'ID' ) ? $value->ID() : spl_object_hash( $value ); |
|
454 | - if ( method_exists( $value, 'ID' ) ) { |
|
455 | - $info[ $object_class ][ 'ID' ] = $value->ID(); |
|
446 | + public static function strip_objects($info = array()) { |
|
447 | + foreach ($info as $key => $value) { |
|
448 | + if (is_array($value)) { |
|
449 | + $info[$key] = self::strip_objects($value); |
|
450 | + } else if (is_object($value)) { |
|
451 | + $object_class = get_class($value); |
|
452 | + $info[$object_class] = array(); |
|
453 | + $info[$object_class]['ID'] = method_exists($value, 'ID') ? $value->ID() : spl_object_hash($value); |
|
454 | + if (method_exists($value, 'ID')) { |
|
455 | + $info[$object_class]['ID'] = $value->ID(); |
|
456 | 456 | } |
457 | - if ( method_exists( $value, 'status' ) ) { |
|
458 | - $info[ $object_class ][ 'status' ] = $value->status(); |
|
459 | - } else if ( method_exists( $value, 'status_ID' ) ) { |
|
460 | - $info[ $object_class ][ 'status' ] = $value->status_ID(); |
|
457 | + if (method_exists($value, 'status')) { |
|
458 | + $info[$object_class]['status'] = $value->status(); |
|
459 | + } else if (method_exists($value, 'status_ID')) { |
|
460 | + $info[$object_class]['status'] = $value->status_ID(); |
|
461 | 461 | } |
462 | - unset( $info[ $key ] ); |
|
462 | + unset($info[$key]); |
|
463 | 463 | } |
464 | 464 | } |
465 | - return (array)$info; |
|
465 | + return (array) $info; |
|
466 | 466 | } |
467 | 467 | |
468 | 468 | |
@@ -475,20 +475,20 @@ discard block |
||
475 | 475 | * @param int $heading_tag |
476 | 476 | * @param bool $die |
477 | 477 | */ |
478 | - public static function printv( $var, $var_name = '', $file = __FILE__, $line = __LINE__, $heading_tag = 5, $die = false, $margin ) { |
|
478 | + public static function printv($var, $var_name = '', $file = __FILE__, $line = __LINE__, $heading_tag = 5, $die = false, $margin) { |
|
479 | 479 | $var_name = ! $var_name ? 'string' : $var_name; |
480 | - $var_name = ucwords( str_replace( '$', '', $var_name ) ); |
|
481 | - $is_method = method_exists( $var_name, $var ); |
|
482 | - $var_name = ucwords( str_replace( '_', ' ', $var_name ) ); |
|
480 | + $var_name = ucwords(str_replace('$', '', $var_name)); |
|
481 | + $is_method = method_exists($var_name, $var); |
|
482 | + $var_name = ucwords(str_replace('_', ' ', $var_name)); |
|
483 | 483 | $heading_tag = is_int($heading_tag) ? "h{$heading_tag}" : "h5"; |
484 | 484 | $result = EEH_Debug_Tools::heading($var_name, $heading_tag, $margin); |
485 | 485 | $result .= $is_method |
486 | - ? \EEH_Debug_Tools::grey_span('::') . \EEH_Debug_Tools::orange_span($var . "()") |
|
487 | - : \EEH_Debug_Tools::grey_span(' : ') . \EEH_Debug_Tools::orange_span($var); |
|
486 | + ? \EEH_Debug_Tools::grey_span('::').\EEH_Debug_Tools::orange_span($var."()") |
|
487 | + : \EEH_Debug_Tools::grey_span(' : ').\EEH_Debug_Tools::orange_span($var); |
|
488 | 488 | $result .= \EEH_Debug_Tools::file_and_line($file, $line); |
489 | 489 | $result .= \EEH_Debug_Tools::headingx($heading_tag); |
490 | - if ( $die ) { |
|
491 | - die( $result ); |
|
490 | + if ($die) { |
|
491 | + die($result); |
|
492 | 492 | } else { |
493 | 493 | echo $result; |
494 | 494 | } |
@@ -502,7 +502,7 @@ discard block |
||
502 | 502 | * @param string $margin |
503 | 503 | * @return string |
504 | 504 | */ |
505 | - protected static function heading( $var_name = '', $heading_tag = 'h5', $margin = '' ) { |
|
505 | + protected static function heading($var_name = '', $heading_tag = 'h5', $margin = '') { |
|
506 | 506 | if (defined('EE_TESTS_DIR')) { |
507 | 507 | return "\n\n{$var_name}"; |
508 | 508 | } |
@@ -515,11 +515,11 @@ discard block |
||
515 | 515 | * @param string $heading_tag |
516 | 516 | * @return string |
517 | 517 | */ |
518 | - protected static function headingx( $heading_tag = 'h5' ) { |
|
518 | + protected static function headingx($heading_tag = 'h5') { |
|
519 | 519 | if (defined('EE_TESTS_DIR')) { |
520 | 520 | return "\n"; |
521 | 521 | } |
522 | - return '</' . $heading_tag . '>'; |
|
522 | + return '</'.$heading_tag.'>'; |
|
523 | 523 | } |
524 | 524 | |
525 | 525 | |
@@ -528,11 +528,11 @@ discard block |
||
528 | 528 | * @param string $content |
529 | 529 | * @return string |
530 | 530 | */ |
531 | - protected static function grey_span( $content = '' ) { |
|
531 | + protected static function grey_span($content = '') { |
|
532 | 532 | if (defined('EE_TESTS_DIR')) { |
533 | 533 | return $content; |
534 | 534 | } |
535 | - return '<span style="color:#999">' . $content . '</span>'; |
|
535 | + return '<span style="color:#999">'.$content.'</span>'; |
|
536 | 536 | } |
537 | 537 | |
538 | 538 | |
@@ -544,9 +544,9 @@ discard block |
||
544 | 544 | */ |
545 | 545 | protected static function file_and_line($file, $line) { |
546 | 546 | if (defined('EE_TESTS_DIR')) { |
547 | - return "\n (" . $file . ' line no: ' . $line . ' ) '; |
|
547 | + return "\n (".$file.' line no: '.$line.' ) '; |
|
548 | 548 | } |
549 | - return '<br /><span style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;">' . $file . '<br />line no: ' . $line . '</span>'; |
|
549 | + return '<br /><span style="font-size:9px;font-weight:normal;color:#666;line-height: 12px;">'.$file.'<br />line no: '.$line.'</span>'; |
|
550 | 550 | } |
551 | 551 | |
552 | 552 | |
@@ -560,7 +560,7 @@ discard block |
||
560 | 560 | if (defined('EE_TESTS_DIR')) { |
561 | 561 | return $content; |
562 | 562 | } |
563 | - return '<span style="color:#E76700">' . $content . '</span>'; |
|
563 | + return '<span style="color:#E76700">'.$content.'</span>'; |
|
564 | 564 | } |
565 | 565 | |
566 | 566 | |
@@ -575,9 +575,9 @@ discard block |
||
575 | 575 | var_dump($var); |
576 | 576 | $var = ob_get_clean(); |
577 | 577 | if (defined('EE_TESTS_DIR')) { |
578 | - return "\n" . $var; |
|
578 | + return "\n".$var; |
|
579 | 579 | } |
580 | - return '<pre style="color:#999; padding:1em; background: #fff">' . $var . '</pre>'; |
|
580 | + return '<pre style="color:#999; padding:1em; background: #fff">'.$var.'</pre>'; |
|
581 | 581 | } |
582 | 582 | |
583 | 583 | |
@@ -590,35 +590,35 @@ discard block |
||
590 | 590 | * @param int $heading_tag |
591 | 591 | * @param bool $die |
592 | 592 | */ |
593 | - public static function printr( $var, $var_name = '', $file = __FILE__, $line = __LINE__, $heading_tag = 5, $die = false ) { |
|
593 | + public static function printr($var, $var_name = '', $file = __FILE__, $line = __LINE__, $heading_tag = 5, $die = false) { |
|
594 | 594 | // return; |
595 | - $file = str_replace( rtrim( ABSPATH, '\\/' ), '', $file ); |
|
595 | + $file = str_replace(rtrim(ABSPATH, '\\/'), '', $file); |
|
596 | 596 | $margin = is_admin() ? ' 180px' : '0'; |
597 | 597 | //$print_r = false; |
598 | - if ( is_string( $var ) ) { |
|
599 | - EEH_Debug_Tools::printv( $var, $var_name, $file, $line, $heading_tag, $die, $margin ); |
|
598 | + if (is_string($var)) { |
|
599 | + EEH_Debug_Tools::printv($var, $var_name, $file, $line, $heading_tag, $die, $margin); |
|
600 | 600 | return; |
601 | - } else if ( is_object( $var ) ) { |
|
601 | + } else if (is_object($var)) { |
|
602 | 602 | $var_name = ! $var_name ? 'object' : $var_name; |
603 | 603 | //$print_r = true; |
604 | - } else if ( is_array( $var ) ) { |
|
604 | + } else if (is_array($var)) { |
|
605 | 605 | $var_name = ! $var_name ? 'array' : $var_name; |
606 | 606 | //$print_r = true; |
607 | - } else if ( is_numeric( $var ) ) { |
|
607 | + } else if (is_numeric($var)) { |
|
608 | 608 | $var_name = ! $var_name ? 'numeric' : $var_name; |
609 | - } else if ( is_null( $var ) ) { |
|
609 | + } else if (is_null($var)) { |
|
610 | 610 | $var_name = ! $var_name ? 'null' : $var_name; |
611 | 611 | } |
612 | - $var_name = ucwords( str_replace( array( '$', '_' ), array( '', ' ' ), $var_name ) ); |
|
612 | + $var_name = ucwords(str_replace(array('$', '_'), array('', ' '), $var_name)); |
|
613 | 613 | $heading_tag = is_int($heading_tag) ? "h{$heading_tag}" : "h5"; |
614 | 614 | $result = EEH_Debug_Tools::heading($var_name, $heading_tag, $margin); |
615 | - $result .= \EEH_Debug_Tools::grey_span(' : ') . \EEH_Debug_Tools::orange_span( |
|
615 | + $result .= \EEH_Debug_Tools::grey_span(' : ').\EEH_Debug_Tools::orange_span( |
|
616 | 616 | \EEH_Debug_Tools::pre_span($var) |
617 | 617 | ); |
618 | 618 | $result .= \EEH_Debug_Tools::file_and_line($file, $line); |
619 | 619 | $result .= \EEH_Debug_Tools::headingx($heading_tag); |
620 | - if ( $die ) { |
|
621 | - die( $result ); |
|
620 | + if ($die) { |
|
621 | + die($result); |
|
622 | 622 | } else { |
623 | 623 | echo $result; |
624 | 624 | } |
@@ -635,8 +635,8 @@ discard block |
||
635 | 635 | * borrowed from Kint Debugger |
636 | 636 | * Plugin URI: http://upthemes.com/plugins/kint-debugger/ |
637 | 637 | */ |
638 | -if ( class_exists('Kint') && ! function_exists( 'dump_wp_query' ) ) { |
|
639 | - function dump_wp_query(){ |
|
638 | +if (class_exists('Kint') && ! function_exists('dump_wp_query')) { |
|
639 | + function dump_wp_query() { |
|
640 | 640 | global $wp_query; |
641 | 641 | d($wp_query); |
642 | 642 | } |
@@ -646,8 +646,8 @@ discard block |
||
646 | 646 | * borrowed from Kint Debugger |
647 | 647 | * Plugin URI: http://upthemes.com/plugins/kint-debugger/ |
648 | 648 | */ |
649 | -if ( class_exists('Kint') && ! function_exists( 'dump_wp' ) ) { |
|
650 | - function dump_wp(){ |
|
649 | +if (class_exists('Kint') && ! function_exists('dump_wp')) { |
|
650 | + function dump_wp() { |
|
651 | 651 | global $wp; |
652 | 652 | d($wp); |
653 | 653 | } |
@@ -657,8 +657,8 @@ discard block |
||
657 | 657 | * borrowed from Kint Debugger |
658 | 658 | * Plugin URI: http://upthemes.com/plugins/kint-debugger/ |
659 | 659 | */ |
660 | -if ( class_exists('Kint') && ! function_exists( 'dump_post' ) ) { |
|
661 | - function dump_post(){ |
|
660 | +if (class_exists('Kint') && ! function_exists('dump_post')) { |
|
661 | + function dump_post() { |
|
662 | 662 | global $post; |
663 | 663 | d($post); |
664 | 664 | } |
@@ -134,8 +134,7 @@ discard block |
||
134 | 134 | return; |
135 | 135 | } |
136 | 136 | echo '<h5>For Tag: '. $tag .'</h5>'; |
137 | - } |
|
138 | - else { |
|
137 | + } else { |
|
139 | 138 | $hook=$wp_filter; |
140 | 139 | ksort( $hook ); |
141 | 140 | } |
@@ -204,7 +203,7 @@ discard block |
||
204 | 203 | if( isset( $this->_start_times[ $timer_name ] ) ){ |
205 | 204 | $start_time = $this->_start_times[ $timer_name ]; |
206 | 205 | unset( $this->_start_times[ $timer_name ] ); |
207 | - }else{ |
|
206 | + } else{ |
|
208 | 207 | $start_time = array_pop( $this->_start_times ); |
209 | 208 | } |
210 | 209 | $this->_times[ $timer_name ] = number_format( microtime( true ) - $start_time, 8 ); |
@@ -33,7 +33,7 @@ discard block |
||
33 | 33 | * OpenCoffeeShop constructor. |
34 | 34 | */ |
35 | 35 | public function __construct() |
36 | - { |
|
36 | + { |
|
37 | 37 | // instantiate the container |
38 | 38 | $this->CoffeeShop = new CoffeeShop(); |
39 | 39 | // create a dependency injector class for resolving class constructor arguments |
@@ -83,11 +83,11 @@ discard block |
||
83 | 83 | new Recipe( |
84 | 84 | 'CommandHandlerManager', |
85 | 85 | 'EventEspresso\core\services\commands\CommandHandlerManager', |
86 | - array( |
|
87 | - 'CommandHandlerManagerInterface', |
|
88 | - 'EventEspresso\core\services\commands\CommandHandlerManagerInterface', |
|
89 | - ), |
|
90 | - array(), |
|
86 | + array( |
|
87 | + 'CommandHandlerManagerInterface', |
|
88 | + 'EventEspresso\core\services\commands\CommandHandlerManagerInterface', |
|
89 | + ), |
|
90 | + array(), |
|
91 | 91 | CoffeeMaker::BREW_SHARED |
92 | 92 | ) |
93 | 93 | ); |
@@ -96,11 +96,11 @@ discard block |
||
96 | 96 | new Recipe( |
97 | 97 | 'CommandBus', |
98 | 98 | 'EventEspresso\core\services\commands\CommandBus', |
99 | - array( |
|
100 | - 'CommandBusInterface', |
|
101 | - 'EventEspresso\core\services\commands\CommandBusInterface', |
|
102 | - ), |
|
103 | - array(), |
|
99 | + array( |
|
100 | + 'CommandBusInterface', |
|
101 | + 'EventEspresso\core\services\commands\CommandBusInterface', |
|
102 | + ), |
|
103 | + array(), |
|
104 | 104 | CoffeeMaker::BREW_SHARED |
105 | 105 | ) |
106 | 106 | ); |
@@ -110,22 +110,22 @@ discard block |
||
110 | 110 | new Recipe( |
111 | 111 | 'EEI_*', |
112 | 112 | '', |
113 | - array(), |
|
114 | - array(), |
|
113 | + array(), |
|
114 | + array(), |
|
115 | 115 | CoffeeMaker::BREW_LOAD_ONLY, |
116 | - array( |
|
117 | - EE_INTERFACES . '*.php', |
|
118 | - EE_INTERFACES . '*.interfaces.php', |
|
119 | - ) |
|
116 | + array( |
|
117 | + EE_INTERFACES . '*.php', |
|
118 | + EE_INTERFACES . '*.interfaces.php', |
|
119 | + ) |
|
120 | 120 | ) |
121 | 121 | ); |
122 | 122 | // add a wildcard recipe for loading models |
123 | 123 | $this->CoffeeShop->addRecipe( |
124 | 124 | new Recipe( |
125 | 125 | 'EEM_*', |
126 | - '', |
|
127 | - array(), |
|
128 | - array(), |
|
126 | + '', |
|
127 | + array(), |
|
128 | + array(), |
|
129 | 129 | CoffeeMaker::BREW_SHARED, |
130 | 130 | EE_MODELS . '*.model.php' |
131 | 131 | ) |
@@ -134,10 +134,10 @@ discard block |
||
134 | 134 | $this->CoffeeShop->addRecipe( |
135 | 135 | new Recipe( |
136 | 136 | 'EE_*', |
137 | - '', |
|
138 | - array(), |
|
139 | - array(), |
|
140 | - CoffeeMaker::BREW_SHARED, |
|
137 | + '', |
|
138 | + array(), |
|
139 | + array(), |
|
140 | + CoffeeMaker::BREW_SHARED, |
|
141 | 141 | array( |
142 | 142 | EE_CORE . '*.core.php', |
143 | 143 | EE_ADMIN . '*.core.php', |
@@ -152,10 +152,10 @@ discard block |
||
152 | 152 | $this->CoffeeShop->addRecipe( |
153 | 153 | new Recipe( |
154 | 154 | 'EE_Admin_Page*', |
155 | - '', |
|
156 | - array(), |
|
157 | - array(), |
|
158 | - CoffeeMaker::BREW_LOAD_ONLY, |
|
155 | + '', |
|
156 | + array(), |
|
157 | + array(), |
|
158 | + CoffeeMaker::BREW_LOAD_ONLY, |
|
159 | 159 | array( EE_ADMIN . '*.core.php' ) |
160 | 160 | ) |
161 | 161 | ); |
@@ -163,10 +163,10 @@ discard block |
||
163 | 163 | // $this->CoffeeShop->addRecipe( |
164 | 164 | // new Recipe( |
165 | 165 | // '*_Admin_Page', |
166 | - // '', |
|
167 | - // array(), |
|
168 | - // array(), |
|
169 | - // CoffeeMaker::BREW_SHARED, |
|
166 | + // '', |
|
167 | + // array(), |
|
168 | + // array(), |
|
169 | + // CoffeeMaker::BREW_SHARED, |
|
170 | 170 | // array( |
171 | 171 | // EE_ADMIN_PAGES . 'transactions' . DS . '*.core.php', |
172 | 172 | // ) |
@@ -1,8 +1,8 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | namespace EventEspresso\core\services\container; |
3 | 3 | |
4 | -if ( ! defined( 'EVENT_ESPRESSO_VERSION' ) ) { |
|
5 | - exit( 'No direct script access allowed' ); |
|
4 | +if ( ! defined('EVENT_ESPRESSO_VERSION')) { |
|
5 | + exit('No direct script access allowed'); |
|
6 | 6 | } |
7 | 7 | |
8 | 8 | |
@@ -43,17 +43,17 @@ discard block |
||
43 | 43 | ); |
44 | 44 | // and some coffeemakers, one for creating new instances |
45 | 45 | $this->CoffeeShop->addCoffeeMaker( |
46 | - new NewCoffeeMaker( $this->CoffeeShop, $this->DependencyInjector ), |
|
46 | + new NewCoffeeMaker($this->CoffeeShop, $this->DependencyInjector), |
|
47 | 47 | CoffeeMaker::BREW_NEW |
48 | 48 | ); |
49 | 49 | // one for shared services |
50 | 50 | $this->CoffeeShop->addCoffeeMaker( |
51 | - new SharedCoffeeMaker( $this->CoffeeShop, $this->DependencyInjector ), |
|
51 | + new SharedCoffeeMaker($this->CoffeeShop, $this->DependencyInjector), |
|
52 | 52 | CoffeeMaker::BREW_SHARED |
53 | 53 | ); |
54 | 54 | // and one for classes that only get loaded |
55 | 55 | $this->CoffeeShop->addCoffeeMaker( |
56 | - new LoadOnlyCoffeeMaker( $this->CoffeeShop, $this->DependencyInjector ), |
|
56 | + new LoadOnlyCoffeeMaker($this->CoffeeShop, $this->DependencyInjector), |
|
57 | 57 | CoffeeMaker::BREW_LOAD_ONLY |
58 | 58 | ); |
59 | 59 | // add default recipe, which should handle loading for most PSR-4 compatible classes |
@@ -114,8 +114,8 @@ discard block |
||
114 | 114 | array(), |
115 | 115 | CoffeeMaker::BREW_LOAD_ONLY, |
116 | 116 | array( |
117 | - EE_INTERFACES . '*.php', |
|
118 | - EE_INTERFACES . '*.interfaces.php', |
|
117 | + EE_INTERFACES.'*.php', |
|
118 | + EE_INTERFACES.'*.interfaces.php', |
|
119 | 119 | ) |
120 | 120 | ) |
121 | 121 | ); |
@@ -127,7 +127,7 @@ discard block |
||
127 | 127 | array(), |
128 | 128 | array(), |
129 | 129 | CoffeeMaker::BREW_SHARED, |
130 | - EE_MODELS . '*.model.php' |
|
130 | + EE_MODELS.'*.model.php' |
|
131 | 131 | ) |
132 | 132 | ); |
133 | 133 | // add a wildcard recipe for loading core classes |
@@ -139,12 +139,12 @@ discard block |
||
139 | 139 | array(), |
140 | 140 | CoffeeMaker::BREW_SHARED, |
141 | 141 | array( |
142 | - EE_CORE . '*.core.php', |
|
143 | - EE_ADMIN . '*.core.php', |
|
144 | - EE_CPTS . '*.core.php', |
|
145 | - EE_CORE . 'data_migration_scripts' . DS . '*.core.php', |
|
146 | - EE_CORE . 'request_stack' . DS . '*.core.php', |
|
147 | - EE_CORE . 'middleware' . DS . '*.core.php', |
|
142 | + EE_CORE.'*.core.php', |
|
143 | + EE_ADMIN.'*.core.php', |
|
144 | + EE_CPTS.'*.core.php', |
|
145 | + EE_CORE.'data_migration_scripts'.DS.'*.core.php', |
|
146 | + EE_CORE.'request_stack'.DS.'*.core.php', |
|
147 | + EE_CORE.'middleware'.DS.'*.core.php', |
|
148 | 148 | ) |
149 | 149 | ) |
150 | 150 | ); |
@@ -156,7 +156,7 @@ discard block |
||
156 | 156 | array(), |
157 | 157 | array(), |
158 | 158 | CoffeeMaker::BREW_LOAD_ONLY, |
159 | - array( EE_ADMIN . '*.core.php' ) |
|
159 | + array(EE_ADMIN.'*.core.php') |
|
160 | 160 | ) |
161 | 161 | ); |
162 | 162 | // add a wildcard recipe for loading core classes |
@@ -7,7 +7,7 @@ discard block |
||
7 | 7 | use RuntimeException; |
8 | 8 | |
9 | 9 | if ( ! defined('EVENT_ESPRESSO_VERSION')) { |
10 | - exit('No direct script access allowed'); |
|
10 | + exit('No direct script access allowed'); |
|
11 | 11 | } |
12 | 12 | |
13 | 13 | |
@@ -23,313 +23,313 @@ discard block |
||
23 | 23 | class Recipe implements RecipeInterface |
24 | 24 | { |
25 | 25 | |
26 | - /** |
|
27 | - * A default Recipe to use if none is specified for a class |
|
28 | - */ |
|
29 | - const DEFAULT_ID = '*'; |
|
30 | - |
|
31 | - /** |
|
32 | - * Identifier for the entity class to be constructed. |
|
33 | - * Typically a Fully Qualified Class Name |
|
34 | - * |
|
35 | - * @var string $identifier |
|
36 | - */ |
|
37 | - private $identifier; |
|
38 | - |
|
39 | - /** |
|
40 | - * Fully Qualified Class Name |
|
41 | - * |
|
42 | - * @var string $fqcn |
|
43 | - */ |
|
44 | - private $fqcn; |
|
45 | - |
|
46 | - /** |
|
47 | - * a dependency class map array |
|
48 | - * If a Recipe is for a single class (or group of classes that shares the EXACT SAME constructor arguments), |
|
49 | - * and that class type hints for an interface, then this property allows you to configure what dependencies |
|
50 | - * get used when instantiating the class. |
|
51 | - * For example: |
|
52 | - * There's a class called Coffee, and one of its constructor arguments is BeanInterface |
|
53 | - * There are two implementations of BeanInterface: HonduranBean, and KenyanBean |
|
54 | - * We want one Coffee object to use HonduranBean for its BeanInterface, |
|
55 | - * and the 2nd Coffee object to use KenyanBean for its BeanInterface. |
|
56 | - * To do this, we need to create two Recipes: |
|
57 | - * one with an identifier of 'HonduranCoffee' using the following ingredients : |
|
58 | - * array('BeanInterface' => 'HonduranBean') |
|
59 | - * and the other with an identifier of 'KenyanCoffee' using the following ingredients : |
|
60 | - * array('BeanInterface' => 'KenyanBean') |
|
61 | - * Then, whenever the CoffeeShop brews an instance of HonduranCoffee, |
|
62 | - * an instance of HonduranBean will get injected for the BeanInterface dependency, |
|
63 | - * and whenever the CoffeeShop brews an instance of KenyanCoffee, |
|
64 | - * an instance of KenyanBean will get injected for the BeanInterface dependency |
|
65 | - * |
|
66 | - * @var array $ingredients |
|
67 | - */ |
|
68 | - private $ingredients = array(); |
|
69 | - |
|
70 | - /** |
|
71 | - * one of the class constants from CoffeeShop: |
|
72 | - * CoffeeMaker::BREW_NEW - creates a new instance |
|
73 | - * CoffeeMaker::BREW_SHARED - creates a shared instance |
|
74 | - * CoffeeMaker::BREW_LOAD_ONLY - loads but does not instantiate |
|
75 | - * |
|
76 | - * @var string $type |
|
77 | - */ |
|
78 | - private $type; |
|
79 | - |
|
80 | - /** |
|
81 | - * class name aliases - typically a Fully Qualified Interface that the class implements |
|
82 | - * identifiers passed to the CoffeeShop will be run through the filters to find the correct class name |
|
83 | - * |
|
84 | - * @var array $filters |
|
85 | - */ |
|
86 | - private $filters = array(); |
|
87 | - |
|
88 | - /** |
|
89 | - * array of full server filepaths to files that may contain the class |
|
90 | - * |
|
91 | - * @var array $paths |
|
92 | - */ |
|
93 | - private $paths = array(); |
|
94 | - |
|
95 | - |
|
96 | - |
|
97 | - /** |
|
98 | - * Recipe constructor. |
|
99 | - * |
|
100 | - * @param string $identifier class identifier, can be an alias, or FQCN, or whatever |
|
101 | - * @param string $fqcn \Fully\Qualified\ClassName, optional if $identifier is FQCN |
|
102 | - * @param array $ingredients array of dependencies that can not be resolved automatically, |
|
103 | - * used for resolving concrete classes for type hinted interfaces |
|
104 | - * for the dependencies of THIS class |
|
105 | - * @param string $type recipe type: one of the class constants on |
|
106 | - * \EventEspresso\core\services\container\CoffeeMaker |
|
107 | - * @param array $filters array of class aliases, or class interfaces |
|
108 | - * this works somewhat opposite to the $ingredients array above, |
|
109 | - * in that this array specifies interfaces or aliases |
|
110 | - * that this Recipe can be used for when resolving OTHER class's dependencies |
|
111 | - * @param array $paths if class can not be loaded via PSR-4 autoloading, |
|
112 | - * then supply a filepath, or array of filepaths, so that it can be included |
|
113 | - */ |
|
114 | - public function __construct( |
|
115 | - $identifier, |
|
116 | - $fqcn = '', |
|
117 | - $filters = array(), |
|
118 | - $ingredients = array(), |
|
119 | - $type = CoffeeMaker::BREW_NEW, |
|
120 | - $paths = array() |
|
121 | - ) |
|
122 | - { |
|
123 | - $this->setIdentifier($identifier); |
|
124 | - $this->setFilters((array)$filters); |
|
125 | - $this->setIngredients((array)$ingredients); |
|
126 | - $this->setType($type); |
|
127 | - $this->setPaths($paths); |
|
128 | - $this->setFqcn($fqcn); |
|
129 | - } |
|
130 | - |
|
131 | - |
|
132 | - |
|
133 | - /** |
|
134 | - * @return string |
|
135 | - */ |
|
136 | - public function identifier() |
|
137 | - { |
|
138 | - return $this->identifier; |
|
139 | - } |
|
140 | - |
|
141 | - |
|
142 | - |
|
143 | - /** |
|
144 | - * @return string |
|
145 | - */ |
|
146 | - public function fqcn() |
|
147 | - { |
|
148 | - return $this->fqcn; |
|
149 | - } |
|
150 | - |
|
151 | - |
|
152 | - |
|
153 | - /** |
|
154 | - * @return array |
|
155 | - */ |
|
156 | - public function filters() |
|
157 | - { |
|
158 | - return (array)$this->filters; |
|
159 | - } |
|
160 | - |
|
161 | - |
|
162 | - |
|
163 | - /** |
|
164 | - * @return array |
|
165 | - */ |
|
166 | - public function ingredients() |
|
167 | - { |
|
168 | - return $this->ingredients; |
|
169 | - } |
|
170 | - |
|
171 | - |
|
172 | - |
|
173 | - /** |
|
174 | - * @return string |
|
175 | - */ |
|
176 | - public function type() |
|
177 | - { |
|
178 | - return $this->type; |
|
179 | - } |
|
180 | - |
|
181 | - |
|
182 | - |
|
183 | - /** |
|
184 | - * @return array |
|
185 | - */ |
|
186 | - public function paths() |
|
187 | - { |
|
188 | - return (array)$this->paths; |
|
189 | - } |
|
190 | - |
|
191 | - |
|
192 | - |
|
193 | - /** |
|
194 | - * @param string $identifier Identifier for the entity class that the Recipe applies to |
|
195 | - * Typically a Fully Qualified Class Name |
|
196 | - */ |
|
197 | - public function setIdentifier($identifier) |
|
198 | - { |
|
199 | - if ( ! is_string($identifier) || empty($identifier)) { |
|
200 | - throw new InvalidIdentifierException( |
|
201 | - is_object($identifier) ? get_class($identifier) : gettype($identifier), |
|
202 | - __('class identifier (typically a \Fully\Qualified\ClassName)', 'event_espresso') |
|
203 | - ); |
|
204 | - } |
|
205 | - $this->identifier = $identifier; |
|
206 | - } |
|
207 | - |
|
208 | - |
|
209 | - |
|
210 | - /** |
|
211 | - * Ensures incoming string is a valid Fully Qualified Class Name, |
|
212 | - * except if this is the default wildcard Recipe ( * ), |
|
213 | - * or it's NOT an actual FQCN because the Recipe is using filepaths |
|
214 | - * for classes that are not PSR-4 compatible |
|
215 | - * PLZ NOTE: |
|
216 | - * Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not, |
|
217 | - * therefore you should always call Recipe::setPaths() before Recipe::setFqcn() |
|
218 | - * |
|
219 | - * @param string $fqcn |
|
220 | - */ |
|
221 | - public function setFqcn($fqcn) |
|
222 | - { |
|
223 | - $fqcn = ! empty($fqcn) ? $fqcn : $this->identifier; |
|
224 | - if ( ! is_string($fqcn)) { |
|
225 | - throw new InvalidDataTypeException( |
|
226 | - '$fqcn', |
|
227 | - is_object($fqcn) ? get_class($fqcn) : gettype($fqcn), |
|
228 | - __('string (Fully\Qualified\ClassName)', 'event_espresso') |
|
229 | - ); |
|
230 | - } |
|
231 | - $fqcn = ltrim($fqcn, '\\'); |
|
232 | - if ( |
|
233 | - $fqcn !== Recipe::DEFAULT_ID |
|
234 | - && ! empty($fqcn) |
|
235 | - && empty($this->paths) |
|
236 | - && ! class_exists($fqcn) |
|
237 | - ) { |
|
238 | - throw new InvalidClassException($fqcn); |
|
239 | - } |
|
240 | - $this->fqcn = $fqcn; |
|
241 | - } |
|
242 | - |
|
243 | - |
|
244 | - |
|
245 | - /** |
|
246 | - * @param array $ingredients an array of dependencies where keys are the aliases and values are the FQCNs |
|
247 | - * example: |
|
248 | - * array( 'ClassInterface' => 'Fully\Qualified\ClassName' ) |
|
249 | - */ |
|
250 | - public function setIngredients(array $ingredients) |
|
251 | - { |
|
252 | - if (empty($ingredients)) { |
|
253 | - return; |
|
254 | - } |
|
255 | - if ( ! is_array($ingredients)) { |
|
256 | - throw new InvalidDataTypeException( |
|
257 | - '$ingredients', |
|
258 | - is_object($ingredients) ? get_class($ingredients) : gettype($ingredients), |
|
259 | - __('array of class dependencies', 'event_espresso') |
|
260 | - ); |
|
261 | - } |
|
262 | - $this->ingredients = array_merge($this->ingredients, $ingredients); |
|
263 | - } |
|
264 | - |
|
265 | - |
|
266 | - /** |
|
267 | - * @param string $type one of the class constants returned from CoffeeMaker::getTypes() |
|
268 | - */ |
|
269 | - public function setType($type = CoffeeMaker::BREW_NEW) |
|
270 | - { |
|
271 | - $this->type = CoffeeMaker::validateType($type); |
|
272 | - } |
|
273 | - |
|
274 | - |
|
275 | - |
|
276 | - /** |
|
277 | - * @param array $filters an array of filters where keys are the aliases and values are the FQCNs |
|
278 | - * example: |
|
279 | - * array( 'ClassInterface' => 'Fully\Qualified\ClassName' ) |
|
280 | - */ |
|
281 | - public function setFilters(array $filters) |
|
282 | - { |
|
283 | - if (empty($filters)) { |
|
284 | - return; |
|
285 | - } |
|
286 | - if ( ! is_array($filters)) { |
|
287 | - throw new InvalidDataTypeException( |
|
288 | - '$filters', |
|
289 | - is_object($filters) ? get_class($filters) : gettype($filters), |
|
290 | - __('array of class aliases', 'event_espresso') |
|
291 | - ); |
|
292 | - } |
|
293 | - $this->filters = array_merge($this->filters, $filters); |
|
294 | - } |
|
295 | - |
|
296 | - |
|
297 | - |
|
298 | - /** |
|
299 | - * Ensures incoming paths is a valid filepath, or array of valid filepaths, |
|
300 | - * and merges them in with any existing filepaths |
|
301 | - * |
|
302 | - * PLZ NOTE: |
|
303 | - * Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not, |
|
304 | - * therefore you should always call Recipe::setPaths() before Recipe::setFqcn() |
|
305 | - * |
|
306 | - * @param string|array $paths |
|
307 | - */ |
|
308 | - public function setPaths($paths = array()) |
|
309 | - { |
|
310 | - if (empty($paths)) { |
|
311 | - return; |
|
312 | - } |
|
313 | - if ( ! (is_string($paths) || is_array($paths))) { |
|
314 | - throw new InvalidDataTypeException( |
|
315 | - '$path', |
|
316 | - is_object($paths) ? get_class($paths) : gettype($paths), |
|
317 | - __('string or array of strings (full server filepath(s))', 'event_espresso') |
|
318 | - ); |
|
319 | - } |
|
320 | - $paths = (array)$paths; |
|
321 | - foreach ($paths as $path) { |
|
322 | - if (strpos($path, '*') === false && ! is_readable($path)) { |
|
323 | - throw new RuntimeException( |
|
324 | - sprintf( |
|
325 | - __('The following filepath is not readable: "%1$s"', 'event_espresso'), |
|
326 | - $path |
|
327 | - ) |
|
328 | - ); |
|
329 | - } |
|
330 | - } |
|
331 | - $this->paths = array_merge($this->paths, $paths); |
|
332 | - } |
|
26 | + /** |
|
27 | + * A default Recipe to use if none is specified for a class |
|
28 | + */ |
|
29 | + const DEFAULT_ID = '*'; |
|
30 | + |
|
31 | + /** |
|
32 | + * Identifier for the entity class to be constructed. |
|
33 | + * Typically a Fully Qualified Class Name |
|
34 | + * |
|
35 | + * @var string $identifier |
|
36 | + */ |
|
37 | + private $identifier; |
|
38 | + |
|
39 | + /** |
|
40 | + * Fully Qualified Class Name |
|
41 | + * |
|
42 | + * @var string $fqcn |
|
43 | + */ |
|
44 | + private $fqcn; |
|
45 | + |
|
46 | + /** |
|
47 | + * a dependency class map array |
|
48 | + * If a Recipe is for a single class (or group of classes that shares the EXACT SAME constructor arguments), |
|
49 | + * and that class type hints for an interface, then this property allows you to configure what dependencies |
|
50 | + * get used when instantiating the class. |
|
51 | + * For example: |
|
52 | + * There's a class called Coffee, and one of its constructor arguments is BeanInterface |
|
53 | + * There are two implementations of BeanInterface: HonduranBean, and KenyanBean |
|
54 | + * We want one Coffee object to use HonduranBean for its BeanInterface, |
|
55 | + * and the 2nd Coffee object to use KenyanBean for its BeanInterface. |
|
56 | + * To do this, we need to create two Recipes: |
|
57 | + * one with an identifier of 'HonduranCoffee' using the following ingredients : |
|
58 | + * array('BeanInterface' => 'HonduranBean') |
|
59 | + * and the other with an identifier of 'KenyanCoffee' using the following ingredients : |
|
60 | + * array('BeanInterface' => 'KenyanBean') |
|
61 | + * Then, whenever the CoffeeShop brews an instance of HonduranCoffee, |
|
62 | + * an instance of HonduranBean will get injected for the BeanInterface dependency, |
|
63 | + * and whenever the CoffeeShop brews an instance of KenyanCoffee, |
|
64 | + * an instance of KenyanBean will get injected for the BeanInterface dependency |
|
65 | + * |
|
66 | + * @var array $ingredients |
|
67 | + */ |
|
68 | + private $ingredients = array(); |
|
69 | + |
|
70 | + /** |
|
71 | + * one of the class constants from CoffeeShop: |
|
72 | + * CoffeeMaker::BREW_NEW - creates a new instance |
|
73 | + * CoffeeMaker::BREW_SHARED - creates a shared instance |
|
74 | + * CoffeeMaker::BREW_LOAD_ONLY - loads but does not instantiate |
|
75 | + * |
|
76 | + * @var string $type |
|
77 | + */ |
|
78 | + private $type; |
|
79 | + |
|
80 | + /** |
|
81 | + * class name aliases - typically a Fully Qualified Interface that the class implements |
|
82 | + * identifiers passed to the CoffeeShop will be run through the filters to find the correct class name |
|
83 | + * |
|
84 | + * @var array $filters |
|
85 | + */ |
|
86 | + private $filters = array(); |
|
87 | + |
|
88 | + /** |
|
89 | + * array of full server filepaths to files that may contain the class |
|
90 | + * |
|
91 | + * @var array $paths |
|
92 | + */ |
|
93 | + private $paths = array(); |
|
94 | + |
|
95 | + |
|
96 | + |
|
97 | + /** |
|
98 | + * Recipe constructor. |
|
99 | + * |
|
100 | + * @param string $identifier class identifier, can be an alias, or FQCN, or whatever |
|
101 | + * @param string $fqcn \Fully\Qualified\ClassName, optional if $identifier is FQCN |
|
102 | + * @param array $ingredients array of dependencies that can not be resolved automatically, |
|
103 | + * used for resolving concrete classes for type hinted interfaces |
|
104 | + * for the dependencies of THIS class |
|
105 | + * @param string $type recipe type: one of the class constants on |
|
106 | + * \EventEspresso\core\services\container\CoffeeMaker |
|
107 | + * @param array $filters array of class aliases, or class interfaces |
|
108 | + * this works somewhat opposite to the $ingredients array above, |
|
109 | + * in that this array specifies interfaces or aliases |
|
110 | + * that this Recipe can be used for when resolving OTHER class's dependencies |
|
111 | + * @param array $paths if class can not be loaded via PSR-4 autoloading, |
|
112 | + * then supply a filepath, or array of filepaths, so that it can be included |
|
113 | + */ |
|
114 | + public function __construct( |
|
115 | + $identifier, |
|
116 | + $fqcn = '', |
|
117 | + $filters = array(), |
|
118 | + $ingredients = array(), |
|
119 | + $type = CoffeeMaker::BREW_NEW, |
|
120 | + $paths = array() |
|
121 | + ) |
|
122 | + { |
|
123 | + $this->setIdentifier($identifier); |
|
124 | + $this->setFilters((array)$filters); |
|
125 | + $this->setIngredients((array)$ingredients); |
|
126 | + $this->setType($type); |
|
127 | + $this->setPaths($paths); |
|
128 | + $this->setFqcn($fqcn); |
|
129 | + } |
|
130 | + |
|
131 | + |
|
132 | + |
|
133 | + /** |
|
134 | + * @return string |
|
135 | + */ |
|
136 | + public function identifier() |
|
137 | + { |
|
138 | + return $this->identifier; |
|
139 | + } |
|
140 | + |
|
141 | + |
|
142 | + |
|
143 | + /** |
|
144 | + * @return string |
|
145 | + */ |
|
146 | + public function fqcn() |
|
147 | + { |
|
148 | + return $this->fqcn; |
|
149 | + } |
|
150 | + |
|
151 | + |
|
152 | + |
|
153 | + /** |
|
154 | + * @return array |
|
155 | + */ |
|
156 | + public function filters() |
|
157 | + { |
|
158 | + return (array)$this->filters; |
|
159 | + } |
|
160 | + |
|
161 | + |
|
162 | + |
|
163 | + /** |
|
164 | + * @return array |
|
165 | + */ |
|
166 | + public function ingredients() |
|
167 | + { |
|
168 | + return $this->ingredients; |
|
169 | + } |
|
170 | + |
|
171 | + |
|
172 | + |
|
173 | + /** |
|
174 | + * @return string |
|
175 | + */ |
|
176 | + public function type() |
|
177 | + { |
|
178 | + return $this->type; |
|
179 | + } |
|
180 | + |
|
181 | + |
|
182 | + |
|
183 | + /** |
|
184 | + * @return array |
|
185 | + */ |
|
186 | + public function paths() |
|
187 | + { |
|
188 | + return (array)$this->paths; |
|
189 | + } |
|
190 | + |
|
191 | + |
|
192 | + |
|
193 | + /** |
|
194 | + * @param string $identifier Identifier for the entity class that the Recipe applies to |
|
195 | + * Typically a Fully Qualified Class Name |
|
196 | + */ |
|
197 | + public function setIdentifier($identifier) |
|
198 | + { |
|
199 | + if ( ! is_string($identifier) || empty($identifier)) { |
|
200 | + throw new InvalidIdentifierException( |
|
201 | + is_object($identifier) ? get_class($identifier) : gettype($identifier), |
|
202 | + __('class identifier (typically a \Fully\Qualified\ClassName)', 'event_espresso') |
|
203 | + ); |
|
204 | + } |
|
205 | + $this->identifier = $identifier; |
|
206 | + } |
|
207 | + |
|
208 | + |
|
209 | + |
|
210 | + /** |
|
211 | + * Ensures incoming string is a valid Fully Qualified Class Name, |
|
212 | + * except if this is the default wildcard Recipe ( * ), |
|
213 | + * or it's NOT an actual FQCN because the Recipe is using filepaths |
|
214 | + * for classes that are not PSR-4 compatible |
|
215 | + * PLZ NOTE: |
|
216 | + * Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not, |
|
217 | + * therefore you should always call Recipe::setPaths() before Recipe::setFqcn() |
|
218 | + * |
|
219 | + * @param string $fqcn |
|
220 | + */ |
|
221 | + public function setFqcn($fqcn) |
|
222 | + { |
|
223 | + $fqcn = ! empty($fqcn) ? $fqcn : $this->identifier; |
|
224 | + if ( ! is_string($fqcn)) { |
|
225 | + throw new InvalidDataTypeException( |
|
226 | + '$fqcn', |
|
227 | + is_object($fqcn) ? get_class($fqcn) : gettype($fqcn), |
|
228 | + __('string (Fully\Qualified\ClassName)', 'event_espresso') |
|
229 | + ); |
|
230 | + } |
|
231 | + $fqcn = ltrim($fqcn, '\\'); |
|
232 | + if ( |
|
233 | + $fqcn !== Recipe::DEFAULT_ID |
|
234 | + && ! empty($fqcn) |
|
235 | + && empty($this->paths) |
|
236 | + && ! class_exists($fqcn) |
|
237 | + ) { |
|
238 | + throw new InvalidClassException($fqcn); |
|
239 | + } |
|
240 | + $this->fqcn = $fqcn; |
|
241 | + } |
|
242 | + |
|
243 | + |
|
244 | + |
|
245 | + /** |
|
246 | + * @param array $ingredients an array of dependencies where keys are the aliases and values are the FQCNs |
|
247 | + * example: |
|
248 | + * array( 'ClassInterface' => 'Fully\Qualified\ClassName' ) |
|
249 | + */ |
|
250 | + public function setIngredients(array $ingredients) |
|
251 | + { |
|
252 | + if (empty($ingredients)) { |
|
253 | + return; |
|
254 | + } |
|
255 | + if ( ! is_array($ingredients)) { |
|
256 | + throw new InvalidDataTypeException( |
|
257 | + '$ingredients', |
|
258 | + is_object($ingredients) ? get_class($ingredients) : gettype($ingredients), |
|
259 | + __('array of class dependencies', 'event_espresso') |
|
260 | + ); |
|
261 | + } |
|
262 | + $this->ingredients = array_merge($this->ingredients, $ingredients); |
|
263 | + } |
|
264 | + |
|
265 | + |
|
266 | + /** |
|
267 | + * @param string $type one of the class constants returned from CoffeeMaker::getTypes() |
|
268 | + */ |
|
269 | + public function setType($type = CoffeeMaker::BREW_NEW) |
|
270 | + { |
|
271 | + $this->type = CoffeeMaker::validateType($type); |
|
272 | + } |
|
273 | + |
|
274 | + |
|
275 | + |
|
276 | + /** |
|
277 | + * @param array $filters an array of filters where keys are the aliases and values are the FQCNs |
|
278 | + * example: |
|
279 | + * array( 'ClassInterface' => 'Fully\Qualified\ClassName' ) |
|
280 | + */ |
|
281 | + public function setFilters(array $filters) |
|
282 | + { |
|
283 | + if (empty($filters)) { |
|
284 | + return; |
|
285 | + } |
|
286 | + if ( ! is_array($filters)) { |
|
287 | + throw new InvalidDataTypeException( |
|
288 | + '$filters', |
|
289 | + is_object($filters) ? get_class($filters) : gettype($filters), |
|
290 | + __('array of class aliases', 'event_espresso') |
|
291 | + ); |
|
292 | + } |
|
293 | + $this->filters = array_merge($this->filters, $filters); |
|
294 | + } |
|
295 | + |
|
296 | + |
|
297 | + |
|
298 | + /** |
|
299 | + * Ensures incoming paths is a valid filepath, or array of valid filepaths, |
|
300 | + * and merges them in with any existing filepaths |
|
301 | + * |
|
302 | + * PLZ NOTE: |
|
303 | + * Recipe::setFqcn() has a check to see if Recipe::$paths is empty or not, |
|
304 | + * therefore you should always call Recipe::setPaths() before Recipe::setFqcn() |
|
305 | + * |
|
306 | + * @param string|array $paths |
|
307 | + */ |
|
308 | + public function setPaths($paths = array()) |
|
309 | + { |
|
310 | + if (empty($paths)) { |
|
311 | + return; |
|
312 | + } |
|
313 | + if ( ! (is_string($paths) || is_array($paths))) { |
|
314 | + throw new InvalidDataTypeException( |
|
315 | + '$path', |
|
316 | + is_object($paths) ? get_class($paths) : gettype($paths), |
|
317 | + __('string or array of strings (full server filepath(s))', 'event_espresso') |
|
318 | + ); |
|
319 | + } |
|
320 | + $paths = (array)$paths; |
|
321 | + foreach ($paths as $path) { |
|
322 | + if (strpos($path, '*') === false && ! is_readable($path)) { |
|
323 | + throw new RuntimeException( |
|
324 | + sprintf( |
|
325 | + __('The following filepath is not readable: "%1$s"', 'event_espresso'), |
|
326 | + $path |
|
327 | + ) |
|
328 | + ); |
|
329 | + } |
|
330 | + } |
|
331 | + $this->paths = array_merge($this->paths, $paths); |
|
332 | + } |
|
333 | 333 | |
334 | 334 | |
335 | 335 |
@@ -121,8 +121,8 @@ discard block |
||
121 | 121 | ) |
122 | 122 | { |
123 | 123 | $this->setIdentifier($identifier); |
124 | - $this->setFilters((array)$filters); |
|
125 | - $this->setIngredients((array)$ingredients); |
|
124 | + $this->setFilters((array) $filters); |
|
125 | + $this->setIngredients((array) $ingredients); |
|
126 | 126 | $this->setType($type); |
127 | 127 | $this->setPaths($paths); |
128 | 128 | $this->setFqcn($fqcn); |
@@ -155,7 +155,7 @@ discard block |
||
155 | 155 | */ |
156 | 156 | public function filters() |
157 | 157 | { |
158 | - return (array)$this->filters; |
|
158 | + return (array) $this->filters; |
|
159 | 159 | } |
160 | 160 | |
161 | 161 | |
@@ -185,7 +185,7 @@ discard block |
||
185 | 185 | */ |
186 | 186 | public function paths() |
187 | 187 | { |
188 | - return (array)$this->paths; |
|
188 | + return (array) $this->paths; |
|
189 | 189 | } |
190 | 190 | |
191 | 191 | |
@@ -317,7 +317,7 @@ discard block |
||
317 | 317 | __('string or array of strings (full server filepath(s))', 'event_espresso') |
318 | 318 | ); |
319 | 319 | } |
320 | - $paths = (array)$paths; |
|
320 | + $paths = (array) $paths; |
|
321 | 321 | foreach ($paths as $path) { |
322 | 322 | if (strpos($path, '*') === false && ! is_readable($path)) { |
323 | 323 | throw new RuntimeException( |
@@ -4,7 +4,7 @@ discard block |
||
4 | 4 | use UnexpectedValueException; |
5 | 5 | |
6 | 6 | if ( ! defined('EVENT_ESPRESSO_VERSION')) { |
7 | - exit('No direct script access allowed'); |
|
7 | + exit('No direct script access allowed'); |
|
8 | 8 | } |
9 | 9 | |
10 | 10 | |
@@ -22,214 +22,214 @@ discard block |
||
22 | 22 | class DependencyInjector implements InjectorInterface |
23 | 23 | { |
24 | 24 | |
25 | - /** |
|
26 | - * @var CoffeePotInterface $coffee_pot |
|
27 | - */ |
|
28 | - private $coffee_pot; |
|
29 | - |
|
30 | - /** |
|
31 | - * @var \EEH_Array $array_helper |
|
32 | - */ |
|
33 | - private $array_helper; |
|
34 | - |
|
35 | - /** |
|
36 | - * @var \ReflectionClass[] $reflectors |
|
37 | - */ |
|
38 | - private $reflectors; |
|
39 | - |
|
40 | - /** |
|
41 | - * @var \ReflectionMethod[] $constructors |
|
42 | - */ |
|
43 | - private $constructors; |
|
44 | - |
|
45 | - /** |
|
46 | - * @var \ReflectionParameter[] $parameters |
|
47 | - */ |
|
48 | - private $parameters; |
|
49 | - |
|
50 | - |
|
51 | - |
|
52 | - /** |
|
53 | - * DependencyInjector constructor |
|
54 | - * |
|
55 | - * @param CoffeePotInterface $coffee_pot |
|
56 | - * @param \EEH_Array $array_helper |
|
57 | - */ |
|
58 | - public function __construct(CoffeePotInterface $coffee_pot, \EEH_Array $array_helper) |
|
59 | - { |
|
60 | - $this->coffee_pot = $coffee_pot; |
|
61 | - $this->array_helper = $array_helper; |
|
62 | - } |
|
63 | - |
|
64 | - |
|
65 | - |
|
66 | - /** |
|
67 | - * getReflectionClass |
|
68 | - * checks if a ReflectionClass object has already been generated for a class |
|
69 | - * and returns that instead of creating a new one |
|
70 | - * |
|
71 | - * @param string $class_name |
|
72 | - * @return \ReflectionClass |
|
73 | - */ |
|
74 | - public function getReflectionClass($class_name) |
|
75 | - { |
|
76 | - if ( |
|
77 | - ! isset($this->reflectors[$class_name]) |
|
78 | - || ! $this->reflectors[$class_name] instanceof \ReflectionClass |
|
79 | - ) { |
|
80 | - $this->reflectors[$class_name] = new \ReflectionClass($class_name); |
|
81 | - } |
|
82 | - return $this->reflectors[$class_name]; |
|
83 | - } |
|
84 | - |
|
85 | - |
|
86 | - |
|
87 | - /** |
|
88 | - * getConstructor |
|
89 | - * checks if a ReflectionMethod object has already been generated for the class constructor |
|
90 | - * and returns that instead of creating a new one |
|
91 | - * |
|
92 | - * @param \ReflectionClass $reflector |
|
93 | - * @return \ReflectionMethod |
|
94 | - */ |
|
95 | - protected function getConstructor(\ReflectionClass $reflector) |
|
96 | - { |
|
97 | - if ( |
|
98 | - ! isset($this->constructors[$reflector->getName()]) |
|
99 | - || ! $this->constructors[$reflector->getName()] instanceof \ReflectionMethod |
|
100 | - ) { |
|
101 | - $this->constructors[$reflector->getName()] = $reflector->getConstructor(); |
|
102 | - } |
|
103 | - return $this->constructors[$reflector->getName()]; |
|
104 | - } |
|
105 | - |
|
106 | - |
|
107 | - |
|
108 | - /** |
|
109 | - * getParameters |
|
110 | - * checks if an array of ReflectionParameter objects has already been generated for the class constructor |
|
111 | - * and returns that instead of creating a new one |
|
112 | - * |
|
113 | - * @param \ReflectionMethod $constructor |
|
114 | - * @return \ReflectionParameter[] |
|
115 | - */ |
|
116 | - protected function getParameters(\ReflectionMethod $constructor) |
|
117 | - { |
|
118 | - if ( ! isset($this->parameters[$constructor->class])) { |
|
119 | - $this->parameters[$constructor->class] = $constructor->getParameters(); |
|
120 | - } |
|
121 | - return $this->parameters[$constructor->class]; |
|
122 | - } |
|
123 | - |
|
124 | - |
|
125 | - |
|
126 | - /** |
|
127 | - * resolveDependencies |
|
128 | - * examines the constructor for the requested class to determine |
|
129 | - * if any dependencies exist, and if they can be injected. |
|
130 | - * If so, then those classes will be added to the array of arguments passed to the constructor |
|
131 | - * PLZ NOTE: this is achieved by type hinting the constructor params |
|
132 | - * For example: |
|
133 | - * if attempting to load a class "Foo" with the following constructor: |
|
134 | - * __construct( Bar $bar_class, Fighter $grohl_class ) |
|
135 | - * then $bar_class and $grohl_class will be added to the $arguments array, |
|
136 | - * but only IF they are NOT already present in the incoming arguments array, |
|
137 | - * and the correct classes can be loaded |
|
138 | - * |
|
139 | - * @param RecipeInterface $recipe |
|
140 | - * @param \ReflectionClass $reflector |
|
141 | - * @param array $arguments |
|
142 | - * @return array |
|
143 | - */ |
|
144 | - public function resolveDependencies(RecipeInterface $recipe, \ReflectionClass $reflector, $arguments = array()) |
|
145 | - { |
|
146 | - // if arguments array is numerically and sequentially indexed, then we want it to remain as is, |
|
147 | - // else wrap it in an additional array so that it doesn't get split into multiple parameters |
|
148 | - $arguments = $this->array_helper->is_array_numerically_and_sequentially_indexed($arguments) |
|
149 | - ? $arguments |
|
150 | - : array($arguments); |
|
151 | - $resolved_parameters = array(); |
|
152 | - // let's examine the constructor |
|
153 | - // let's examine the constructor |
|
154 | - $constructor = $this->getConstructor($reflector); |
|
155 | - // whu? huh? nothing? |
|
156 | - if ( ! $constructor) { |
|
157 | - return $arguments; |
|
158 | - } |
|
159 | - // get constructor parameters |
|
160 | - $params = $this->getParameters($constructor); |
|
161 | - if (empty($params)) { |
|
162 | - return $resolved_parameters; |
|
163 | - } |
|
164 | - $ingredients = $recipe->ingredients(); |
|
165 | - // and the keys for the incoming arguments array so that we can compare existing arguments with what is expected |
|
166 | - $argument_keys = array_keys($arguments); |
|
167 | - // now loop thru all of the constructors expected parameters |
|
168 | - foreach ($params as $index => $param) { |
|
169 | - if ( ! $param instanceof \ReflectionParameter) { |
|
170 | - continue; |
|
171 | - } |
|
172 | - // is this a dependency for a specific class ? |
|
173 | - $param_class = $param->getClass() ? $param->getClass()->name : null; |
|
174 | - if ( |
|
175 | - // param is specified in the list of ingredients for this Recipe |
|
176 | - isset($ingredients[$param_class]) |
|
177 | - ) { |
|
178 | - // attempt to inject the dependency |
|
179 | - $resolved_parameters[$index] = $this->injectDependency($ingredients[$param_class]); |
|
180 | - } else if ( |
|
181 | - // param is not even a class |
|
182 | - empty($param_class) |
|
183 | - // and something already exists in the incoming arguments for this param |
|
184 | - && isset($argument_keys[$index], $arguments[$argument_keys[$index]]) |
|
185 | - ) { |
|
186 | - // add parameter from incoming arguments |
|
187 | - $resolved_parameters[$index] = $arguments[$argument_keys[$index]]; |
|
188 | - } else if ( |
|
189 | - // parameter is type hinted as a class, exists as an incoming argument, AND it's the correct class |
|
190 | - ! empty($param_class) |
|
191 | - && isset($argument_keys[$index], $arguments[$argument_keys[$index]]) |
|
192 | - && $arguments[$argument_keys[$index]] instanceof $param_class |
|
193 | - ) { |
|
194 | - // add parameter from incoming arguments |
|
195 | - $resolved_parameters[$index] = $arguments[$argument_keys[$index]]; |
|
196 | - } else if ( |
|
197 | - // parameter is type hinted as a class, and should be injected |
|
198 | - ! empty($param_class) |
|
199 | - ) { |
|
200 | - // attempt to inject the dependency |
|
201 | - $resolved_parameters[$index] = $this->injectDependency($param_class); |
|
202 | - } else if ($param->isOptional()) { |
|
203 | - $resolved_parameters[$index] = $param->getDefaultValue(); |
|
204 | - } else { |
|
205 | - $resolved_parameters[$index] = null; |
|
206 | - } |
|
207 | - } |
|
208 | - return $resolved_parameters; |
|
209 | - } |
|
210 | - |
|
211 | - |
|
212 | - |
|
213 | - /** |
|
214 | - * @param string $param_class |
|
215 | - * @return mixed |
|
216 | - */ |
|
217 | - private function injectDependency($param_class) |
|
218 | - { |
|
219 | - $dependency = $this->coffee_pot->brew($param_class); |
|
220 | - if ( ! $dependency instanceof $param_class) { |
|
221 | - throw new UnexpectedValueException( |
|
222 | - sprintf( |
|
223 | - __( |
|
224 | - 'Could not resolve dependency for "%1$s" for the "%2$s" class constructor.', |
|
225 | - 'event_espresso' |
|
226 | - ), |
|
227 | - $param_class |
|
228 | - ) |
|
229 | - ); |
|
230 | - } |
|
231 | - return $dependency; |
|
232 | - } |
|
25 | + /** |
|
26 | + * @var CoffeePotInterface $coffee_pot |
|
27 | + */ |
|
28 | + private $coffee_pot; |
|
29 | + |
|
30 | + /** |
|
31 | + * @var \EEH_Array $array_helper |
|
32 | + */ |
|
33 | + private $array_helper; |
|
34 | + |
|
35 | + /** |
|
36 | + * @var \ReflectionClass[] $reflectors |
|
37 | + */ |
|
38 | + private $reflectors; |
|
39 | + |
|
40 | + /** |
|
41 | + * @var \ReflectionMethod[] $constructors |
|
42 | + */ |
|
43 | + private $constructors; |
|
44 | + |
|
45 | + /** |
|
46 | + * @var \ReflectionParameter[] $parameters |
|
47 | + */ |
|
48 | + private $parameters; |
|
49 | + |
|
50 | + |
|
51 | + |
|
52 | + /** |
|
53 | + * DependencyInjector constructor |
|
54 | + * |
|
55 | + * @param CoffeePotInterface $coffee_pot |
|
56 | + * @param \EEH_Array $array_helper |
|
57 | + */ |
|
58 | + public function __construct(CoffeePotInterface $coffee_pot, \EEH_Array $array_helper) |
|
59 | + { |
|
60 | + $this->coffee_pot = $coffee_pot; |
|
61 | + $this->array_helper = $array_helper; |
|
62 | + } |
|
63 | + |
|
64 | + |
|
65 | + |
|
66 | + /** |
|
67 | + * getReflectionClass |
|
68 | + * checks if a ReflectionClass object has already been generated for a class |
|
69 | + * and returns that instead of creating a new one |
|
70 | + * |
|
71 | + * @param string $class_name |
|
72 | + * @return \ReflectionClass |
|
73 | + */ |
|
74 | + public function getReflectionClass($class_name) |
|
75 | + { |
|
76 | + if ( |
|
77 | + ! isset($this->reflectors[$class_name]) |
|
78 | + || ! $this->reflectors[$class_name] instanceof \ReflectionClass |
|
79 | + ) { |
|
80 | + $this->reflectors[$class_name] = new \ReflectionClass($class_name); |
|
81 | + } |
|
82 | + return $this->reflectors[$class_name]; |
|
83 | + } |
|
84 | + |
|
85 | + |
|
86 | + |
|
87 | + /** |
|
88 | + * getConstructor |
|
89 | + * checks if a ReflectionMethod object has already been generated for the class constructor |
|
90 | + * and returns that instead of creating a new one |
|
91 | + * |
|
92 | + * @param \ReflectionClass $reflector |
|
93 | + * @return \ReflectionMethod |
|
94 | + */ |
|
95 | + protected function getConstructor(\ReflectionClass $reflector) |
|
96 | + { |
|
97 | + if ( |
|
98 | + ! isset($this->constructors[$reflector->getName()]) |
|
99 | + || ! $this->constructors[$reflector->getName()] instanceof \ReflectionMethod |
|
100 | + ) { |
|
101 | + $this->constructors[$reflector->getName()] = $reflector->getConstructor(); |
|
102 | + } |
|
103 | + return $this->constructors[$reflector->getName()]; |
|
104 | + } |
|
105 | + |
|
106 | + |
|
107 | + |
|
108 | + /** |
|
109 | + * getParameters |
|
110 | + * checks if an array of ReflectionParameter objects has already been generated for the class constructor |
|
111 | + * and returns that instead of creating a new one |
|
112 | + * |
|
113 | + * @param \ReflectionMethod $constructor |
|
114 | + * @return \ReflectionParameter[] |
|
115 | + */ |
|
116 | + protected function getParameters(\ReflectionMethod $constructor) |
|
117 | + { |
|
118 | + if ( ! isset($this->parameters[$constructor->class])) { |
|
119 | + $this->parameters[$constructor->class] = $constructor->getParameters(); |
|
120 | + } |
|
121 | + return $this->parameters[$constructor->class]; |
|
122 | + } |
|
123 | + |
|
124 | + |
|
125 | + |
|
126 | + /** |
|
127 | + * resolveDependencies |
|
128 | + * examines the constructor for the requested class to determine |
|
129 | + * if any dependencies exist, and if they can be injected. |
|
130 | + * If so, then those classes will be added to the array of arguments passed to the constructor |
|
131 | + * PLZ NOTE: this is achieved by type hinting the constructor params |
|
132 | + * For example: |
|
133 | + * if attempting to load a class "Foo" with the following constructor: |
|
134 | + * __construct( Bar $bar_class, Fighter $grohl_class ) |
|
135 | + * then $bar_class and $grohl_class will be added to the $arguments array, |
|
136 | + * but only IF they are NOT already present in the incoming arguments array, |
|
137 | + * and the correct classes can be loaded |
|
138 | + * |
|
139 | + * @param RecipeInterface $recipe |
|
140 | + * @param \ReflectionClass $reflector |
|
141 | + * @param array $arguments |
|
142 | + * @return array |
|
143 | + */ |
|
144 | + public function resolveDependencies(RecipeInterface $recipe, \ReflectionClass $reflector, $arguments = array()) |
|
145 | + { |
|
146 | + // if arguments array is numerically and sequentially indexed, then we want it to remain as is, |
|
147 | + // else wrap it in an additional array so that it doesn't get split into multiple parameters |
|
148 | + $arguments = $this->array_helper->is_array_numerically_and_sequentially_indexed($arguments) |
|
149 | + ? $arguments |
|
150 | + : array($arguments); |
|
151 | + $resolved_parameters = array(); |
|
152 | + // let's examine the constructor |
|
153 | + // let's examine the constructor |
|
154 | + $constructor = $this->getConstructor($reflector); |
|
155 | + // whu? huh? nothing? |
|
156 | + if ( ! $constructor) { |
|
157 | + return $arguments; |
|
158 | + } |
|
159 | + // get constructor parameters |
|
160 | + $params = $this->getParameters($constructor); |
|
161 | + if (empty($params)) { |
|
162 | + return $resolved_parameters; |
|
163 | + } |
|
164 | + $ingredients = $recipe->ingredients(); |
|
165 | + // and the keys for the incoming arguments array so that we can compare existing arguments with what is expected |
|
166 | + $argument_keys = array_keys($arguments); |
|
167 | + // now loop thru all of the constructors expected parameters |
|
168 | + foreach ($params as $index => $param) { |
|
169 | + if ( ! $param instanceof \ReflectionParameter) { |
|
170 | + continue; |
|
171 | + } |
|
172 | + // is this a dependency for a specific class ? |
|
173 | + $param_class = $param->getClass() ? $param->getClass()->name : null; |
|
174 | + if ( |
|
175 | + // param is specified in the list of ingredients for this Recipe |
|
176 | + isset($ingredients[$param_class]) |
|
177 | + ) { |
|
178 | + // attempt to inject the dependency |
|
179 | + $resolved_parameters[$index] = $this->injectDependency($ingredients[$param_class]); |
|
180 | + } else if ( |
|
181 | + // param is not even a class |
|
182 | + empty($param_class) |
|
183 | + // and something already exists in the incoming arguments for this param |
|
184 | + && isset($argument_keys[$index], $arguments[$argument_keys[$index]]) |
|
185 | + ) { |
|
186 | + // add parameter from incoming arguments |
|
187 | + $resolved_parameters[$index] = $arguments[$argument_keys[$index]]; |
|
188 | + } else if ( |
|
189 | + // parameter is type hinted as a class, exists as an incoming argument, AND it's the correct class |
|
190 | + ! empty($param_class) |
|
191 | + && isset($argument_keys[$index], $arguments[$argument_keys[$index]]) |
|
192 | + && $arguments[$argument_keys[$index]] instanceof $param_class |
|
193 | + ) { |
|
194 | + // add parameter from incoming arguments |
|
195 | + $resolved_parameters[$index] = $arguments[$argument_keys[$index]]; |
|
196 | + } else if ( |
|
197 | + // parameter is type hinted as a class, and should be injected |
|
198 | + ! empty($param_class) |
|
199 | + ) { |
|
200 | + // attempt to inject the dependency |
|
201 | + $resolved_parameters[$index] = $this->injectDependency($param_class); |
|
202 | + } else if ($param->isOptional()) { |
|
203 | + $resolved_parameters[$index] = $param->getDefaultValue(); |
|
204 | + } else { |
|
205 | + $resolved_parameters[$index] = null; |
|
206 | + } |
|
207 | + } |
|
208 | + return $resolved_parameters; |
|
209 | + } |
|
210 | + |
|
211 | + |
|
212 | + |
|
213 | + /** |
|
214 | + * @param string $param_class |
|
215 | + * @return mixed |
|
216 | + */ |
|
217 | + private function injectDependency($param_class) |
|
218 | + { |
|
219 | + $dependency = $this->coffee_pot->brew($param_class); |
|
220 | + if ( ! $dependency instanceof $param_class) { |
|
221 | + throw new UnexpectedValueException( |
|
222 | + sprintf( |
|
223 | + __( |
|
224 | + 'Could not resolve dependency for "%1$s" for the "%2$s" class constructor.', |
|
225 | + 'event_espresso' |
|
226 | + ), |
|
227 | + $param_class |
|
228 | + ) |
|
229 | + ); |
|
230 | + } |
|
231 | + return $dependency; |
|
232 | + } |
|
233 | 233 | |
234 | 234 | } |
235 | 235 | // End of file DependencyInjector.php |