@@ -62,7 +62,7 @@ |
||
62 | 62 | */ |
63 | 63 | protected function _get_subject($custom_subject = '') |
64 | 64 | { |
65 | - if (! empty($custom_subject)) { |
|
65 | + if ( ! empty($custom_subject)) { |
|
66 | 66 | return $custom_subject; |
67 | 67 | } |
68 | 68 | $this->queue->get_message_repository()->rewind(); |
@@ -13,90 +13,90 @@ |
||
13 | 13 | { |
14 | 14 | |
15 | 15 | |
16 | - /** |
|
17 | - * Will hold an EE_Messages_Queue object |
|
18 | - * @type EE_Messages_Queue |
|
19 | - */ |
|
20 | - public $queue = array(); |
|
16 | + /** |
|
17 | + * Will hold an EE_Messages_Queue object |
|
18 | + * @type EE_Messages_Queue |
|
19 | + */ |
|
20 | + public $queue = array(); |
|
21 | 21 | |
22 | - /** |
|
23 | - * @param string $messenger_name The messenger being used to send the message |
|
24 | - * @param string $message_type_name The message type being used to grab variations etc. |
|
25 | - * @param EE_Messages_Queue $queue |
|
26 | - * @param string $custom_subject Used if a custom subject is desired for the generated aggregate EE_Message object |
|
27 | - */ |
|
28 | - public function __construct($messenger_name, $message_type_name, EE_Messages_Queue $queue, $custom_subject = '') |
|
29 | - { |
|
30 | - $this->queue = $queue; |
|
31 | - parent::__construct($messenger_name, $message_type_name, array(), '', false, EEM_Message::status_idle); |
|
32 | - if ($this->valid()) { |
|
33 | - $this->_message->set_content($this->_get_content()); |
|
34 | - $this->_message->set_subject($this->_get_subject($custom_subject)); |
|
35 | - $this->_message->set_GRP_ID($this->getGroupIdFromMessageRepo()); |
|
36 | - } |
|
37 | - } |
|
22 | + /** |
|
23 | + * @param string $messenger_name The messenger being used to send the message |
|
24 | + * @param string $message_type_name The message type being used to grab variations etc. |
|
25 | + * @param EE_Messages_Queue $queue |
|
26 | + * @param string $custom_subject Used if a custom subject is desired for the generated aggregate EE_Message object |
|
27 | + */ |
|
28 | + public function __construct($messenger_name, $message_type_name, EE_Messages_Queue $queue, $custom_subject = '') |
|
29 | + { |
|
30 | + $this->queue = $queue; |
|
31 | + parent::__construct($messenger_name, $message_type_name, array(), '', false, EEM_Message::status_idle); |
|
32 | + if ($this->valid()) { |
|
33 | + $this->_message->set_content($this->_get_content()); |
|
34 | + $this->_message->set_subject($this->_get_subject($custom_subject)); |
|
35 | + $this->_message->set_GRP_ID($this->getGroupIdFromMessageRepo()); |
|
36 | + } |
|
37 | + } |
|
38 | 38 | |
39 | 39 | |
40 | 40 | |
41 | - /** |
|
42 | - * Uses the EE_Messages_Queue currently set on this object to generate the content |
|
43 | - * for the single EE_Message aggregate object returned by get_EE_Message |
|
44 | - * @return string; |
|
45 | - */ |
|
46 | - protected function _get_content() |
|
47 | - { |
|
48 | - $content = ''; |
|
49 | - $this->queue->get_message_repository()->rewind(); |
|
50 | - while ($this->queue->get_message_repository()->valid()) { |
|
51 | - $content .= $this->queue->get_message_repository()->current()->content(); |
|
52 | - $this->queue->get_message_repository()->next(); |
|
53 | - } |
|
54 | - return $content; |
|
55 | - } |
|
41 | + /** |
|
42 | + * Uses the EE_Messages_Queue currently set on this object to generate the content |
|
43 | + * for the single EE_Message aggregate object returned by get_EE_Message |
|
44 | + * @return string; |
|
45 | + */ |
|
46 | + protected function _get_content() |
|
47 | + { |
|
48 | + $content = ''; |
|
49 | + $this->queue->get_message_repository()->rewind(); |
|
50 | + while ($this->queue->get_message_repository()->valid()) { |
|
51 | + $content .= $this->queue->get_message_repository()->current()->content(); |
|
52 | + $this->queue->get_message_repository()->next(); |
|
53 | + } |
|
54 | + return $content; |
|
55 | + } |
|
56 | 56 | |
57 | 57 | |
58 | - /** |
|
59 | - * Return a subject string to use for `MSG_Subject` in the aggregate EE_Message object. |
|
60 | - * @param string $custom_subject |
|
61 | - * |
|
62 | - * @return string |
|
63 | - */ |
|
64 | - protected function _get_subject($custom_subject = '') |
|
65 | - { |
|
66 | - if (! empty($custom_subject)) { |
|
67 | - return $custom_subject; |
|
68 | - } |
|
69 | - $this->queue->get_message_repository()->rewind(); |
|
70 | - $count_of_items = $this->queue->get_message_repository()->count(); |
|
58 | + /** |
|
59 | + * Return a subject string to use for `MSG_Subject` in the aggregate EE_Message object. |
|
60 | + * @param string $custom_subject |
|
61 | + * |
|
62 | + * @return string |
|
63 | + */ |
|
64 | + protected function _get_subject($custom_subject = '') |
|
65 | + { |
|
66 | + if (! empty($custom_subject)) { |
|
67 | + return $custom_subject; |
|
68 | + } |
|
69 | + $this->queue->get_message_repository()->rewind(); |
|
70 | + $count_of_items = $this->queue->get_message_repository()->count(); |
|
71 | 71 | |
72 | - // if $count of items in queue == 1, then let's just return the subject for that item. |
|
73 | - if ($count_of_items === 1) { |
|
74 | - return $this->queue->get_message_repository()->current()->subject(); |
|
75 | - } |
|
76 | - // phpcs:disable WordPress.WP.I18n.MissingSingularPlaceholder |
|
77 | - return sprintf( |
|
78 | - _n( |
|
79 | - 'Showing Aggregate output for 1 result', |
|
80 | - 'Showing Aggregate output for %d items', |
|
81 | - $count_of_items, |
|
82 | - 'event_espresso' |
|
83 | - ), |
|
84 | - $count_of_items |
|
85 | - ); |
|
86 | - // phpcs:enable |
|
87 | - } |
|
72 | + // if $count of items in queue == 1, then let's just return the subject for that item. |
|
73 | + if ($count_of_items === 1) { |
|
74 | + return $this->queue->get_message_repository()->current()->subject(); |
|
75 | + } |
|
76 | + // phpcs:disable WordPress.WP.I18n.MissingSingularPlaceholder |
|
77 | + return sprintf( |
|
78 | + _n( |
|
79 | + 'Showing Aggregate output for 1 result', |
|
80 | + 'Showing Aggregate output for %d items', |
|
81 | + $count_of_items, |
|
82 | + 'event_espresso' |
|
83 | + ), |
|
84 | + $count_of_items |
|
85 | + ); |
|
86 | + // phpcs:enable |
|
87 | + } |
|
88 | 88 | |
89 | 89 | |
90 | - /** |
|
91 | - * Uses the EE_Messages_Queue currently set on this object to set the GRP_ID |
|
92 | - * for the single EE_Message aggregate object returned by get_EE_Message |
|
93 | - * @return int; |
|
94 | - */ |
|
95 | - protected function getGroupIdFromMessageRepo() |
|
96 | - { |
|
97 | - $this->queue->get_message_repository()->rewind(); |
|
98 | - if ($this->queue->get_message_repository()->valid()) { |
|
99 | - return $this->queue->get_message_repository()->current()->GRP_ID(); |
|
100 | - } |
|
101 | - } |
|
90 | + /** |
|
91 | + * Uses the EE_Messages_Queue currently set on this object to set the GRP_ID |
|
92 | + * for the single EE_Message aggregate object returned by get_EE_Message |
|
93 | + * @return int; |
|
94 | + */ |
|
95 | + protected function getGroupIdFromMessageRepo() |
|
96 | + { |
|
97 | + $this->queue->get_message_repository()->rewind(); |
|
98 | + if ($this->queue->get_message_repository()->valid()) { |
|
99 | + return $this->queue->get_message_repository()->current()->GRP_ID(); |
|
100 | + } |
|
101 | + } |
|
102 | 102 | } |
@@ -24,9 +24,12 @@ |
||
24 | 24 | <title><?php echo $title; ?></title> |
25 | 25 | <?php if ($enqueue_wp_assets) : ?> |
26 | 26 | <?php wp_head(); ?> |
27 | - <?php else : ?> |
|
27 | + <?php else { |
|
28 | + : ?> |
|
28 | 29 | <?php foreach ($css as $url) :?> |
29 | - <link rel="stylesheet" type="text/css" href="<?php echo $url; ?>"> |
|
30 | + <link rel="stylesheet" type="text/css" href="<?php echo $url; |
|
31 | +} |
|
32 | +?>"> |
|
30 | 33 | <?php endforeach; ?> |
31 | 34 | <script type="text/javascript"> |
32 | 35 | <?php echo $eei18n; ?> |
@@ -32,7 +32,7 @@ discard block |
||
32 | 32 | <?php echo $eei18n; ?> |
33 | 33 | </script> |
34 | 34 | <?php foreach ($header_js as $key => $url) :?> |
35 | - <?php $header_attributes = isset($header_js_attributes[ $key ]) ? $header_js_attributes[ $key ] : ''; ?> |
|
35 | + <?php $header_attributes = isset($header_js_attributes[$key]) ? $header_js_attributes[$key] : ''; ?> |
|
36 | 36 | <script type="text/javascript" src="<?php echo $url; ?>"<?php echo $header_attributes; ?>></script> |
37 | 37 | <?php endforeach; ?> |
38 | 38 | <?php endif; ?> |
@@ -43,7 +43,7 @@ discard block |
||
43 | 43 | <?php echo $content; ?> |
44 | 44 | </div> |
45 | 45 | <?php foreach ($footer_js as $key => $url) : ?> |
46 | - <?php $footer_attributes = isset($footer_js_attributes[ $key ]) ? $footer_js_attributes[ $key ] : ''; ?> |
|
46 | + <?php $footer_attributes = isset($footer_js_attributes[$key]) ? $footer_js_attributes[$key] : ''; ?> |
|
47 | 47 | <script type="text/javascript" src="<?php echo $url; ?>"<?php echo $footer_attributes; ?>></script> |
48 | 48 | <?php endforeach; ?> |
49 | 49 | <?php if ($enqueue_wp_assets) : ?> |
@@ -17,457 +17,457 @@ |
||
17 | 17 | abstract class EE_Shortcodes extends EE_Base |
18 | 18 | { |
19 | 19 | |
20 | - /** |
|
21 | - * holds label for library |
|
22 | - * This is used for referencing the library label |
|
23 | - * |
|
24 | - * @access public |
|
25 | - * @var string |
|
26 | - */ |
|
27 | - public $label; |
|
28 | - |
|
29 | - |
|
30 | - /** |
|
31 | - * This property is used for referencing a short description of the library |
|
32 | - * |
|
33 | - * @access public |
|
34 | - * @var string |
|
35 | - */ |
|
36 | - public $description; |
|
37 | - |
|
38 | - |
|
39 | - /** |
|
40 | - * This will hold an array of shortcodes with the key as the shortcode ([shortcode]) and the value as a |
|
41 | - * label/description for the shortcode. |
|
42 | - * |
|
43 | - * @access protected |
|
44 | - * @var array |
|
45 | - */ |
|
46 | - protected $_shortcodes; |
|
47 | - |
|
48 | - |
|
49 | - /** |
|
50 | - * This will hold the incoming data item sent to the parser method |
|
51 | - * |
|
52 | - * @access protected |
|
53 | - * @var mixed (array|object) |
|
54 | - */ |
|
55 | - protected $_data; |
|
56 | - |
|
57 | - |
|
58 | - /** |
|
59 | - * some shortcodes may require extra data to parse. This property is provided for that. |
|
60 | - * |
|
61 | - * @var array |
|
62 | - */ |
|
63 | - protected $_extra_data; |
|
64 | - |
|
65 | - |
|
66 | - /** |
|
67 | - * EE_messenger used to generate the template being parsed. |
|
68 | - * |
|
69 | - * @since 4.5.0 |
|
70 | - * @var EE_messenger |
|
71 | - */ |
|
72 | - protected $_messenger; |
|
73 | - |
|
74 | - |
|
75 | - /** |
|
76 | - * message type used to generate the template being parsed. |
|
77 | - * |
|
78 | - * @since 4.5.0 |
|
79 | - * @var EE_message_type |
|
80 | - */ |
|
81 | - protected $_message_type; |
|
82 | - |
|
83 | - |
|
84 | - /** |
|
85 | - * context used for the template being parsed |
|
86 | - * |
|
87 | - * @since 4.5.0 |
|
88 | - * @var string |
|
89 | - */ |
|
90 | - protected $_context; |
|
91 | - |
|
92 | - |
|
93 | - /** |
|
94 | - * Specific Message Template Group ID |
|
95 | - * |
|
96 | - * @since 4.5.0 |
|
97 | - * @var int |
|
98 | - */ |
|
99 | - protected $_GRP_ID; |
|
100 | - |
|
101 | - |
|
102 | - /** |
|
103 | - * @since 4.9.0 |
|
104 | - * @type EE_Message |
|
105 | - */ |
|
106 | - protected $_message; |
|
107 | - |
|
108 | - |
|
109 | - /** |
|
110 | - * This will hold an instance of the EEH_Parse_Shortcodes helper that will be used when handling list type |
|
111 | - * shortcodes |
|
112 | - * |
|
113 | - * @var EEH_Parse_Shortcodes |
|
114 | - */ |
|
115 | - protected $_shortcode_helper; |
|
116 | - |
|
117 | - |
|
118 | - public function __construct() |
|
119 | - { |
|
120 | - $this->_set_defaults(); |
|
121 | - $this->_init_props(); |
|
122 | - } |
|
123 | - |
|
124 | - |
|
125 | - /** |
|
126 | - * This sets the defaults for the properties. Child classes will override these properties in their _init_props |
|
127 | - * method |
|
128 | - */ |
|
129 | - private function _set_defaults() |
|
130 | - { |
|
131 | - $this->name = $this->description = ''; |
|
132 | - $this->_shortcodes = array(); |
|
133 | - $this->_set_shortcode_helper(); |
|
134 | - } |
|
135 | - |
|
136 | - |
|
137 | - /** |
|
138 | - * loads an instance of the EE_Shortcode_Parser helper when requested |
|
139 | - */ |
|
140 | - protected function _set_shortcode_helper() |
|
141 | - { |
|
142 | - // get shortcode_replace instance- set when _get_messages is called in child... |
|
143 | - $this->_shortcode_helper = new EEH_Parse_Shortcodes(); |
|
144 | - } |
|
145 | - |
|
146 | - |
|
147 | - public function get_shortcode_helper() |
|
148 | - { |
|
149 | - if (! $this->_shortcode_helper instanceof EEH_Parse_Shortcodes) { |
|
150 | - $this->_set_shortcode_helper(); |
|
151 | - } |
|
152 | - return $this->_shortcode_helper; |
|
153 | - } |
|
154 | - |
|
155 | - |
|
156 | - /** |
|
157 | - * This is the public method for kicking of the parser included with each child. It can be overridden by child |
|
158 | - * classes if necessary (see EE_Questions_Answers for example) |
|
159 | - * |
|
160 | - * @param string $shortcode incoming shortcode to be parsed |
|
161 | - * @param mixed (object|array) $data incoming data to be be used for parsing |
|
162 | - * @param mixed (object|array) $extra_data extra incoming data (usually EE_Messages_Addressee) |
|
163 | - * @return string parsed shortcode. |
|
164 | - */ |
|
165 | - public function parser($shortcode, $data, $extra_data = array()) |
|
166 | - { |
|
167 | - |
|
168 | - // filter setup shortcodes |
|
169 | - $this->_shortcodes = $this->get_shortcodes(); |
|
170 | - |
|
171 | - // we need to setup any dynamic shortcodes so that they work with the array_key_exists |
|
172 | - $sc = preg_match_all('/(\[[A-Za-z0-9\_]+_\*)/', $shortcode, $matches); |
|
173 | - $sc_to_verify = ! empty($matches[0]) ? $matches[0][0] . ']' : $shortcode; |
|
174 | - |
|
175 | - // first we want to make sure this is a valid shortcode |
|
176 | - if (! array_key_exists($sc_to_verify, $this->_shortcodes)) { |
|
177 | - return false; |
|
178 | - } //get out, this parser doesn't handle the incoming shortcode. |
|
179 | - $this->_data = $data; |
|
180 | - $this->_extra_data = $extra_data; |
|
181 | - $this->_set_messages_properties(); |
|
182 | - $parsed = apply_filters( |
|
183 | - 'FHEE__' . get_class($this) . '__parser_after', |
|
184 | - $this->_parser($shortcode), |
|
185 | - $shortcode, |
|
186 | - $data, |
|
187 | - $extra_data, |
|
188 | - $this |
|
189 | - ); |
|
190 | - |
|
191 | - // note the below filter applies to ALL shortcode parsers... be careful! |
|
192 | - $parsed = apply_filters('FHEE__EE_Shortcodes__parser_after', $parsed, $shortcode, $data, $extra_data, $this); |
|
193 | - return $parsed; |
|
194 | - } |
|
195 | - |
|
196 | - |
|
197 | - /** |
|
198 | - * This method just returns the shortcodes in the $_shortcodes array property. |
|
199 | - * |
|
200 | - * @access public |
|
201 | - * @return array array of shortcodes => description pairs |
|
202 | - */ |
|
203 | - public function get_shortcodes() |
|
204 | - { |
|
205 | - $this->_shortcodes = apply_filters('FHEE__' . get_class($this) . '__shortcodes', $this->_shortcodes, $this); |
|
206 | - |
|
207 | - // note the below filter applies to ALL shortcode parsers... be careful! |
|
208 | - $this->_shortcodes = apply_filters('FHEE__EE_Shortcodes__shortcodes', $this->_shortcodes, $this); |
|
209 | - |
|
210 | - return $this->_shortcodes; |
|
211 | - } |
|
212 | - |
|
213 | - |
|
214 | - /** |
|
215 | - * Child classes use this method to set the $name, $description, and $_shortcodes properties. |
|
216 | - * |
|
217 | - * @abstract |
|
218 | - * @access protected |
|
219 | - * @return void |
|
220 | - */ |
|
221 | - abstract protected function _init_props(); |
|
222 | - |
|
223 | - |
|
224 | - /** |
|
225 | - * This method will give parsing instructions for each shortcode defined in the _shortcodes array. Child methods |
|
226 | - * will have to take care of handling. |
|
227 | - * |
|
228 | - * @abstract |
|
229 | - * @access protected |
|
230 | - * @param string $shortcode the shortcode to be parsed. |
|
231 | - * @param mixed (object|array) $data incoming data for the parser. The data could be either an object or |
|
232 | - * array because there are some shortcodes that might be replaced by prepared data that |
|
233 | - * has multiple items in a list (i.e. list of attendees in an event and we're showing |
|
234 | - * fname/lname for each attendee). In this case data will be in an array. Otherwise |
|
235 | - * the data shoudl be in a properly formatted object. The |
|
236 | - * EEH_Parse_Shortcodes.helper.php describes the data object we're expecting. |
|
237 | - * @return string parsed shortcode |
|
238 | - */ |
|
239 | - abstract protected function _parser($shortcode); |
|
240 | - |
|
241 | - |
|
242 | - /** |
|
243 | - * This just validates incoming data for list type shortcode parsers (and they call this method) to make sure it |
|
244 | - * meets their requirements |
|
245 | - * |
|
246 | - * @return mixed (void|exception) If validation fails we'll throw an exception. |
|
247 | - */ |
|
248 | - protected function _validate_list_requirements() |
|
249 | - { |
|
250 | - |
|
251 | - // first test to make sure we've got an array! |
|
252 | - if (! is_array($this->_data)) { |
|
253 | - throw new EE_Error( |
|
254 | - sprintf( |
|
255 | - __( |
|
256 | - 'Expecting an array for the data sent to %s. Instead it was %s', |
|
257 | - 'event_espresso' |
|
258 | - ), |
|
259 | - get_class($this), |
|
260 | - gettype($this->_data) |
|
261 | - ) |
|
262 | - ); |
|
263 | - } |
|
264 | - |
|
265 | - // next test to make sure we've got the required template in the index! |
|
266 | - if (! isset($this->_data['template'])) { |
|
267 | - throw new EE_Error( |
|
268 | - sprintf( |
|
269 | - __( |
|
270 | - 'The incoming data does not have the required template index in its array', |
|
271 | - 'event_espresso' |
|
272 | - ) |
|
273 | - ) |
|
274 | - ); |
|
275 | - } |
|
276 | - |
|
277 | - // next test to make sure we've got got a data index in the incoming data array |
|
278 | - if (! isset($this->_data['data'])) { |
|
279 | - throw new EE_Error( |
|
280 | - __( |
|
281 | - 'The incoming data does not have the required data index in its array', |
|
282 | - 'event_espresso' |
|
283 | - ) |
|
284 | - ); |
|
285 | - } |
|
286 | - |
|
287 | - // all is well let's make sure _extra_data always has the values needed. |
|
288 | - // let's make sure that extra_data includes all templates (for later parsing if necessary) |
|
289 | - if (empty($this->_extra_data) || (empty($this->_extra_data['data']) && empty($this->_extra_data['template']))) { |
|
290 | - $this->_extra_data['data'] = $this->_data['data']; |
|
291 | - $this->_extra_data['template'] = $this->_data['template']; |
|
292 | - } |
|
293 | - } |
|
294 | - |
|
295 | - |
|
296 | - /** |
|
297 | - * This returns any attributes that may be existing on an EE_Shortcode |
|
298 | - * |
|
299 | - * @since 4.5.0 |
|
300 | - * @param string $shortcode incoming shortcode |
|
301 | - * @return array An array with the attributes |
|
302 | - */ |
|
303 | - protected function _get_shortcode_attrs($shortcode) |
|
304 | - { |
|
305 | - // make sure the required wp helper function is present |
|
306 | - // require the shortcode file if necessary |
|
307 | - if (! function_exists('shortcode_parse_atts')) { |
|
308 | - require_once(ABSPATH . WPINC . '/shortcodes.php'); |
|
309 | - } |
|
310 | - |
|
311 | - // let's get any attributes that may be present and set the defaults. |
|
312 | - $shortcode_to_parse = str_replace('[', '', str_replace(']', '', $shortcode)); |
|
313 | - return shortcode_parse_atts($shortcode_to_parse); |
|
314 | - } |
|
315 | - |
|
316 | - |
|
317 | - /** |
|
318 | - * Conditional blocks are shortcode patterns with an opening conditional tag `[IF_*]` and a corresponding |
|
319 | - * closing tag (eg `[/IF_*]`). The content within the tags will be displayed/hidden depending on whatever |
|
320 | - * conditions existed in the opening tag. This method handles parsing the actual template to show/hide this |
|
321 | - * conditional content. |
|
322 | - * |
|
323 | - * @since 4.9.32 |
|
324 | - * |
|
325 | - * @param string $shortcode This should be original shortcode as used in the template and passed to the parser. |
|
326 | - * @param bool $show true means the opening and closing tags are removed and the content is left showing, |
|
327 | - * false means the opening and closing tags and the contained content are removed. |
|
328 | - * @return string The template for the shortcode is returned. |
|
329 | - */ |
|
330 | - protected function _mutate_conditional_block_in_template($shortcode, $show = true) |
|
331 | - { |
|
332 | - // first let's get all the matches in the template for this particular shortcode. |
|
333 | - preg_match_all('~' . $this->_get_conditional_block_regex($shortcode) . '~', $this->_data['template'], $matches); |
|
334 | - |
|
335 | - if ($matches && is_array($matches[0]) && ! empty($matches[0])) { |
|
336 | - // we need to hide all instances of the matches |
|
337 | - foreach ($matches[0] as $index => $content_to_show_or_hide) { |
|
338 | - $content_to_show_or_hide = preg_quote($content_to_show_or_hide); |
|
339 | - $replacement = $show ? $matches[4][ $index ] : ''; |
|
340 | - $this->_data['template'] = preg_replace( |
|
341 | - '~' . $content_to_show_or_hide . '~', |
|
342 | - $replacement, |
|
343 | - $this->_data['template'] |
|
344 | - ); |
|
345 | - } |
|
346 | - } |
|
347 | - // return $template |
|
348 | - return $this->_data['template']; |
|
349 | - } |
|
350 | - |
|
351 | - |
|
352 | - /** |
|
353 | - * This returns the regex pattern to use for conditional shortcodes parsing. |
|
354 | - * |
|
355 | - * Note: regex comes in part from the WP `get_shortcode_regex` expression in \wp-includes\shortcodes.php |
|
356 | - * |
|
357 | - * @param $shortcode |
|
358 | - * @since 4.9.32 |
|
359 | - * @return string |
|
360 | - */ |
|
361 | - private function _get_conditional_block_regex($shortcode) |
|
362 | - { |
|
363 | - // get just the shortcode tag for the match |
|
364 | - preg_match('@\[([^<>&/\[\]\x00-\x20=]++)@', $shortcode, $shortcode_tag_matches); |
|
365 | - if (empty($shortcode_tag_matches[1])) { |
|
366 | - return $this->_data['template']; |
|
367 | - } |
|
368 | - |
|
369 | - $shortcode_tag = $shortcode_tag_matches[1]; |
|
370 | - // get attributes_part_of_tag |
|
371 | - $attributes_part = preg_quote(str_replace(array($shortcode_tag, '[', ']'), '', $shortcode)); |
|
372 | - // escape |
|
373 | - $shortcode_tag = preg_quote($shortcode_tag); |
|
374 | - |
|
375 | - return |
|
376 | - '\[' // Opening Bracket |
|
377 | - . "($shortcode_tag)$attributes_part" // 1: Shortcode Name |
|
378 | - . '(?![\w-])' // Not followed by word character or hyphen |
|
379 | - . '(' // 2: Unroll the loop: Inside the opening shortcode tag |
|
380 | - . '[^\]\/]*' // Not a closing bracket or forward slash |
|
381 | - . '(?:' |
|
382 | - . '\/(?!\])' // A forward slash not followed by a closing bracket |
|
383 | - . '[^\]\/]*' // Not a closing bracket or forward slash. |
|
384 | - . ')*?' |
|
385 | - . ')' |
|
386 | - . '(?:' |
|
387 | - . '(\/)' // 3. Self closing tag ... |
|
388 | - . '\]' // ... and closing bracket |
|
389 | - . '|' |
|
390 | - . '\]' // Closing bracket |
|
391 | - . '(?:' |
|
392 | - . '(' // 4: Unroll the loop: Optionally, anything between the opening and closing brackets |
|
393 | - . '[^\[]*+' // Not an opening bracket |
|
394 | - . '(?:' |
|
395 | - . '\[(?!\/\1\])' // An opening bracket not followed by the closing shortcode tag. |
|
396 | - . '[^\[]*+' // Not an opening bracket |
|
397 | - . ')*+' |
|
398 | - . ')' |
|
399 | - . '\[\/\1\]' // Closing shortcode tag |
|
400 | - . ')?' |
|
401 | - . ')'; |
|
402 | - } |
|
403 | - |
|
404 | - |
|
405 | - /** |
|
406 | - * This sets the properties related to the messages system |
|
407 | - * |
|
408 | - * @since 4.5.0 |
|
409 | - * @return void |
|
410 | - */ |
|
411 | - protected function _set_messages_properties() |
|
412 | - { |
|
413 | - // should be in _extra_data |
|
414 | - if (isset($this->_extra_data['messenger'])) { |
|
415 | - $this->_messenger = $this->_extra_data['messenger']; |
|
416 | - $this->_message_type = $this->_extra_data['message_type']; |
|
417 | - $this->_context = $this->_extra_data['message'] instanceof EE_Message |
|
418 | - ? $this->_extra_data['message']->context() : ''; |
|
419 | - $this->_GRP_ID = $this->_extra_data['message'] instanceof EE_Message |
|
420 | - ? $this->_extra_data['message']->GRP_ID() : 0; |
|
421 | - $this->_message = $this->_extra_data['message'] instanceof EE_Message ? $this->_extra_data['message'] |
|
422 | - : null; |
|
423 | - } |
|
424 | - } |
|
425 | - |
|
426 | - |
|
427 | - /** |
|
428 | - * This returns whatever the set message type object is that was set on this shortcode parser. |
|
429 | - * |
|
430 | - * @since 4.5.0 |
|
431 | - * @return EE_message_type |
|
432 | - */ |
|
433 | - public function get_set_message_type() |
|
434 | - { |
|
435 | - return $this->_message_type; |
|
436 | - } |
|
437 | - |
|
438 | - |
|
439 | - /** |
|
440 | - * This returns whatever the set messenger object is that was set on this shortcode parser |
|
441 | - * |
|
442 | - * @since 4.5.0 |
|
443 | - * @return EE_messenger |
|
444 | - */ |
|
445 | - public function get_set_messenger() |
|
446 | - { |
|
447 | - return $this->_messenger; |
|
448 | - } |
|
449 | - |
|
450 | - |
|
451 | - /** |
|
452 | - * This returns whatever the set context string is on this shortcode parser. |
|
453 | - * |
|
454 | - * @since 4.5.0 |
|
455 | - * @return string |
|
456 | - */ |
|
457 | - public function get_set_context() |
|
458 | - { |
|
459 | - return $this->_context; |
|
460 | - } |
|
461 | - |
|
462 | - |
|
463 | - /** |
|
464 | - * This returns whatever the set EE_Message object is on this shortcode. |
|
465 | - * |
|
466 | - * @since 4.9.0 |
|
467 | - * @return EE_Message |
|
468 | - */ |
|
469 | - public function get_set_message() |
|
470 | - { |
|
471 | - return $this->_message; |
|
472 | - } |
|
20 | + /** |
|
21 | + * holds label for library |
|
22 | + * This is used for referencing the library label |
|
23 | + * |
|
24 | + * @access public |
|
25 | + * @var string |
|
26 | + */ |
|
27 | + public $label; |
|
28 | + |
|
29 | + |
|
30 | + /** |
|
31 | + * This property is used for referencing a short description of the library |
|
32 | + * |
|
33 | + * @access public |
|
34 | + * @var string |
|
35 | + */ |
|
36 | + public $description; |
|
37 | + |
|
38 | + |
|
39 | + /** |
|
40 | + * This will hold an array of shortcodes with the key as the shortcode ([shortcode]) and the value as a |
|
41 | + * label/description for the shortcode. |
|
42 | + * |
|
43 | + * @access protected |
|
44 | + * @var array |
|
45 | + */ |
|
46 | + protected $_shortcodes; |
|
47 | + |
|
48 | + |
|
49 | + /** |
|
50 | + * This will hold the incoming data item sent to the parser method |
|
51 | + * |
|
52 | + * @access protected |
|
53 | + * @var mixed (array|object) |
|
54 | + */ |
|
55 | + protected $_data; |
|
56 | + |
|
57 | + |
|
58 | + /** |
|
59 | + * some shortcodes may require extra data to parse. This property is provided for that. |
|
60 | + * |
|
61 | + * @var array |
|
62 | + */ |
|
63 | + protected $_extra_data; |
|
64 | + |
|
65 | + |
|
66 | + /** |
|
67 | + * EE_messenger used to generate the template being parsed. |
|
68 | + * |
|
69 | + * @since 4.5.0 |
|
70 | + * @var EE_messenger |
|
71 | + */ |
|
72 | + protected $_messenger; |
|
73 | + |
|
74 | + |
|
75 | + /** |
|
76 | + * message type used to generate the template being parsed. |
|
77 | + * |
|
78 | + * @since 4.5.0 |
|
79 | + * @var EE_message_type |
|
80 | + */ |
|
81 | + protected $_message_type; |
|
82 | + |
|
83 | + |
|
84 | + /** |
|
85 | + * context used for the template being parsed |
|
86 | + * |
|
87 | + * @since 4.5.0 |
|
88 | + * @var string |
|
89 | + */ |
|
90 | + protected $_context; |
|
91 | + |
|
92 | + |
|
93 | + /** |
|
94 | + * Specific Message Template Group ID |
|
95 | + * |
|
96 | + * @since 4.5.0 |
|
97 | + * @var int |
|
98 | + */ |
|
99 | + protected $_GRP_ID; |
|
100 | + |
|
101 | + |
|
102 | + /** |
|
103 | + * @since 4.9.0 |
|
104 | + * @type EE_Message |
|
105 | + */ |
|
106 | + protected $_message; |
|
107 | + |
|
108 | + |
|
109 | + /** |
|
110 | + * This will hold an instance of the EEH_Parse_Shortcodes helper that will be used when handling list type |
|
111 | + * shortcodes |
|
112 | + * |
|
113 | + * @var EEH_Parse_Shortcodes |
|
114 | + */ |
|
115 | + protected $_shortcode_helper; |
|
116 | + |
|
117 | + |
|
118 | + public function __construct() |
|
119 | + { |
|
120 | + $this->_set_defaults(); |
|
121 | + $this->_init_props(); |
|
122 | + } |
|
123 | + |
|
124 | + |
|
125 | + /** |
|
126 | + * This sets the defaults for the properties. Child classes will override these properties in their _init_props |
|
127 | + * method |
|
128 | + */ |
|
129 | + private function _set_defaults() |
|
130 | + { |
|
131 | + $this->name = $this->description = ''; |
|
132 | + $this->_shortcodes = array(); |
|
133 | + $this->_set_shortcode_helper(); |
|
134 | + } |
|
135 | + |
|
136 | + |
|
137 | + /** |
|
138 | + * loads an instance of the EE_Shortcode_Parser helper when requested |
|
139 | + */ |
|
140 | + protected function _set_shortcode_helper() |
|
141 | + { |
|
142 | + // get shortcode_replace instance- set when _get_messages is called in child... |
|
143 | + $this->_shortcode_helper = new EEH_Parse_Shortcodes(); |
|
144 | + } |
|
145 | + |
|
146 | + |
|
147 | + public function get_shortcode_helper() |
|
148 | + { |
|
149 | + if (! $this->_shortcode_helper instanceof EEH_Parse_Shortcodes) { |
|
150 | + $this->_set_shortcode_helper(); |
|
151 | + } |
|
152 | + return $this->_shortcode_helper; |
|
153 | + } |
|
154 | + |
|
155 | + |
|
156 | + /** |
|
157 | + * This is the public method for kicking of the parser included with each child. It can be overridden by child |
|
158 | + * classes if necessary (see EE_Questions_Answers for example) |
|
159 | + * |
|
160 | + * @param string $shortcode incoming shortcode to be parsed |
|
161 | + * @param mixed (object|array) $data incoming data to be be used for parsing |
|
162 | + * @param mixed (object|array) $extra_data extra incoming data (usually EE_Messages_Addressee) |
|
163 | + * @return string parsed shortcode. |
|
164 | + */ |
|
165 | + public function parser($shortcode, $data, $extra_data = array()) |
|
166 | + { |
|
167 | + |
|
168 | + // filter setup shortcodes |
|
169 | + $this->_shortcodes = $this->get_shortcodes(); |
|
170 | + |
|
171 | + // we need to setup any dynamic shortcodes so that they work with the array_key_exists |
|
172 | + $sc = preg_match_all('/(\[[A-Za-z0-9\_]+_\*)/', $shortcode, $matches); |
|
173 | + $sc_to_verify = ! empty($matches[0]) ? $matches[0][0] . ']' : $shortcode; |
|
174 | + |
|
175 | + // first we want to make sure this is a valid shortcode |
|
176 | + if (! array_key_exists($sc_to_verify, $this->_shortcodes)) { |
|
177 | + return false; |
|
178 | + } //get out, this parser doesn't handle the incoming shortcode. |
|
179 | + $this->_data = $data; |
|
180 | + $this->_extra_data = $extra_data; |
|
181 | + $this->_set_messages_properties(); |
|
182 | + $parsed = apply_filters( |
|
183 | + 'FHEE__' . get_class($this) . '__parser_after', |
|
184 | + $this->_parser($shortcode), |
|
185 | + $shortcode, |
|
186 | + $data, |
|
187 | + $extra_data, |
|
188 | + $this |
|
189 | + ); |
|
190 | + |
|
191 | + // note the below filter applies to ALL shortcode parsers... be careful! |
|
192 | + $parsed = apply_filters('FHEE__EE_Shortcodes__parser_after', $parsed, $shortcode, $data, $extra_data, $this); |
|
193 | + return $parsed; |
|
194 | + } |
|
195 | + |
|
196 | + |
|
197 | + /** |
|
198 | + * This method just returns the shortcodes in the $_shortcodes array property. |
|
199 | + * |
|
200 | + * @access public |
|
201 | + * @return array array of shortcodes => description pairs |
|
202 | + */ |
|
203 | + public function get_shortcodes() |
|
204 | + { |
|
205 | + $this->_shortcodes = apply_filters('FHEE__' . get_class($this) . '__shortcodes', $this->_shortcodes, $this); |
|
206 | + |
|
207 | + // note the below filter applies to ALL shortcode parsers... be careful! |
|
208 | + $this->_shortcodes = apply_filters('FHEE__EE_Shortcodes__shortcodes', $this->_shortcodes, $this); |
|
209 | + |
|
210 | + return $this->_shortcodes; |
|
211 | + } |
|
212 | + |
|
213 | + |
|
214 | + /** |
|
215 | + * Child classes use this method to set the $name, $description, and $_shortcodes properties. |
|
216 | + * |
|
217 | + * @abstract |
|
218 | + * @access protected |
|
219 | + * @return void |
|
220 | + */ |
|
221 | + abstract protected function _init_props(); |
|
222 | + |
|
223 | + |
|
224 | + /** |
|
225 | + * This method will give parsing instructions for each shortcode defined in the _shortcodes array. Child methods |
|
226 | + * will have to take care of handling. |
|
227 | + * |
|
228 | + * @abstract |
|
229 | + * @access protected |
|
230 | + * @param string $shortcode the shortcode to be parsed. |
|
231 | + * @param mixed (object|array) $data incoming data for the parser. The data could be either an object or |
|
232 | + * array because there are some shortcodes that might be replaced by prepared data that |
|
233 | + * has multiple items in a list (i.e. list of attendees in an event and we're showing |
|
234 | + * fname/lname for each attendee). In this case data will be in an array. Otherwise |
|
235 | + * the data shoudl be in a properly formatted object. The |
|
236 | + * EEH_Parse_Shortcodes.helper.php describes the data object we're expecting. |
|
237 | + * @return string parsed shortcode |
|
238 | + */ |
|
239 | + abstract protected function _parser($shortcode); |
|
240 | + |
|
241 | + |
|
242 | + /** |
|
243 | + * This just validates incoming data for list type shortcode parsers (and they call this method) to make sure it |
|
244 | + * meets their requirements |
|
245 | + * |
|
246 | + * @return mixed (void|exception) If validation fails we'll throw an exception. |
|
247 | + */ |
|
248 | + protected function _validate_list_requirements() |
|
249 | + { |
|
250 | + |
|
251 | + // first test to make sure we've got an array! |
|
252 | + if (! is_array($this->_data)) { |
|
253 | + throw new EE_Error( |
|
254 | + sprintf( |
|
255 | + __( |
|
256 | + 'Expecting an array for the data sent to %s. Instead it was %s', |
|
257 | + 'event_espresso' |
|
258 | + ), |
|
259 | + get_class($this), |
|
260 | + gettype($this->_data) |
|
261 | + ) |
|
262 | + ); |
|
263 | + } |
|
264 | + |
|
265 | + // next test to make sure we've got the required template in the index! |
|
266 | + if (! isset($this->_data['template'])) { |
|
267 | + throw new EE_Error( |
|
268 | + sprintf( |
|
269 | + __( |
|
270 | + 'The incoming data does not have the required template index in its array', |
|
271 | + 'event_espresso' |
|
272 | + ) |
|
273 | + ) |
|
274 | + ); |
|
275 | + } |
|
276 | + |
|
277 | + // next test to make sure we've got got a data index in the incoming data array |
|
278 | + if (! isset($this->_data['data'])) { |
|
279 | + throw new EE_Error( |
|
280 | + __( |
|
281 | + 'The incoming data does not have the required data index in its array', |
|
282 | + 'event_espresso' |
|
283 | + ) |
|
284 | + ); |
|
285 | + } |
|
286 | + |
|
287 | + // all is well let's make sure _extra_data always has the values needed. |
|
288 | + // let's make sure that extra_data includes all templates (for later parsing if necessary) |
|
289 | + if (empty($this->_extra_data) || (empty($this->_extra_data['data']) && empty($this->_extra_data['template']))) { |
|
290 | + $this->_extra_data['data'] = $this->_data['data']; |
|
291 | + $this->_extra_data['template'] = $this->_data['template']; |
|
292 | + } |
|
293 | + } |
|
294 | + |
|
295 | + |
|
296 | + /** |
|
297 | + * This returns any attributes that may be existing on an EE_Shortcode |
|
298 | + * |
|
299 | + * @since 4.5.0 |
|
300 | + * @param string $shortcode incoming shortcode |
|
301 | + * @return array An array with the attributes |
|
302 | + */ |
|
303 | + protected function _get_shortcode_attrs($shortcode) |
|
304 | + { |
|
305 | + // make sure the required wp helper function is present |
|
306 | + // require the shortcode file if necessary |
|
307 | + if (! function_exists('shortcode_parse_atts')) { |
|
308 | + require_once(ABSPATH . WPINC . '/shortcodes.php'); |
|
309 | + } |
|
310 | + |
|
311 | + // let's get any attributes that may be present and set the defaults. |
|
312 | + $shortcode_to_parse = str_replace('[', '', str_replace(']', '', $shortcode)); |
|
313 | + return shortcode_parse_atts($shortcode_to_parse); |
|
314 | + } |
|
315 | + |
|
316 | + |
|
317 | + /** |
|
318 | + * Conditional blocks are shortcode patterns with an opening conditional tag `[IF_*]` and a corresponding |
|
319 | + * closing tag (eg `[/IF_*]`). The content within the tags will be displayed/hidden depending on whatever |
|
320 | + * conditions existed in the opening tag. This method handles parsing the actual template to show/hide this |
|
321 | + * conditional content. |
|
322 | + * |
|
323 | + * @since 4.9.32 |
|
324 | + * |
|
325 | + * @param string $shortcode This should be original shortcode as used in the template and passed to the parser. |
|
326 | + * @param bool $show true means the opening and closing tags are removed and the content is left showing, |
|
327 | + * false means the opening and closing tags and the contained content are removed. |
|
328 | + * @return string The template for the shortcode is returned. |
|
329 | + */ |
|
330 | + protected function _mutate_conditional_block_in_template($shortcode, $show = true) |
|
331 | + { |
|
332 | + // first let's get all the matches in the template for this particular shortcode. |
|
333 | + preg_match_all('~' . $this->_get_conditional_block_regex($shortcode) . '~', $this->_data['template'], $matches); |
|
334 | + |
|
335 | + if ($matches && is_array($matches[0]) && ! empty($matches[0])) { |
|
336 | + // we need to hide all instances of the matches |
|
337 | + foreach ($matches[0] as $index => $content_to_show_or_hide) { |
|
338 | + $content_to_show_or_hide = preg_quote($content_to_show_or_hide); |
|
339 | + $replacement = $show ? $matches[4][ $index ] : ''; |
|
340 | + $this->_data['template'] = preg_replace( |
|
341 | + '~' . $content_to_show_or_hide . '~', |
|
342 | + $replacement, |
|
343 | + $this->_data['template'] |
|
344 | + ); |
|
345 | + } |
|
346 | + } |
|
347 | + // return $template |
|
348 | + return $this->_data['template']; |
|
349 | + } |
|
350 | + |
|
351 | + |
|
352 | + /** |
|
353 | + * This returns the regex pattern to use for conditional shortcodes parsing. |
|
354 | + * |
|
355 | + * Note: regex comes in part from the WP `get_shortcode_regex` expression in \wp-includes\shortcodes.php |
|
356 | + * |
|
357 | + * @param $shortcode |
|
358 | + * @since 4.9.32 |
|
359 | + * @return string |
|
360 | + */ |
|
361 | + private function _get_conditional_block_regex($shortcode) |
|
362 | + { |
|
363 | + // get just the shortcode tag for the match |
|
364 | + preg_match('@\[([^<>&/\[\]\x00-\x20=]++)@', $shortcode, $shortcode_tag_matches); |
|
365 | + if (empty($shortcode_tag_matches[1])) { |
|
366 | + return $this->_data['template']; |
|
367 | + } |
|
368 | + |
|
369 | + $shortcode_tag = $shortcode_tag_matches[1]; |
|
370 | + // get attributes_part_of_tag |
|
371 | + $attributes_part = preg_quote(str_replace(array($shortcode_tag, '[', ']'), '', $shortcode)); |
|
372 | + // escape |
|
373 | + $shortcode_tag = preg_quote($shortcode_tag); |
|
374 | + |
|
375 | + return |
|
376 | + '\[' // Opening Bracket |
|
377 | + . "($shortcode_tag)$attributes_part" // 1: Shortcode Name |
|
378 | + . '(?![\w-])' // Not followed by word character or hyphen |
|
379 | + . '(' // 2: Unroll the loop: Inside the opening shortcode tag |
|
380 | + . '[^\]\/]*' // Not a closing bracket or forward slash |
|
381 | + . '(?:' |
|
382 | + . '\/(?!\])' // A forward slash not followed by a closing bracket |
|
383 | + . '[^\]\/]*' // Not a closing bracket or forward slash. |
|
384 | + . ')*?' |
|
385 | + . ')' |
|
386 | + . '(?:' |
|
387 | + . '(\/)' // 3. Self closing tag ... |
|
388 | + . '\]' // ... and closing bracket |
|
389 | + . '|' |
|
390 | + . '\]' // Closing bracket |
|
391 | + . '(?:' |
|
392 | + . '(' // 4: Unroll the loop: Optionally, anything between the opening and closing brackets |
|
393 | + . '[^\[]*+' // Not an opening bracket |
|
394 | + . '(?:' |
|
395 | + . '\[(?!\/\1\])' // An opening bracket not followed by the closing shortcode tag. |
|
396 | + . '[^\[]*+' // Not an opening bracket |
|
397 | + . ')*+' |
|
398 | + . ')' |
|
399 | + . '\[\/\1\]' // Closing shortcode tag |
|
400 | + . ')?' |
|
401 | + . ')'; |
|
402 | + } |
|
403 | + |
|
404 | + |
|
405 | + /** |
|
406 | + * This sets the properties related to the messages system |
|
407 | + * |
|
408 | + * @since 4.5.0 |
|
409 | + * @return void |
|
410 | + */ |
|
411 | + protected function _set_messages_properties() |
|
412 | + { |
|
413 | + // should be in _extra_data |
|
414 | + if (isset($this->_extra_data['messenger'])) { |
|
415 | + $this->_messenger = $this->_extra_data['messenger']; |
|
416 | + $this->_message_type = $this->_extra_data['message_type']; |
|
417 | + $this->_context = $this->_extra_data['message'] instanceof EE_Message |
|
418 | + ? $this->_extra_data['message']->context() : ''; |
|
419 | + $this->_GRP_ID = $this->_extra_data['message'] instanceof EE_Message |
|
420 | + ? $this->_extra_data['message']->GRP_ID() : 0; |
|
421 | + $this->_message = $this->_extra_data['message'] instanceof EE_Message ? $this->_extra_data['message'] |
|
422 | + : null; |
|
423 | + } |
|
424 | + } |
|
425 | + |
|
426 | + |
|
427 | + /** |
|
428 | + * This returns whatever the set message type object is that was set on this shortcode parser. |
|
429 | + * |
|
430 | + * @since 4.5.0 |
|
431 | + * @return EE_message_type |
|
432 | + */ |
|
433 | + public function get_set_message_type() |
|
434 | + { |
|
435 | + return $this->_message_type; |
|
436 | + } |
|
437 | + |
|
438 | + |
|
439 | + /** |
|
440 | + * This returns whatever the set messenger object is that was set on this shortcode parser |
|
441 | + * |
|
442 | + * @since 4.5.0 |
|
443 | + * @return EE_messenger |
|
444 | + */ |
|
445 | + public function get_set_messenger() |
|
446 | + { |
|
447 | + return $this->_messenger; |
|
448 | + } |
|
449 | + |
|
450 | + |
|
451 | + /** |
|
452 | + * This returns whatever the set context string is on this shortcode parser. |
|
453 | + * |
|
454 | + * @since 4.5.0 |
|
455 | + * @return string |
|
456 | + */ |
|
457 | + public function get_set_context() |
|
458 | + { |
|
459 | + return $this->_context; |
|
460 | + } |
|
461 | + |
|
462 | + |
|
463 | + /** |
|
464 | + * This returns whatever the set EE_Message object is on this shortcode. |
|
465 | + * |
|
466 | + * @since 4.9.0 |
|
467 | + * @return EE_Message |
|
468 | + */ |
|
469 | + public function get_set_message() |
|
470 | + { |
|
471 | + return $this->_message; |
|
472 | + } |
|
473 | 473 | } |
@@ -146,7 +146,7 @@ discard block |
||
146 | 146 | |
147 | 147 | public function get_shortcode_helper() |
148 | 148 | { |
149 | - if (! $this->_shortcode_helper instanceof EEH_Parse_Shortcodes) { |
|
149 | + if ( ! $this->_shortcode_helper instanceof EEH_Parse_Shortcodes) { |
|
150 | 150 | $this->_set_shortcode_helper(); |
151 | 151 | } |
152 | 152 | return $this->_shortcode_helper; |
@@ -170,17 +170,17 @@ discard block |
||
170 | 170 | |
171 | 171 | // we need to setup any dynamic shortcodes so that they work with the array_key_exists |
172 | 172 | $sc = preg_match_all('/(\[[A-Za-z0-9\_]+_\*)/', $shortcode, $matches); |
173 | - $sc_to_verify = ! empty($matches[0]) ? $matches[0][0] . ']' : $shortcode; |
|
173 | + $sc_to_verify = ! empty($matches[0]) ? $matches[0][0].']' : $shortcode; |
|
174 | 174 | |
175 | 175 | // first we want to make sure this is a valid shortcode |
176 | - if (! array_key_exists($sc_to_verify, $this->_shortcodes)) { |
|
176 | + if ( ! array_key_exists($sc_to_verify, $this->_shortcodes)) { |
|
177 | 177 | return false; |
178 | 178 | } //get out, this parser doesn't handle the incoming shortcode. |
179 | 179 | $this->_data = $data; |
180 | 180 | $this->_extra_data = $extra_data; |
181 | 181 | $this->_set_messages_properties(); |
182 | 182 | $parsed = apply_filters( |
183 | - 'FHEE__' . get_class($this) . '__parser_after', |
|
183 | + 'FHEE__'.get_class($this).'__parser_after', |
|
184 | 184 | $this->_parser($shortcode), |
185 | 185 | $shortcode, |
186 | 186 | $data, |
@@ -202,7 +202,7 @@ discard block |
||
202 | 202 | */ |
203 | 203 | public function get_shortcodes() |
204 | 204 | { |
205 | - $this->_shortcodes = apply_filters('FHEE__' . get_class($this) . '__shortcodes', $this->_shortcodes, $this); |
|
205 | + $this->_shortcodes = apply_filters('FHEE__'.get_class($this).'__shortcodes', $this->_shortcodes, $this); |
|
206 | 206 | |
207 | 207 | // note the below filter applies to ALL shortcode parsers... be careful! |
208 | 208 | $this->_shortcodes = apply_filters('FHEE__EE_Shortcodes__shortcodes', $this->_shortcodes, $this); |
@@ -249,7 +249,7 @@ discard block |
||
249 | 249 | { |
250 | 250 | |
251 | 251 | // first test to make sure we've got an array! |
252 | - if (! is_array($this->_data)) { |
|
252 | + if ( ! is_array($this->_data)) { |
|
253 | 253 | throw new EE_Error( |
254 | 254 | sprintf( |
255 | 255 | __( |
@@ -263,7 +263,7 @@ discard block |
||
263 | 263 | } |
264 | 264 | |
265 | 265 | // next test to make sure we've got the required template in the index! |
266 | - if (! isset($this->_data['template'])) { |
|
266 | + if ( ! isset($this->_data['template'])) { |
|
267 | 267 | throw new EE_Error( |
268 | 268 | sprintf( |
269 | 269 | __( |
@@ -275,7 +275,7 @@ discard block |
||
275 | 275 | } |
276 | 276 | |
277 | 277 | // next test to make sure we've got got a data index in the incoming data array |
278 | - if (! isset($this->_data['data'])) { |
|
278 | + if ( ! isset($this->_data['data'])) { |
|
279 | 279 | throw new EE_Error( |
280 | 280 | __( |
281 | 281 | 'The incoming data does not have the required data index in its array', |
@@ -304,8 +304,8 @@ discard block |
||
304 | 304 | { |
305 | 305 | // make sure the required wp helper function is present |
306 | 306 | // require the shortcode file if necessary |
307 | - if (! function_exists('shortcode_parse_atts')) { |
|
308 | - require_once(ABSPATH . WPINC . '/shortcodes.php'); |
|
307 | + if ( ! function_exists('shortcode_parse_atts')) { |
|
308 | + require_once(ABSPATH.WPINC.'/shortcodes.php'); |
|
309 | 309 | } |
310 | 310 | |
311 | 311 | // let's get any attributes that may be present and set the defaults. |
@@ -330,15 +330,15 @@ discard block |
||
330 | 330 | protected function _mutate_conditional_block_in_template($shortcode, $show = true) |
331 | 331 | { |
332 | 332 | // first let's get all the matches in the template for this particular shortcode. |
333 | - preg_match_all('~' . $this->_get_conditional_block_regex($shortcode) . '~', $this->_data['template'], $matches); |
|
333 | + preg_match_all('~'.$this->_get_conditional_block_regex($shortcode).'~', $this->_data['template'], $matches); |
|
334 | 334 | |
335 | 335 | if ($matches && is_array($matches[0]) && ! empty($matches[0])) { |
336 | 336 | // we need to hide all instances of the matches |
337 | 337 | foreach ($matches[0] as $index => $content_to_show_or_hide) { |
338 | 338 | $content_to_show_or_hide = preg_quote($content_to_show_or_hide); |
339 | - $replacement = $show ? $matches[4][ $index ] : ''; |
|
339 | + $replacement = $show ? $matches[4][$index] : ''; |
|
340 | 340 | $this->_data['template'] = preg_replace( |
341 | - '~' . $content_to_show_or_hide . '~', |
|
341 | + '~'.$content_to_show_or_hide.'~', |
|
342 | 342 | $replacement, |
343 | 343 | $this->_data['template'] |
344 | 344 | ); |
@@ -32,42 +32,42 @@ |
||
32 | 32 | { |
33 | 33 | |
34 | 34 | |
35 | - public function __construct() |
|
36 | - { |
|
37 | - parent::__construct(); |
|
38 | - } |
|
35 | + public function __construct() |
|
36 | + { |
|
37 | + parent::__construct(); |
|
38 | + } |
|
39 | 39 | |
40 | 40 | |
41 | - protected function _init_props() |
|
42 | - { |
|
43 | - $this->label = __('Event Meta Shortcodes', 'event_espresso'); |
|
44 | - $this->description = __('All shortcodes related to Event Meta data', 'event_espresso'); |
|
45 | - $this->_shortcodes = array(); |
|
46 | - } |
|
41 | + protected function _init_props() |
|
42 | + { |
|
43 | + $this->label = __('Event Meta Shortcodes', 'event_espresso'); |
|
44 | + $this->description = __('All shortcodes related to Event Meta data', 'event_espresso'); |
|
45 | + $this->_shortcodes = array(); |
|
46 | + } |
|
47 | 47 | |
48 | 48 | |
49 | - /** |
|
50 | - * We have to overload the parent parser method because of the dynamic nature of custom event meta |
|
51 | - * |
|
52 | - * @param string $shortcode Incoming shortcode |
|
53 | - * @param mixed (array|object) $data incoming data object/array |
|
54 | - * @return string parsed code. |
|
55 | - */ |
|
56 | - public function parser($shortcode, $data, $extra_data = array()) |
|
57 | - { |
|
49 | + /** |
|
50 | + * We have to overload the parent parser method because of the dynamic nature of custom event meta |
|
51 | + * |
|
52 | + * @param string $shortcode Incoming shortcode |
|
53 | + * @param mixed (array|object) $data incoming data object/array |
|
54 | + * @return string parsed code. |
|
55 | + */ |
|
56 | + public function parser($shortcode, $data, $extra_data = array()) |
|
57 | + { |
|
58 | 58 | |
59 | - // all shortcodes will be checked in the post_meta table (assuming the shortcode matches the post_meta key); |
|
60 | - if (empty($this->_data['ID'])) { |
|
61 | - return ''; |
|
62 | - } // need the event id to do anything! |
|
59 | + // all shortcodes will be checked in the post_meta table (assuming the shortcode matches the post_meta key); |
|
60 | + if (empty($this->_data['ID'])) { |
|
61 | + return ''; |
|
62 | + } // need the event id to do anything! |
|
63 | 63 | |
64 | - $meta = get_post_meta($this->_data['ID'], $shortcode, true); |
|
64 | + $meta = get_post_meta($this->_data['ID'], $shortcode, true); |
|
65 | 65 | |
66 | - return ! empty($meta) ? $meta : ''; |
|
67 | - } |
|
66 | + return ! empty($meta) ? $meta : ''; |
|
67 | + } |
|
68 | 68 | |
69 | 69 | |
70 | - protected function _parser($shortcode) |
|
71 | - { |
|
72 | - } |
|
70 | + protected function _parser($shortcode) |
|
71 | + { |
|
72 | + } |
|
73 | 73 | } |
@@ -152,6 +152,6 @@ |
||
152 | 152 | private function _get_events_from_registration(EE_Registration $registration) |
153 | 153 | { |
154 | 154 | return isset($this->_extra_data['data']->registrations) |
155 | - ? array($this->_extra_data['data']->registrations[ $registration->ID() ]['evt_obj']) : array(); |
|
155 | + ? array($this->_extra_data['data']->registrations[$registration->ID()]['evt_obj']) : array(); |
|
156 | 156 | } |
157 | 157 | } |
@@ -19,153 +19,153 @@ |
||
19 | 19 | class EE_Event_List_Shortcodes extends EE_Shortcodes |
20 | 20 | { |
21 | 21 | |
22 | - public function __construct() |
|
23 | - { |
|
24 | - parent::__construct(); |
|
25 | - } |
|
26 | - |
|
27 | - |
|
28 | - protected function _init_props() |
|
29 | - { |
|
30 | - $this->label = esc_html__('Event List Shortcodes', 'event_espresso'); |
|
31 | - $this->description = esc_html__('All shortcodes specific to event lists', 'event_espresso'); |
|
32 | - $this->_shortcodes = array( |
|
33 | - '[EVENT_LIST]' => esc_html__('Will output a list of events', 'event_espresso'), |
|
34 | - ); |
|
35 | - } |
|
36 | - |
|
37 | - |
|
38 | - /** |
|
39 | - * @param string $shortcode |
|
40 | - * @return string |
|
41 | - * @throws EE_Error |
|
42 | - * @throws ReflectionException |
|
43 | - */ |
|
44 | - protected function _parser($shortcode) |
|
45 | - { |
|
46 | - switch ($shortcode) { |
|
47 | - case '[EVENT_LIST]': |
|
48 | - return $this->_get_event_list(); |
|
49 | - } |
|
50 | - return ''; |
|
51 | - } |
|
52 | - |
|
53 | - |
|
54 | - /** |
|
55 | - * figure out what the incoming data is and then return the appropriate parsed value. |
|
56 | - * |
|
57 | - * @return string |
|
58 | - * @throws EE_Error |
|
59 | - * @throws ReflectionException |
|
60 | - */ |
|
61 | - private function _get_event_list() |
|
62 | - { |
|
63 | - $this->_validate_list_requirements(); |
|
64 | - |
|
65 | - if ($this->_data['data'] instanceof EE_Messages_Addressee) { |
|
66 | - return $this->_get_event_list_for_main(); |
|
67 | - } elseif ($this->_data['data'] instanceof EE_Registration) { |
|
68 | - return $this->_get_event_list_for_registration(); |
|
69 | - } |
|
70 | - // prevent recursive loop |
|
71 | - return ''; |
|
72 | - } |
|
73 | - |
|
74 | - |
|
75 | - /** |
|
76 | - * This returns the parsed event list for main template |
|
77 | - * |
|
78 | - * @return string |
|
79 | - */ |
|
80 | - private function _get_event_list_for_main() |
|
81 | - { |
|
82 | - |
|
83 | - $valid_shortcodes = array( |
|
84 | - 'event', |
|
85 | - 'attendee_list', |
|
86 | - 'ticket_list', |
|
87 | - 'datetime_list', |
|
88 | - 'venue', |
|
89 | - 'attendee', |
|
90 | - 'recipient_list', |
|
91 | - 'recipient_details', |
|
92 | - 'primary_registration_list', |
|
93 | - 'primary_registration_details', |
|
94 | - 'event_author', |
|
95 | - 'organization', |
|
96 | - ); |
|
97 | - $template = $this->_data['template']; |
|
98 | - $data = $this->_data['data']; |
|
99 | - $events = ''; |
|
100 | - |
|
101 | - // now we need to loop through the events array in EE_Messages_Addressee and send data to the EE_Parser helper. |
|
102 | - foreach ($data->events as $event) { |
|
103 | - $events .= $this->_shortcode_helper->parse_event_list_template( |
|
104 | - $template, |
|
105 | - $event['event'], |
|
106 | - $valid_shortcodes, |
|
107 | - $this->_extra_data |
|
108 | - ); |
|
109 | - } |
|
110 | - return $events; |
|
111 | - } |
|
112 | - |
|
113 | - |
|
114 | - /** |
|
115 | - * This returns the parsed event list for an attendee |
|
116 | - * |
|
117 | - * @return string |
|
118 | - * @throws EE_Error |
|
119 | - * @throws ReflectionException |
|
120 | - */ |
|
121 | - private function _get_event_list_for_registration() |
|
122 | - { |
|
123 | - $valid_shortcodes = array( |
|
124 | - 'event', |
|
125 | - 'ticket_list', |
|
126 | - 'datetime_list', |
|
127 | - 'attendee', |
|
128 | - 'event_author', |
|
129 | - 'recipient_details', |
|
130 | - 'recipient_list', |
|
131 | - 'venue', |
|
132 | - 'organization', |
|
133 | - ); |
|
134 | - $template = is_array($this->_data['template']) && isset($this->_data['template']['event_list']) |
|
135 | - ? $this->_data['template']['event_list'] : $this->_extra_data['template']['event_list']; |
|
136 | - $registration = $this->_data['data']; |
|
137 | - |
|
138 | - // let's remove any existing [ATTENDEE_LIST] shortcode from the event list template so that we don't get recursion. |
|
139 | - $template = str_replace('[ATTENDEE_LIST]', '', $template); |
|
140 | - |
|
141 | - // here we're setting up the events for the event_list template for THIS registration. |
|
142 | - $all_events = $this->_get_events_from_registration($registration); |
|
143 | - |
|
144 | - // we're NOT going to prepare a list of attendees this time around |
|
145 | - $events = ''; |
|
146 | - |
|
147 | - foreach ((array) $all_events as $event) { |
|
148 | - $events .= $this->_shortcode_helper->parse_event_list_template( |
|
149 | - $template, |
|
150 | - $event, |
|
151 | - $valid_shortcodes, |
|
152 | - $this->_extra_data |
|
153 | - ); |
|
154 | - } |
|
155 | - |
|
156 | - return $events; |
|
157 | - } |
|
158 | - |
|
159 | - |
|
160 | - /** |
|
161 | - * @param EE_Registration $registration |
|
162 | - * @return array |
|
163 | - * @throws EE_Error |
|
164 | - * @throws ReflectionException |
|
165 | - */ |
|
166 | - private function _get_events_from_registration(EE_Registration $registration) |
|
167 | - { |
|
168 | - return isset($this->_extra_data['data']->registrations) |
|
169 | - ? array($this->_extra_data['data']->registrations[ $registration->ID() ]['evt_obj']) : array(); |
|
170 | - } |
|
22 | + public function __construct() |
|
23 | + { |
|
24 | + parent::__construct(); |
|
25 | + } |
|
26 | + |
|
27 | + |
|
28 | + protected function _init_props() |
|
29 | + { |
|
30 | + $this->label = esc_html__('Event List Shortcodes', 'event_espresso'); |
|
31 | + $this->description = esc_html__('All shortcodes specific to event lists', 'event_espresso'); |
|
32 | + $this->_shortcodes = array( |
|
33 | + '[EVENT_LIST]' => esc_html__('Will output a list of events', 'event_espresso'), |
|
34 | + ); |
|
35 | + } |
|
36 | + |
|
37 | + |
|
38 | + /** |
|
39 | + * @param string $shortcode |
|
40 | + * @return string |
|
41 | + * @throws EE_Error |
|
42 | + * @throws ReflectionException |
|
43 | + */ |
|
44 | + protected function _parser($shortcode) |
|
45 | + { |
|
46 | + switch ($shortcode) { |
|
47 | + case '[EVENT_LIST]': |
|
48 | + return $this->_get_event_list(); |
|
49 | + } |
|
50 | + return ''; |
|
51 | + } |
|
52 | + |
|
53 | + |
|
54 | + /** |
|
55 | + * figure out what the incoming data is and then return the appropriate parsed value. |
|
56 | + * |
|
57 | + * @return string |
|
58 | + * @throws EE_Error |
|
59 | + * @throws ReflectionException |
|
60 | + */ |
|
61 | + private function _get_event_list() |
|
62 | + { |
|
63 | + $this->_validate_list_requirements(); |
|
64 | + |
|
65 | + if ($this->_data['data'] instanceof EE_Messages_Addressee) { |
|
66 | + return $this->_get_event_list_for_main(); |
|
67 | + } elseif ($this->_data['data'] instanceof EE_Registration) { |
|
68 | + return $this->_get_event_list_for_registration(); |
|
69 | + } |
|
70 | + // prevent recursive loop |
|
71 | + return ''; |
|
72 | + } |
|
73 | + |
|
74 | + |
|
75 | + /** |
|
76 | + * This returns the parsed event list for main template |
|
77 | + * |
|
78 | + * @return string |
|
79 | + */ |
|
80 | + private function _get_event_list_for_main() |
|
81 | + { |
|
82 | + |
|
83 | + $valid_shortcodes = array( |
|
84 | + 'event', |
|
85 | + 'attendee_list', |
|
86 | + 'ticket_list', |
|
87 | + 'datetime_list', |
|
88 | + 'venue', |
|
89 | + 'attendee', |
|
90 | + 'recipient_list', |
|
91 | + 'recipient_details', |
|
92 | + 'primary_registration_list', |
|
93 | + 'primary_registration_details', |
|
94 | + 'event_author', |
|
95 | + 'organization', |
|
96 | + ); |
|
97 | + $template = $this->_data['template']; |
|
98 | + $data = $this->_data['data']; |
|
99 | + $events = ''; |
|
100 | + |
|
101 | + // now we need to loop through the events array in EE_Messages_Addressee and send data to the EE_Parser helper. |
|
102 | + foreach ($data->events as $event) { |
|
103 | + $events .= $this->_shortcode_helper->parse_event_list_template( |
|
104 | + $template, |
|
105 | + $event['event'], |
|
106 | + $valid_shortcodes, |
|
107 | + $this->_extra_data |
|
108 | + ); |
|
109 | + } |
|
110 | + return $events; |
|
111 | + } |
|
112 | + |
|
113 | + |
|
114 | + /** |
|
115 | + * This returns the parsed event list for an attendee |
|
116 | + * |
|
117 | + * @return string |
|
118 | + * @throws EE_Error |
|
119 | + * @throws ReflectionException |
|
120 | + */ |
|
121 | + private function _get_event_list_for_registration() |
|
122 | + { |
|
123 | + $valid_shortcodes = array( |
|
124 | + 'event', |
|
125 | + 'ticket_list', |
|
126 | + 'datetime_list', |
|
127 | + 'attendee', |
|
128 | + 'event_author', |
|
129 | + 'recipient_details', |
|
130 | + 'recipient_list', |
|
131 | + 'venue', |
|
132 | + 'organization', |
|
133 | + ); |
|
134 | + $template = is_array($this->_data['template']) && isset($this->_data['template']['event_list']) |
|
135 | + ? $this->_data['template']['event_list'] : $this->_extra_data['template']['event_list']; |
|
136 | + $registration = $this->_data['data']; |
|
137 | + |
|
138 | + // let's remove any existing [ATTENDEE_LIST] shortcode from the event list template so that we don't get recursion. |
|
139 | + $template = str_replace('[ATTENDEE_LIST]', '', $template); |
|
140 | + |
|
141 | + // here we're setting up the events for the event_list template for THIS registration. |
|
142 | + $all_events = $this->_get_events_from_registration($registration); |
|
143 | + |
|
144 | + // we're NOT going to prepare a list of attendees this time around |
|
145 | + $events = ''; |
|
146 | + |
|
147 | + foreach ((array) $all_events as $event) { |
|
148 | + $events .= $this->_shortcode_helper->parse_event_list_template( |
|
149 | + $template, |
|
150 | + $event, |
|
151 | + $valid_shortcodes, |
|
152 | + $this->_extra_data |
|
153 | + ); |
|
154 | + } |
|
155 | + |
|
156 | + return $events; |
|
157 | + } |
|
158 | + |
|
159 | + |
|
160 | + /** |
|
161 | + * @param EE_Registration $registration |
|
162 | + * @return array |
|
163 | + * @throws EE_Error |
|
164 | + * @throws ReflectionException |
|
165 | + */ |
|
166 | + private function _get_events_from_registration(EE_Registration $registration) |
|
167 | + { |
|
168 | + return isset($this->_extra_data['data']->registrations) |
|
169 | + ? array($this->_extra_data['data']->registrations[ $registration->ID() ]['evt_obj']) : array(); |
|
170 | + } |
|
171 | 171 | } |
@@ -146,13 +146,13 @@ |
||
146 | 146 | |
147 | 147 | private function _get_datetimes_from_event(EE_Event $event, $att = null) |
148 | 148 | { |
149 | - return isset($this->_extra_data['data']->events) ? $this->_extra_data['data']->events[ $event->ID( |
|
150 | - ) ]['dtt_objs'] : array(); |
|
149 | + return isset($this->_extra_data['data']->events) ? $this->_extra_data['data']->events[$event->ID( |
|
150 | + )]['dtt_objs'] : array(); |
|
151 | 151 | } |
152 | 152 | |
153 | 153 | private function _get_datetimes_from_ticket(EE_Ticket $ticket, $att = null) |
154 | 154 | { |
155 | - return isset($this->_extra_data['data']->tickets) ? $this->_extra_data['data']->tickets[ $ticket->ID( |
|
156 | - ) ]['dtt_objs'] : array(); |
|
155 | + return isset($this->_extra_data['data']->tickets) ? $this->_extra_data['data']->tickets[$ticket->ID( |
|
156 | + )]['dtt_objs'] : array(); |
|
157 | 157 | } |
158 | 158 | } |
@@ -22,141 +22,141 @@ |
||
22 | 22 | { |
23 | 23 | |
24 | 24 | |
25 | - protected function _init_props() |
|
26 | - { |
|
27 | - $this->label = esc_html__('Datetime List Shortcodes', 'event_espresso'); |
|
28 | - $this->description = esc_html__('All shortcodes specific to datetime lists', 'event_espresso'); |
|
29 | - $this->_shortcodes = array( |
|
30 | - '[DATETIME_LIST]' => esc_html__( |
|
31 | - 'Will output a list of datetimes according to the layout specified in the datetime list field.', |
|
32 | - 'event_espresso' |
|
33 | - ), |
|
34 | - ); |
|
35 | - } |
|
36 | - |
|
37 | - |
|
38 | - /** |
|
39 | - * @param string $shortcode |
|
40 | - * @return string |
|
41 | - * @throws EE_Error |
|
42 | - */ |
|
43 | - protected function _parser($shortcode) |
|
44 | - { |
|
45 | - switch ($shortcode) { |
|
46 | - case '[DATETIME_LIST]': |
|
47 | - return $this->_get_datetime_list(); |
|
48 | - } |
|
49 | - return ''; |
|
50 | - } |
|
51 | - |
|
52 | - |
|
53 | - /** |
|
54 | - * figure out what the incoming data is and then return the appropriate parsed value. |
|
55 | - * |
|
56 | - * @return string |
|
57 | - * @throws EE_Error |
|
58 | - */ |
|
59 | - private function _get_datetime_list() |
|
60 | - { |
|
61 | - $this->_validate_list_requirements(); |
|
62 | - |
|
63 | - if ($this->_data['data'] instanceof EE_Ticket) { |
|
64 | - return $this->_get_datetime_list_for_ticket(); |
|
65 | - } elseif ($this->_data['data'] instanceof EE_Event) { |
|
66 | - return $this->_get_datetime_list_for_event(); |
|
67 | - } elseif ($this->_data['data'] instanceof EE_Messages_Addressee && $this->_data['data']->reg_obj instanceof EE_Registration) { |
|
68 | - return $this->_get_datetime_list_for_registration(); |
|
69 | - } |
|
70 | - // prevent recursive loop |
|
71 | - return ''; |
|
72 | - } |
|
73 | - |
|
74 | - |
|
75 | - /** |
|
76 | - * return parsed list of datetimes for an event |
|
77 | - * |
|
78 | - * @return string |
|
79 | - */ |
|
80 | - private function _get_datetime_list_for_event() |
|
81 | - { |
|
82 | - $valid_shortcodes = array('datetime', 'attendee'); |
|
83 | - $template = is_array($this->_data['template']) && isset($this->_data['template']['datetime_list']) |
|
84 | - ? $this->_data['template']['datetime_list'] : $this->_extra_data['template']['datetime_list']; |
|
85 | - $event = $this->_data['data']; |
|
86 | - |
|
87 | - // here we're setting up the datetimes for the datetime list template for THIS event. |
|
88 | - $dtt_parsed = ''; |
|
89 | - $datetimes = $this->_get_datetimes_from_event($event); |
|
90 | - |
|
91 | - // each datetime in this case should be an datetime object. |
|
92 | - foreach ($datetimes as $datetime) { |
|
93 | - $dtt_parsed .= $this->_shortcode_helper->parse_datetime_list_template( |
|
94 | - $template, |
|
95 | - $datetime, |
|
96 | - $valid_shortcodes, |
|
97 | - $this->_extra_data |
|
98 | - ); |
|
99 | - } |
|
100 | - |
|
101 | - return $dtt_parsed; |
|
102 | - } |
|
103 | - |
|
104 | - |
|
105 | - /** |
|
106 | - * return parsed list of datetimes for an ticket |
|
107 | - * |
|
108 | - * @return string |
|
109 | - */ |
|
110 | - private function _get_datetime_list_for_ticket() |
|
111 | - { |
|
112 | - $valid_shortcodes = array('datetime', 'attendee'); |
|
113 | - |
|
114 | - $template = is_array($this->_data['template']) && isset($this->_data['template']['datetime_list']) |
|
115 | - ? $this->_data['template']['datetime_list'] : $this->_extra_data['template']['datetime_list']; |
|
116 | - $ticket = $this->_data['data']; |
|
117 | - |
|
118 | - // here we're setting up the datetimes for the datetime list template for THIS ticket. |
|
119 | - $dtt_parsed = ''; |
|
120 | - $datetimes = $this->_get_datetimes_from_ticket($ticket); |
|
121 | - |
|
122 | - // each datetime in this case should be an datetime object. |
|
123 | - foreach ($datetimes as $datetime) { |
|
124 | - $dtt_parsed .= $this->_shortcode_helper->parse_datetime_list_template( |
|
125 | - $template, |
|
126 | - $datetime, |
|
127 | - $valid_shortcodes, |
|
128 | - $this->_extra_data |
|
129 | - ); |
|
130 | - } |
|
131 | - |
|
132 | - return $dtt_parsed; |
|
133 | - } |
|
134 | - |
|
135 | - |
|
136 | - /** |
|
137 | - * return parsed list of datetimes from a given registration. |
|
138 | - * |
|
139 | - * @return string |
|
140 | - */ |
|
141 | - private function _get_datetime_list_for_registration() |
|
142 | - { |
|
143 | - $registration = $this->_data['data']->reg_obj; |
|
144 | - |
|
145 | - // now let's just get the ticket, set $this->_data['data'] to the ticket and then call _get_datetime_list_for__ticket(); |
|
146 | - $this->_data['data'] = $registration->ticket(); |
|
147 | - return $this->_get_datetime_list_for_ticket(); |
|
148 | - } |
|
149 | - |
|
150 | - |
|
151 | - private function _get_datetimes_from_event(EE_Event $event, $att = null) |
|
152 | - { |
|
153 | - return isset($this->_extra_data['data']->events) ? $this->_extra_data['data']->events[ $event->ID( |
|
154 | - ) ]['dtt_objs'] : array(); |
|
155 | - } |
|
156 | - |
|
157 | - private function _get_datetimes_from_ticket(EE_Ticket $ticket, $att = null) |
|
158 | - { |
|
159 | - return isset($this->_extra_data['data']->tickets) ? $this->_extra_data['data']->tickets[ $ticket->ID( |
|
160 | - ) ]['dtt_objs'] : array(); |
|
161 | - } |
|
25 | + protected function _init_props() |
|
26 | + { |
|
27 | + $this->label = esc_html__('Datetime List Shortcodes', 'event_espresso'); |
|
28 | + $this->description = esc_html__('All shortcodes specific to datetime lists', 'event_espresso'); |
|
29 | + $this->_shortcodes = array( |
|
30 | + '[DATETIME_LIST]' => esc_html__( |
|
31 | + 'Will output a list of datetimes according to the layout specified in the datetime list field.', |
|
32 | + 'event_espresso' |
|
33 | + ), |
|
34 | + ); |
|
35 | + } |
|
36 | + |
|
37 | + |
|
38 | + /** |
|
39 | + * @param string $shortcode |
|
40 | + * @return string |
|
41 | + * @throws EE_Error |
|
42 | + */ |
|
43 | + protected function _parser($shortcode) |
|
44 | + { |
|
45 | + switch ($shortcode) { |
|
46 | + case '[DATETIME_LIST]': |
|
47 | + return $this->_get_datetime_list(); |
|
48 | + } |
|
49 | + return ''; |
|
50 | + } |
|
51 | + |
|
52 | + |
|
53 | + /** |
|
54 | + * figure out what the incoming data is and then return the appropriate parsed value. |
|
55 | + * |
|
56 | + * @return string |
|
57 | + * @throws EE_Error |
|
58 | + */ |
|
59 | + private function _get_datetime_list() |
|
60 | + { |
|
61 | + $this->_validate_list_requirements(); |
|
62 | + |
|
63 | + if ($this->_data['data'] instanceof EE_Ticket) { |
|
64 | + return $this->_get_datetime_list_for_ticket(); |
|
65 | + } elseif ($this->_data['data'] instanceof EE_Event) { |
|
66 | + return $this->_get_datetime_list_for_event(); |
|
67 | + } elseif ($this->_data['data'] instanceof EE_Messages_Addressee && $this->_data['data']->reg_obj instanceof EE_Registration) { |
|
68 | + return $this->_get_datetime_list_for_registration(); |
|
69 | + } |
|
70 | + // prevent recursive loop |
|
71 | + return ''; |
|
72 | + } |
|
73 | + |
|
74 | + |
|
75 | + /** |
|
76 | + * return parsed list of datetimes for an event |
|
77 | + * |
|
78 | + * @return string |
|
79 | + */ |
|
80 | + private function _get_datetime_list_for_event() |
|
81 | + { |
|
82 | + $valid_shortcodes = array('datetime', 'attendee'); |
|
83 | + $template = is_array($this->_data['template']) && isset($this->_data['template']['datetime_list']) |
|
84 | + ? $this->_data['template']['datetime_list'] : $this->_extra_data['template']['datetime_list']; |
|
85 | + $event = $this->_data['data']; |
|
86 | + |
|
87 | + // here we're setting up the datetimes for the datetime list template for THIS event. |
|
88 | + $dtt_parsed = ''; |
|
89 | + $datetimes = $this->_get_datetimes_from_event($event); |
|
90 | + |
|
91 | + // each datetime in this case should be an datetime object. |
|
92 | + foreach ($datetimes as $datetime) { |
|
93 | + $dtt_parsed .= $this->_shortcode_helper->parse_datetime_list_template( |
|
94 | + $template, |
|
95 | + $datetime, |
|
96 | + $valid_shortcodes, |
|
97 | + $this->_extra_data |
|
98 | + ); |
|
99 | + } |
|
100 | + |
|
101 | + return $dtt_parsed; |
|
102 | + } |
|
103 | + |
|
104 | + |
|
105 | + /** |
|
106 | + * return parsed list of datetimes for an ticket |
|
107 | + * |
|
108 | + * @return string |
|
109 | + */ |
|
110 | + private function _get_datetime_list_for_ticket() |
|
111 | + { |
|
112 | + $valid_shortcodes = array('datetime', 'attendee'); |
|
113 | + |
|
114 | + $template = is_array($this->_data['template']) && isset($this->_data['template']['datetime_list']) |
|
115 | + ? $this->_data['template']['datetime_list'] : $this->_extra_data['template']['datetime_list']; |
|
116 | + $ticket = $this->_data['data']; |
|
117 | + |
|
118 | + // here we're setting up the datetimes for the datetime list template for THIS ticket. |
|
119 | + $dtt_parsed = ''; |
|
120 | + $datetimes = $this->_get_datetimes_from_ticket($ticket); |
|
121 | + |
|
122 | + // each datetime in this case should be an datetime object. |
|
123 | + foreach ($datetimes as $datetime) { |
|
124 | + $dtt_parsed .= $this->_shortcode_helper->parse_datetime_list_template( |
|
125 | + $template, |
|
126 | + $datetime, |
|
127 | + $valid_shortcodes, |
|
128 | + $this->_extra_data |
|
129 | + ); |
|
130 | + } |
|
131 | + |
|
132 | + return $dtt_parsed; |
|
133 | + } |
|
134 | + |
|
135 | + |
|
136 | + /** |
|
137 | + * return parsed list of datetimes from a given registration. |
|
138 | + * |
|
139 | + * @return string |
|
140 | + */ |
|
141 | + private function _get_datetime_list_for_registration() |
|
142 | + { |
|
143 | + $registration = $this->_data['data']->reg_obj; |
|
144 | + |
|
145 | + // now let's just get the ticket, set $this->_data['data'] to the ticket and then call _get_datetime_list_for__ticket(); |
|
146 | + $this->_data['data'] = $registration->ticket(); |
|
147 | + return $this->_get_datetime_list_for_ticket(); |
|
148 | + } |
|
149 | + |
|
150 | + |
|
151 | + private function _get_datetimes_from_event(EE_Event $event, $att = null) |
|
152 | + { |
|
153 | + return isset($this->_extra_data['data']->events) ? $this->_extra_data['data']->events[ $event->ID( |
|
154 | + ) ]['dtt_objs'] : array(); |
|
155 | + } |
|
156 | + |
|
157 | + private function _get_datetimes_from_ticket(EE_Ticket $ticket, $att = null) |
|
158 | + { |
|
159 | + return isset($this->_extra_data['data']->tickets) ? $this->_extra_data['data']->tickets[ $ticket->ID( |
|
160 | + ) ]['dtt_objs'] : array(); |
|
161 | + } |
|
162 | 162 | } |
@@ -20,202 +20,202 @@ |
||
20 | 20 | { |
21 | 21 | |
22 | 22 | |
23 | - protected function _init_props() |
|
24 | - { |
|
25 | - $this->label = __('Line Item List Shortcodes', 'event_espresso'); |
|
26 | - $this->description = __('All shortcodes specific to line item lists', 'event_espresso'); |
|
27 | - $this->_shortcodes = array( |
|
28 | - '[TICKET_LINE_ITEM_LIST]' => __('Outputs a list of ticket line items.', 'event_espresso'), |
|
29 | - '[TAX_LINE_ITEM_LIST]' => __('Outputs a list of tax line items.', 'event_espresso'), |
|
30 | - '[ADDITIONAL_LINE_ITEM_LIST]' => __( |
|
31 | - 'Outputs a list of additional line items (other charges or discounts)', |
|
32 | - 'event_espresso' |
|
33 | - ), |
|
34 | - '[PRICE_MODIFIER_LINE_ITEM_LIST]' => __('Outputs a list of price modifier line items', 'event_espresso'), |
|
35 | - ); |
|
36 | - } |
|
37 | - |
|
38 | - |
|
39 | - protected function _parser($shortcode) |
|
40 | - { |
|
41 | - |
|
42 | - switch ($shortcode) { |
|
43 | - case '[TICKET_LINE_ITEM_LIST]': |
|
44 | - return $this->_get_ticket_line_item_list(); |
|
45 | - break; |
|
46 | - |
|
47 | - case '[TAX_LINE_ITEM_LIST]': |
|
48 | - return $this->_get_tax_line_item_list(); |
|
49 | - break; |
|
50 | - |
|
51 | - case '[PRICE_MODIFIER_LINE_ITEM_LIST]': |
|
52 | - return $this->_get_price_mod_line_item_list(); |
|
53 | - break; |
|
54 | - |
|
55 | - case '[ADDITIONAL_LINE_ITEM_LIST]': |
|
56 | - return $this->_get_additional_line_item_list(); |
|
57 | - break; |
|
58 | - |
|
59 | - default: |
|
60 | - return ''; |
|
61 | - break; |
|
62 | - } |
|
63 | - } |
|
64 | - |
|
65 | - |
|
66 | - /** |
|
67 | - * verify incoming data contains what is needed for retrieving and parsing each ticket line item for an event. |
|
68 | - * |
|
69 | - * @since 4.5.0 |
|
70 | - * |
|
71 | - * @return string parsed ticket line item list. |
|
72 | - */ |
|
73 | - private function _get_ticket_line_item_list() |
|
74 | - { |
|
75 | - $this->_validate_list_requirements(); |
|
76 | - |
|
77 | - if (! $this->_data['data'] instanceof EE_Ticket) { |
|
78 | - return ''; |
|
79 | - } |
|
80 | - |
|
81 | - $valid_shortcodes = array('line_item', 'line_item_list', 'ticket'); |
|
82 | - |
|
83 | - $ticket = $this->_data['data']; |
|
84 | - $templates = $this->_extra_data['template']; |
|
85 | - $addressee_obj = $this->_extra_data['data']; |
|
86 | - |
|
87 | - // made it here so we have an EE_Ticket, so we should have what we need. |
|
88 | - $ticket_line_item = isset($addressee_obj->tickets[ $ticket->ID() ]['line_item']) |
|
89 | - ? $addressee_obj->tickets[ $ticket->ID() ]['line_item'] : null; |
|
90 | - $sub_line_items = isset($addressee_obj->tickets[ $ticket->ID() ]['sub_line_items']) |
|
91 | - ? $addressee_obj->tickets[ $ticket->ID() ]['sub_line_items'] : array(); |
|
92 | - |
|
93 | - $template = count($sub_line_items) < 2 ? $templates['ticket_line_item_no_pms'] |
|
94 | - : $templates['ticket_line_item_pms']; |
|
95 | - |
|
96 | - if (empty($ticket_line_item) || empty($sub_line_items)) { |
|
97 | - return ''; |
|
98 | - } |
|
99 | - |
|
100 | - // now we just return the appropriate template parsed for each ticket. |
|
101 | - return $this->_shortcode_helper->parse_line_item_list_template( |
|
102 | - $template, |
|
103 | - $ticket_line_item, |
|
104 | - $valid_shortcodes, |
|
105 | - $this->_extra_data |
|
106 | - ); |
|
107 | - } |
|
108 | - |
|
109 | - |
|
110 | - /** |
|
111 | - * Verify incoming data contains what is needed for retrieving and parsing each tax line item for a transaction. |
|
112 | - * |
|
113 | - * @since 4.5.0 |
|
114 | - * |
|
115 | - * @return string parsed tax line item list. |
|
116 | - */ |
|
117 | - private function _get_tax_line_item_list() |
|
118 | - { |
|
119 | - |
|
120 | - $this->_validate_list_requirements(); |
|
121 | - |
|
122 | - if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
123 | - return ''; |
|
124 | - } |
|
125 | - |
|
126 | - // made it here so we're good to go. |
|
127 | - $valid_shortcodes = array('line_item'); |
|
128 | - $templates = $this->_data['template']; |
|
129 | - |
|
130 | - $tax_line_items = $this->_data['data']->tax_line_items; |
|
131 | - $line_item_list = ''; |
|
132 | - foreach ($tax_line_items as $line_item) { |
|
133 | - $line_item_list .= $this->_shortcode_helper->parse_line_item_list_template( |
|
134 | - $templates['tax_line_item_list'], |
|
135 | - $line_item, |
|
136 | - $valid_shortcodes, |
|
137 | - $this->_extra_data |
|
138 | - ); |
|
139 | - } |
|
140 | - |
|
141 | - return $line_item_list; |
|
142 | - } |
|
143 | - |
|
144 | - /** |
|
145 | - * Verify incoming data contains what is needed for retrieving and parsing each other line item for a transaction. |
|
146 | - * |
|
147 | - * @since 4.5.0 |
|
148 | - * |
|
149 | - * @return string parsed other line item list. |
|
150 | - */ |
|
151 | - private function _get_additional_line_item_list() |
|
152 | - { |
|
153 | - |
|
154 | - $this->_validate_list_requirements(); |
|
155 | - |
|
156 | - if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
157 | - return ''; |
|
158 | - } |
|
159 | - |
|
160 | - // made it here so we're good to go. |
|
161 | - $valid_shortcodes = array('line_item'); |
|
162 | - $templates = $this->_data['template']; |
|
163 | - |
|
164 | - $additional_line_items = $this->_data['data']->additional_line_items; |
|
165 | - $line_item_list = ''; |
|
166 | - foreach ($additional_line_items as $line_item) { |
|
167 | - $line_item_list .= $this->_shortcode_helper->parse_line_item_list_template( |
|
168 | - $templates['additional_line_item_list'], |
|
169 | - $line_item, |
|
170 | - $valid_shortcodes, |
|
171 | - $this->_extra_data |
|
172 | - ); |
|
173 | - } |
|
174 | - |
|
175 | - |
|
176 | - return $line_item_list; |
|
177 | - } |
|
178 | - |
|
179 | - |
|
180 | - /** |
|
181 | - * Verify incoming data contains what is needed for retrieving and parsing each price modifier line item for a |
|
182 | - * parent ticket line item. |
|
183 | - * |
|
184 | - * @since 4.5.0 |
|
185 | - * |
|
186 | - * @return string parsed price modifier line item list. |
|
187 | - */ |
|
188 | - private function _get_price_mod_line_item_list() |
|
189 | - { |
|
190 | - $this->_validate_list_requirements(); |
|
191 | - |
|
192 | - if (! $this->_data['data'] instanceof EE_Line_Item) { |
|
193 | - return ''; |
|
194 | - } |
|
195 | - |
|
196 | - // made it here so we're good to go. |
|
197 | - $main_line_item = $this->_data['data']; |
|
198 | - $templates = $this->_extra_data['template']; |
|
199 | - $addressee_obj = $this->_extra_data['data']; |
|
200 | - |
|
201 | - $valid_shortcodes = array('line_item'); |
|
202 | - |
|
203 | - $main_line_item_id = $main_line_item->ID(); |
|
204 | - |
|
205 | - $price_mod_line_items = ! empty($addressee_obj->line_items_with_children[ $main_line_item_id ]['children']) |
|
206 | - ? $addressee_obj->line_items_with_children[ $main_line_item_id ]['children'] : array(); |
|
207 | - |
|
208 | - $line_item_list = ''; |
|
209 | - |
|
210 | - foreach ($price_mod_line_items as $line_item) { |
|
211 | - $line_item_list .= $this->_shortcode_helper->parse_line_item_list_template( |
|
212 | - $templates['price_modifier_line_item_list'], |
|
213 | - $line_item, |
|
214 | - $valid_shortcodes, |
|
215 | - $this->_extra_data |
|
216 | - ); |
|
217 | - } |
|
218 | - |
|
219 | - return $line_item_list; |
|
220 | - } |
|
23 | + protected function _init_props() |
|
24 | + { |
|
25 | + $this->label = __('Line Item List Shortcodes', 'event_espresso'); |
|
26 | + $this->description = __('All shortcodes specific to line item lists', 'event_espresso'); |
|
27 | + $this->_shortcodes = array( |
|
28 | + '[TICKET_LINE_ITEM_LIST]' => __('Outputs a list of ticket line items.', 'event_espresso'), |
|
29 | + '[TAX_LINE_ITEM_LIST]' => __('Outputs a list of tax line items.', 'event_espresso'), |
|
30 | + '[ADDITIONAL_LINE_ITEM_LIST]' => __( |
|
31 | + 'Outputs a list of additional line items (other charges or discounts)', |
|
32 | + 'event_espresso' |
|
33 | + ), |
|
34 | + '[PRICE_MODIFIER_LINE_ITEM_LIST]' => __('Outputs a list of price modifier line items', 'event_espresso'), |
|
35 | + ); |
|
36 | + } |
|
37 | + |
|
38 | + |
|
39 | + protected function _parser($shortcode) |
|
40 | + { |
|
41 | + |
|
42 | + switch ($shortcode) { |
|
43 | + case '[TICKET_LINE_ITEM_LIST]': |
|
44 | + return $this->_get_ticket_line_item_list(); |
|
45 | + break; |
|
46 | + |
|
47 | + case '[TAX_LINE_ITEM_LIST]': |
|
48 | + return $this->_get_tax_line_item_list(); |
|
49 | + break; |
|
50 | + |
|
51 | + case '[PRICE_MODIFIER_LINE_ITEM_LIST]': |
|
52 | + return $this->_get_price_mod_line_item_list(); |
|
53 | + break; |
|
54 | + |
|
55 | + case '[ADDITIONAL_LINE_ITEM_LIST]': |
|
56 | + return $this->_get_additional_line_item_list(); |
|
57 | + break; |
|
58 | + |
|
59 | + default: |
|
60 | + return ''; |
|
61 | + break; |
|
62 | + } |
|
63 | + } |
|
64 | + |
|
65 | + |
|
66 | + /** |
|
67 | + * verify incoming data contains what is needed for retrieving and parsing each ticket line item for an event. |
|
68 | + * |
|
69 | + * @since 4.5.0 |
|
70 | + * |
|
71 | + * @return string parsed ticket line item list. |
|
72 | + */ |
|
73 | + private function _get_ticket_line_item_list() |
|
74 | + { |
|
75 | + $this->_validate_list_requirements(); |
|
76 | + |
|
77 | + if (! $this->_data['data'] instanceof EE_Ticket) { |
|
78 | + return ''; |
|
79 | + } |
|
80 | + |
|
81 | + $valid_shortcodes = array('line_item', 'line_item_list', 'ticket'); |
|
82 | + |
|
83 | + $ticket = $this->_data['data']; |
|
84 | + $templates = $this->_extra_data['template']; |
|
85 | + $addressee_obj = $this->_extra_data['data']; |
|
86 | + |
|
87 | + // made it here so we have an EE_Ticket, so we should have what we need. |
|
88 | + $ticket_line_item = isset($addressee_obj->tickets[ $ticket->ID() ]['line_item']) |
|
89 | + ? $addressee_obj->tickets[ $ticket->ID() ]['line_item'] : null; |
|
90 | + $sub_line_items = isset($addressee_obj->tickets[ $ticket->ID() ]['sub_line_items']) |
|
91 | + ? $addressee_obj->tickets[ $ticket->ID() ]['sub_line_items'] : array(); |
|
92 | + |
|
93 | + $template = count($sub_line_items) < 2 ? $templates['ticket_line_item_no_pms'] |
|
94 | + : $templates['ticket_line_item_pms']; |
|
95 | + |
|
96 | + if (empty($ticket_line_item) || empty($sub_line_items)) { |
|
97 | + return ''; |
|
98 | + } |
|
99 | + |
|
100 | + // now we just return the appropriate template parsed for each ticket. |
|
101 | + return $this->_shortcode_helper->parse_line_item_list_template( |
|
102 | + $template, |
|
103 | + $ticket_line_item, |
|
104 | + $valid_shortcodes, |
|
105 | + $this->_extra_data |
|
106 | + ); |
|
107 | + } |
|
108 | + |
|
109 | + |
|
110 | + /** |
|
111 | + * Verify incoming data contains what is needed for retrieving and parsing each tax line item for a transaction. |
|
112 | + * |
|
113 | + * @since 4.5.0 |
|
114 | + * |
|
115 | + * @return string parsed tax line item list. |
|
116 | + */ |
|
117 | + private function _get_tax_line_item_list() |
|
118 | + { |
|
119 | + |
|
120 | + $this->_validate_list_requirements(); |
|
121 | + |
|
122 | + if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
123 | + return ''; |
|
124 | + } |
|
125 | + |
|
126 | + // made it here so we're good to go. |
|
127 | + $valid_shortcodes = array('line_item'); |
|
128 | + $templates = $this->_data['template']; |
|
129 | + |
|
130 | + $tax_line_items = $this->_data['data']->tax_line_items; |
|
131 | + $line_item_list = ''; |
|
132 | + foreach ($tax_line_items as $line_item) { |
|
133 | + $line_item_list .= $this->_shortcode_helper->parse_line_item_list_template( |
|
134 | + $templates['tax_line_item_list'], |
|
135 | + $line_item, |
|
136 | + $valid_shortcodes, |
|
137 | + $this->_extra_data |
|
138 | + ); |
|
139 | + } |
|
140 | + |
|
141 | + return $line_item_list; |
|
142 | + } |
|
143 | + |
|
144 | + /** |
|
145 | + * Verify incoming data contains what is needed for retrieving and parsing each other line item for a transaction. |
|
146 | + * |
|
147 | + * @since 4.5.0 |
|
148 | + * |
|
149 | + * @return string parsed other line item list. |
|
150 | + */ |
|
151 | + private function _get_additional_line_item_list() |
|
152 | + { |
|
153 | + |
|
154 | + $this->_validate_list_requirements(); |
|
155 | + |
|
156 | + if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
157 | + return ''; |
|
158 | + } |
|
159 | + |
|
160 | + // made it here so we're good to go. |
|
161 | + $valid_shortcodes = array('line_item'); |
|
162 | + $templates = $this->_data['template']; |
|
163 | + |
|
164 | + $additional_line_items = $this->_data['data']->additional_line_items; |
|
165 | + $line_item_list = ''; |
|
166 | + foreach ($additional_line_items as $line_item) { |
|
167 | + $line_item_list .= $this->_shortcode_helper->parse_line_item_list_template( |
|
168 | + $templates['additional_line_item_list'], |
|
169 | + $line_item, |
|
170 | + $valid_shortcodes, |
|
171 | + $this->_extra_data |
|
172 | + ); |
|
173 | + } |
|
174 | + |
|
175 | + |
|
176 | + return $line_item_list; |
|
177 | + } |
|
178 | + |
|
179 | + |
|
180 | + /** |
|
181 | + * Verify incoming data contains what is needed for retrieving and parsing each price modifier line item for a |
|
182 | + * parent ticket line item. |
|
183 | + * |
|
184 | + * @since 4.5.0 |
|
185 | + * |
|
186 | + * @return string parsed price modifier line item list. |
|
187 | + */ |
|
188 | + private function _get_price_mod_line_item_list() |
|
189 | + { |
|
190 | + $this->_validate_list_requirements(); |
|
191 | + |
|
192 | + if (! $this->_data['data'] instanceof EE_Line_Item) { |
|
193 | + return ''; |
|
194 | + } |
|
195 | + |
|
196 | + // made it here so we're good to go. |
|
197 | + $main_line_item = $this->_data['data']; |
|
198 | + $templates = $this->_extra_data['template']; |
|
199 | + $addressee_obj = $this->_extra_data['data']; |
|
200 | + |
|
201 | + $valid_shortcodes = array('line_item'); |
|
202 | + |
|
203 | + $main_line_item_id = $main_line_item->ID(); |
|
204 | + |
|
205 | + $price_mod_line_items = ! empty($addressee_obj->line_items_with_children[ $main_line_item_id ]['children']) |
|
206 | + ? $addressee_obj->line_items_with_children[ $main_line_item_id ]['children'] : array(); |
|
207 | + |
|
208 | + $line_item_list = ''; |
|
209 | + |
|
210 | + foreach ($price_mod_line_items as $line_item) { |
|
211 | + $line_item_list .= $this->_shortcode_helper->parse_line_item_list_template( |
|
212 | + $templates['price_modifier_line_item_list'], |
|
213 | + $line_item, |
|
214 | + $valid_shortcodes, |
|
215 | + $this->_extra_data |
|
216 | + ); |
|
217 | + } |
|
218 | + |
|
219 | + return $line_item_list; |
|
220 | + } |
|
221 | 221 | } |
@@ -74,7 +74,7 @@ discard block |
||
74 | 74 | { |
75 | 75 | $this->_validate_list_requirements(); |
76 | 76 | |
77 | - if (! $this->_data['data'] instanceof EE_Ticket) { |
|
77 | + if ( ! $this->_data['data'] instanceof EE_Ticket) { |
|
78 | 78 | return ''; |
79 | 79 | } |
80 | 80 | |
@@ -85,10 +85,10 @@ discard block |
||
85 | 85 | $addressee_obj = $this->_extra_data['data']; |
86 | 86 | |
87 | 87 | // made it here so we have an EE_Ticket, so we should have what we need. |
88 | - $ticket_line_item = isset($addressee_obj->tickets[ $ticket->ID() ]['line_item']) |
|
89 | - ? $addressee_obj->tickets[ $ticket->ID() ]['line_item'] : null; |
|
90 | - $sub_line_items = isset($addressee_obj->tickets[ $ticket->ID() ]['sub_line_items']) |
|
91 | - ? $addressee_obj->tickets[ $ticket->ID() ]['sub_line_items'] : array(); |
|
88 | + $ticket_line_item = isset($addressee_obj->tickets[$ticket->ID()]['line_item']) |
|
89 | + ? $addressee_obj->tickets[$ticket->ID()]['line_item'] : null; |
|
90 | + $sub_line_items = isset($addressee_obj->tickets[$ticket->ID()]['sub_line_items']) |
|
91 | + ? $addressee_obj->tickets[$ticket->ID()]['sub_line_items'] : array(); |
|
92 | 92 | |
93 | 93 | $template = count($sub_line_items) < 2 ? $templates['ticket_line_item_no_pms'] |
94 | 94 | : $templates['ticket_line_item_pms']; |
@@ -119,7 +119,7 @@ discard block |
||
119 | 119 | |
120 | 120 | $this->_validate_list_requirements(); |
121 | 121 | |
122 | - if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
122 | + if ( ! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
123 | 123 | return ''; |
124 | 124 | } |
125 | 125 | |
@@ -153,7 +153,7 @@ discard block |
||
153 | 153 | |
154 | 154 | $this->_validate_list_requirements(); |
155 | 155 | |
156 | - if (! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
156 | + if ( ! $this->_data['data'] instanceof EE_Messages_Addressee) { |
|
157 | 157 | return ''; |
158 | 158 | } |
159 | 159 | |
@@ -189,7 +189,7 @@ discard block |
||
189 | 189 | { |
190 | 190 | $this->_validate_list_requirements(); |
191 | 191 | |
192 | - if (! $this->_data['data'] instanceof EE_Line_Item) { |
|
192 | + if ( ! $this->_data['data'] instanceof EE_Line_Item) { |
|
193 | 193 | return ''; |
194 | 194 | } |
195 | 195 | |
@@ -202,8 +202,8 @@ discard block |
||
202 | 202 | |
203 | 203 | $main_line_item_id = $main_line_item->ID(); |
204 | 204 | |
205 | - $price_mod_line_items = ! empty($addressee_obj->line_items_with_children[ $main_line_item_id ]['children']) |
|
206 | - ? $addressee_obj->line_items_with_children[ $main_line_item_id ]['children'] : array(); |
|
205 | + $price_mod_line_items = ! empty($addressee_obj->line_items_with_children[$main_line_item_id]['children']) |
|
206 | + ? $addressee_obj->line_items_with_children[$main_line_item_id]['children'] : array(); |
|
207 | 207 | |
208 | 208 | $line_item_list = ''; |
209 | 209 |
@@ -18,65 +18,65 @@ |
||
18 | 18 | { |
19 | 19 | |
20 | 20 | |
21 | - protected function _init_props() |
|
22 | - { |
|
23 | - $this->label = __('Line Item Shortcodes', 'event_espresso'); |
|
24 | - $this->description = __('All shortcodes specific to line items', 'event_espresso'); |
|
25 | - $this->_shortcodes = array( |
|
26 | - '[LINE_ITEM_NAME]' => __('Outputs the line item name.', 'event_espresso'), |
|
27 | - '[LINE_ITEM_DESCRIPTION]' => __('Outputs a the description for the line item.', 'event_espresso'), |
|
28 | - '[LINE_ITEM_QUANTITY]' => __('Outputs the quantity for this line item.', 'event_espresso'), |
|
29 | - '[LINE_ITEM_AMOUNT]' => __( |
|
30 | - 'This will either output the unit price for a line item if its not a percent, or the percent of the line item (if it is percent).', |
|
31 | - 'event_espresso' |
|
32 | - ), |
|
33 | - '[LINE_ITEM_TOTAL]' => __('This outputs the line item total.', 'event_espresso'), |
|
34 | - '[LINE_ITEM_TAXABLE_*]' => __( |
|
35 | - 'This attribute type shortcode allows users to indicate what to output if a line item is taxable or not. One can use the key "symbol=" with the shortcode to indicate what they\'d like to represent a taxable line item. So doing something like <code>[LINE_ITEM_TAXABLE_* symbol="*"]</code> means that when the line item is parsed, if it\'s taxable the "*" symbol will be returned. The default symbol if no attribute is included is the "*" symbol.', |
|
36 | - 'event_espresso' |
|
37 | - ), |
|
38 | - ); |
|
39 | - } |
|
21 | + protected function _init_props() |
|
22 | + { |
|
23 | + $this->label = __('Line Item Shortcodes', 'event_espresso'); |
|
24 | + $this->description = __('All shortcodes specific to line items', 'event_espresso'); |
|
25 | + $this->_shortcodes = array( |
|
26 | + '[LINE_ITEM_NAME]' => __('Outputs the line item name.', 'event_espresso'), |
|
27 | + '[LINE_ITEM_DESCRIPTION]' => __('Outputs a the description for the line item.', 'event_espresso'), |
|
28 | + '[LINE_ITEM_QUANTITY]' => __('Outputs the quantity for this line item.', 'event_espresso'), |
|
29 | + '[LINE_ITEM_AMOUNT]' => __( |
|
30 | + 'This will either output the unit price for a line item if its not a percent, or the percent of the line item (if it is percent).', |
|
31 | + 'event_espresso' |
|
32 | + ), |
|
33 | + '[LINE_ITEM_TOTAL]' => __('This outputs the line item total.', 'event_espresso'), |
|
34 | + '[LINE_ITEM_TAXABLE_*]' => __( |
|
35 | + 'This attribute type shortcode allows users to indicate what to output if a line item is taxable or not. One can use the key "symbol=" with the shortcode to indicate what they\'d like to represent a taxable line item. So doing something like <code>[LINE_ITEM_TAXABLE_* symbol="*"]</code> means that when the line item is parsed, if it\'s taxable the "*" symbol will be returned. The default symbol if no attribute is included is the "*" symbol.', |
|
36 | + 'event_espresso' |
|
37 | + ), |
|
38 | + ); |
|
39 | + } |
|
40 | 40 | |
41 | 41 | |
42 | - protected function _parser($shortcode) |
|
43 | - { |
|
44 | - // ensure that the incoming object IS a line item. If it isn't then bail early. |
|
45 | - if (! $this->_data instanceof EE_Line_Item) { |
|
46 | - return ''; |
|
47 | - } |
|
42 | + protected function _parser($shortcode) |
|
43 | + { |
|
44 | + // ensure that the incoming object IS a line item. If it isn't then bail early. |
|
45 | + if (! $this->_data instanceof EE_Line_Item) { |
|
46 | + return ''; |
|
47 | + } |
|
48 | 48 | |
49 | - $line_item = $this->_data; |
|
49 | + $line_item = $this->_data; |
|
50 | 50 | |
51 | - switch ($shortcode) { |
|
52 | - case '[LINE_ITEM_NAME]': |
|
53 | - return $line_item->name(); |
|
54 | - break; |
|
51 | + switch ($shortcode) { |
|
52 | + case '[LINE_ITEM_NAME]': |
|
53 | + return $line_item->name(); |
|
54 | + break; |
|
55 | 55 | |
56 | - case '[LINE_ITEM_DESCRIPTION]': |
|
57 | - return $line_item->desc(); |
|
58 | - break; |
|
56 | + case '[LINE_ITEM_DESCRIPTION]': |
|
57 | + return $line_item->desc(); |
|
58 | + break; |
|
59 | 59 | |
60 | - case '[LINE_ITEM_QUANTITY]': |
|
61 | - return $line_item->quantity(); |
|
62 | - break; |
|
60 | + case '[LINE_ITEM_QUANTITY]': |
|
61 | + return $line_item->quantity(); |
|
62 | + break; |
|
63 | 63 | |
64 | - case '[LINE_ITEM_AMOUNT]': |
|
65 | - return $line_item->is_percent() ? $line_item->percent() . '%' : $line_item->unit_price_no_code(); |
|
66 | - break; |
|
64 | + case '[LINE_ITEM_AMOUNT]': |
|
65 | + return $line_item->is_percent() ? $line_item->percent() . '%' : $line_item->unit_price_no_code(); |
|
66 | + break; |
|
67 | 67 | |
68 | - case '[LINE_ITEM_TOTAL]': |
|
69 | - return $line_item->total_no_code(); |
|
70 | - break; |
|
71 | - } |
|
68 | + case '[LINE_ITEM_TOTAL]': |
|
69 | + return $line_item->total_no_code(); |
|
70 | + break; |
|
71 | + } |
|
72 | 72 | |
73 | - if (strpos($shortcode, '[LINE_ITEM_TAXABLE_*') !== false) { |
|
74 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
75 | - if ($line_item->is_taxable()) { |
|
76 | - return ! empty($attrs['symbol']) ? $attrs['symbol'] : '*'; |
|
77 | - } |
|
78 | - } |
|
73 | + if (strpos($shortcode, '[LINE_ITEM_TAXABLE_*') !== false) { |
|
74 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
75 | + if ($line_item->is_taxable()) { |
|
76 | + return ! empty($attrs['symbol']) ? $attrs['symbol'] : '*'; |
|
77 | + } |
|
78 | + } |
|
79 | 79 | |
80 | - return ''; |
|
81 | - } |
|
80 | + return ''; |
|
81 | + } |
|
82 | 82 | } |
@@ -42,7 +42,7 @@ discard block |
||
42 | 42 | protected function _parser($shortcode) |
43 | 43 | { |
44 | 44 | // ensure that the incoming object IS a line item. If it isn't then bail early. |
45 | - if (! $this->_data instanceof EE_Line_Item) { |
|
45 | + if ( ! $this->_data instanceof EE_Line_Item) { |
|
46 | 46 | return ''; |
47 | 47 | } |
48 | 48 | |
@@ -62,7 +62,7 @@ discard block |
||
62 | 62 | break; |
63 | 63 | |
64 | 64 | case '[LINE_ITEM_AMOUNT]': |
65 | - return $line_item->is_percent() ? $line_item->percent() . '%' : $line_item->unit_price_no_code(); |
|
65 | + return $line_item->is_percent() ? $line_item->percent().'%' : $line_item->unit_price_no_code(); |
|
66 | 66 | break; |
67 | 67 | |
68 | 68 | case '[LINE_ITEM_TOTAL]': |
@@ -18,83 +18,83 @@ |
||
18 | 18 | class EE_Datetime_Shortcodes extends EE_Shortcodes |
19 | 19 | { |
20 | 20 | |
21 | - /** |
|
22 | - * _init_props |
|
23 | - * |
|
24 | - * @access protected |
|
25 | - * @return void |
|
26 | - */ |
|
27 | - protected function _init_props() |
|
28 | - { |
|
29 | - $this->label = __('Datetime Shortcodes', 'event_espresso'); |
|
30 | - $this->description = __('All shortcodes specific to datetime related data', 'event_espresso'); |
|
31 | - $this->_shortcodes = array( |
|
32 | - '[DATETIME_START]' => __('The start date and time.', 'event_espresso'), |
|
33 | - '[DATETIME_END]' => __('The end date and time.', 'event_espresso'), |
|
34 | - '[DATETIME_TIMEZONE]' => __('The timezone for the date and time', 'event_espresso'), |
|
35 | - '[DATE_START]' => __('The datetime start date.', 'event_espresso'), |
|
36 | - '[DATE_END]' => __('The datetime end date.', 'event_espresso'), |
|
37 | - '[TIME_START]' => __('The datetime start time.', 'event_espresso'), |
|
38 | - '[TIME_END]' => __('The datetime end time.', 'event_espresso'), |
|
39 | - '[ICAL_LINK_*]' => __( |
|
40 | - 'The datetime iCal link. The optional "link_text" attribute can be used to set custom text within the link (Default is "Add to iCal Calendar").', |
|
41 | - 'event_espresso' |
|
42 | - ), |
|
43 | - ); |
|
44 | - } |
|
21 | + /** |
|
22 | + * _init_props |
|
23 | + * |
|
24 | + * @access protected |
|
25 | + * @return void |
|
26 | + */ |
|
27 | + protected function _init_props() |
|
28 | + { |
|
29 | + $this->label = __('Datetime Shortcodes', 'event_espresso'); |
|
30 | + $this->description = __('All shortcodes specific to datetime related data', 'event_espresso'); |
|
31 | + $this->_shortcodes = array( |
|
32 | + '[DATETIME_START]' => __('The start date and time.', 'event_espresso'), |
|
33 | + '[DATETIME_END]' => __('The end date and time.', 'event_espresso'), |
|
34 | + '[DATETIME_TIMEZONE]' => __('The timezone for the date and time', 'event_espresso'), |
|
35 | + '[DATE_START]' => __('The datetime start date.', 'event_espresso'), |
|
36 | + '[DATE_END]' => __('The datetime end date.', 'event_espresso'), |
|
37 | + '[TIME_START]' => __('The datetime start time.', 'event_espresso'), |
|
38 | + '[TIME_END]' => __('The datetime end time.', 'event_espresso'), |
|
39 | + '[ICAL_LINK_*]' => __( |
|
40 | + 'The datetime iCal link. The optional "link_text" attribute can be used to set custom text within the link (Default is "Add to iCal Calendar").', |
|
41 | + 'event_espresso' |
|
42 | + ), |
|
43 | + ); |
|
44 | + } |
|
45 | 45 | |
46 | 46 | |
47 | - /** |
|
48 | - * _parser |
|
49 | - * |
|
50 | - * @access protected |
|
51 | - * @param string $shortcode |
|
52 | - * @return string |
|
53 | - */ |
|
54 | - protected function _parser($shortcode) |
|
55 | - { |
|
47 | + /** |
|
48 | + * _parser |
|
49 | + * |
|
50 | + * @access protected |
|
51 | + * @param string $shortcode |
|
52 | + * @return string |
|
53 | + */ |
|
54 | + protected function _parser($shortcode) |
|
55 | + { |
|
56 | 56 | |
57 | - if (! $this->_data instanceof EE_Datetime) { |
|
58 | - return ''; // get out cause we can only parse with the datetime object. |
|
59 | - } |
|
57 | + if (! $this->_data instanceof EE_Datetime) { |
|
58 | + return ''; // get out cause we can only parse with the datetime object. |
|
59 | + } |
|
60 | 60 | |
61 | - switch ($shortcode) { |
|
62 | - case '[DATETIME_START]': |
|
63 | - return $this->_data->get_i18n_datetime('DTT_EVT_start'); |
|
64 | - break; |
|
61 | + switch ($shortcode) { |
|
62 | + case '[DATETIME_START]': |
|
63 | + return $this->_data->get_i18n_datetime('DTT_EVT_start'); |
|
64 | + break; |
|
65 | 65 | |
66 | - case '[DATETIME_END]': |
|
67 | - return $this->_data->get_i18n_datetime('DTT_EVT_end'); |
|
68 | - break; |
|
66 | + case '[DATETIME_END]': |
|
67 | + return $this->_data->get_i18n_datetime('DTT_EVT_end'); |
|
68 | + break; |
|
69 | 69 | |
70 | - case '[DATETIME_TIMEZONE]': |
|
71 | - return $this->_data->get_timezone(); |
|
72 | - break; |
|
73 | - case '[DATE_START]': |
|
74 | - return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('date_format')); |
|
75 | - break; |
|
76 | - case '[DATE_END]': |
|
77 | - return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('date_format')); |
|
78 | - break; |
|
79 | - case '[TIME_START]': |
|
80 | - return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('time_format')); |
|
81 | - break; |
|
82 | - case '[TIME_END]': |
|
83 | - return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('time_format')); |
|
84 | - break; |
|
85 | - } |
|
70 | + case '[DATETIME_TIMEZONE]': |
|
71 | + return $this->_data->get_timezone(); |
|
72 | + break; |
|
73 | + case '[DATE_START]': |
|
74 | + return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('date_format')); |
|
75 | + break; |
|
76 | + case '[DATE_END]': |
|
77 | + return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('date_format')); |
|
78 | + break; |
|
79 | + case '[TIME_START]': |
|
80 | + return $this->_data->get_i18n_datetime('DTT_EVT_start', get_option('time_format')); |
|
81 | + break; |
|
82 | + case '[TIME_END]': |
|
83 | + return $this->_data->get_i18n_datetime('DTT_EVT_end', get_option('time_format')); |
|
84 | + break; |
|
85 | + } |
|
86 | 86 | |
87 | - if (strpos($shortcode, '[ICAL_LINK_*') !== false) { |
|
88 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
87 | + if (strpos($shortcode, '[ICAL_LINK_*') !== false) { |
|
88 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
89 | 89 | |
90 | - $link_text = empty($attrs['link_text']) ? __('Add to iCal Calendar', 'event_espresso') |
|
91 | - : $attrs['link_text']; |
|
90 | + $link_text = empty($attrs['link_text']) ? __('Add to iCal Calendar', 'event_espresso') |
|
91 | + : $attrs['link_text']; |
|
92 | 92 | |
93 | - $URL = add_query_arg(array('ee' => 'download_ics_file', 'ics_id' => $this->_data->ID()), site_url()); |
|
93 | + $URL = add_query_arg(array('ee' => 'download_ics_file', 'ics_id' => $this->_data->ID()), site_url()); |
|
94 | 94 | |
95 | - return '<a class="ee-ical" href="' . $URL . '">' . $link_text . '</a>'; |
|
96 | - } |
|
95 | + return '<a class="ee-ical" href="' . $URL . '">' . $link_text . '</a>'; |
|
96 | + } |
|
97 | 97 | |
98 | - return ''; |
|
99 | - } |
|
98 | + return ''; |
|
99 | + } |
|
100 | 100 | } |
@@ -54,7 +54,7 @@ discard block |
||
54 | 54 | protected function _parser($shortcode) |
55 | 55 | { |
56 | 56 | |
57 | - if (! $this->_data instanceof EE_Datetime) { |
|
57 | + if ( ! $this->_data instanceof EE_Datetime) { |
|
58 | 58 | return ''; // get out cause we can only parse with the datetime object. |
59 | 59 | } |
60 | 60 | |
@@ -92,7 +92,7 @@ discard block |
||
92 | 92 | |
93 | 93 | $URL = add_query_arg(array('ee' => 'download_ics_file', 'ics_id' => $this->_data->ID()), site_url()); |
94 | 94 | |
95 | - return '<a class="ee-ical" href="' . $URL . '">' . $link_text . '</a>'; |
|
95 | + return '<a class="ee-ical" href="'.$URL.'">'.$link_text.'</a>'; |
|
96 | 96 | } |
97 | 97 | |
98 | 98 | return ''; |