@@ -18,97 +18,97 @@ |
||
18 | 18 | class RegUrlLink |
19 | 19 | { |
20 | 20 | |
21 | - /* |
|
21 | + /* |
|
22 | 22 | * @var string $reg_url_link |
23 | 23 | */ |
24 | - private $reg_url_link; |
|
24 | + private $reg_url_link; |
|
25 | 25 | |
26 | 26 | |
27 | - /** |
|
28 | - * @param string $reg_url_link |
|
29 | - * @return RegUrlLink |
|
30 | - * @throws InvalidArgumentException |
|
31 | - */ |
|
32 | - public static function fromRegUrlLinkString($reg_url_link) |
|
33 | - { |
|
34 | - if (empty($reg_url_link) || ! is_string($reg_url_link)) { |
|
35 | - throw new InvalidArgumentException( |
|
36 | - __( |
|
37 | - 'You must supply a valid non-empty string to generate a reg_url_link.', |
|
38 | - 'event_espresso' |
|
39 | - ) |
|
40 | - ); |
|
41 | - } |
|
42 | - return new RegUrlLink(1, '', $reg_url_link); |
|
43 | - } |
|
27 | + /** |
|
28 | + * @param string $reg_url_link |
|
29 | + * @return RegUrlLink |
|
30 | + * @throws InvalidArgumentException |
|
31 | + */ |
|
32 | + public static function fromRegUrlLinkString($reg_url_link) |
|
33 | + { |
|
34 | + if (empty($reg_url_link) || ! is_string($reg_url_link)) { |
|
35 | + throw new InvalidArgumentException( |
|
36 | + __( |
|
37 | + 'You must supply a valid non-empty string to generate a reg_url_link.', |
|
38 | + 'event_espresso' |
|
39 | + ) |
|
40 | + ); |
|
41 | + } |
|
42 | + return new RegUrlLink(1, '', $reg_url_link); |
|
43 | + } |
|
44 | 44 | |
45 | 45 | |
46 | - /** |
|
47 | - * @param EE_Registration $registration |
|
48 | - * @return RegUrlLink |
|
49 | - * @throws EntityNotFoundException |
|
50 | - * @throws EE_Error |
|
51 | - * @throws InvalidArgumentException |
|
52 | - */ |
|
53 | - public static function fromRegistration(EE_Registration $registration) |
|
54 | - { |
|
55 | - return new RegUrlLink( |
|
56 | - $registration->count(), |
|
57 | - $registration->ticket_line_item() |
|
58 | - ); |
|
59 | - } |
|
46 | + /** |
|
47 | + * @param EE_Registration $registration |
|
48 | + * @return RegUrlLink |
|
49 | + * @throws EntityNotFoundException |
|
50 | + * @throws EE_Error |
|
51 | + * @throws InvalidArgumentException |
|
52 | + */ |
|
53 | + public static function fromRegistration(EE_Registration $registration) |
|
54 | + { |
|
55 | + return new RegUrlLink( |
|
56 | + $registration->count(), |
|
57 | + $registration->ticket_line_item() |
|
58 | + ); |
|
59 | + } |
|
60 | 60 | |
61 | 61 | |
62 | - /** |
|
63 | - * CreateRegUrlLinkCommand constructor. |
|
64 | - * |
|
65 | - * @param int $reg_count |
|
66 | - * @param mixed $base_code |
|
67 | - * @param string $reg_url_link |
|
68 | - * @throws InvalidArgumentException |
|
69 | - */ |
|
70 | - public function __construct( |
|
71 | - $reg_count = 1, |
|
72 | - $base_code = '', |
|
73 | - $reg_url_link = '' |
|
74 | - ) { |
|
75 | - if (! empty($reg_url_link) && is_string($reg_url_link)) { |
|
76 | - $this->reg_url_link = apply_filters( |
|
77 | - 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link', |
|
78 | - $reg_url_link, |
|
79 | - $reg_count, |
|
80 | - $base_code, |
|
81 | - $reg_url_link |
|
82 | - ); |
|
83 | - return; |
|
84 | - } |
|
85 | - $reg_count = max(1, absint($reg_count)); |
|
86 | - $base_code = $base_code instanceof \EE_Line_Item ? $base_code->code() : $base_code; |
|
87 | - if (empty($base_code) || ! is_string($base_code)) { |
|
88 | - throw new InvalidArgumentException( |
|
89 | - __( |
|
90 | - 'You must supply a valid EE_Line_Item or a non-empty string to generate a reg_url_link.', |
|
91 | - 'event_espresso' |
|
92 | - ) |
|
93 | - ); |
|
94 | - } |
|
95 | - $this->reg_url_link = (string) apply_filters( |
|
96 | - 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link', |
|
97 | - $reg_count . '-' . md5($base_code . microtime()), |
|
98 | - $reg_count, |
|
99 | - $base_code, |
|
100 | - $reg_url_link |
|
101 | - ); |
|
102 | - } |
|
62 | + /** |
|
63 | + * CreateRegUrlLinkCommand constructor. |
|
64 | + * |
|
65 | + * @param int $reg_count |
|
66 | + * @param mixed $base_code |
|
67 | + * @param string $reg_url_link |
|
68 | + * @throws InvalidArgumentException |
|
69 | + */ |
|
70 | + public function __construct( |
|
71 | + $reg_count = 1, |
|
72 | + $base_code = '', |
|
73 | + $reg_url_link = '' |
|
74 | + ) { |
|
75 | + if (! empty($reg_url_link) && is_string($reg_url_link)) { |
|
76 | + $this->reg_url_link = apply_filters( |
|
77 | + 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link', |
|
78 | + $reg_url_link, |
|
79 | + $reg_count, |
|
80 | + $base_code, |
|
81 | + $reg_url_link |
|
82 | + ); |
|
83 | + return; |
|
84 | + } |
|
85 | + $reg_count = max(1, absint($reg_count)); |
|
86 | + $base_code = $base_code instanceof \EE_Line_Item ? $base_code->code() : $base_code; |
|
87 | + if (empty($base_code) || ! is_string($base_code)) { |
|
88 | + throw new InvalidArgumentException( |
|
89 | + __( |
|
90 | + 'You must supply a valid EE_Line_Item or a non-empty string to generate a reg_url_link.', |
|
91 | + 'event_espresso' |
|
92 | + ) |
|
93 | + ); |
|
94 | + } |
|
95 | + $this->reg_url_link = (string) apply_filters( |
|
96 | + 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link', |
|
97 | + $reg_count . '-' . md5($base_code . microtime()), |
|
98 | + $reg_count, |
|
99 | + $base_code, |
|
100 | + $reg_url_link |
|
101 | + ); |
|
102 | + } |
|
103 | 103 | |
104 | 104 | |
105 | - /** |
|
106 | - * Return the object as a string |
|
107 | - * |
|
108 | - * @return string |
|
109 | - */ |
|
110 | - public function __toString() |
|
111 | - { |
|
112 | - return $this->reg_url_link; |
|
113 | - } |
|
105 | + /** |
|
106 | + * Return the object as a string |
|
107 | + * |
|
108 | + * @return string |
|
109 | + */ |
|
110 | + public function __toString() |
|
111 | + { |
|
112 | + return $this->reg_url_link; |
|
113 | + } |
|
114 | 114 | } |
@@ -72,7 +72,7 @@ discard block |
||
72 | 72 | $base_code = '', |
73 | 73 | $reg_url_link = '' |
74 | 74 | ) { |
75 | - if (! empty($reg_url_link) && is_string($reg_url_link)) { |
|
75 | + if ( ! empty($reg_url_link) && is_string($reg_url_link)) { |
|
76 | 76 | $this->reg_url_link = apply_filters( |
77 | 77 | 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link', |
78 | 78 | $reg_url_link, |
@@ -94,7 +94,7 @@ discard block |
||
94 | 94 | } |
95 | 95 | $this->reg_url_link = (string) apply_filters( |
96 | 96 | 'FHEE__\EventEspresso\core\domain\entities\RegUrlLink__construct__reg_url_link', |
97 | - $reg_count . '-' . md5($base_code . microtime()), |
|
97 | + $reg_count.'-'.md5($base_code.microtime()), |
|
98 | 98 | $reg_count, |
99 | 99 | $base_code, |
100 | 100 | $reg_url_link |
@@ -30,132 +30,132 @@ |
||
30 | 30 | { |
31 | 31 | |
32 | 32 | |
33 | - /** |
|
34 | - * the actual shortcode tag that gets registered with WordPress |
|
35 | - * |
|
36 | - * @return string |
|
37 | - */ |
|
38 | - public function getTag() |
|
39 | - { |
|
40 | - return 'ESPRESSO_EVENTS'; |
|
41 | - } |
|
33 | + /** |
|
34 | + * the actual shortcode tag that gets registered with WordPress |
|
35 | + * |
|
36 | + * @return string |
|
37 | + */ |
|
38 | + public function getTag() |
|
39 | + { |
|
40 | + return 'ESPRESSO_EVENTS'; |
|
41 | + } |
|
42 | 42 | |
43 | 43 | |
44 | - /** |
|
45 | - * the time in seconds to cache the results of the processShortcode() method |
|
46 | - * 0 means the processShortcode() results will NOT be cached at all |
|
47 | - * |
|
48 | - * @return int |
|
49 | - */ |
|
50 | - public function cacheExpiration() |
|
51 | - { |
|
52 | - return 0; |
|
53 | - } |
|
44 | + /** |
|
45 | + * the time in seconds to cache the results of the processShortcode() method |
|
46 | + * 0 means the processShortcode() results will NOT be cached at all |
|
47 | + * |
|
48 | + * @return int |
|
49 | + */ |
|
50 | + public function cacheExpiration() |
|
51 | + { |
|
52 | + return 0; |
|
53 | + } |
|
54 | 54 | |
55 | 55 | |
56 | - /** |
|
57 | - * a place for adding any initialization code that needs to run prior to wp_header(). |
|
58 | - * this may be required for shortcodes that utilize a corresponding module, |
|
59 | - * and need to enqueue assets for that module |
|
60 | - * |
|
61 | - * @return void |
|
62 | - */ |
|
63 | - public function initializeShortcode() |
|
64 | - { |
|
65 | - EED_Events_Archive::instance()->event_list(); |
|
66 | - $this->shortcodeHasBeenInitialized(); |
|
67 | - } |
|
56 | + /** |
|
57 | + * a place for adding any initialization code that needs to run prior to wp_header(). |
|
58 | + * this may be required for shortcodes that utilize a corresponding module, |
|
59 | + * and need to enqueue assets for that module |
|
60 | + * |
|
61 | + * @return void |
|
62 | + */ |
|
63 | + public function initializeShortcode() |
|
64 | + { |
|
65 | + EED_Events_Archive::instance()->event_list(); |
|
66 | + $this->shortcodeHasBeenInitialized(); |
|
67 | + } |
|
68 | 68 | |
69 | 69 | |
70 | - /** |
|
71 | - * callback that runs when the shortcode is encountered in post content. |
|
72 | - * IMPORTANT !!! |
|
73 | - * remember that shortcode content should be RETURNED and NOT echoed out |
|
74 | - * |
|
75 | - * @param array $attributes |
|
76 | - * @return string |
|
77 | - */ |
|
78 | - public function processShortcode($attributes = array()) |
|
79 | - { |
|
80 | - // grab attributes and merge with defaults |
|
81 | - $attributes = $this->getAttributes($attributes); |
|
82 | - // make sure we use the_excerpt() |
|
83 | - add_filter('FHEE__EES_Espresso_Events__process_shortcode__true', '__return_true'); |
|
84 | - // apply query filters |
|
85 | - add_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true'); |
|
86 | - // run the query |
|
87 | - global $wp_query; |
|
88 | - // yes we have to overwrite the main wp query, but it's ok... |
|
89 | - // we're going to reset it again below, so everything will be Hunky Dory (amazing album) |
|
90 | - $wp_query = new EventListQuery($attributes); |
|
91 | - // check what template is loaded and load filters accordingly |
|
92 | - EED_Events_Archive::instance()->template_include('loop-espresso_events.php'); |
|
93 | - // load our template |
|
94 | - $event_list = EEH_Template::locate_template( |
|
95 | - 'loop-espresso_events.php', |
|
96 | - array(), |
|
97 | - true, |
|
98 | - true |
|
99 | - ); |
|
100 | - // now reset the query and post data |
|
101 | - wp_reset_query(); |
|
102 | - wp_reset_postdata(); |
|
103 | - EED_Events_Archive::remove_all_events_archive_filters(); |
|
104 | - // remove query filters |
|
105 | - remove_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true'); |
|
106 | - // pull our content from the output buffer and return it |
|
107 | - return $event_list; |
|
108 | - } |
|
70 | + /** |
|
71 | + * callback that runs when the shortcode is encountered in post content. |
|
72 | + * IMPORTANT !!! |
|
73 | + * remember that shortcode content should be RETURNED and NOT echoed out |
|
74 | + * |
|
75 | + * @param array $attributes |
|
76 | + * @return string |
|
77 | + */ |
|
78 | + public function processShortcode($attributes = array()) |
|
79 | + { |
|
80 | + // grab attributes and merge with defaults |
|
81 | + $attributes = $this->getAttributes($attributes); |
|
82 | + // make sure we use the_excerpt() |
|
83 | + add_filter('FHEE__EES_Espresso_Events__process_shortcode__true', '__return_true'); |
|
84 | + // apply query filters |
|
85 | + add_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true'); |
|
86 | + // run the query |
|
87 | + global $wp_query; |
|
88 | + // yes we have to overwrite the main wp query, but it's ok... |
|
89 | + // we're going to reset it again below, so everything will be Hunky Dory (amazing album) |
|
90 | + $wp_query = new EventListQuery($attributes); |
|
91 | + // check what template is loaded and load filters accordingly |
|
92 | + EED_Events_Archive::instance()->template_include('loop-espresso_events.php'); |
|
93 | + // load our template |
|
94 | + $event_list = EEH_Template::locate_template( |
|
95 | + 'loop-espresso_events.php', |
|
96 | + array(), |
|
97 | + true, |
|
98 | + true |
|
99 | + ); |
|
100 | + // now reset the query and post data |
|
101 | + wp_reset_query(); |
|
102 | + wp_reset_postdata(); |
|
103 | + EED_Events_Archive::remove_all_events_archive_filters(); |
|
104 | + // remove query filters |
|
105 | + remove_filter('FHEE__EEH_Event_Query__apply_query_filters', '__return_true'); |
|
106 | + // pull our content from the output buffer and return it |
|
107 | + return $event_list; |
|
108 | + } |
|
109 | 109 | |
110 | 110 | |
111 | - /** |
|
112 | - * merge incoming attributes with filtered defaults |
|
113 | - * |
|
114 | - * @param array $attributes |
|
115 | - * @return array |
|
116 | - */ |
|
117 | - private function getAttributes(array $attributes) |
|
118 | - { |
|
119 | - return array_merge( |
|
120 | - (array) apply_filters( |
|
121 | - 'EES_Espresso_Events__process_shortcode__default_espresso_events_shortcode_atts', |
|
122 | - array( |
|
123 | - 'title' => '', |
|
124 | - 'limit' => 10, |
|
125 | - 'css_class' => '', |
|
126 | - 'show_expired' => false, |
|
127 | - 'month' => '', |
|
128 | - 'category_slug' => '', |
|
129 | - 'order_by' => 'start_date', |
|
130 | - 'sort' => 'ASC', |
|
131 | - 'show_title' => true, |
|
132 | - ) |
|
133 | - ), |
|
134 | - $attributes |
|
135 | - ); |
|
136 | - } |
|
111 | + /** |
|
112 | + * merge incoming attributes with filtered defaults |
|
113 | + * |
|
114 | + * @param array $attributes |
|
115 | + * @return array |
|
116 | + */ |
|
117 | + private function getAttributes(array $attributes) |
|
118 | + { |
|
119 | + return array_merge( |
|
120 | + (array) apply_filters( |
|
121 | + 'EES_Espresso_Events__process_shortcode__default_espresso_events_shortcode_atts', |
|
122 | + array( |
|
123 | + 'title' => '', |
|
124 | + 'limit' => 10, |
|
125 | + 'css_class' => '', |
|
126 | + 'show_expired' => false, |
|
127 | + 'month' => '', |
|
128 | + 'category_slug' => '', |
|
129 | + 'order_by' => 'start_date', |
|
130 | + 'sort' => 'ASC', |
|
131 | + 'show_title' => true, |
|
132 | + ) |
|
133 | + ), |
|
134 | + $attributes |
|
135 | + ); |
|
136 | + } |
|
137 | 137 | |
138 | 138 | |
139 | - /** |
|
140 | - * array for defining custom attribute sanitization callbacks, |
|
141 | - * where keys match keys in your attributes array, |
|
142 | - * and values represent the sanitization function you wish to be applied to that attribute. |
|
143 | - * So for example, if you had an integer attribute named "event_id" |
|
144 | - * that you wanted to be sanitized using absint(), |
|
145 | - * then you would pass the following for your $custom_sanitization array: |
|
146 | - * array('event_id' => 'absint') |
|
147 | - * |
|
148 | - * @return array |
|
149 | - */ |
|
150 | - protected function customAttributeSanitizationMap() |
|
151 | - { |
|
152 | - // the following get sanitized/whitelisted in EEH_Event_Query |
|
153 | - return array( |
|
154 | - 'category_slug' => 'skip_sanitization', |
|
155 | - 'show_expired' => 'skip_sanitization', |
|
156 | - 'order_by' => 'skip_sanitization', |
|
157 | - 'month' => 'skip_sanitization', |
|
158 | - 'sort' => 'skip_sanitization', |
|
159 | - ); |
|
160 | - } |
|
139 | + /** |
|
140 | + * array for defining custom attribute sanitization callbacks, |
|
141 | + * where keys match keys in your attributes array, |
|
142 | + * and values represent the sanitization function you wish to be applied to that attribute. |
|
143 | + * So for example, if you had an integer attribute named "event_id" |
|
144 | + * that you wanted to be sanitized using absint(), |
|
145 | + * then you would pass the following for your $custom_sanitization array: |
|
146 | + * array('event_id' => 'absint') |
|
147 | + * |
|
148 | + * @return array |
|
149 | + */ |
|
150 | + protected function customAttributeSanitizationMap() |
|
151 | + { |
|
152 | + // the following get sanitized/whitelisted in EEH_Event_Query |
|
153 | + return array( |
|
154 | + 'category_slug' => 'skip_sanitization', |
|
155 | + 'show_expired' => 'skip_sanitization', |
|
156 | + 'order_by' => 'skip_sanitization', |
|
157 | + 'month' => 'skip_sanitization', |
|
158 | + 'sort' => 'skip_sanitization', |
|
159 | + ); |
|
160 | + } |
|
161 | 161 | } |
@@ -27,333 +27,333 @@ |
||
27 | 27 | class EspressoEventAttendees extends EspressoShortcode |
28 | 28 | { |
29 | 29 | |
30 | - private $query_params = array( |
|
31 | - 0 => array(), |
|
32 | - ); |
|
30 | + private $query_params = array( |
|
31 | + 0 => array(), |
|
32 | + ); |
|
33 | 33 | |
34 | - private $template_args = array( |
|
35 | - 'contacts' => array(), |
|
36 | - 'event' => null, |
|
37 | - 'datetime' => null, |
|
38 | - 'ticket' => null, |
|
39 | - ); |
|
34 | + private $template_args = array( |
|
35 | + 'contacts' => array(), |
|
36 | + 'event' => null, |
|
37 | + 'datetime' => null, |
|
38 | + 'ticket' => null, |
|
39 | + ); |
|
40 | 40 | |
41 | - /** |
|
42 | - * the actual shortcode tag that gets registered with WordPress |
|
43 | - * |
|
44 | - * @return string |
|
45 | - */ |
|
46 | - public function getTag() |
|
47 | - { |
|
48 | - return 'ESPRESSO_EVENT_ATTENDEES'; |
|
49 | - } |
|
41 | + /** |
|
42 | + * the actual shortcode tag that gets registered with WordPress |
|
43 | + * |
|
44 | + * @return string |
|
45 | + */ |
|
46 | + public function getTag() |
|
47 | + { |
|
48 | + return 'ESPRESSO_EVENT_ATTENDEES'; |
|
49 | + } |
|
50 | 50 | |
51 | 51 | |
52 | - /** |
|
53 | - * the time in seconds to cache the results of the processShortcode() method |
|
54 | - * 0 means the processShortcode() results will NOT be cached at all |
|
55 | - * |
|
56 | - * @return int |
|
57 | - */ |
|
58 | - public function cacheExpiration() |
|
59 | - { |
|
60 | - return 0; |
|
61 | - } |
|
52 | + /** |
|
53 | + * the time in seconds to cache the results of the processShortcode() method |
|
54 | + * 0 means the processShortcode() results will NOT be cached at all |
|
55 | + * |
|
56 | + * @return int |
|
57 | + */ |
|
58 | + public function cacheExpiration() |
|
59 | + { |
|
60 | + return 0; |
|
61 | + } |
|
62 | 62 | |
63 | 63 | |
64 | - /** |
|
65 | - * a place for adding any initialization code that needs to run prior to wp_header(). |
|
66 | - * this may be required for shortcodes that utilize a corresponding module, |
|
67 | - * and need to enqueue assets for that module |
|
68 | - * |
|
69 | - * @return void |
|
70 | - */ |
|
71 | - public function initializeShortcode() |
|
72 | - { |
|
73 | - $this->shortcodeHasBeenInitialized(); |
|
74 | - } |
|
64 | + /** |
|
65 | + * a place for adding any initialization code that needs to run prior to wp_header(). |
|
66 | + * this may be required for shortcodes that utilize a corresponding module, |
|
67 | + * and need to enqueue assets for that module |
|
68 | + * |
|
69 | + * @return void |
|
70 | + */ |
|
71 | + public function initializeShortcode() |
|
72 | + { |
|
73 | + $this->shortcodeHasBeenInitialized(); |
|
74 | + } |
|
75 | 75 | |
76 | 76 | |
77 | - /** |
|
78 | - * process_shortcode - ESPRESSO_EVENT_ATTENDEES - Returns a list of attendees to an event. |
|
79 | - * [ESPRESSO_EVENT_ATTENDEES] |
|
80 | - * - defaults to attendees for earliest active event, or earliest upcoming event. |
|
81 | - * [ESPRESSO_EVENT_ATTENDEES event_id=123] |
|
82 | - * - attendees for specific event. |
|
83 | - * [ESPRESSO_EVENT_ATTENDEES datetime_id=245] |
|
84 | - * - attendees for a specific datetime. |
|
85 | - * [ESPRESSO_EVENT_ATTENDEES ticket_id=123] |
|
86 | - * - attendees for a specific ticket. |
|
87 | - * [ESPRESSO_EVENT_ATTENDEES status=all] |
|
88 | - * - specific registration status (use status id) or all for all attendees regardless of status. |
|
89 | - * Note default is to only return approved attendees |
|
90 | - * [ESPRESSO_EVENT_ATTENDEES show_gravatar=true] |
|
91 | - * - default is to not return gravatar. Otherwise if this is set then return gravatar for email address given. |
|
92 | - * [ESPRESSO_EVENT_ATTENDEES display_on_archives=true] |
|
93 | - * - default is to not display attendees list on archive pages. |
|
94 | - * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
95 | - * If more than one of those params is included, then preference is given to the following: |
|
96 | - * - event_id is used whenever its present and any others are ignored. |
|
97 | - * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
98 | - * - otherwise ticket_id is used if present. |
|
99 | - * |
|
100 | - * @param array $attributes |
|
101 | - * @return string |
|
102 | - * @throws EE_Error |
|
103 | - * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
104 | - * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
105 | - * @throws \InvalidArgumentException |
|
106 | - */ |
|
107 | - public function processShortcode($attributes = array()) |
|
108 | - { |
|
109 | - // grab attributes and merge with defaults |
|
110 | - $attributes = $this->getAttributes((array) $attributes); |
|
111 | - $archive = is_archive(); |
|
112 | - $display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN); |
|
113 | - // don't display on archives unless 'display_on_archives' is true |
|
114 | - if ($archive && ! $display_on_archives) { |
|
115 | - return ''; |
|
116 | - } |
|
77 | + /** |
|
78 | + * process_shortcode - ESPRESSO_EVENT_ATTENDEES - Returns a list of attendees to an event. |
|
79 | + * [ESPRESSO_EVENT_ATTENDEES] |
|
80 | + * - defaults to attendees for earliest active event, or earliest upcoming event. |
|
81 | + * [ESPRESSO_EVENT_ATTENDEES event_id=123] |
|
82 | + * - attendees for specific event. |
|
83 | + * [ESPRESSO_EVENT_ATTENDEES datetime_id=245] |
|
84 | + * - attendees for a specific datetime. |
|
85 | + * [ESPRESSO_EVENT_ATTENDEES ticket_id=123] |
|
86 | + * - attendees for a specific ticket. |
|
87 | + * [ESPRESSO_EVENT_ATTENDEES status=all] |
|
88 | + * - specific registration status (use status id) or all for all attendees regardless of status. |
|
89 | + * Note default is to only return approved attendees |
|
90 | + * [ESPRESSO_EVENT_ATTENDEES show_gravatar=true] |
|
91 | + * - default is to not return gravatar. Otherwise if this is set then return gravatar for email address given. |
|
92 | + * [ESPRESSO_EVENT_ATTENDEES display_on_archives=true] |
|
93 | + * - default is to not display attendees list on archive pages. |
|
94 | + * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
95 | + * If more than one of those params is included, then preference is given to the following: |
|
96 | + * - event_id is used whenever its present and any others are ignored. |
|
97 | + * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
98 | + * - otherwise ticket_id is used if present. |
|
99 | + * |
|
100 | + * @param array $attributes |
|
101 | + * @return string |
|
102 | + * @throws EE_Error |
|
103 | + * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
104 | + * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
105 | + * @throws \InvalidArgumentException |
|
106 | + */ |
|
107 | + public function processShortcode($attributes = array()) |
|
108 | + { |
|
109 | + // grab attributes and merge with defaults |
|
110 | + $attributes = $this->getAttributes((array) $attributes); |
|
111 | + $archive = is_archive(); |
|
112 | + $display_on_archives = filter_var($attributes['display_on_archives'], FILTER_VALIDATE_BOOLEAN); |
|
113 | + // don't display on archives unless 'display_on_archives' is true |
|
114 | + if ($archive && ! $display_on_archives) { |
|
115 | + return ''; |
|
116 | + } |
|
117 | 117 | |
118 | - try { |
|
119 | - $this->setBaseTemplateArguments($attributes); |
|
120 | - $this->validateEntities($attributes); |
|
121 | - $this->setBaseQueryParams(); |
|
122 | - } catch (EntityNotFoundException $e) { |
|
123 | - if (WP_DEBUG) { |
|
124 | - return '<div class="important-notice ee-error">' |
|
125 | - . $e->getMessage() |
|
126 | - . '</div>'; |
|
127 | - } |
|
128 | - return ''; |
|
129 | - } |
|
130 | - $this->setAdditionalQueryParams($attributes); |
|
131 | - // get contacts! |
|
132 | - $this->template_args['contacts'] = EEM_Attendee::instance()->get_all($this->query_params); |
|
133 | - // all set let's load up the template and return. |
|
134 | - return EEH_Template::locate_template( |
|
135 | - 'loop-espresso_event_attendees.php', |
|
136 | - $this->template_args |
|
137 | - ); |
|
138 | - } |
|
118 | + try { |
|
119 | + $this->setBaseTemplateArguments($attributes); |
|
120 | + $this->validateEntities($attributes); |
|
121 | + $this->setBaseQueryParams(); |
|
122 | + } catch (EntityNotFoundException $e) { |
|
123 | + if (WP_DEBUG) { |
|
124 | + return '<div class="important-notice ee-error">' |
|
125 | + . $e->getMessage() |
|
126 | + . '</div>'; |
|
127 | + } |
|
128 | + return ''; |
|
129 | + } |
|
130 | + $this->setAdditionalQueryParams($attributes); |
|
131 | + // get contacts! |
|
132 | + $this->template_args['contacts'] = EEM_Attendee::instance()->get_all($this->query_params); |
|
133 | + // all set let's load up the template and return. |
|
134 | + return EEH_Template::locate_template( |
|
135 | + 'loop-espresso_event_attendees.php', |
|
136 | + $this->template_args |
|
137 | + ); |
|
138 | + } |
|
139 | 139 | |
140 | 140 | |
141 | - /** |
|
142 | - * merge incoming attributes with filtered defaults |
|
143 | - * |
|
144 | - * @param array $attributes |
|
145 | - * @return array |
|
146 | - */ |
|
147 | - private function getAttributes(array $attributes) |
|
148 | - { |
|
149 | - return (array) apply_filters( |
|
150 | - 'EES_Espresso_Event_Attendees__process_shortcode__default_shortcode_atts', |
|
151 | - $attributes + array( |
|
152 | - 'event_id' => null, |
|
153 | - 'datetime_id' => null, |
|
154 | - 'ticket_id' => null, |
|
155 | - 'status' => EEM_Registration::status_id_approved, |
|
156 | - 'show_gravatar' => false, |
|
157 | - 'display_on_archives' => false, |
|
158 | - ) |
|
159 | - ); |
|
160 | - } |
|
141 | + /** |
|
142 | + * merge incoming attributes with filtered defaults |
|
143 | + * |
|
144 | + * @param array $attributes |
|
145 | + * @return array |
|
146 | + */ |
|
147 | + private function getAttributes(array $attributes) |
|
148 | + { |
|
149 | + return (array) apply_filters( |
|
150 | + 'EES_Espresso_Event_Attendees__process_shortcode__default_shortcode_atts', |
|
151 | + $attributes + array( |
|
152 | + 'event_id' => null, |
|
153 | + 'datetime_id' => null, |
|
154 | + 'ticket_id' => null, |
|
155 | + 'status' => EEM_Registration::status_id_approved, |
|
156 | + 'show_gravatar' => false, |
|
157 | + 'display_on_archives' => false, |
|
158 | + ) |
|
159 | + ); |
|
160 | + } |
|
161 | 161 | |
162 | 162 | |
163 | - /** |
|
164 | - * Set all the base template arguments from the incoming attributes. |
|
165 | - * * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
166 | - * If more than one of those params is included, then preference is given to the following: |
|
167 | - * - event_id is used whenever its present and any others are ignored. |
|
168 | - * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
169 | - * - otherwise ticket_id is used if present. |
|
170 | - * |
|
171 | - * @param array $attributes |
|
172 | - * @throws EE_Error |
|
173 | - * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
174 | - * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
175 | - * @throws \InvalidArgumentException |
|
176 | - */ |
|
177 | - private function setBaseTemplateArguments(array $attributes) |
|
178 | - { |
|
179 | - $this->template_args['show_gravatar'] = $attributes['show_gravatar']; |
|
180 | - $this->template_args['event'] = $this->getEvent($attributes); |
|
181 | - $this->template_args['datetime'] = empty($attributes['event_id']) |
|
182 | - ? $this->getDatetime($attributes) |
|
183 | - : null; |
|
184 | - $this->template_args['ticket'] = empty($attributes['datetime_id']) && empty($attributes['event_id']) |
|
185 | - ? $this->getTicket($attributes) |
|
186 | - : null; |
|
187 | - } |
|
163 | + /** |
|
164 | + * Set all the base template arguments from the incoming attributes. |
|
165 | + * * Note: because of the relationship between event_id, ticket_id, and datetime_id: |
|
166 | + * If more than one of those params is included, then preference is given to the following: |
|
167 | + * - event_id is used whenever its present and any others are ignored. |
|
168 | + * - if no event_id then datetime is used whenever its present and any others are ignored. |
|
169 | + * - otherwise ticket_id is used if present. |
|
170 | + * |
|
171 | + * @param array $attributes |
|
172 | + * @throws EE_Error |
|
173 | + * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
174 | + * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
175 | + * @throws \InvalidArgumentException |
|
176 | + */ |
|
177 | + private function setBaseTemplateArguments(array $attributes) |
|
178 | + { |
|
179 | + $this->template_args['show_gravatar'] = $attributes['show_gravatar']; |
|
180 | + $this->template_args['event'] = $this->getEvent($attributes); |
|
181 | + $this->template_args['datetime'] = empty($attributes['event_id']) |
|
182 | + ? $this->getDatetime($attributes) |
|
183 | + : null; |
|
184 | + $this->template_args['ticket'] = empty($attributes['datetime_id']) && empty($attributes['event_id']) |
|
185 | + ? $this->getTicket($attributes) |
|
186 | + : null; |
|
187 | + } |
|
188 | 188 | |
189 | 189 | |
190 | - /** |
|
191 | - * Validates the presence of entities for the given attribute values. |
|
192 | - * |
|
193 | - * @param array $attributes |
|
194 | - * @throws EntityNotFoundException |
|
195 | - */ |
|
196 | - private function validateEntities(array $attributes) |
|
197 | - { |
|
198 | - if (! $this->template_args['event'] instanceof EE_Event |
|
199 | - || ( |
|
200 | - empty($attributes['event_id']) |
|
201 | - && $attributes['datetime_id'] |
|
202 | - && ! $this->template_args['datetime'] instanceof EE_Datetime |
|
203 | - ) |
|
204 | - || ( |
|
205 | - empty($attributes['event_id']) |
|
206 | - && empty($attributes['datetime_id']) |
|
207 | - && $attributes['ticket_id'] |
|
208 | - && ! $this->template_args['ticket'] instanceof EE_Ticket |
|
209 | - ) |
|
210 | - ) { |
|
211 | - throw new EntityNotFoundException( |
|
212 | - '', |
|
213 | - '', |
|
214 | - esc_html__( |
|
215 | - 'The [ESPRESSO_EVENT_ATTENDEES] shortcode has been used incorrectly. Please double check the arguments you used for any typos. In the case of ID type arguments, its possible the given ID does not correspond to existing data in the database.', |
|
216 | - 'event_espresso' |
|
217 | - ) |
|
218 | - ); |
|
219 | - } |
|
220 | - } |
|
190 | + /** |
|
191 | + * Validates the presence of entities for the given attribute values. |
|
192 | + * |
|
193 | + * @param array $attributes |
|
194 | + * @throws EntityNotFoundException |
|
195 | + */ |
|
196 | + private function validateEntities(array $attributes) |
|
197 | + { |
|
198 | + if (! $this->template_args['event'] instanceof EE_Event |
|
199 | + || ( |
|
200 | + empty($attributes['event_id']) |
|
201 | + && $attributes['datetime_id'] |
|
202 | + && ! $this->template_args['datetime'] instanceof EE_Datetime |
|
203 | + ) |
|
204 | + || ( |
|
205 | + empty($attributes['event_id']) |
|
206 | + && empty($attributes['datetime_id']) |
|
207 | + && $attributes['ticket_id'] |
|
208 | + && ! $this->template_args['ticket'] instanceof EE_Ticket |
|
209 | + ) |
|
210 | + ) { |
|
211 | + throw new EntityNotFoundException( |
|
212 | + '', |
|
213 | + '', |
|
214 | + esc_html__( |
|
215 | + 'The [ESPRESSO_EVENT_ATTENDEES] shortcode has been used incorrectly. Please double check the arguments you used for any typos. In the case of ID type arguments, its possible the given ID does not correspond to existing data in the database.', |
|
216 | + 'event_espresso' |
|
217 | + ) |
|
218 | + ); |
|
219 | + } |
|
220 | + } |
|
221 | 221 | |
222 | 222 | |
223 | - /** |
|
224 | - * Sets the query params for the base query elements. |
|
225 | - */ |
|
226 | - private function setBaseQueryParams() |
|
227 | - { |
|
228 | - switch (true) { |
|
229 | - case $this->template_args['datetime'] instanceof EE_Datetime: |
|
230 | - $this->query_params = array( |
|
231 | - 0 => array( |
|
232 | - 'Registration.Ticket.Datetime.DTT_ID' => $this->template_args['datetime']->ID(), |
|
233 | - ), |
|
234 | - 'default_where_conditions' => 'this_model_only', |
|
235 | - ); |
|
236 | - break; |
|
237 | - case $this->template_args['ticket'] instanceof EE_Ticket: |
|
238 | - $this->query_params[0] = array( |
|
239 | - 'Registration.TKT_ID' => $this->template_args['ticket']->ID(), |
|
240 | - ); |
|
241 | - break; |
|
242 | - case $this->template_args['event'] instanceof EE_Event: |
|
243 | - $this->query_params[0] = array( |
|
244 | - 'Registration.EVT_ID' => $this->template_args['event']->ID(), |
|
245 | - ); |
|
246 | - break; |
|
247 | - } |
|
248 | - } |
|
223 | + /** |
|
224 | + * Sets the query params for the base query elements. |
|
225 | + */ |
|
226 | + private function setBaseQueryParams() |
|
227 | + { |
|
228 | + switch (true) { |
|
229 | + case $this->template_args['datetime'] instanceof EE_Datetime: |
|
230 | + $this->query_params = array( |
|
231 | + 0 => array( |
|
232 | + 'Registration.Ticket.Datetime.DTT_ID' => $this->template_args['datetime']->ID(), |
|
233 | + ), |
|
234 | + 'default_where_conditions' => 'this_model_only', |
|
235 | + ); |
|
236 | + break; |
|
237 | + case $this->template_args['ticket'] instanceof EE_Ticket: |
|
238 | + $this->query_params[0] = array( |
|
239 | + 'Registration.TKT_ID' => $this->template_args['ticket']->ID(), |
|
240 | + ); |
|
241 | + break; |
|
242 | + case $this->template_args['event'] instanceof EE_Event: |
|
243 | + $this->query_params[0] = array( |
|
244 | + 'Registration.EVT_ID' => $this->template_args['event']->ID(), |
|
245 | + ); |
|
246 | + break; |
|
247 | + } |
|
248 | + } |
|
249 | 249 | |
250 | 250 | |
251 | - /** |
|
252 | - * @param array $attributes |
|
253 | - * @return EE_Event|null |
|
254 | - * @throws EE_Error |
|
255 | - * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
256 | - * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
257 | - * @throws \InvalidArgumentException |
|
258 | - */ |
|
259 | - private function getEvent(array $attributes) |
|
260 | - { |
|
261 | - switch (true) { |
|
262 | - case ! empty($attributes['event_id']): |
|
263 | - $event = EEM_Event::instance()->get_one_by_ID($attributes['event_id']); |
|
264 | - break; |
|
265 | - case ! empty($attributes['datetime_id']): |
|
266 | - $event = EEM_Event::instance()->get_one(array( |
|
267 | - array( |
|
268 | - 'Datetime.DTT_ID' => $attributes['datetime_id'], |
|
269 | - ), |
|
270 | - )); |
|
271 | - break; |
|
272 | - case ! empty($attributes['ticket_id']): |
|
273 | - $event = EEM_Event::instance()->get_one(array( |
|
274 | - array( |
|
275 | - 'Datetime.Ticket.TKT_ID' => $attributes['ticket_id'], |
|
276 | - ), |
|
277 | - )); |
|
278 | - break; |
|
279 | - case is_espresso_event(): |
|
280 | - $event = EEH_Event_View::get_event(); |
|
281 | - break; |
|
282 | - default: |
|
283 | - // one last shot... |
|
284 | - // try getting the earliest active event |
|
285 | - $events = EEM_Event::instance()->get_active_events(array( |
|
286 | - 'limit' => 1, |
|
287 | - 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
288 | - )); |
|
289 | - // if none then get the next upcoming |
|
290 | - $events = empty($events) |
|
291 | - ? EEM_Event::instance()->get_upcoming_events(array( |
|
292 | - 'limit' => 1, |
|
293 | - 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
294 | - )) |
|
295 | - : $events; |
|
296 | - $event = reset($events); |
|
297 | - } |
|
251 | + /** |
|
252 | + * @param array $attributes |
|
253 | + * @return EE_Event|null |
|
254 | + * @throws EE_Error |
|
255 | + * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
256 | + * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
257 | + * @throws \InvalidArgumentException |
|
258 | + */ |
|
259 | + private function getEvent(array $attributes) |
|
260 | + { |
|
261 | + switch (true) { |
|
262 | + case ! empty($attributes['event_id']): |
|
263 | + $event = EEM_Event::instance()->get_one_by_ID($attributes['event_id']); |
|
264 | + break; |
|
265 | + case ! empty($attributes['datetime_id']): |
|
266 | + $event = EEM_Event::instance()->get_one(array( |
|
267 | + array( |
|
268 | + 'Datetime.DTT_ID' => $attributes['datetime_id'], |
|
269 | + ), |
|
270 | + )); |
|
271 | + break; |
|
272 | + case ! empty($attributes['ticket_id']): |
|
273 | + $event = EEM_Event::instance()->get_one(array( |
|
274 | + array( |
|
275 | + 'Datetime.Ticket.TKT_ID' => $attributes['ticket_id'], |
|
276 | + ), |
|
277 | + )); |
|
278 | + break; |
|
279 | + case is_espresso_event(): |
|
280 | + $event = EEH_Event_View::get_event(); |
|
281 | + break; |
|
282 | + default: |
|
283 | + // one last shot... |
|
284 | + // try getting the earliest active event |
|
285 | + $events = EEM_Event::instance()->get_active_events(array( |
|
286 | + 'limit' => 1, |
|
287 | + 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
288 | + )); |
|
289 | + // if none then get the next upcoming |
|
290 | + $events = empty($events) |
|
291 | + ? EEM_Event::instance()->get_upcoming_events(array( |
|
292 | + 'limit' => 1, |
|
293 | + 'order_by' => array('Datetime.DTT_EVT_start' => 'ASC'), |
|
294 | + )) |
|
295 | + : $events; |
|
296 | + $event = reset($events); |
|
297 | + } |
|
298 | 298 | |
299 | - return $event instanceof EE_Event ? $event : null; |
|
300 | - } |
|
299 | + return $event instanceof EE_Event ? $event : null; |
|
300 | + } |
|
301 | 301 | |
302 | 302 | |
303 | - /** |
|
304 | - * @param array $attributes |
|
305 | - * @return EE_Datetime|null |
|
306 | - * @throws EE_Error |
|
307 | - * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
308 | - * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
309 | - * @throws \InvalidArgumentException |
|
310 | - */ |
|
311 | - private function getDatetime(array $attributes) |
|
312 | - { |
|
313 | - if (! empty($attributes['datetime_id'])) { |
|
314 | - $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']); |
|
315 | - if ($datetime instanceof EE_Datetime) { |
|
316 | - return $datetime; |
|
317 | - } |
|
318 | - } |
|
319 | - return null; |
|
320 | - } |
|
303 | + /** |
|
304 | + * @param array $attributes |
|
305 | + * @return EE_Datetime|null |
|
306 | + * @throws EE_Error |
|
307 | + * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
308 | + * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
309 | + * @throws \InvalidArgumentException |
|
310 | + */ |
|
311 | + private function getDatetime(array $attributes) |
|
312 | + { |
|
313 | + if (! empty($attributes['datetime_id'])) { |
|
314 | + $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']); |
|
315 | + if ($datetime instanceof EE_Datetime) { |
|
316 | + return $datetime; |
|
317 | + } |
|
318 | + } |
|
319 | + return null; |
|
320 | + } |
|
321 | 321 | |
322 | 322 | |
323 | - /** |
|
324 | - * @param array $attributes |
|
325 | - * @return \EE_Base_Class|EE_Ticket|null |
|
326 | - * @throws EE_Error |
|
327 | - * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
328 | - * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
329 | - * @throws \InvalidArgumentException |
|
330 | - */ |
|
331 | - private function getTicket(array $attributes) |
|
332 | - { |
|
333 | - if (! empty($attributes['ticket_id'])) { |
|
334 | - $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']); |
|
335 | - if ($ticket instanceof EE_Ticket) { |
|
336 | - return $ticket; |
|
337 | - } |
|
338 | - } |
|
339 | - return null; |
|
340 | - } |
|
323 | + /** |
|
324 | + * @param array $attributes |
|
325 | + * @return \EE_Base_Class|EE_Ticket|null |
|
326 | + * @throws EE_Error |
|
327 | + * @throws \EventEspresso\core\exceptions\InvalidDataTypeException |
|
328 | + * @throws \EventEspresso\core\exceptions\InvalidInterfaceException |
|
329 | + * @throws \InvalidArgumentException |
|
330 | + */ |
|
331 | + private function getTicket(array $attributes) |
|
332 | + { |
|
333 | + if (! empty($attributes['ticket_id'])) { |
|
334 | + $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']); |
|
335 | + if ($ticket instanceof EE_Ticket) { |
|
336 | + return $ticket; |
|
337 | + } |
|
338 | + } |
|
339 | + return null; |
|
340 | + } |
|
341 | 341 | |
342 | 342 | |
343 | - /** |
|
344 | - * @param array $attributes |
|
345 | - * @throws EE_Error |
|
346 | - */ |
|
347 | - private function setAdditionalQueryParams(array $attributes) |
|
348 | - { |
|
349 | - $reg_status_array = EEM_Registration::reg_status_array(); |
|
350 | - if ($attributes['status'] !== 'all' && isset($reg_status_array[ $attributes['status'] ])) { |
|
351 | - $this->query_params[0]['Registration.STS_ID'] = $attributes['status']; |
|
352 | - } |
|
353 | - $this->query_params['group_by'] = array('ATT_ID'); |
|
354 | - $this->query_params['order_by'] = (array) apply_filters( |
|
355 | - 'FHEE__EES_Espresso_Event_Attendees__process_shortcode__order_by', |
|
356 | - array('ATT_lname' => 'ASC', 'ATT_fname' => 'ASC') |
|
357 | - ); |
|
358 | - } |
|
343 | + /** |
|
344 | + * @param array $attributes |
|
345 | + * @throws EE_Error |
|
346 | + */ |
|
347 | + private function setAdditionalQueryParams(array $attributes) |
|
348 | + { |
|
349 | + $reg_status_array = EEM_Registration::reg_status_array(); |
|
350 | + if ($attributes['status'] !== 'all' && isset($reg_status_array[ $attributes['status'] ])) { |
|
351 | + $this->query_params[0]['Registration.STS_ID'] = $attributes['status']; |
|
352 | + } |
|
353 | + $this->query_params['group_by'] = array('ATT_ID'); |
|
354 | + $this->query_params['order_by'] = (array) apply_filters( |
|
355 | + 'FHEE__EES_Espresso_Event_Attendees__process_shortcode__order_by', |
|
356 | + array('ATT_lname' => 'ASC', 'ATT_fname' => 'ASC') |
|
357 | + ); |
|
358 | + } |
|
359 | 359 | } |
@@ -195,7 +195,7 @@ discard block |
||
195 | 195 | */ |
196 | 196 | private function validateEntities(array $attributes) |
197 | 197 | { |
198 | - if (! $this->template_args['event'] instanceof EE_Event |
|
198 | + if ( ! $this->template_args['event'] instanceof EE_Event |
|
199 | 199 | || ( |
200 | 200 | empty($attributes['event_id']) |
201 | 201 | && $attributes['datetime_id'] |
@@ -310,7 +310,7 @@ discard block |
||
310 | 310 | */ |
311 | 311 | private function getDatetime(array $attributes) |
312 | 312 | { |
313 | - if (! empty($attributes['datetime_id'])) { |
|
313 | + if ( ! empty($attributes['datetime_id'])) { |
|
314 | 314 | $datetime = EEM_Datetime::instance()->get_one_by_ID($attributes['datetime_id']); |
315 | 315 | if ($datetime instanceof EE_Datetime) { |
316 | 316 | return $datetime; |
@@ -330,7 +330,7 @@ discard block |
||
330 | 330 | */ |
331 | 331 | private function getTicket(array $attributes) |
332 | 332 | { |
333 | - if (! empty($attributes['ticket_id'])) { |
|
333 | + if ( ! empty($attributes['ticket_id'])) { |
|
334 | 334 | $ticket = EEM_Ticket::instance()->get_one_by_ID($attributes['ticket_id']); |
335 | 335 | if ($ticket instanceof EE_Ticket) { |
336 | 336 | return $ticket; |
@@ -347,7 +347,7 @@ discard block |
||
347 | 347 | private function setAdditionalQueryParams(array $attributes) |
348 | 348 | { |
349 | 349 | $reg_status_array = EEM_Registration::reg_status_array(); |
350 | - if ($attributes['status'] !== 'all' && isset($reg_status_array[ $attributes['status'] ])) { |
|
350 | + if ($attributes['status'] !== 'all' && isset($reg_status_array[$attributes['status']])) { |
|
351 | 351 | $this->query_params[0]['Registration.STS_ID'] = $attributes['status']; |
352 | 352 | } |
353 | 353 | $this->query_params['group_by'] = array('ATT_ID'); |
@@ -20,78 +20,78 @@ |
||
20 | 20 | { |
21 | 21 | |
22 | 22 | |
23 | - /** |
|
24 | - * the actual shortcode tag that gets registered with WordPress |
|
25 | - * |
|
26 | - * @return string |
|
27 | - */ |
|
28 | - public function getTag() |
|
29 | - { |
|
30 | - return 'ESPRESSO_CANCELLED'; |
|
31 | - } |
|
23 | + /** |
|
24 | + * the actual shortcode tag that gets registered with WordPress |
|
25 | + * |
|
26 | + * @return string |
|
27 | + */ |
|
28 | + public function getTag() |
|
29 | + { |
|
30 | + return 'ESPRESSO_CANCELLED'; |
|
31 | + } |
|
32 | 32 | |
33 | 33 | |
34 | - /** |
|
35 | - * the time in seconds to cache the results of the processShortcode() method |
|
36 | - * 0 means the processShortcode() results will NOT be cached at all |
|
37 | - * |
|
38 | - * @return int |
|
39 | - */ |
|
40 | - public function cacheExpiration() |
|
41 | - { |
|
42 | - return 0; |
|
43 | - } |
|
34 | + /** |
|
35 | + * the time in seconds to cache the results of the processShortcode() method |
|
36 | + * 0 means the processShortcode() results will NOT be cached at all |
|
37 | + * |
|
38 | + * @return int |
|
39 | + */ |
|
40 | + public function cacheExpiration() |
|
41 | + { |
|
42 | + return 0; |
|
43 | + } |
|
44 | 44 | |
45 | 45 | |
46 | - /** |
|
47 | - * a place for adding any initialization code that needs to run prior to wp_header(). |
|
48 | - * this may be required for shortcodes that utilize a corresponding module, |
|
49 | - * and need to enqueue assets for that module |
|
50 | - * |
|
51 | - * @return void |
|
52 | - */ |
|
53 | - public function initializeShortcode() |
|
54 | - { |
|
55 | - $this->shortcodeHasBeenInitialized(); |
|
56 | - } |
|
46 | + /** |
|
47 | + * a place for adding any initialization code that needs to run prior to wp_header(). |
|
48 | + * this may be required for shortcodes that utilize a corresponding module, |
|
49 | + * and need to enqueue assets for that module |
|
50 | + * |
|
51 | + * @return void |
|
52 | + */ |
|
53 | + public function initializeShortcode() |
|
54 | + { |
|
55 | + $this->shortcodeHasBeenInitialized(); |
|
56 | + } |
|
57 | 57 | |
58 | 58 | |
59 | - /** |
|
60 | - * callback that runs when the shortcode is encountered in post content. |
|
61 | - * IMPORTANT !!! |
|
62 | - * remember that shortcode content should be RETURNED and NOT echoed out |
|
63 | - * |
|
64 | - * @param array $attributes |
|
65 | - * @return string |
|
66 | - * @throws \EE_Error |
|
67 | - */ |
|
68 | - public function processShortcode($attributes = array()) |
|
69 | - { |
|
70 | - $transaction = EE_Registry::instance()->SSN->get_session_data('transaction'); |
|
71 | - if ($transaction instanceof EE_Transaction) { |
|
72 | - do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__transaction', $transaction); |
|
73 | - $registrations = $transaction->registrations(); |
|
74 | - foreach ($registrations as $registration) { |
|
75 | - if ($registration instanceof EE_Registration) { |
|
76 | - do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__registration', $registration); |
|
77 | - } |
|
78 | - } |
|
79 | - } |
|
80 | - do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__clear_session'); |
|
81 | - // remove all unwanted records from the db |
|
82 | - if (EE_Registry::instance()->CART instanceof EE_Cart) { |
|
83 | - EE_Registry::instance()->CART->delete_cart(); |
|
84 | - } |
|
85 | - // phpcs:disable WordPress.WP.I18n.UnorderedPlaceholdersText |
|
86 | - EE_Registry::instance()->SSN->clear_session(__CLASS__, __FUNCTION__); |
|
87 | - return sprintf( |
|
88 | - __( |
|
89 | - '%sAll unsaved registration information entered during this session has been deleted.%s', |
|
90 | - 'event_espresso' |
|
91 | - ), |
|
92 | - '<p class="ee-registrations-cancelled-pg ee-attention">', |
|
93 | - '</p>' |
|
94 | - ); |
|
95 | - // phpcs:enable |
|
96 | - } |
|
59 | + /** |
|
60 | + * callback that runs when the shortcode is encountered in post content. |
|
61 | + * IMPORTANT !!! |
|
62 | + * remember that shortcode content should be RETURNED and NOT echoed out |
|
63 | + * |
|
64 | + * @param array $attributes |
|
65 | + * @return string |
|
66 | + * @throws \EE_Error |
|
67 | + */ |
|
68 | + public function processShortcode($attributes = array()) |
|
69 | + { |
|
70 | + $transaction = EE_Registry::instance()->SSN->get_session_data('transaction'); |
|
71 | + if ($transaction instanceof EE_Transaction) { |
|
72 | + do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__transaction', $transaction); |
|
73 | + $registrations = $transaction->registrations(); |
|
74 | + foreach ($registrations as $registration) { |
|
75 | + if ($registration instanceof EE_Registration) { |
|
76 | + do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__registration', $registration); |
|
77 | + } |
|
78 | + } |
|
79 | + } |
|
80 | + do_action('AHEE__EES_Espresso_Cancelled__process_shortcode__clear_session'); |
|
81 | + // remove all unwanted records from the db |
|
82 | + if (EE_Registry::instance()->CART instanceof EE_Cart) { |
|
83 | + EE_Registry::instance()->CART->delete_cart(); |
|
84 | + } |
|
85 | + // phpcs:disable WordPress.WP.I18n.UnorderedPlaceholdersText |
|
86 | + EE_Registry::instance()->SSN->clear_session(__CLASS__, __FUNCTION__); |
|
87 | + return sprintf( |
|
88 | + __( |
|
89 | + '%sAll unsaved registration information entered during this session has been deleted.%s', |
|
90 | + 'event_espresso' |
|
91 | + ), |
|
92 | + '<p class="ee-registrations-cancelled-pg ee-attention">', |
|
93 | + '</p>' |
|
94 | + ); |
|
95 | + // phpcs:enable |
|
96 | + } |
|
97 | 97 | } |
@@ -16,198 +16,198 @@ |
||
16 | 16 | class EventListQuery extends WP_Query |
17 | 17 | { |
18 | 18 | |
19 | - /** |
|
20 | - * @var string $title |
|
21 | - */ |
|
22 | - private $title; |
|
23 | - |
|
24 | - /** |
|
25 | - * @var integer $limit |
|
26 | - */ |
|
27 | - private $limit = 10; |
|
28 | - |
|
29 | - /** |
|
30 | - * @var string $css_class |
|
31 | - */ |
|
32 | - private $css_class; |
|
33 | - |
|
34 | - /** |
|
35 | - * @var boolean $show_expired |
|
36 | - */ |
|
37 | - private $show_expired = false; |
|
38 | - |
|
39 | - /** |
|
40 | - * @var string $month |
|
41 | - */ |
|
42 | - private $month; |
|
43 | - |
|
44 | - /** |
|
45 | - * @var string $category_slug |
|
46 | - */ |
|
47 | - private $category_slug; |
|
48 | - |
|
49 | - /** |
|
50 | - * @var string $order_by |
|
51 | - */ |
|
52 | - private $order_by; |
|
53 | - |
|
54 | - /** |
|
55 | - * @var string $sort |
|
56 | - */ |
|
57 | - private $sort; |
|
58 | - |
|
59 | - /** |
|
60 | - * @var boolean $show_title |
|
61 | - */ |
|
62 | - private $show_title = true; |
|
63 | - |
|
64 | - |
|
65 | - /** |
|
66 | - * EE_Event_List_Query Constructor * |
|
67 | - * |
|
68 | - * @param array $args |
|
69 | - */ |
|
70 | - public function __construct($args = array()) |
|
71 | - { |
|
72 | - $args = $this->parseArgs((array) $args); |
|
73 | - $this->setupEventQueryHelper(); |
|
74 | - $this->setupFilters(); |
|
75 | - $args = $this->getQueryArgs($args); |
|
76 | - // run the query |
|
77 | - parent::__construct($args); |
|
78 | - } |
|
79 | - |
|
80 | - |
|
81 | - /** |
|
82 | - * @param array $args |
|
83 | - * @return array |
|
84 | - */ |
|
85 | - private function parseArgs(array $args) |
|
86 | - { |
|
87 | - // incoming args could be a mix of WP query args + EE shortcode args |
|
88 | - foreach ($args as $property => $value) { |
|
89 | - // if the arg is a property of this class, then it's an EE shortcode arg |
|
90 | - if (property_exists($this, $property) && ! property_exists('WP_Query', $property)) { |
|
91 | - // set the property value |
|
92 | - $this->{$property} = $value; |
|
93 | - // then remove it from the array of args that will later be passed to WP_Query() |
|
94 | - unset($args[ $property ]); |
|
95 | - } |
|
96 | - } |
|
97 | - return $args; |
|
98 | - } |
|
99 | - |
|
100 | - |
|
101 | - private function setupEventQueryHelper() |
|
102 | - { |
|
103 | - // add query filters |
|
104 | - EEH_Event_Query::add_query_filters(); |
|
105 | - // set params that will get used by the filters |
|
106 | - EEH_Event_Query::set_query_params( |
|
107 | - $this->month, |
|
108 | - $this->category_slug, |
|
109 | - $this->show_expired, |
|
110 | - $this->order_by, |
|
111 | - $this->sort |
|
112 | - ); |
|
113 | - } |
|
114 | - |
|
115 | - |
|
116 | - private function setupFilters() |
|
117 | - { |
|
118 | - // first off, let's remove any filters from previous queries |
|
119 | - remove_filter( |
|
120 | - 'FHEE__archive_espresso_events_template__show_header', |
|
121 | - array($this, 'show_event_list_title') |
|
122 | - ); |
|
123 | - remove_filter( |
|
124 | - 'FHEE__archive_espresso_events_template__upcoming_events_h1', |
|
125 | - array($this, 'event_list_title') |
|
126 | - ); |
|
127 | - remove_all_filters('FHEE__content_espresso_events__event_class'); |
|
128 | - // Event List Title ? |
|
129 | - add_filter( |
|
130 | - 'FHEE__archive_espresso_events_template__show_header', |
|
131 | - array($this, 'show_event_list_title') |
|
132 | - ); |
|
133 | - add_filter( |
|
134 | - 'FHEE__archive_espresso_events_template__upcoming_events_h1', |
|
135 | - array($this, 'event_list_title'), |
|
136 | - 10, |
|
137 | - 1 |
|
138 | - ); |
|
139 | - // add the css class |
|
140 | - add_filter( |
|
141 | - 'FHEE__content_espresso_events__event_class', |
|
142 | - array($this, 'event_list_css'), |
|
143 | - 10, |
|
144 | - 1 |
|
145 | - ); |
|
146 | - } |
|
147 | - |
|
148 | - |
|
149 | - private function getQueryArgs(array $args) |
|
150 | - { |
|
151 | - // the current "page" we are viewing |
|
152 | - $paged = max(1, get_query_var('paged')); |
|
153 | - // Force these args |
|
154 | - return array_merge( |
|
155 | - $args, |
|
156 | - array( |
|
157 | - 'post_type' => 'espresso_events', |
|
158 | - 'posts_per_page' => $this->limit, |
|
159 | - 'update_post_term_cache' => false, |
|
160 | - 'update_post_meta_cache' => false, |
|
161 | - 'paged' => $paged, |
|
162 | - 'offset' => ($paged - 1) * $this->limit, |
|
163 | - ) |
|
164 | - ); |
|
165 | - } |
|
166 | - |
|
167 | - // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps |
|
168 | - |
|
169 | - /** |
|
170 | - * show_event_list_title |
|
171 | - * |
|
172 | - * @return boolean |
|
173 | - */ |
|
174 | - public function show_event_list_title() |
|
175 | - { |
|
176 | - return filter_var( |
|
177 | - $this->show_title, |
|
178 | - FILTER_VALIDATE_BOOLEAN |
|
179 | - ); |
|
180 | - } |
|
181 | - |
|
182 | - |
|
183 | - /** |
|
184 | - * callback for FHEE__archive_espresso_events_template__upcoming_events_h1 filter |
|
185 | - * |
|
186 | - * @param string $event_list_title |
|
187 | - * @return string |
|
188 | - */ |
|
189 | - public function event_list_title($event_list_title = '') |
|
190 | - { |
|
191 | - if (! empty($this->title)) { |
|
192 | - return $this->title; |
|
193 | - } |
|
194 | - return $event_list_title; |
|
195 | - } |
|
196 | - |
|
197 | - |
|
198 | - /** |
|
199 | - * callback for FHEE__content_espresso_events__event_class filter |
|
200 | - * |
|
201 | - * @param string $event_list_css |
|
202 | - * @return string |
|
203 | - */ |
|
204 | - public function event_list_css($event_list_css = '') |
|
205 | - { |
|
206 | - $event_list_css .= ! empty($event_list_css) ? ' ' : ''; |
|
207 | - $event_list_css .= ! empty($this->css_class) ? $this->css_class : ''; |
|
208 | - $event_list_css .= ! empty($event_list_css) ? ' ' : ''; |
|
209 | - $event_list_css .= ! empty($this->category_slug) ? $this->category_slug : ''; |
|
210 | - return $event_list_css; |
|
211 | - } |
|
212 | - // phpcs:enable |
|
19 | + /** |
|
20 | + * @var string $title |
|
21 | + */ |
|
22 | + private $title; |
|
23 | + |
|
24 | + /** |
|
25 | + * @var integer $limit |
|
26 | + */ |
|
27 | + private $limit = 10; |
|
28 | + |
|
29 | + /** |
|
30 | + * @var string $css_class |
|
31 | + */ |
|
32 | + private $css_class; |
|
33 | + |
|
34 | + /** |
|
35 | + * @var boolean $show_expired |
|
36 | + */ |
|
37 | + private $show_expired = false; |
|
38 | + |
|
39 | + /** |
|
40 | + * @var string $month |
|
41 | + */ |
|
42 | + private $month; |
|
43 | + |
|
44 | + /** |
|
45 | + * @var string $category_slug |
|
46 | + */ |
|
47 | + private $category_slug; |
|
48 | + |
|
49 | + /** |
|
50 | + * @var string $order_by |
|
51 | + */ |
|
52 | + private $order_by; |
|
53 | + |
|
54 | + /** |
|
55 | + * @var string $sort |
|
56 | + */ |
|
57 | + private $sort; |
|
58 | + |
|
59 | + /** |
|
60 | + * @var boolean $show_title |
|
61 | + */ |
|
62 | + private $show_title = true; |
|
63 | + |
|
64 | + |
|
65 | + /** |
|
66 | + * EE_Event_List_Query Constructor * |
|
67 | + * |
|
68 | + * @param array $args |
|
69 | + */ |
|
70 | + public function __construct($args = array()) |
|
71 | + { |
|
72 | + $args = $this->parseArgs((array) $args); |
|
73 | + $this->setupEventQueryHelper(); |
|
74 | + $this->setupFilters(); |
|
75 | + $args = $this->getQueryArgs($args); |
|
76 | + // run the query |
|
77 | + parent::__construct($args); |
|
78 | + } |
|
79 | + |
|
80 | + |
|
81 | + /** |
|
82 | + * @param array $args |
|
83 | + * @return array |
|
84 | + */ |
|
85 | + private function parseArgs(array $args) |
|
86 | + { |
|
87 | + // incoming args could be a mix of WP query args + EE shortcode args |
|
88 | + foreach ($args as $property => $value) { |
|
89 | + // if the arg is a property of this class, then it's an EE shortcode arg |
|
90 | + if (property_exists($this, $property) && ! property_exists('WP_Query', $property)) { |
|
91 | + // set the property value |
|
92 | + $this->{$property} = $value; |
|
93 | + // then remove it from the array of args that will later be passed to WP_Query() |
|
94 | + unset($args[ $property ]); |
|
95 | + } |
|
96 | + } |
|
97 | + return $args; |
|
98 | + } |
|
99 | + |
|
100 | + |
|
101 | + private function setupEventQueryHelper() |
|
102 | + { |
|
103 | + // add query filters |
|
104 | + EEH_Event_Query::add_query_filters(); |
|
105 | + // set params that will get used by the filters |
|
106 | + EEH_Event_Query::set_query_params( |
|
107 | + $this->month, |
|
108 | + $this->category_slug, |
|
109 | + $this->show_expired, |
|
110 | + $this->order_by, |
|
111 | + $this->sort |
|
112 | + ); |
|
113 | + } |
|
114 | + |
|
115 | + |
|
116 | + private function setupFilters() |
|
117 | + { |
|
118 | + // first off, let's remove any filters from previous queries |
|
119 | + remove_filter( |
|
120 | + 'FHEE__archive_espresso_events_template__show_header', |
|
121 | + array($this, 'show_event_list_title') |
|
122 | + ); |
|
123 | + remove_filter( |
|
124 | + 'FHEE__archive_espresso_events_template__upcoming_events_h1', |
|
125 | + array($this, 'event_list_title') |
|
126 | + ); |
|
127 | + remove_all_filters('FHEE__content_espresso_events__event_class'); |
|
128 | + // Event List Title ? |
|
129 | + add_filter( |
|
130 | + 'FHEE__archive_espresso_events_template__show_header', |
|
131 | + array($this, 'show_event_list_title') |
|
132 | + ); |
|
133 | + add_filter( |
|
134 | + 'FHEE__archive_espresso_events_template__upcoming_events_h1', |
|
135 | + array($this, 'event_list_title'), |
|
136 | + 10, |
|
137 | + 1 |
|
138 | + ); |
|
139 | + // add the css class |
|
140 | + add_filter( |
|
141 | + 'FHEE__content_espresso_events__event_class', |
|
142 | + array($this, 'event_list_css'), |
|
143 | + 10, |
|
144 | + 1 |
|
145 | + ); |
|
146 | + } |
|
147 | + |
|
148 | + |
|
149 | + private function getQueryArgs(array $args) |
|
150 | + { |
|
151 | + // the current "page" we are viewing |
|
152 | + $paged = max(1, get_query_var('paged')); |
|
153 | + // Force these args |
|
154 | + return array_merge( |
|
155 | + $args, |
|
156 | + array( |
|
157 | + 'post_type' => 'espresso_events', |
|
158 | + 'posts_per_page' => $this->limit, |
|
159 | + 'update_post_term_cache' => false, |
|
160 | + 'update_post_meta_cache' => false, |
|
161 | + 'paged' => $paged, |
|
162 | + 'offset' => ($paged - 1) * $this->limit, |
|
163 | + ) |
|
164 | + ); |
|
165 | + } |
|
166 | + |
|
167 | + // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps |
|
168 | + |
|
169 | + /** |
|
170 | + * show_event_list_title |
|
171 | + * |
|
172 | + * @return boolean |
|
173 | + */ |
|
174 | + public function show_event_list_title() |
|
175 | + { |
|
176 | + return filter_var( |
|
177 | + $this->show_title, |
|
178 | + FILTER_VALIDATE_BOOLEAN |
|
179 | + ); |
|
180 | + } |
|
181 | + |
|
182 | + |
|
183 | + /** |
|
184 | + * callback for FHEE__archive_espresso_events_template__upcoming_events_h1 filter |
|
185 | + * |
|
186 | + * @param string $event_list_title |
|
187 | + * @return string |
|
188 | + */ |
|
189 | + public function event_list_title($event_list_title = '') |
|
190 | + { |
|
191 | + if (! empty($this->title)) { |
|
192 | + return $this->title; |
|
193 | + } |
|
194 | + return $event_list_title; |
|
195 | + } |
|
196 | + |
|
197 | + |
|
198 | + /** |
|
199 | + * callback for FHEE__content_espresso_events__event_class filter |
|
200 | + * |
|
201 | + * @param string $event_list_css |
|
202 | + * @return string |
|
203 | + */ |
|
204 | + public function event_list_css($event_list_css = '') |
|
205 | + { |
|
206 | + $event_list_css .= ! empty($event_list_css) ? ' ' : ''; |
|
207 | + $event_list_css .= ! empty($this->css_class) ? $this->css_class : ''; |
|
208 | + $event_list_css .= ! empty($event_list_css) ? ' ' : ''; |
|
209 | + $event_list_css .= ! empty($this->category_slug) ? $this->category_slug : ''; |
|
210 | + return $event_list_css; |
|
211 | + } |
|
212 | + // phpcs:enable |
|
213 | 213 | } |
@@ -91,7 +91,7 @@ discard block |
||
91 | 91 | // set the property value |
92 | 92 | $this->{$property} = $value; |
93 | 93 | // then remove it from the array of args that will later be passed to WP_Query() |
94 | - unset($args[ $property ]); |
|
94 | + unset($args[$property]); |
|
95 | 95 | } |
96 | 96 | } |
97 | 97 | return $args; |
@@ -188,7 +188,7 @@ discard block |
||
188 | 188 | */ |
189 | 189 | public function event_list_title($event_list_title = '') |
190 | 190 | { |
191 | - if (! empty($this->title)) { |
|
191 | + if ( ! empty($this->title)) { |
|
192 | 192 | return $this->title; |
193 | 193 | } |
194 | 194 | return $event_list_title; |
@@ -16,180 +16,180 @@ |
||
16 | 16 | class RegisterCustomTaxonomyTerms |
17 | 17 | { |
18 | 18 | |
19 | - /** |
|
20 | - * @var array[] $custom_taxonomy_terms |
|
21 | - */ |
|
22 | - public $custom_taxonomy_terms = array(); |
|
23 | - |
|
24 | - |
|
25 | - /** |
|
26 | - * RegisterCustomTaxonomyTerms constructor. |
|
27 | - */ |
|
28 | - public function __construct() |
|
29 | - { |
|
30 | - // hook into save_post so that we can make sure that the default terms get saved on publish of registered cpts |
|
31 | - // IF they don't have a term for that taxonomy set. |
|
32 | - add_action('save_post', array($this, 'saveDefaultTerm'), 100, 2); |
|
33 | - do_action( |
|
34 | - 'AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end', |
|
35 | - $this |
|
36 | - ); |
|
37 | - } |
|
38 | - |
|
39 | - |
|
40 | - public function registerCustomTaxonomyTerms() |
|
41 | - { |
|
42 | - // setup default terms in any of our taxonomies (but only if we're in admin). |
|
43 | - // Why not added via register_activation_hook? |
|
44 | - // Because it's possible that in future iterations of EE we may add new defaults for specialized taxonomies |
|
45 | - // (think event_types) and register_activation_hook only reliably runs when a user manually activates the plugin. |
|
46 | - // Keep in mind that this will READ these terms if they are deleted by the user. Hence MUST use terms. |
|
47 | - // if ( is_admin() ) { |
|
48 | - // $this->set_must_use_event_types(); |
|
49 | - // } |
|
50 | - // set default terms |
|
51 | - $this->registerCustomTaxonomyTerm( |
|
52 | - 'espresso_event_type', |
|
53 | - 'single-event', |
|
54 | - array('espresso_events') |
|
55 | - ); |
|
56 | - } |
|
57 | - |
|
58 | - |
|
59 | - /** |
|
60 | - * Allows us to set what the default will be for terms when a cpt is PUBLISHED. |
|
61 | - * |
|
62 | - * @param string $taxonomy The taxonomy we're using for the default term |
|
63 | - * @param string $term_slug The slug of the term that will be the default. |
|
64 | - * @param array $cpt_slugs An array of custom post types we want the default assigned to |
|
65 | - */ |
|
66 | - public function registerCustomTaxonomyTerm($taxonomy, $term_slug, array $cpt_slugs = array()) |
|
67 | - { |
|
68 | - $this->custom_taxonomy_terms[][ $term_slug ] = new CustomTaxonomyTerm( |
|
69 | - $taxonomy, |
|
70 | - $term_slug, |
|
71 | - $cpt_slugs |
|
72 | - ); |
|
73 | - } |
|
74 | - |
|
75 | - |
|
76 | - /** |
|
77 | - * hooked into the wp 'save_post' action hook for setting our default terms found in the $_default_terms property |
|
78 | - * |
|
79 | - * @param int $post_id ID of CPT being saved |
|
80 | - * @param WP_Post $post Post object |
|
81 | - * @return void |
|
82 | - */ |
|
83 | - public function saveDefaultTerm($post_id, WP_Post $post) |
|
84 | - { |
|
85 | - if (empty($this->custom_taxonomy_terms)) { |
|
86 | - return; |
|
87 | - } |
|
88 | - // no default terms set so lets just exit. |
|
89 | - foreach ($this->custom_taxonomy_terms as $custom_taxonomy_terms) { |
|
90 | - foreach ($custom_taxonomy_terms as $custom_taxonomy_term) { |
|
91 | - if ($post->post_status === 'publish' |
|
92 | - && $custom_taxonomy_term instanceof CustomTaxonomyTerm |
|
93 | - && in_array($post->post_type, $custom_taxonomy_term->customPostTypeSlugs(), true) |
|
94 | - ) { |
|
95 | - // note some error proofing going on here to save unnecessary db queries |
|
96 | - $taxonomies = get_object_taxonomies($post->post_type); |
|
97 | - foreach ($taxonomies as $taxonomy) { |
|
98 | - $terms = wp_get_post_terms($post_id, $taxonomy); |
|
99 | - if (empty($terms) && $taxonomy === $custom_taxonomy_term->taxonomySlug()) { |
|
100 | - wp_set_object_terms( |
|
101 | - $post_id, |
|
102 | - array($custom_taxonomy_term->termSlug()), |
|
103 | - $taxonomy |
|
104 | - ); |
|
105 | - } |
|
106 | - } |
|
107 | - } |
|
108 | - } |
|
109 | - } |
|
110 | - } |
|
111 | - |
|
112 | - |
|
113 | - /** |
|
114 | - * @return void |
|
115 | - */ |
|
116 | - public function setMustUseEventTypes() |
|
117 | - { |
|
118 | - $term_details = array( |
|
119 | - // Attendee's register for the first date-time only |
|
120 | - 'single-event' => array( |
|
121 | - 'term' => esc_html__('Single Event', 'event_espresso'), |
|
122 | - 'desc' => esc_html__( |
|
123 | - 'A single event that spans one or more consecutive days.', |
|
124 | - 'event_espresso' |
|
125 | - ), |
|
126 | - ), |
|
127 | - // example: a party or two-day long workshop |
|
128 | - // Attendee's can register for any of the date-times |
|
129 | - 'multi-event' => array( |
|
130 | - 'term' => esc_html__('Multi Event', 'event_espresso'), |
|
131 | - 'desc' => esc_html__( |
|
132 | - 'Multiple, separate, but related events that occur on consecutive days.', |
|
133 | - 'event_espresso' |
|
134 | - ), |
|
135 | - ), |
|
136 | - // example: a three day music festival or week long conference |
|
137 | - // Attendee's register for the first date-time only |
|
138 | - 'event-series' => array( |
|
139 | - 'term' => esc_html__('Event Series', 'event_espresso'), |
|
140 | - 'desc' => esc_html__( |
|
141 | - ' Multiple events that occur over multiple non-consecutive days.', |
|
142 | - 'event_espresso' |
|
143 | - ), |
|
144 | - ), |
|
145 | - // example: an 8 week introduction to basket weaving course |
|
146 | - // Attendee's can register for any of the date-times. |
|
147 | - 'recurring-event' => array( |
|
148 | - 'term' => esc_html__('Recurring Event', 'event_espresso'), |
|
149 | - 'desc' => esc_html__( |
|
150 | - 'Multiple events that occur over multiple non-consecutive days.', |
|
151 | - 'event_espresso' |
|
152 | - ), |
|
153 | - ), |
|
154 | - // example: a yoga class |
|
155 | - 'ongoing' => array( |
|
156 | - 'term' => esc_html__('Ongoing Event', 'event_espresso'), |
|
157 | - 'desc' => esc_html__( |
|
158 | - 'An "event" that people can purchase tickets to gain access for anytime for this event regardless of date times on the event', |
|
159 | - 'event_espresso' |
|
160 | - ), |
|
161 | - ) |
|
162 | - // example: access to a museum |
|
163 | - // 'walk-in' => array( esc_html__('Walk In', 'event_espresso'), esc_html__('Single datetime and single entry recurring events. Attendees register for one or multiple datetimes individually.', 'event_espresso') ), |
|
164 | - // 'reservation' => array( esc_html__('Reservation', 'event_espresso'), esc_html__('Reservations are created by specifying available datetimes and quantities. Attendees choose from the available datetimes and specify the quantity available (if the maximum is greater than 1)') ), //@TODO to avoid confusion we'll implement this in a later iteration > EE4.1 |
|
165 | - // 'multiple-session' => array( esc_html__('Multiple Session', 'event_espresso'), esc_html__('Multiple event, multiple datetime, hierarchically organized, custom entry events. Attendees may be required to register for a parent event before being allowed to register for child events. Attendees can register for any combination of child events as long as the datetimes do not conflict. Parent and child events may have additional fees or registration questions.') ), //@TODO to avoid confusion we'll implement this in a later iteration > EE4.1 |
|
166 | - // 'appointment' => array( esc_html__('Appointments', 'event_espresso'), esc_html__('Time slotted events where datetimes are generally in hours or minutes. For example, attendees can register for a single 15 minute or 1 hour time slot and this type of availability frequently reoccurs.', 'event_espresso') ) |
|
167 | - ); |
|
168 | - $this->setMustUseTerms('espresso_event_type', $term_details); |
|
169 | - } |
|
170 | - |
|
171 | - |
|
172 | - /** |
|
173 | - * wrapper method for handling the setting up of initial terms in the db (if they don't already exist). |
|
174 | - * Note this should ONLY be used for terms that always must be present. Be aware that if an initial term is |
|
175 | - * deleted then it WILL be recreated. |
|
176 | - * |
|
177 | - * @param string $taxonomy The name of the taxonomy |
|
178 | - * @param array $term_details An array of term details indexed by slug and containing Name of term, and |
|
179 | - * description as the elements in the array |
|
180 | - * @return void |
|
181 | - */ |
|
182 | - public function setMustUseTerms($taxonomy, $term_details) |
|
183 | - { |
|
184 | - $term_details = (array) $term_details; |
|
185 | - foreach ($term_details as $slug => $details) { |
|
186 | - if (isset($details['term'], $details['desc']) && ! term_exists($slug, $taxonomy)) { |
|
187 | - $insert_arr = array( |
|
188 | - 'slug' => $slug, |
|
189 | - 'description' => $details['desc'], |
|
190 | - ); |
|
191 | - wp_insert_term($details['term'], $taxonomy, $insert_arr); |
|
192 | - } |
|
193 | - } |
|
194 | - } |
|
19 | + /** |
|
20 | + * @var array[] $custom_taxonomy_terms |
|
21 | + */ |
|
22 | + public $custom_taxonomy_terms = array(); |
|
23 | + |
|
24 | + |
|
25 | + /** |
|
26 | + * RegisterCustomTaxonomyTerms constructor. |
|
27 | + */ |
|
28 | + public function __construct() |
|
29 | + { |
|
30 | + // hook into save_post so that we can make sure that the default terms get saved on publish of registered cpts |
|
31 | + // IF they don't have a term for that taxonomy set. |
|
32 | + add_action('save_post', array($this, 'saveDefaultTerm'), 100, 2); |
|
33 | + do_action( |
|
34 | + 'AHEE__EventEspresso_core_domain_services_custom_post_types_RegisterCustomTaxonomyTerms__construct_end', |
|
35 | + $this |
|
36 | + ); |
|
37 | + } |
|
38 | + |
|
39 | + |
|
40 | + public function registerCustomTaxonomyTerms() |
|
41 | + { |
|
42 | + // setup default terms in any of our taxonomies (but only if we're in admin). |
|
43 | + // Why not added via register_activation_hook? |
|
44 | + // Because it's possible that in future iterations of EE we may add new defaults for specialized taxonomies |
|
45 | + // (think event_types) and register_activation_hook only reliably runs when a user manually activates the plugin. |
|
46 | + // Keep in mind that this will READ these terms if they are deleted by the user. Hence MUST use terms. |
|
47 | + // if ( is_admin() ) { |
|
48 | + // $this->set_must_use_event_types(); |
|
49 | + // } |
|
50 | + // set default terms |
|
51 | + $this->registerCustomTaxonomyTerm( |
|
52 | + 'espresso_event_type', |
|
53 | + 'single-event', |
|
54 | + array('espresso_events') |
|
55 | + ); |
|
56 | + } |
|
57 | + |
|
58 | + |
|
59 | + /** |
|
60 | + * Allows us to set what the default will be for terms when a cpt is PUBLISHED. |
|
61 | + * |
|
62 | + * @param string $taxonomy The taxonomy we're using for the default term |
|
63 | + * @param string $term_slug The slug of the term that will be the default. |
|
64 | + * @param array $cpt_slugs An array of custom post types we want the default assigned to |
|
65 | + */ |
|
66 | + public function registerCustomTaxonomyTerm($taxonomy, $term_slug, array $cpt_slugs = array()) |
|
67 | + { |
|
68 | + $this->custom_taxonomy_terms[][ $term_slug ] = new CustomTaxonomyTerm( |
|
69 | + $taxonomy, |
|
70 | + $term_slug, |
|
71 | + $cpt_slugs |
|
72 | + ); |
|
73 | + } |
|
74 | + |
|
75 | + |
|
76 | + /** |
|
77 | + * hooked into the wp 'save_post' action hook for setting our default terms found in the $_default_terms property |
|
78 | + * |
|
79 | + * @param int $post_id ID of CPT being saved |
|
80 | + * @param WP_Post $post Post object |
|
81 | + * @return void |
|
82 | + */ |
|
83 | + public function saveDefaultTerm($post_id, WP_Post $post) |
|
84 | + { |
|
85 | + if (empty($this->custom_taxonomy_terms)) { |
|
86 | + return; |
|
87 | + } |
|
88 | + // no default terms set so lets just exit. |
|
89 | + foreach ($this->custom_taxonomy_terms as $custom_taxonomy_terms) { |
|
90 | + foreach ($custom_taxonomy_terms as $custom_taxonomy_term) { |
|
91 | + if ($post->post_status === 'publish' |
|
92 | + && $custom_taxonomy_term instanceof CustomTaxonomyTerm |
|
93 | + && in_array($post->post_type, $custom_taxonomy_term->customPostTypeSlugs(), true) |
|
94 | + ) { |
|
95 | + // note some error proofing going on here to save unnecessary db queries |
|
96 | + $taxonomies = get_object_taxonomies($post->post_type); |
|
97 | + foreach ($taxonomies as $taxonomy) { |
|
98 | + $terms = wp_get_post_terms($post_id, $taxonomy); |
|
99 | + if (empty($terms) && $taxonomy === $custom_taxonomy_term->taxonomySlug()) { |
|
100 | + wp_set_object_terms( |
|
101 | + $post_id, |
|
102 | + array($custom_taxonomy_term->termSlug()), |
|
103 | + $taxonomy |
|
104 | + ); |
|
105 | + } |
|
106 | + } |
|
107 | + } |
|
108 | + } |
|
109 | + } |
|
110 | + } |
|
111 | + |
|
112 | + |
|
113 | + /** |
|
114 | + * @return void |
|
115 | + */ |
|
116 | + public function setMustUseEventTypes() |
|
117 | + { |
|
118 | + $term_details = array( |
|
119 | + // Attendee's register for the first date-time only |
|
120 | + 'single-event' => array( |
|
121 | + 'term' => esc_html__('Single Event', 'event_espresso'), |
|
122 | + 'desc' => esc_html__( |
|
123 | + 'A single event that spans one or more consecutive days.', |
|
124 | + 'event_espresso' |
|
125 | + ), |
|
126 | + ), |
|
127 | + // example: a party or two-day long workshop |
|
128 | + // Attendee's can register for any of the date-times |
|
129 | + 'multi-event' => array( |
|
130 | + 'term' => esc_html__('Multi Event', 'event_espresso'), |
|
131 | + 'desc' => esc_html__( |
|
132 | + 'Multiple, separate, but related events that occur on consecutive days.', |
|
133 | + 'event_espresso' |
|
134 | + ), |
|
135 | + ), |
|
136 | + // example: a three day music festival or week long conference |
|
137 | + // Attendee's register for the first date-time only |
|
138 | + 'event-series' => array( |
|
139 | + 'term' => esc_html__('Event Series', 'event_espresso'), |
|
140 | + 'desc' => esc_html__( |
|
141 | + ' Multiple events that occur over multiple non-consecutive days.', |
|
142 | + 'event_espresso' |
|
143 | + ), |
|
144 | + ), |
|
145 | + // example: an 8 week introduction to basket weaving course |
|
146 | + // Attendee's can register for any of the date-times. |
|
147 | + 'recurring-event' => array( |
|
148 | + 'term' => esc_html__('Recurring Event', 'event_espresso'), |
|
149 | + 'desc' => esc_html__( |
|
150 | + 'Multiple events that occur over multiple non-consecutive days.', |
|
151 | + 'event_espresso' |
|
152 | + ), |
|
153 | + ), |
|
154 | + // example: a yoga class |
|
155 | + 'ongoing' => array( |
|
156 | + 'term' => esc_html__('Ongoing Event', 'event_espresso'), |
|
157 | + 'desc' => esc_html__( |
|
158 | + 'An "event" that people can purchase tickets to gain access for anytime for this event regardless of date times on the event', |
|
159 | + 'event_espresso' |
|
160 | + ), |
|
161 | + ) |
|
162 | + // example: access to a museum |
|
163 | + // 'walk-in' => array( esc_html__('Walk In', 'event_espresso'), esc_html__('Single datetime and single entry recurring events. Attendees register for one or multiple datetimes individually.', 'event_espresso') ), |
|
164 | + // 'reservation' => array( esc_html__('Reservation', 'event_espresso'), esc_html__('Reservations are created by specifying available datetimes and quantities. Attendees choose from the available datetimes and specify the quantity available (if the maximum is greater than 1)') ), //@TODO to avoid confusion we'll implement this in a later iteration > EE4.1 |
|
165 | + // 'multiple-session' => array( esc_html__('Multiple Session', 'event_espresso'), esc_html__('Multiple event, multiple datetime, hierarchically organized, custom entry events. Attendees may be required to register for a parent event before being allowed to register for child events. Attendees can register for any combination of child events as long as the datetimes do not conflict. Parent and child events may have additional fees or registration questions.') ), //@TODO to avoid confusion we'll implement this in a later iteration > EE4.1 |
|
166 | + // 'appointment' => array( esc_html__('Appointments', 'event_espresso'), esc_html__('Time slotted events where datetimes are generally in hours or minutes. For example, attendees can register for a single 15 minute or 1 hour time slot and this type of availability frequently reoccurs.', 'event_espresso') ) |
|
167 | + ); |
|
168 | + $this->setMustUseTerms('espresso_event_type', $term_details); |
|
169 | + } |
|
170 | + |
|
171 | + |
|
172 | + /** |
|
173 | + * wrapper method for handling the setting up of initial terms in the db (if they don't already exist). |
|
174 | + * Note this should ONLY be used for terms that always must be present. Be aware that if an initial term is |
|
175 | + * deleted then it WILL be recreated. |
|
176 | + * |
|
177 | + * @param string $taxonomy The name of the taxonomy |
|
178 | + * @param array $term_details An array of term details indexed by slug and containing Name of term, and |
|
179 | + * description as the elements in the array |
|
180 | + * @return void |
|
181 | + */ |
|
182 | + public function setMustUseTerms($taxonomy, $term_details) |
|
183 | + { |
|
184 | + $term_details = (array) $term_details; |
|
185 | + foreach ($term_details as $slug => $details) { |
|
186 | + if (isset($details['term'], $details['desc']) && ! term_exists($slug, $taxonomy)) { |
|
187 | + $insert_arr = array( |
|
188 | + 'slug' => $slug, |
|
189 | + 'description' => $details['desc'], |
|
190 | + ); |
|
191 | + wp_insert_term($details['term'], $taxonomy, $insert_arr); |
|
192 | + } |
|
193 | + } |
|
194 | + } |
|
195 | 195 | } |
@@ -18,240 +18,240 @@ |
||
18 | 18 | class RegisterCustomPostTypes |
19 | 19 | { |
20 | 20 | |
21 | - /** |
|
22 | - * @var CustomPostTypeDefinitions $custom_post_types |
|
23 | - */ |
|
24 | - public $custom_post_types; |
|
21 | + /** |
|
22 | + * @var CustomPostTypeDefinitions $custom_post_types |
|
23 | + */ |
|
24 | + public $custom_post_types; |
|
25 | 25 | |
26 | - /** |
|
27 | - * @var WP_Post_Type[] $wp_post_types |
|
28 | - */ |
|
29 | - public $wp_post_types = array(); |
|
26 | + /** |
|
27 | + * @var WP_Post_Type[] $wp_post_types |
|
28 | + */ |
|
29 | + public $wp_post_types = array(); |
|
30 | 30 | |
31 | 31 | |
32 | - /** |
|
33 | - * RegisterCustomPostTypes constructor. |
|
34 | - * |
|
35 | - * @param CustomPostTypeDefinitions $custom_post_types |
|
36 | - */ |
|
37 | - public function __construct(CustomPostTypeDefinitions $custom_post_types) |
|
38 | - { |
|
39 | - $this->custom_post_types = $custom_post_types; |
|
40 | - } |
|
32 | + /** |
|
33 | + * RegisterCustomPostTypes constructor. |
|
34 | + * |
|
35 | + * @param CustomPostTypeDefinitions $custom_post_types |
|
36 | + */ |
|
37 | + public function __construct(CustomPostTypeDefinitions $custom_post_types) |
|
38 | + { |
|
39 | + $this->custom_post_types = $custom_post_types; |
|
40 | + } |
|
41 | 41 | |
42 | 42 | |
43 | - /** |
|
44 | - * @return WP_Post_Type[] |
|
45 | - */ |
|
46 | - public function getRegisteredCustomPostTypes() |
|
47 | - { |
|
48 | - return $this->wp_post_types; |
|
49 | - } |
|
43 | + /** |
|
44 | + * @return WP_Post_Type[] |
|
45 | + */ |
|
46 | + public function getRegisteredCustomPostTypes() |
|
47 | + { |
|
48 | + return $this->wp_post_types; |
|
49 | + } |
|
50 | 50 | |
51 | 51 | |
52 | - /** |
|
53 | - * @return void |
|
54 | - * @throws DomainException |
|
55 | - */ |
|
56 | - public function registerCustomPostTypes() |
|
57 | - { |
|
58 | - $custom_post_types = $this->custom_post_types->getDefinitions(); |
|
59 | - foreach ($custom_post_types as $custom_post_type => $CPT) { |
|
60 | - $this->wp_post_types[ $custom_post_type ] = $this->registerCustomPostType( |
|
61 | - $custom_post_type, |
|
62 | - $CPT['singular_name'], |
|
63 | - $CPT['plural_name'], |
|
64 | - $CPT['singular_slug'], |
|
65 | - $CPT['plural_slug'], |
|
66 | - $CPT['args'] |
|
67 | - ); |
|
68 | - } |
|
69 | - } |
|
52 | + /** |
|
53 | + * @return void |
|
54 | + * @throws DomainException |
|
55 | + */ |
|
56 | + public function registerCustomPostTypes() |
|
57 | + { |
|
58 | + $custom_post_types = $this->custom_post_types->getDefinitions(); |
|
59 | + foreach ($custom_post_types as $custom_post_type => $CPT) { |
|
60 | + $this->wp_post_types[ $custom_post_type ] = $this->registerCustomPostType( |
|
61 | + $custom_post_type, |
|
62 | + $CPT['singular_name'], |
|
63 | + $CPT['plural_name'], |
|
64 | + $CPT['singular_slug'], |
|
65 | + $CPT['plural_slug'], |
|
66 | + $CPT['args'] |
|
67 | + ); |
|
68 | + } |
|
69 | + } |
|
70 | 70 | |
71 | 71 | |
72 | - /** |
|
73 | - * Registers a new custom post type. Sets default settings given only the following params. |
|
74 | - * Returns the registered post type object, or an error object. |
|
75 | - * |
|
76 | - * @param string $post_type the actual post type name |
|
77 | - * IMPORTANT: |
|
78 | - * this must match what the slug is for admin pages related to this CPT |
|
79 | - * Also any models must use this slug as well |
|
80 | - * @param string $singular_name a pre-internationalized string for the singular name of the objects |
|
81 | - * @param string $plural_name a pre-internationalized string for the plural name of the objects |
|
82 | - * @param string $singular_slug |
|
83 | - * @param string $plural_slug |
|
84 | - * @param array $override_arguments exactly like $args as described in |
|
85 | - * http://codex.wordpress.org/Function_Reference/register_post_type |
|
86 | - * @return WP_Post_Type|WP_Error |
|
87 | - * @throws DomainException |
|
88 | - */ |
|
89 | - public function registerCustomPostType( |
|
90 | - $post_type, |
|
91 | - $singular_name, |
|
92 | - $plural_name, |
|
93 | - $singular_slug = '', |
|
94 | - $plural_slug = '', |
|
95 | - array $override_arguments = array() |
|
96 | - ) { |
|
97 | - $wp_post_type = register_post_type( |
|
98 | - $post_type, |
|
99 | - $this->prepareArguments( |
|
100 | - $post_type, |
|
101 | - $singular_name, |
|
102 | - $plural_name, |
|
103 | - $singular_slug, |
|
104 | - $plural_slug, |
|
105 | - $override_arguments |
|
106 | - ) |
|
107 | - ); |
|
108 | - if ($wp_post_type instanceof WP_Error) { |
|
109 | - throw new DomainException($wp_post_type->get_error_message()); |
|
110 | - } |
|
111 | - return $wp_post_type; |
|
112 | - } |
|
72 | + /** |
|
73 | + * Registers a new custom post type. Sets default settings given only the following params. |
|
74 | + * Returns the registered post type object, or an error object. |
|
75 | + * |
|
76 | + * @param string $post_type the actual post type name |
|
77 | + * IMPORTANT: |
|
78 | + * this must match what the slug is for admin pages related to this CPT |
|
79 | + * Also any models must use this slug as well |
|
80 | + * @param string $singular_name a pre-internationalized string for the singular name of the objects |
|
81 | + * @param string $plural_name a pre-internationalized string for the plural name of the objects |
|
82 | + * @param string $singular_slug |
|
83 | + * @param string $plural_slug |
|
84 | + * @param array $override_arguments exactly like $args as described in |
|
85 | + * http://codex.wordpress.org/Function_Reference/register_post_type |
|
86 | + * @return WP_Post_Type|WP_Error |
|
87 | + * @throws DomainException |
|
88 | + */ |
|
89 | + public function registerCustomPostType( |
|
90 | + $post_type, |
|
91 | + $singular_name, |
|
92 | + $plural_name, |
|
93 | + $singular_slug = '', |
|
94 | + $plural_slug = '', |
|
95 | + array $override_arguments = array() |
|
96 | + ) { |
|
97 | + $wp_post_type = register_post_type( |
|
98 | + $post_type, |
|
99 | + $this->prepareArguments( |
|
100 | + $post_type, |
|
101 | + $singular_name, |
|
102 | + $plural_name, |
|
103 | + $singular_slug, |
|
104 | + $plural_slug, |
|
105 | + $override_arguments |
|
106 | + ) |
|
107 | + ); |
|
108 | + if ($wp_post_type instanceof WP_Error) { |
|
109 | + throw new DomainException($wp_post_type->get_error_message()); |
|
110 | + } |
|
111 | + return $wp_post_type; |
|
112 | + } |
|
113 | 113 | |
114 | 114 | |
115 | - /** |
|
116 | - * @param string $post_type the actual post type name |
|
117 | - * @param string $singular_name a pre-internationalized string for the singular name of the objects |
|
118 | - * @param string $plural_name a pre-internationalized string for the plural name of the objects |
|
119 | - * @param string $singular_slug |
|
120 | - * @param string $plural_slug |
|
121 | - * @param array $override_arguments The default values set in this function will be overridden |
|
122 | - * by whatever you set in $override_arguments |
|
123 | - * @return array |
|
124 | - */ |
|
125 | - protected function prepareArguments( |
|
126 | - $post_type, |
|
127 | - $singular_name, |
|
128 | - $plural_name, |
|
129 | - $singular_slug, |
|
130 | - $plural_slug, |
|
131 | - array $override_arguments = array() |
|
132 | - ) { |
|
133 | - // verify plural slug and singular slug, if they aren't we'll use $singular_name and $plural_name |
|
134 | - $singular_slug = ! empty($singular_slug) ? $singular_slug : $singular_name; |
|
135 | - $plural_slug = ! empty($plural_slug) ? $plural_slug : $plural_name; |
|
136 | - $labels = $this->getLabels( |
|
137 | - $singular_name, |
|
138 | - $plural_name, |
|
139 | - $singular_slug, |
|
140 | - $plural_slug |
|
141 | - ); |
|
142 | - // note the page_templates arg in the supports index is something specific to EE. |
|
143 | - // WordPress doesn't actually have that in their register_post_type api. |
|
144 | - $arguments = $this->getDefaultArguments($labels, $post_type, $plural_slug); |
|
145 | - if ($override_arguments) { |
|
146 | - if (isset($override_arguments['labels'])) { |
|
147 | - $labels = array_merge($arguments['labels'], $override_arguments['labels']); |
|
148 | - } |
|
149 | - $arguments = array_merge($arguments, $override_arguments); |
|
150 | - $arguments['labels'] = $labels; |
|
151 | - } |
|
152 | - return $arguments; |
|
153 | - } |
|
115 | + /** |
|
116 | + * @param string $post_type the actual post type name |
|
117 | + * @param string $singular_name a pre-internationalized string for the singular name of the objects |
|
118 | + * @param string $plural_name a pre-internationalized string for the plural name of the objects |
|
119 | + * @param string $singular_slug |
|
120 | + * @param string $plural_slug |
|
121 | + * @param array $override_arguments The default values set in this function will be overridden |
|
122 | + * by whatever you set in $override_arguments |
|
123 | + * @return array |
|
124 | + */ |
|
125 | + protected function prepareArguments( |
|
126 | + $post_type, |
|
127 | + $singular_name, |
|
128 | + $plural_name, |
|
129 | + $singular_slug, |
|
130 | + $plural_slug, |
|
131 | + array $override_arguments = array() |
|
132 | + ) { |
|
133 | + // verify plural slug and singular slug, if they aren't we'll use $singular_name and $plural_name |
|
134 | + $singular_slug = ! empty($singular_slug) ? $singular_slug : $singular_name; |
|
135 | + $plural_slug = ! empty($plural_slug) ? $plural_slug : $plural_name; |
|
136 | + $labels = $this->getLabels( |
|
137 | + $singular_name, |
|
138 | + $plural_name, |
|
139 | + $singular_slug, |
|
140 | + $plural_slug |
|
141 | + ); |
|
142 | + // note the page_templates arg in the supports index is something specific to EE. |
|
143 | + // WordPress doesn't actually have that in their register_post_type api. |
|
144 | + $arguments = $this->getDefaultArguments($labels, $post_type, $plural_slug); |
|
145 | + if ($override_arguments) { |
|
146 | + if (isset($override_arguments['labels'])) { |
|
147 | + $labels = array_merge($arguments['labels'], $override_arguments['labels']); |
|
148 | + } |
|
149 | + $arguments = array_merge($arguments, $override_arguments); |
|
150 | + $arguments['labels'] = $labels; |
|
151 | + } |
|
152 | + return $arguments; |
|
153 | + } |
|
154 | 154 | |
155 | 155 | |
156 | - /** |
|
157 | - * @param string $singular_name |
|
158 | - * @param string $plural_name |
|
159 | - * @param string $singular_slug |
|
160 | - * @param string $plural_slug |
|
161 | - * @return array |
|
162 | - */ |
|
163 | - private function getLabels($singular_name, $plural_name, $singular_slug, $plural_slug) |
|
164 | - { |
|
165 | - return array( |
|
166 | - 'name' => $plural_name, |
|
167 | - 'singular_name' => $singular_name, |
|
168 | - 'singular_slug' => $singular_slug, |
|
169 | - 'plural_slug' => $plural_slug, |
|
170 | - 'add_new' => sprintf( |
|
171 | - esc_html_x('Add %s', 'Add Event', 'event_espresso'), |
|
172 | - $singular_name |
|
173 | - ), |
|
174 | - 'add_new_item' => sprintf( |
|
175 | - esc_html_x('Add New %s', 'Add New Event', 'event_espresso'), |
|
176 | - $singular_name |
|
177 | - ), |
|
178 | - 'edit_item' => sprintf( |
|
179 | - esc_html_x('Edit %s', 'Edit Event', 'event_espresso'), |
|
180 | - $singular_name |
|
181 | - ), |
|
182 | - 'new_item' => sprintf( |
|
183 | - esc_html_x('New %s', 'New Event', 'event_espresso'), |
|
184 | - $singular_name |
|
185 | - ), |
|
186 | - 'all_items' => sprintf( |
|
187 | - esc_html_x('All %s', 'All Events', 'event_espresso'), |
|
188 | - $plural_name |
|
189 | - ), |
|
190 | - 'view_item' => sprintf( |
|
191 | - esc_html_x('View %s', 'View Event', 'event_espresso'), |
|
192 | - $singular_name |
|
193 | - ), |
|
194 | - 'search_items' => sprintf( |
|
195 | - esc_html_x('Search %s', 'Search Events', 'event_espresso'), |
|
196 | - $plural_name |
|
197 | - ), |
|
198 | - 'not_found' => sprintf( |
|
199 | - esc_html_x('No %s found', 'No Events found', 'event_espresso'), |
|
200 | - $plural_name |
|
201 | - ), |
|
202 | - 'not_found_in_trash' => sprintf( |
|
203 | - esc_html_x('No %s found in Trash', 'No Events found in Trash', 'event_espresso'), |
|
204 | - $plural_name |
|
205 | - ), |
|
206 | - 'parent_item_colon' => '', |
|
207 | - 'menu_name' => $plural_name, |
|
208 | - ); |
|
209 | - } |
|
156 | + /** |
|
157 | + * @param string $singular_name |
|
158 | + * @param string $plural_name |
|
159 | + * @param string $singular_slug |
|
160 | + * @param string $plural_slug |
|
161 | + * @return array |
|
162 | + */ |
|
163 | + private function getLabels($singular_name, $plural_name, $singular_slug, $plural_slug) |
|
164 | + { |
|
165 | + return array( |
|
166 | + 'name' => $plural_name, |
|
167 | + 'singular_name' => $singular_name, |
|
168 | + 'singular_slug' => $singular_slug, |
|
169 | + 'plural_slug' => $plural_slug, |
|
170 | + 'add_new' => sprintf( |
|
171 | + esc_html_x('Add %s', 'Add Event', 'event_espresso'), |
|
172 | + $singular_name |
|
173 | + ), |
|
174 | + 'add_new_item' => sprintf( |
|
175 | + esc_html_x('Add New %s', 'Add New Event', 'event_espresso'), |
|
176 | + $singular_name |
|
177 | + ), |
|
178 | + 'edit_item' => sprintf( |
|
179 | + esc_html_x('Edit %s', 'Edit Event', 'event_espresso'), |
|
180 | + $singular_name |
|
181 | + ), |
|
182 | + 'new_item' => sprintf( |
|
183 | + esc_html_x('New %s', 'New Event', 'event_espresso'), |
|
184 | + $singular_name |
|
185 | + ), |
|
186 | + 'all_items' => sprintf( |
|
187 | + esc_html_x('All %s', 'All Events', 'event_espresso'), |
|
188 | + $plural_name |
|
189 | + ), |
|
190 | + 'view_item' => sprintf( |
|
191 | + esc_html_x('View %s', 'View Event', 'event_espresso'), |
|
192 | + $singular_name |
|
193 | + ), |
|
194 | + 'search_items' => sprintf( |
|
195 | + esc_html_x('Search %s', 'Search Events', 'event_espresso'), |
|
196 | + $plural_name |
|
197 | + ), |
|
198 | + 'not_found' => sprintf( |
|
199 | + esc_html_x('No %s found', 'No Events found', 'event_espresso'), |
|
200 | + $plural_name |
|
201 | + ), |
|
202 | + 'not_found_in_trash' => sprintf( |
|
203 | + esc_html_x('No %s found in Trash', 'No Events found in Trash', 'event_espresso'), |
|
204 | + $plural_name |
|
205 | + ), |
|
206 | + 'parent_item_colon' => '', |
|
207 | + 'menu_name' => $plural_name, |
|
208 | + ); |
|
209 | + } |
|
210 | 210 | |
211 | 211 | |
212 | - /** |
|
213 | - * @param array $labels |
|
214 | - * @param string $post_type |
|
215 | - * @param string $plural_slug |
|
216 | - * @return array |
|
217 | - */ |
|
218 | - private function getDefaultArguments(array $labels, $post_type, $plural_slug) |
|
219 | - { |
|
220 | - return array( |
|
221 | - 'labels' => $labels, |
|
222 | - 'public' => true, |
|
223 | - 'publicly_queryable' => true, |
|
224 | - 'show_ui' => false, |
|
225 | - 'show_ee_ui' => true, |
|
226 | - 'show_in_menu' => false, |
|
227 | - 'show_in_nav_menus' => false, |
|
228 | - 'query_var' => true, |
|
229 | - 'rewrite' => apply_filters( |
|
230 | - 'FHEE__EventEspresso_core_domain_entities_custom_post_types_RegisterCustomPostTypes__getDefaultArguments__rewrite', |
|
231 | - // legacy filter applied for now, |
|
232 | - // later on we'll run a has_filter($tag) check and throw a doing_it_wrong() notice |
|
233 | - apply_filters( |
|
234 | - 'FHEE__EE_Register_CPTs__register_CPT__rewrite', |
|
235 | - array('slug' => $plural_slug), |
|
236 | - $post_type |
|
237 | - ), |
|
238 | - $post_type, |
|
239 | - $plural_slug |
|
240 | - ), |
|
241 | - 'capability_type' => 'post', |
|
242 | - 'map_meta_cap' => true, |
|
243 | - 'has_archive' => true, |
|
244 | - 'hierarchical' => false, |
|
245 | - 'menu_position' => null, |
|
246 | - 'supports' => array( |
|
247 | - 'title', |
|
248 | - 'editor', |
|
249 | - 'author', |
|
250 | - 'thumbnail', |
|
251 | - 'excerpt', |
|
252 | - 'custom-fields', |
|
253 | - 'comments', |
|
254 | - ), |
|
255 | - ); |
|
256 | - } |
|
212 | + /** |
|
213 | + * @param array $labels |
|
214 | + * @param string $post_type |
|
215 | + * @param string $plural_slug |
|
216 | + * @return array |
|
217 | + */ |
|
218 | + private function getDefaultArguments(array $labels, $post_type, $plural_slug) |
|
219 | + { |
|
220 | + return array( |
|
221 | + 'labels' => $labels, |
|
222 | + 'public' => true, |
|
223 | + 'publicly_queryable' => true, |
|
224 | + 'show_ui' => false, |
|
225 | + 'show_ee_ui' => true, |
|
226 | + 'show_in_menu' => false, |
|
227 | + 'show_in_nav_menus' => false, |
|
228 | + 'query_var' => true, |
|
229 | + 'rewrite' => apply_filters( |
|
230 | + 'FHEE__EventEspresso_core_domain_entities_custom_post_types_RegisterCustomPostTypes__getDefaultArguments__rewrite', |
|
231 | + // legacy filter applied for now, |
|
232 | + // later on we'll run a has_filter($tag) check and throw a doing_it_wrong() notice |
|
233 | + apply_filters( |
|
234 | + 'FHEE__EE_Register_CPTs__register_CPT__rewrite', |
|
235 | + array('slug' => $plural_slug), |
|
236 | + $post_type |
|
237 | + ), |
|
238 | + $post_type, |
|
239 | + $plural_slug |
|
240 | + ), |
|
241 | + 'capability_type' => 'post', |
|
242 | + 'map_meta_cap' => true, |
|
243 | + 'has_archive' => true, |
|
244 | + 'hierarchical' => false, |
|
245 | + 'menu_position' => null, |
|
246 | + 'supports' => array( |
|
247 | + 'title', |
|
248 | + 'editor', |
|
249 | + 'author', |
|
250 | + 'thumbnail', |
|
251 | + 'excerpt', |
|
252 | + 'custom-fields', |
|
253 | + 'comments', |
|
254 | + ), |
|
255 | + ); |
|
256 | + } |
|
257 | 257 | } |
@@ -15,112 +15,112 @@ |
||
15 | 15 | class Basic implements EmailValidatorInterface |
16 | 16 | { |
17 | 17 | |
18 | - /** |
|
19 | - * @param string $email_address |
|
20 | - * @return bool |
|
21 | - * @throws EmailValidationException |
|
22 | - */ |
|
23 | - public function validate($email_address) |
|
24 | - { |
|
25 | - if (! preg_match('/^.+\@\S+$/', $email_address)) { |
|
26 | - // email not in correct {string}@{string} format |
|
27 | - throw new EmailValidationException( |
|
28 | - esc_html__('Email does not have the required @ sign.', 'event_espresso') |
|
29 | - ); |
|
30 | - } |
|
31 | - $atIndex = $this->getAtIndex($email_address); |
|
32 | - $local = $this->getLocalPartOfEmail($email_address, $atIndex); |
|
33 | - $localLen = strlen($local); |
|
34 | - if ($localLen < 1) { |
|
35 | - // no local part |
|
36 | - throw new EmailValidationException( |
|
37 | - esc_html__('Email local-part (before the @) is required.', 'event_espresso') |
|
38 | - ); |
|
39 | - } |
|
40 | - if ($localLen > 64) { |
|
41 | - // local part length exceeded |
|
42 | - throw new EmailValidationException( |
|
43 | - esc_html__('Email local-part (before the @) is too long.', 'event_espresso') |
|
44 | - ); |
|
45 | - } |
|
46 | - if ($local[0] === '.') { |
|
47 | - // local part starts with '.' |
|
48 | - throw new EmailValidationException( |
|
49 | - esc_html__('Email local-part (before the @) must not begin with a period.', 'event_espresso') |
|
50 | - ); |
|
51 | - } |
|
52 | - if ($local[ $localLen - 1 ] === '.') { |
|
53 | - // local part starts or ends with '.' |
|
54 | - throw new EmailValidationException( |
|
55 | - esc_html__('Email local-part (before the @) must not end with a period.', 'event_espresso') |
|
56 | - ); |
|
57 | - } |
|
58 | - if (preg_match('/\\.\\./', $local)) { |
|
59 | - // local part has two consecutive dots |
|
60 | - throw new EmailValidationException( |
|
61 | - esc_html__( |
|
62 | - 'Email local-part (before the @) must not have two consecutive periods.', |
|
63 | - 'event_espresso' |
|
64 | - ) |
|
65 | - ); |
|
66 | - } |
|
67 | - $domain = $this->getDomainPartOfEmail($email_address, $atIndex); |
|
68 | - $domainLen = strlen($domain); |
|
69 | - if ($domainLen < 1) { |
|
70 | - throw new EmailValidationException( |
|
71 | - esc_html__('Email domain (after the @) is required.', 'event_espresso') |
|
72 | - ); |
|
73 | - } |
|
74 | - if ($domainLen > 255) { |
|
75 | - // domain part length exceeded |
|
76 | - throw new EmailValidationException( |
|
77 | - esc_html__('Email domain (after the @) is too long.', 'event_espresso') |
|
78 | - ); |
|
79 | - } |
|
80 | - if (preg_match('/\\.\\./', $domain)) { |
|
81 | - // domain part has two consecutive dots |
|
82 | - throw new EmailValidationException( |
|
83 | - esc_html__('Email domain (after the @) must not have two consecutive periods.', 'event_espresso') |
|
84 | - ); |
|
85 | - } |
|
86 | - return true; |
|
87 | - } |
|
18 | + /** |
|
19 | + * @param string $email_address |
|
20 | + * @return bool |
|
21 | + * @throws EmailValidationException |
|
22 | + */ |
|
23 | + public function validate($email_address) |
|
24 | + { |
|
25 | + if (! preg_match('/^.+\@\S+$/', $email_address)) { |
|
26 | + // email not in correct {string}@{string} format |
|
27 | + throw new EmailValidationException( |
|
28 | + esc_html__('Email does not have the required @ sign.', 'event_espresso') |
|
29 | + ); |
|
30 | + } |
|
31 | + $atIndex = $this->getAtIndex($email_address); |
|
32 | + $local = $this->getLocalPartOfEmail($email_address, $atIndex); |
|
33 | + $localLen = strlen($local); |
|
34 | + if ($localLen < 1) { |
|
35 | + // no local part |
|
36 | + throw new EmailValidationException( |
|
37 | + esc_html__('Email local-part (before the @) is required.', 'event_espresso') |
|
38 | + ); |
|
39 | + } |
|
40 | + if ($localLen > 64) { |
|
41 | + // local part length exceeded |
|
42 | + throw new EmailValidationException( |
|
43 | + esc_html__('Email local-part (before the @) is too long.', 'event_espresso') |
|
44 | + ); |
|
45 | + } |
|
46 | + if ($local[0] === '.') { |
|
47 | + // local part starts with '.' |
|
48 | + throw new EmailValidationException( |
|
49 | + esc_html__('Email local-part (before the @) must not begin with a period.', 'event_espresso') |
|
50 | + ); |
|
51 | + } |
|
52 | + if ($local[ $localLen - 1 ] === '.') { |
|
53 | + // local part starts or ends with '.' |
|
54 | + throw new EmailValidationException( |
|
55 | + esc_html__('Email local-part (before the @) must not end with a period.', 'event_espresso') |
|
56 | + ); |
|
57 | + } |
|
58 | + if (preg_match('/\\.\\./', $local)) { |
|
59 | + // local part has two consecutive dots |
|
60 | + throw new EmailValidationException( |
|
61 | + esc_html__( |
|
62 | + 'Email local-part (before the @) must not have two consecutive periods.', |
|
63 | + 'event_espresso' |
|
64 | + ) |
|
65 | + ); |
|
66 | + } |
|
67 | + $domain = $this->getDomainPartOfEmail($email_address, $atIndex); |
|
68 | + $domainLen = strlen($domain); |
|
69 | + if ($domainLen < 1) { |
|
70 | + throw new EmailValidationException( |
|
71 | + esc_html__('Email domain (after the @) is required.', 'event_espresso') |
|
72 | + ); |
|
73 | + } |
|
74 | + if ($domainLen > 255) { |
|
75 | + // domain part length exceeded |
|
76 | + throw new EmailValidationException( |
|
77 | + esc_html__('Email domain (after the @) is too long.', 'event_espresso') |
|
78 | + ); |
|
79 | + } |
|
80 | + if (preg_match('/\\.\\./', $domain)) { |
|
81 | + // domain part has two consecutive dots |
|
82 | + throw new EmailValidationException( |
|
83 | + esc_html__('Email domain (after the @) must not have two consecutive periods.', 'event_espresso') |
|
84 | + ); |
|
85 | + } |
|
86 | + return true; |
|
87 | + } |
|
88 | 88 | |
89 | 89 | |
90 | - /** |
|
91 | - * returns the location of the @ symbol |
|
92 | - * |
|
93 | - * @param string $email_address |
|
94 | - * @return bool|string |
|
95 | - */ |
|
96 | - protected function getAtIndex($email_address) |
|
97 | - { |
|
98 | - return strrpos($email_address, '@'); |
|
99 | - } |
|
90 | + /** |
|
91 | + * returns the location of the @ symbol |
|
92 | + * |
|
93 | + * @param string $email_address |
|
94 | + * @return bool|string |
|
95 | + */ |
|
96 | + protected function getAtIndex($email_address) |
|
97 | + { |
|
98 | + return strrpos($email_address, '@'); |
|
99 | + } |
|
100 | 100 | |
101 | 101 | |
102 | - /** |
|
103 | - * Gets the local part of the email |
|
104 | - * |
|
105 | - * @param string $email_address |
|
106 | - * @param bool|int $atIndex |
|
107 | - * @return bool|string |
|
108 | - */ |
|
109 | - protected function getLocalPartOfEmail($email_address, $atIndex) |
|
110 | - { |
|
111 | - return substr($email_address, 0, $atIndex); |
|
112 | - } |
|
102 | + /** |
|
103 | + * Gets the local part of the email |
|
104 | + * |
|
105 | + * @param string $email_address |
|
106 | + * @param bool|int $atIndex |
|
107 | + * @return bool|string |
|
108 | + */ |
|
109 | + protected function getLocalPartOfEmail($email_address, $atIndex) |
|
110 | + { |
|
111 | + return substr($email_address, 0, $atIndex); |
|
112 | + } |
|
113 | 113 | |
114 | 114 | |
115 | - /** |
|
116 | - * Gets the domain part of the email |
|
117 | - * |
|
118 | - * @param string $email_address |
|
119 | - * @param bool|int $atIndex |
|
120 | - * @return bool|string |
|
121 | - */ |
|
122 | - protected function getDomainPartOfEmail($email_address, $atIndex) |
|
123 | - { |
|
124 | - return substr($email_address, $atIndex + 1); |
|
125 | - } |
|
115 | + /** |
|
116 | + * Gets the domain part of the email |
|
117 | + * |
|
118 | + * @param string $email_address |
|
119 | + * @param bool|int $atIndex |
|
120 | + * @return bool|string |
|
121 | + */ |
|
122 | + protected function getDomainPartOfEmail($email_address, $atIndex) |
|
123 | + { |
|
124 | + return substr($email_address, $atIndex + 1); |
|
125 | + } |
|
126 | 126 | } |
@@ -22,7 +22,7 @@ discard block |
||
22 | 22 | */ |
23 | 23 | public function validate($email_address) |
24 | 24 | { |
25 | - if (! preg_match('/^.+\@\S+$/', $email_address)) { |
|
25 | + if ( ! preg_match('/^.+\@\S+$/', $email_address)) { |
|
26 | 26 | // email not in correct {string}@{string} format |
27 | 27 | throw new EmailValidationException( |
28 | 28 | esc_html__('Email does not have the required @ sign.', 'event_espresso') |
@@ -49,7 +49,7 @@ discard block |
||
49 | 49 | esc_html__('Email local-part (before the @) must not begin with a period.', 'event_espresso') |
50 | 50 | ); |
51 | 51 | } |
52 | - if ($local[ $localLen - 1 ] === '.') { |
|
52 | + if ($local[$localLen - 1] === '.') { |
|
53 | 53 | // local part starts or ends with '.' |
54 | 54 | throw new EmailValidationException( |
55 | 55 | esc_html__('Email local-part (before the @) must not end with a period.', 'event_espresso') |
@@ -26,149 +26,149 @@ |
||
26 | 26 | { |
27 | 27 | |
28 | 28 | |
29 | - /** |
|
30 | - * @param EE_Registration $target_registration |
|
31 | - * @param EE_Registration $registration_to_copy |
|
32 | - * @return bool |
|
33 | - * @throws UnexpectedEntityException |
|
34 | - * @throws EntityNotFoundException |
|
35 | - * @throws RuntimeException |
|
36 | - * @throws EE_Error |
|
37 | - */ |
|
38 | - public function copyRegistrationDetails( |
|
39 | - EE_Registration $target_registration, |
|
40 | - EE_Registration $registration_to_copy |
|
41 | - ) { |
|
42 | - // copy attendee |
|
43 | - $target_registration->set_attendee_id($registration_to_copy->attendee_ID()); |
|
44 | - $target_registration->updateStatusBasedOnTotalPaid(false); |
|
45 | - $target_registration->save(); |
|
46 | - // get answers to previous reg questions |
|
47 | - $answers = $this->reindexAnswersByQuestionId($registration_to_copy->answers()); |
|
48 | - // get questions to new event reg form |
|
49 | - $new_event = $target_registration->event(); |
|
50 | - $question_groups = $new_event->question_groups( |
|
51 | - array( |
|
52 | - array( |
|
53 | - 'Event.EVT_ID' => $new_event->ID(), |
|
54 | - 'Event_Question_Group.EQG_primary' => $registration_to_copy->is_primary_registrant(), |
|
55 | - ), |
|
56 | - 'order_by' => array('QSG_order' => 'ASC'), |
|
57 | - ) |
|
58 | - ); |
|
59 | - foreach ($question_groups as $question_group) { |
|
60 | - if ($question_group instanceof \EE_Question_Group) { |
|
61 | - foreach ($question_group->questions() as $question) { |
|
62 | - if ($question instanceof EE_Question) { |
|
63 | - $this->generateNewAnswer( |
|
64 | - $question, |
|
65 | - $target_registration, |
|
66 | - $answers |
|
67 | - ); |
|
68 | - } |
|
69 | - } |
|
70 | - } |
|
71 | - } |
|
72 | - return true; |
|
73 | - } |
|
29 | + /** |
|
30 | + * @param EE_Registration $target_registration |
|
31 | + * @param EE_Registration $registration_to_copy |
|
32 | + * @return bool |
|
33 | + * @throws UnexpectedEntityException |
|
34 | + * @throws EntityNotFoundException |
|
35 | + * @throws RuntimeException |
|
36 | + * @throws EE_Error |
|
37 | + */ |
|
38 | + public function copyRegistrationDetails( |
|
39 | + EE_Registration $target_registration, |
|
40 | + EE_Registration $registration_to_copy |
|
41 | + ) { |
|
42 | + // copy attendee |
|
43 | + $target_registration->set_attendee_id($registration_to_copy->attendee_ID()); |
|
44 | + $target_registration->updateStatusBasedOnTotalPaid(false); |
|
45 | + $target_registration->save(); |
|
46 | + // get answers to previous reg questions |
|
47 | + $answers = $this->reindexAnswersByQuestionId($registration_to_copy->answers()); |
|
48 | + // get questions to new event reg form |
|
49 | + $new_event = $target_registration->event(); |
|
50 | + $question_groups = $new_event->question_groups( |
|
51 | + array( |
|
52 | + array( |
|
53 | + 'Event.EVT_ID' => $new_event->ID(), |
|
54 | + 'Event_Question_Group.EQG_primary' => $registration_to_copy->is_primary_registrant(), |
|
55 | + ), |
|
56 | + 'order_by' => array('QSG_order' => 'ASC'), |
|
57 | + ) |
|
58 | + ); |
|
59 | + foreach ($question_groups as $question_group) { |
|
60 | + if ($question_group instanceof \EE_Question_Group) { |
|
61 | + foreach ($question_group->questions() as $question) { |
|
62 | + if ($question instanceof EE_Question) { |
|
63 | + $this->generateNewAnswer( |
|
64 | + $question, |
|
65 | + $target_registration, |
|
66 | + $answers |
|
67 | + ); |
|
68 | + } |
|
69 | + } |
|
70 | + } |
|
71 | + } |
|
72 | + return true; |
|
73 | + } |
|
74 | 74 | |
75 | 75 | |
76 | - /** |
|
77 | - * @param EE_Answer[] $answers |
|
78 | - * @return array |
|
79 | - * @throws EE_Error |
|
80 | - */ |
|
81 | - protected function reindexAnswersByQuestionId(array $answers) |
|
82 | - { |
|
83 | - $reindexed_answers = array(); |
|
84 | - foreach ($answers as $answer) { |
|
85 | - if ($answer instanceof EE_Answer) { |
|
86 | - $reindexed_answers[ $answer->question_ID() ] = $answer->value(); |
|
87 | - } |
|
88 | - } |
|
89 | - return $reindexed_answers; |
|
90 | - } |
|
76 | + /** |
|
77 | + * @param EE_Answer[] $answers |
|
78 | + * @return array |
|
79 | + * @throws EE_Error |
|
80 | + */ |
|
81 | + protected function reindexAnswersByQuestionId(array $answers) |
|
82 | + { |
|
83 | + $reindexed_answers = array(); |
|
84 | + foreach ($answers as $answer) { |
|
85 | + if ($answer instanceof EE_Answer) { |
|
86 | + $reindexed_answers[ $answer->question_ID() ] = $answer->value(); |
|
87 | + } |
|
88 | + } |
|
89 | + return $reindexed_answers; |
|
90 | + } |
|
91 | 91 | |
92 | 92 | |
93 | - /** |
|
94 | - * @param EE_Question $question |
|
95 | - * @param EE_Registration $registration |
|
96 | - * @param $previous_answers |
|
97 | - * @return EE_Answer |
|
98 | - * @throws UnexpectedEntityException |
|
99 | - * @throws EE_Error |
|
100 | - */ |
|
101 | - protected function generateNewAnswer( |
|
102 | - EE_Question $question, |
|
103 | - EE_Registration $registration, |
|
104 | - $previous_answers |
|
105 | - ) { |
|
106 | - $old_answer_value = isset($previous_answers[ $question->ID() ]) |
|
107 | - ? $previous_answers[ $question->ID() ] |
|
108 | - : ''; |
|
109 | - $new_answer = EE_Answer::new_instance( |
|
110 | - array( |
|
111 | - 'QST_ID' => $question->ID(), |
|
112 | - 'REG_ID' => $registration->ID(), |
|
113 | - 'ANS_value' => $old_answer_value, |
|
114 | - ) |
|
115 | - ); |
|
116 | - if (! $new_answer instanceof EE_Answer) { |
|
117 | - throw new UnexpectedEntityException($new_answer, 'EE_Answer'); |
|
118 | - } |
|
119 | - $new_answer->save(); |
|
120 | - return $new_answer; |
|
121 | - } |
|
93 | + /** |
|
94 | + * @param EE_Question $question |
|
95 | + * @param EE_Registration $registration |
|
96 | + * @param $previous_answers |
|
97 | + * @return EE_Answer |
|
98 | + * @throws UnexpectedEntityException |
|
99 | + * @throws EE_Error |
|
100 | + */ |
|
101 | + protected function generateNewAnswer( |
|
102 | + EE_Question $question, |
|
103 | + EE_Registration $registration, |
|
104 | + $previous_answers |
|
105 | + ) { |
|
106 | + $old_answer_value = isset($previous_answers[ $question->ID() ]) |
|
107 | + ? $previous_answers[ $question->ID() ] |
|
108 | + : ''; |
|
109 | + $new_answer = EE_Answer::new_instance( |
|
110 | + array( |
|
111 | + 'QST_ID' => $question->ID(), |
|
112 | + 'REG_ID' => $registration->ID(), |
|
113 | + 'ANS_value' => $old_answer_value, |
|
114 | + ) |
|
115 | + ); |
|
116 | + if (! $new_answer instanceof EE_Answer) { |
|
117 | + throw new UnexpectedEntityException($new_answer, 'EE_Answer'); |
|
118 | + } |
|
119 | + $new_answer->save(); |
|
120 | + return $new_answer; |
|
121 | + } |
|
122 | 122 | |
123 | 123 | |
124 | - /** |
|
125 | - * @param EE_Registration $target_registration |
|
126 | - * @param EE_Registration $registration_to_copy |
|
127 | - * @return bool |
|
128 | - * @throws RuntimeException |
|
129 | - * @throws UnexpectedEntityException |
|
130 | - * @throws EE_Error |
|
131 | - */ |
|
132 | - public function copyPaymentDetails( |
|
133 | - EE_Registration $target_registration, |
|
134 | - EE_Registration $registration_to_copy |
|
135 | - ) { |
|
136 | - $save = false; |
|
137 | - $previous_registration_payments = $registration_to_copy->registration_payments(); |
|
138 | - $new_registration_payment_total = 0; |
|
139 | - $registration_to_copy_total = $registration_to_copy->paid(); |
|
140 | - foreach ($previous_registration_payments as $previous_registration_payment) { |
|
141 | - if ($previous_registration_payment instanceof EE_Registration_Payment |
|
142 | - && $previous_registration_payment->payment() instanceof EE_Payment |
|
143 | - && $previous_registration_payment->payment()->is_approved() |
|
144 | - ) { |
|
145 | - $payment_amount = $previous_registration_payment->amount(); |
|
146 | - $new_registration_payment = EE_Registration_Payment::new_instance( |
|
147 | - array( |
|
148 | - 'REG_ID' => $target_registration->ID(), |
|
149 | - 'PAY_ID' => $previous_registration_payment->payment()->ID(), |
|
150 | - 'RPY_amount' => $payment_amount, |
|
151 | - ) |
|
152 | - ); |
|
153 | - if (! $new_registration_payment instanceof EE_Registration_Payment) { |
|
154 | - throw new UnexpectedEntityException($new_registration_payment, 'EE_Registration_Payment'); |
|
155 | - } |
|
156 | - $new_registration_payment->save(); |
|
157 | - // if new reg payment is good, then set old reg payment amount to zero |
|
158 | - $previous_registration_payment->set_amount(0); |
|
159 | - $previous_registration_payment->save(); |
|
160 | - // now increment/decrement payment amounts |
|
161 | - $new_registration_payment_total += $payment_amount; |
|
162 | - $registration_to_copy_total -= $payment_amount; |
|
163 | - $save = true; |
|
164 | - } |
|
165 | - } |
|
166 | - if ($save) { |
|
167 | - $target_registration->set_paid($new_registration_payment_total); |
|
168 | - $target_registration->save(); |
|
169 | - $registration_to_copy->set_paid($registration_to_copy_total); |
|
170 | - $registration_to_copy->save(); |
|
171 | - } |
|
172 | - return true; |
|
173 | - } |
|
124 | + /** |
|
125 | + * @param EE_Registration $target_registration |
|
126 | + * @param EE_Registration $registration_to_copy |
|
127 | + * @return bool |
|
128 | + * @throws RuntimeException |
|
129 | + * @throws UnexpectedEntityException |
|
130 | + * @throws EE_Error |
|
131 | + */ |
|
132 | + public function copyPaymentDetails( |
|
133 | + EE_Registration $target_registration, |
|
134 | + EE_Registration $registration_to_copy |
|
135 | + ) { |
|
136 | + $save = false; |
|
137 | + $previous_registration_payments = $registration_to_copy->registration_payments(); |
|
138 | + $new_registration_payment_total = 0; |
|
139 | + $registration_to_copy_total = $registration_to_copy->paid(); |
|
140 | + foreach ($previous_registration_payments as $previous_registration_payment) { |
|
141 | + if ($previous_registration_payment instanceof EE_Registration_Payment |
|
142 | + && $previous_registration_payment->payment() instanceof EE_Payment |
|
143 | + && $previous_registration_payment->payment()->is_approved() |
|
144 | + ) { |
|
145 | + $payment_amount = $previous_registration_payment->amount(); |
|
146 | + $new_registration_payment = EE_Registration_Payment::new_instance( |
|
147 | + array( |
|
148 | + 'REG_ID' => $target_registration->ID(), |
|
149 | + 'PAY_ID' => $previous_registration_payment->payment()->ID(), |
|
150 | + 'RPY_amount' => $payment_amount, |
|
151 | + ) |
|
152 | + ); |
|
153 | + if (! $new_registration_payment instanceof EE_Registration_Payment) { |
|
154 | + throw new UnexpectedEntityException($new_registration_payment, 'EE_Registration_Payment'); |
|
155 | + } |
|
156 | + $new_registration_payment->save(); |
|
157 | + // if new reg payment is good, then set old reg payment amount to zero |
|
158 | + $previous_registration_payment->set_amount(0); |
|
159 | + $previous_registration_payment->save(); |
|
160 | + // now increment/decrement payment amounts |
|
161 | + $new_registration_payment_total += $payment_amount; |
|
162 | + $registration_to_copy_total -= $payment_amount; |
|
163 | + $save = true; |
|
164 | + } |
|
165 | + } |
|
166 | + if ($save) { |
|
167 | + $target_registration->set_paid($new_registration_payment_total); |
|
168 | + $target_registration->save(); |
|
169 | + $registration_to_copy->set_paid($registration_to_copy_total); |
|
170 | + $registration_to_copy->save(); |
|
171 | + } |
|
172 | + return true; |
|
173 | + } |
|
174 | 174 | } |
@@ -83,7 +83,7 @@ discard block |
||
83 | 83 | $reindexed_answers = array(); |
84 | 84 | foreach ($answers as $answer) { |
85 | 85 | if ($answer instanceof EE_Answer) { |
86 | - $reindexed_answers[ $answer->question_ID() ] = $answer->value(); |
|
86 | + $reindexed_answers[$answer->question_ID()] = $answer->value(); |
|
87 | 87 | } |
88 | 88 | } |
89 | 89 | return $reindexed_answers; |
@@ -103,8 +103,8 @@ discard block |
||
103 | 103 | EE_Registration $registration, |
104 | 104 | $previous_answers |
105 | 105 | ) { |
106 | - $old_answer_value = isset($previous_answers[ $question->ID() ]) |
|
107 | - ? $previous_answers[ $question->ID() ] |
|
106 | + $old_answer_value = isset($previous_answers[$question->ID()]) |
|
107 | + ? $previous_answers[$question->ID()] |
|
108 | 108 | : ''; |
109 | 109 | $new_answer = EE_Answer::new_instance( |
110 | 110 | array( |
@@ -113,7 +113,7 @@ discard block |
||
113 | 113 | 'ANS_value' => $old_answer_value, |
114 | 114 | ) |
115 | 115 | ); |
116 | - if (! $new_answer instanceof EE_Answer) { |
|
116 | + if ( ! $new_answer instanceof EE_Answer) { |
|
117 | 117 | throw new UnexpectedEntityException($new_answer, 'EE_Answer'); |
118 | 118 | } |
119 | 119 | $new_answer->save(); |
@@ -150,7 +150,7 @@ discard block |
||
150 | 150 | 'RPY_amount' => $payment_amount, |
151 | 151 | ) |
152 | 152 | ); |
153 | - if (! $new_registration_payment instanceof EE_Registration_Payment) { |
|
153 | + if ( ! $new_registration_payment instanceof EE_Registration_Payment) { |
|
154 | 154 | throw new UnexpectedEntityException($new_registration_payment, 'EE_Registration_Payment'); |
155 | 155 | } |
156 | 156 | $new_registration_payment->save(); |