@@ -17,783 +17,783 @@ |
||
17 | 17 | class EE_Transaction_Shortcodes extends EE_Shortcodes |
18 | 18 | { |
19 | 19 | |
20 | - /** |
|
21 | - * @var EE_Payment_Method $_invoice_pm the invoice payment method for use in invoices etc |
|
22 | - */ |
|
23 | - protected $_invoice_pm; |
|
24 | - |
|
25 | - |
|
26 | - protected function _init_props() |
|
27 | - { |
|
28 | - $this->label = esc_html__('Transaction Shortcodes', 'event_espresso'); |
|
29 | - $this->description = esc_html__('All shortcodes specific to transaction related data', 'event_espresso'); |
|
30 | - $this->_shortcodes = array( |
|
31 | - '[TXN_ID]' => esc_html__('The transaction id for the purchase.', 'event_espresso'), |
|
32 | - '[PAYMENT_URL]' => esc_html__( |
|
33 | - 'This is a link to make a payment for the event', |
|
34 | - 'event_espresso' |
|
35 | - ), |
|
36 | - '[PAYMENT_LINK_IF_NEEDED_*]' => esc_html__( |
|
37 | - 'This is a special dynamic shortcode that allows one to insert a payment link conditional on there being amount owing on the transaction. Three params are available on this shortcode:', |
|
38 | - 'event_espresso' |
|
39 | - ) |
|
40 | - . '<ul>' |
|
41 | - . '<li>' |
|
42 | - . sprintf( |
|
43 | - esc_html__( |
|
44 | - '%sclass:%s This can be used to indicate css class is given to the containing css element (default is "callout").', |
|
45 | - 'event_espresso' |
|
46 | - ), |
|
47 | - '<strong>', |
|
48 | - '</strong>' |
|
49 | - ) |
|
50 | - . '</li>' |
|
51 | - . '<li>' |
|
52 | - . sprintf( |
|
53 | - esc_html__( |
|
54 | - '%scustom_text:%s This should be a sprintf format text string (with %%s for where the hyperlink tags go) that is used for the generated link text (The default is "You can %%smake a payment here »%%s.)', |
|
55 | - 'event_espresso' |
|
56 | - ), |
|
57 | - '<strong>', |
|
58 | - '</strong>' |
|
59 | - ) |
|
60 | - . '</li>' |
|
61 | - . '<li>' |
|
62 | - . sprintf( |
|
63 | - esc_html__( |
|
64 | - '%scontainer_tag:%s Use this to indicate what container tag you want surrounding the payment link (default is "p").', |
|
65 | - 'event_espresso' |
|
66 | - ), |
|
67 | - '<strong>', |
|
68 | - '</strong>' |
|
69 | - ) |
|
70 | - . '</li>' |
|
71 | - . '</ul>', |
|
72 | - '[PAYMENT_DUE_DATE_*]' => esc_html__( |
|
73 | - 'This is a special dynamic shortcode that allows one to output a payment due date. It will only result in a date shown if there is money owing. Three parameters are available on this shortcode:', |
|
74 | - 'event_espresso' |
|
75 | - ) |
|
76 | - . '<ul>' |
|
77 | - . '<li>' |
|
78 | - . sprintf( |
|
79 | - esc_html__( |
|
80 | - '%sformat:%s This is used to indicate what format the date is in. Default is whatever is set as date formats for your website.', |
|
81 | - 'event_espresso' |
|
82 | - ), |
|
83 | - '<strong>', |
|
84 | - '</strong>' |
|
85 | - ) |
|
86 | - . '</li>' |
|
87 | - . '<li>' |
|
88 | - . sprintf( |
|
89 | - esc_html__( |
|
90 | - '%sdays_until_due:%s This is the number of days form the transaction creation date that the payment is due. Defaults to 30.', |
|
91 | - 'event_espresso' |
|
92 | - ), |
|
93 | - '<strong>', |
|
94 | - '</strong>' |
|
95 | - ) |
|
96 | - . '</li>' |
|
97 | - . '<li>' |
|
98 | - . sprintf( |
|
99 | - esc_html__( |
|
100 | - '%sprefix_text:%s You can use this to indicate what text will prefix the date string. Defaults to "Payment in full due by:"', |
|
101 | - 'event_espresso' |
|
102 | - ), |
|
103 | - '<strong>', |
|
104 | - '</strong>' |
|
105 | - ) |
|
106 | - . '</li>', |
|
107 | - '[INVOICE_LINK]' => esc_html__( |
|
108 | - 'This is a full html link to the invoice', |
|
109 | - 'event_espresso' |
|
110 | - ), |
|
111 | - '[INVOICE_URL]' => esc_html__( |
|
112 | - 'This is just the url for the invoice', |
|
113 | - 'event_espresso' |
|
114 | - ), |
|
115 | - '[INVOICE_LOGO_URL]' => esc_html__( |
|
116 | - 'This returns the url for the logo uploaded via the invoice settings page.', |
|
117 | - 'event_espresso' |
|
118 | - ), |
|
119 | - '[INVOICE_LOGO]' => esc_html__( |
|
120 | - 'This returns the logo uploaded via the invoice settings page wrapped in img_tags and with a "logo screen" classes. The image size is also set in the img tags automatically to match the uploaded logo.', |
|
121 | - 'event_espresso' |
|
122 | - ), |
|
123 | - '[INVOICE_PAYEE_NAME]' => esc_html__( |
|
124 | - 'This will parse to either: the value of the "Company Name" field in the invoice payment method settings; if that is blank, then the value of the Company Name in the "Your Organization Settings", if that is blank then an empty string.', |
|
125 | - 'event_espresso' |
|
126 | - ), |
|
127 | - '[INVOICE_PAYEE_ADDRESS]' => esc_html__( |
|
128 | - 'This will parse to either: the value of the "Company Address" field in the invoice payment method settings; if that is blank, then the value of the Company Address in the "Your Organization Settings", if that is blank then an empty string.', |
|
129 | - 'event_espresso' |
|
130 | - ), |
|
131 | - '[INVOICE_PAYMENT_INSTRUCTIONS]' => esc_html__( |
|
132 | - 'This will parse to the value of the "Payment Instructions" field found on the Invoice payment methods settings page', |
|
133 | - 'event_espresso' |
|
134 | - ), |
|
135 | - '[INVOICE_PAYEE_EMAIL]' => esc_html__( |
|
136 | - 'This will parse to either: the value of the "Company Email" field in the invoice payment method settings; if that is blank, then the value of the Company Email in the "Your Organization Settings", if that is blank then an empty string.', |
|
137 | - 'event_espresso' |
|
138 | - ), |
|
139 | - '[INVOICE_PAYEE_TAX_NUMBER_*]' => sprintf( |
|
140 | - esc_html__( |
|
141 | - 'This will parse to either: the value of the "Company Tax Number" field in the invoice payment method settings; if that is blank, then the value of the Company Tax Number in the "Your Organization Settings", if that is blank then an empty string. Note this is also a special dynamic shortcode. You can use the "prefix" parameter to indicate what text you want to use as a prefix before this tax number. It defaults to "VAT/Tax Number:". To change this prefix you do the following format for this shortcode: %1$s[INVOICE_PAYEE_TAX_NUMBER_* prefix="GST:"]%2$s and that will output: GST: 12345t56. If you have no tax number in your settings, then no prefix will be output either.', |
|
142 | - 'event_espresso' |
|
143 | - ), |
|
144 | - '<code>', |
|
145 | - '</code>' |
|
146 | - ), |
|
147 | - '[TOTAL_COST]' => esc_html__('The total cost for the transaction', 'event_espresso'), |
|
148 | - '[TXN_STATUS]' => esc_html__( |
|
149 | - 'The transaction status for the transaction.', |
|
150 | - 'event_espresso' |
|
151 | - ), |
|
152 | - '[TXN_STATUS_ID]' => esc_html__( |
|
153 | - 'The ID representing the transaction status as saved in the db. This tends to be useful for including with css classes for styling certain statuses differently from others.', |
|
154 | - 'event_espresso' |
|
155 | - ), |
|
156 | - '[PAYMENT_STATUS]' => esc_html__( |
|
157 | - 'The transaction status for the transaction. This parses to the same value as the [TXN_STATUS] shortcode and still remains here for legacy support.', |
|
158 | - 'event_espresso' |
|
159 | - ), |
|
160 | - '[PAYMENT_GATEWAY]' => esc_html__( |
|
161 | - 'The payment gateway used for the transaction', |
|
162 | - 'event_espresso' |
|
163 | - ), |
|
164 | - '[AMOUNT_PAID]' => esc_html__( |
|
165 | - 'The amount paid or refunded. This will only have a value if there was a payment or refund at the time of generating the message.', |
|
166 | - 'event_espresso' |
|
167 | - ), |
|
168 | - '[LAST_AMOUNT_PAID]' => esc_html__( |
|
169 | - 'This is the last payment or refund made on the transaction related to the message being generated.', |
|
170 | - 'event_espresso' |
|
171 | - ), |
|
172 | - '[TOTAL_AMOUNT_PAID]' => esc_html__( |
|
173 | - 'This parses to the total amount paid over all payments', |
|
174 | - 'event_espresso' |
|
175 | - ), |
|
176 | - '[TOTAL_OWING]' => esc_html__( |
|
177 | - 'The total owing on a transaction with no attributes.', |
|
178 | - 'event_espresso' |
|
179 | - ), |
|
180 | - '[TXN_SUBTOTAL]' => esc_html__('The subtotal for all txn line items.', 'event_espresso'), |
|
181 | - '[TXN_TAX_SUBTOTAL]' => esc_html__('The subtotal for all tax line items.', 'event_espresso'), |
|
182 | - '[OWING_STATUS_MESSAGE_*]' => esc_html__( |
|
183 | - 'A dynamic shortcode for adjusting how total owing gets shown. The acceptable attributes on the shortcode are:', |
|
184 | - 'event_espresso' |
|
185 | - ) |
|
186 | - . '<p></ul>' |
|
187 | - . '<li><strong>still_owing</strong>:' |
|
188 | - . esc_html__( |
|
189 | - 'If the transaction is not paid in full, then whatever is set for this attribute is shown (otherwise its just the amount owing). The default is:', |
|
190 | - 'event_espresso' |
|
191 | - ) |
|
192 | - . sprintf( |
|
193 | - esc_html__('%sPlease make a payment.%s', 'event_espresso'), |
|
194 | - '<a href="[PAYMENT_URL]" class="noPrint">', |
|
195 | - '</a>' |
|
196 | - ) |
|
197 | - . '</li>' |
|
198 | - . |
|
199 | - '<li><strong>none_owing</strong>:' |
|
200 | - . esc_html__( |
|
201 | - 'If the transaction is paid in full, then you can indicate how this gets displayed. Note, that it defaults to just be the total owing.', |
|
202 | - 'event_espresso' |
|
203 | - ) |
|
204 | - . '</li></ul></p>', |
|
205 | - '[TXN_TOTAL_TICKETS]' => esc_html__( |
|
206 | - 'The total number of all tickets purchased in a transaction', |
|
207 | - 'event_espresso' |
|
208 | - ), |
|
209 | - '[TKT_QTY_PURCHASED]' => sprintf( |
|
210 | - esc_html__( |
|
211 | - 'The total number of all tickets purchased in a transaction. %1$sNOTE: This shortcode is good to use in the "[TICKET_LIST]" field but has been deprecated from all other contexts in favor of the more explicit [TXN_TOTAL_TICKETS] shortcode.%2$s', |
|
212 | - 'event_espresso' |
|
213 | - ), |
|
214 | - '<strong>', |
|
215 | - '</strong>' |
|
216 | - ), |
|
217 | - '[TRANSACTION_ADMIN_URL]' => esc_html__( |
|
218 | - 'The url to the admin page for this transaction', |
|
219 | - 'event_espresso' |
|
220 | - ), |
|
221 | - '[RECEIPT_URL]' => esc_html__( |
|
222 | - 'This parses to the generated url for retrieving the receipt for the transaction', |
|
223 | - 'event_espresso' |
|
224 | - ), |
|
225 | - '[INVOICE_RECEIPT_SWITCHER_URL]' => esc_html__( |
|
226 | - 'This parses to the url that will switch to the receipt if an invoice is displayed, and switch to the invoice if receipt is displayed. If a message type OTHER than invoice or receipt is displayed then this will just return the url for the invoice. If the related message type is not active then will parse to an empty string.', |
|
227 | - 'event_espresso' |
|
228 | - ), |
|
229 | - '[INVOICE_RECEIPT_SWITCHER_BUTTON]' => sprintf( |
|
230 | - esc_html__( |
|
231 | - 'The same as %1$s%2$s except this returns the html for a button linked to the invoice or receipt.', |
|
232 | - 'event_espresso' |
|
233 | - ), |
|
234 | - '<code>[INVOICE_RECEIPT_SWITCHER_URL]', |
|
235 | - '</code>' |
|
236 | - ), |
|
237 | - '[LAST_PAYMENT_TRANSACTION_ID]' => esc_html__( |
|
238 | - 'This will output the value of the payment transaction id for the last payment made on the transaction. Note, if a specific payment was included for message generation, that will be used when parsing the shortcode.', |
|
239 | - 'event_espresso' |
|
240 | - ), |
|
241 | - ); |
|
242 | - } |
|
243 | - |
|
244 | - |
|
245 | - /** |
|
246 | - * @param string $shortcode the shortcode to be parsed. |
|
247 | - * @return string parsed shortcode |
|
248 | - * @throws EE_Error |
|
249 | - * @throws InvalidArgumentException |
|
250 | - * @throws ReflectionException |
|
251 | - * @throws InvalidDataTypeException |
|
252 | - * @throws InvalidInterfaceException |
|
253 | - */ |
|
254 | - protected function _parser($shortcode) |
|
255 | - { |
|
256 | - // attempt to get the transaction. Since this is potentially used in more fields, we may have to look in the |
|
257 | - // _extra_data for the transaction. |
|
258 | - $transaction = $this->_data->txn instanceof EE_Transaction ? $this->_data->txn : null; |
|
259 | - $transaction = ! $transaction instanceof EE_Transaction |
|
260 | - && is_array($this->_extra_data) |
|
261 | - && isset($this->_extra_data['data']) |
|
262 | - && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
263 | - ? $this->_extra_data['data']->txn |
|
264 | - : $transaction; |
|
265 | - // payment |
|
266 | - $payment = $this->_data->payment instanceof EE_Payment ? $this->_data->payment : null; |
|
267 | - $payment = ! $payment instanceof EE_Payment |
|
268 | - && is_array($this->_extra_data) |
|
269 | - && isset($this->_extra_data['data']) |
|
270 | - && $this->_extra_data['data'] instanceof EE_Messages_Addressee ? $this->_extra_data['data']->payment |
|
271 | - : $payment; |
|
272 | - if (! $transaction instanceof EE_Transaction) { |
|
273 | - return ''; |
|
274 | - } |
|
275 | - switch ($shortcode) { |
|
276 | - case '[TXN_ID]': |
|
277 | - return $transaction->ID(); |
|
278 | - break; |
|
279 | - case '[PAYMENT_URL]': |
|
280 | - $payment_url = $transaction->payment_overview_url(); |
|
281 | - return empty($payment_url) |
|
282 | - ? esc_html__('http://dummypaymenturlforpreview.com', 'event_espresso') |
|
283 | - : $payment_url; |
|
284 | - break; |
|
285 | - case '[INVOICE_LINK]': |
|
286 | - $invoice_url = $transaction->invoice_url(); |
|
287 | - $invoice_url = empty($invoice_url) ? 'http://dummyinvoicelinksforpreview.com' : $invoice_url; |
|
288 | - return sprintf( |
|
289 | - esc_html__('%sClick here for Invoice%s', 'event_espresso'), |
|
290 | - '<a href="' . $invoice_url . '">', |
|
291 | - '</a>' |
|
292 | - ); |
|
293 | - break; |
|
294 | - case '[INVOICE_URL]': |
|
295 | - $invoice_url = $transaction->invoice_url(); |
|
296 | - return empty($invoice_url) ? 'http://dummyinvoicelinksforpreview.com' : $invoice_url; |
|
297 | - break; |
|
298 | - case '[INVOICE_LOGO_URL]': |
|
299 | - return $this->_get_invoice_logo(); |
|
300 | - break; |
|
301 | - case '[INVOICE_LOGO]': |
|
302 | - return $this->_get_invoice_logo(true); |
|
303 | - break; |
|
304 | - case '[INVOICE_PAYEE_NAME]': |
|
305 | - return $this->_get_invoice_payee_name(); |
|
306 | - break; |
|
307 | - case '[INVOICE_PAYEE_ADDRESS]': |
|
308 | - return $this->_get_invoice_payee_address(); |
|
309 | - break; |
|
310 | - case '[INVOICE_PAYMENT_INSTRUCTIONS]': |
|
311 | - return $this->_get_invoice_payment_instructions(); |
|
312 | - break; |
|
313 | - case '[INVOICE_PAYEE_EMAIL]': |
|
314 | - return $this->_get_invoice_payee_email(); |
|
315 | - break; |
|
316 | - case '[TOTAL_COST]': |
|
317 | - $total = $transaction->total(); |
|
318 | - return ! empty($total) ? EEH_Template::format_currency($total) : ''; |
|
319 | - break; |
|
320 | - case '[PAYMENT_STATUS]': |
|
321 | - $status = $transaction->pretty_status(); |
|
322 | - return ! empty($status) ? $status : esc_html__('Unknown', 'event_espresso'); |
|
323 | - break; /**/ |
|
324 | - // note the [payment_status] shortcode is kind of misleading because payment status might be different |
|
325 | - // from txn status so I'm adding this here for clarity. |
|
326 | - case '[TXN_STATUS]': |
|
327 | - $status = $transaction->pretty_status(); |
|
328 | - return ! empty($status) ? $status : esc_html__('Unknown', 'event_espresso'); |
|
329 | - break; |
|
330 | - case '[TXN_STATUS_ID]': |
|
331 | - return $transaction->status_ID(); |
|
332 | - break; |
|
333 | - case '[PAYMENT_GATEWAY]': |
|
334 | - return $this->_get_payment_gateway($transaction); |
|
335 | - break; |
|
336 | - case '[AMOUNT_PAID]': |
|
337 | - return $payment instanceof EE_Payment |
|
338 | - ? EEH_Template::format_currency($payment->amount()) |
|
339 | - : EEH_Template::format_currency(0); |
|
340 | - break; |
|
341 | - case '[LAST_AMOUNT_PAID]': |
|
342 | - $last_payment = $transaction->last_payment(); |
|
343 | - return $last_payment instanceof EE_Payment |
|
344 | - ? EEH_Template::format_currency($last_payment->amount()) |
|
345 | - : EEH_Template::format_currency(0); |
|
346 | - case '[TOTAL_AMOUNT_PAID]': |
|
347 | - return EEH_Template::format_currency($transaction->paid()); |
|
348 | - break; |
|
349 | - case '[TOTAL_OWING]': |
|
350 | - $total_owing = $transaction->remaining(); |
|
351 | - return EEH_Template::format_currency($total_owing); |
|
352 | - break; |
|
353 | - case '[TXN_SUBTOTAL]': |
|
354 | - return EEH_Template::format_currency($this->_get_subtotal()); |
|
355 | - break; |
|
356 | - case '[TXN_TAX_SUBTOTAL]': |
|
357 | - return EEH_Template::format_currency($this->_get_subtotal(true)); |
|
358 | - break; |
|
359 | - case '[TKT_QTY_PURCHASED]': |
|
360 | - case '[TXN_TOTAL_TICKETS]': |
|
361 | - return $this->_data->total_ticket_count; |
|
362 | - break; |
|
363 | - case '[TRANSACTION_ADMIN_URL]': |
|
364 | - require_once EE_CORE . 'admin/EE_Admin_Page.core.php'; |
|
365 | - $query_args = array( |
|
366 | - 'page' => 'espresso_transactions', |
|
367 | - 'action' => 'view_transaction', |
|
368 | - 'TXN_ID' => $transaction->ID(), |
|
369 | - ); |
|
370 | - $url = EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')); |
|
371 | - return $url; |
|
372 | - break; |
|
373 | - case '[RECEIPT_URL]': |
|
374 | - // get primary_registration |
|
375 | - $reg = $this->_data->primary_reg_obj; |
|
376 | - if (! $reg instanceof EE_Registration) { |
|
377 | - return ''; |
|
378 | - } |
|
379 | - return $reg->receipt_url(); |
|
380 | - break; |
|
381 | - case '[INVOICE_RECEIPT_SWITCHER_URL]': |
|
382 | - return $this->_get_invoice_receipt_switcher(false); |
|
383 | - break; |
|
384 | - case '[INVOICE_RECEIPT_SWITCHER_BUTTON]': |
|
385 | - return $this->_get_invoice_receipt_switcher(); |
|
386 | - break; |
|
387 | - case '[LAST_PAYMENT_TRANSACTION_ID]': |
|
388 | - $id = ''; |
|
389 | - $payment = $payment instanceof EE_Payment && $payment->ID() !== 0 |
|
390 | - ? $payment |
|
391 | - : $transaction->last_payment(); |
|
392 | - if ($payment instanceof EE_Payment) { |
|
393 | - $id = $payment->txn_id_chq_nmbr(); |
|
394 | - } |
|
395 | - return $id; |
|
396 | - break; |
|
397 | - } |
|
398 | - if (strpos($shortcode, '[OWING_STATUS_MESSAGE_*') !== false) { |
|
399 | - return $this->_get_custom_total_owing($shortcode); |
|
400 | - } |
|
401 | - if (strpos($shortcode, '[INVOICE_PAYEE_TAX_NUMBER_*') !== false) { |
|
402 | - return $this->_get_invoice_payee_tax_number($shortcode); |
|
403 | - } |
|
404 | - if (strpos($shortcode, '[PAYMENT_LINK_IF_NEEDED_*') !== false) { |
|
405 | - return $this->_get_payment_link_if_needed($shortcode); |
|
406 | - } |
|
407 | - if (strpos($shortcode, '[PAYMENT_DUE_DATE_*') !== false) { |
|
408 | - return $this->_get_payment_due_date($shortcode, $transaction); |
|
409 | - } |
|
410 | - return ''; |
|
411 | - } |
|
412 | - |
|
413 | - |
|
414 | - /** |
|
415 | - * parser for the [OWING_STATUS_MESSAGE_*] attribute type shortcode |
|
416 | - * |
|
417 | - * @since 4.5.0 |
|
418 | - * @param string $shortcode the incoming shortcode |
|
419 | - * @return string parsed. |
|
420 | - * @throws EE_Error |
|
421 | - */ |
|
422 | - private function _get_custom_total_owing($shortcode) |
|
423 | - { |
|
424 | - $valid_shortcodes = array('transaction'); |
|
425 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
426 | - // ensure default is set. |
|
427 | - $addressee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
428 | - $total_owing = $addressee instanceof EE_Messages_Addressee && $addressee->txn instanceof EE_Transaction |
|
429 | - ? $addressee->txn->remaining() : 0; |
|
430 | - if ($total_owing > 0) { |
|
431 | - $owing_content = ! empty($attrs['still_owing']) |
|
432 | - ? $attrs['still_owing'] |
|
433 | - : sprintf( |
|
434 | - esc_html__('%sPlease make a payment.%s', 'event_espresso'), |
|
435 | - '<a href="[PAYMENT_URL]" class="noPrint">', |
|
436 | - '</a>' |
|
437 | - ); |
|
438 | - $owing_content = $this->_shortcode_helper->parse_message_template( |
|
439 | - $owing_content, |
|
440 | - $addressee, |
|
441 | - $valid_shortcodes, |
|
442 | - $this->_message_type, |
|
443 | - $this->_messenger, |
|
444 | - $this->_message |
|
445 | - ); |
|
446 | - } else { |
|
447 | - $owing_content = ! empty($attrs['none_owing']) ? $attrs['none_owing'] : ''; |
|
448 | - } |
|
449 | - return $owing_content; |
|
450 | - } |
|
451 | - |
|
452 | - |
|
453 | - /** |
|
454 | - * @param EE_Transaction $transaction |
|
455 | - * @return string |
|
456 | - * @throws EE_Error |
|
457 | - */ |
|
458 | - private function _get_payment_gateway($transaction) |
|
459 | - { |
|
460 | - if ($transaction instanceof EE_Transaction) { |
|
461 | - $pm = $transaction->payment_method(); |
|
462 | - } else { |
|
463 | - $pm = null; |
|
464 | - } |
|
465 | - return $pm instanceof EE_Payment_Method ? $pm->name() : ''; |
|
466 | - } |
|
467 | - |
|
468 | - |
|
469 | - /** |
|
470 | - * This retrieves a logo to be used for the invoice from whatever is set on the invoice logo settings page. If its |
|
471 | - * not present then the organization logo is used if its found (set on the organization settings page). |
|
472 | - * |
|
473 | - * @since 4.5.0 |
|
474 | - * @param bool $img_tags TRUE means to return with the img tag wrappers. False just returns the url to the image. |
|
475 | - * @return string url or html |
|
476 | - * @throws EE_Error |
|
477 | - * @throws InvalidArgumentException |
|
478 | - * @throws InvalidDataTypeException |
|
479 | - * @throws InvalidInterfaceException |
|
480 | - */ |
|
481 | - private function _get_invoice_logo($img_tags = false) |
|
482 | - { |
|
483 | - $invoice_logo_url = ''; |
|
484 | - // try to get the invoice payment method's logo for this transaction image first |
|
485 | - $pm = $this->_get_invoice_payment_method(); |
|
486 | - if ($pm instanceof EE_Payment_Method) { |
|
487 | - $invoice_logo_url = $pm->get_extra_meta('pdf_logo_image', true); |
|
488 | - } |
|
489 | - if (empty($invoice_logo_url)) { |
|
490 | - $invoice_logo_url = EE_Registry::instance()->CFG->organization->logo_url; |
|
491 | - } |
|
492 | - if (empty($invoice_logo_url)) { |
|
493 | - return ''; |
|
494 | - } |
|
495 | - if (! $img_tags) { |
|
496 | - return $invoice_logo_url; |
|
497 | - } |
|
498 | - // image tags have been requested. |
|
499 | - $image_size = getimagesize($invoice_logo_url); |
|
500 | - // if image is wider than 300px, set the width to 300 |
|
501 | - if ($image_size[0] > 300) { |
|
502 | - $image_width = 300; |
|
503 | - } else { |
|
504 | - $image_width = $image_size[0]; |
|
505 | - } |
|
506 | - return '<img class="logo screen" src="' . $invoice_logo_url . '" width="' . $image_width . '" alt="logo" />'; |
|
507 | - } |
|
508 | - |
|
509 | - |
|
510 | - /** |
|
511 | - * Used to retrieve the appropriate content for the invoice payee name shortcode |
|
512 | - * |
|
513 | - * @since 4.5.0 |
|
514 | - * @return string |
|
515 | - * @throws EE_Error |
|
516 | - * @throws InvalidArgumentException |
|
517 | - * @throws InvalidDataTypeException |
|
518 | - * @throws InvalidInterfaceException |
|
519 | - */ |
|
520 | - private function _get_invoice_payee_name() |
|
521 | - { |
|
522 | - $payee_name = null; |
|
523 | - $pm = $this->_get_invoice_payment_method(); |
|
524 | - if ($pm instanceof EE_Payment_Method) { |
|
525 | - $payee_name = $pm->get_extra_meta('pdf_payee_name', true); |
|
526 | - } |
|
527 | - $payee_name = empty($payee_name) ? EE_Registry::instance()->CFG->organization->get_pretty('name') : $payee_name; |
|
528 | - return $payee_name; |
|
529 | - } |
|
530 | - |
|
531 | - |
|
532 | - /** |
|
533 | - * gets the default invoice payment method, but has a filter so it can be overridden |
|
534 | - * |
|
535 | - * @return EE_Payment_Method|null |
|
536 | - * @throws EE_Error |
|
537 | - * @throws InvalidArgumentException |
|
538 | - * @throws InvalidDataTypeException |
|
539 | - * @throws InvalidInterfaceException |
|
540 | - */ |
|
541 | - private function _get_invoice_payment_method() |
|
542 | - { |
|
543 | - if (! $this->_invoice_pm instanceof EE_Payment_Method) { |
|
544 | - $transaction = $this->_data->txn instanceof EE_Transaction ? $this->_data->txn : null; |
|
545 | - $transaction = ! $transaction instanceof EE_Transaction |
|
546 | - && is_array($this->_extra_data) |
|
547 | - && isset($this->_extra_data['data']) |
|
548 | - && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
549 | - ? $this->_extra_data['data']->txn : $transaction; |
|
550 | - // get the invoice payment method, and remember it for the next call too |
|
551 | - $this->_invoice_pm = apply_filters( |
|
552 | - 'FHEE__EE_Transaction_Shortcodes__get_payment_method__default', |
|
553 | - EEM_Payment_Method::instance()->get_one_of_type('Invoice'), |
|
554 | - $transaction |
|
555 | - ); |
|
556 | - } |
|
557 | - return $this->_invoice_pm; |
|
558 | - } |
|
559 | - |
|
560 | - |
|
561 | - /** |
|
562 | - * Used to retrieve the appropriate content for the invoice payee email shortcode |
|
563 | - * |
|
564 | - * @since 4.5.0 |
|
565 | - * @return string |
|
566 | - * @throws EE_Error |
|
567 | - * @throws InvalidArgumentException |
|
568 | - * @throws InvalidDataTypeException |
|
569 | - * @throws InvalidInterfaceException |
|
570 | - */ |
|
571 | - private function _get_invoice_payee_email() |
|
572 | - { |
|
573 | - $payee_email = null; |
|
574 | - $pm = $this->_get_invoice_payment_method(); |
|
575 | - if ($pm instanceof EE_Payment_Method) { |
|
576 | - $payee_email = $pm->get_extra_meta('pdf_payee_email', true); |
|
577 | - } |
|
578 | - $payee_email = empty($payee_email) ? EE_Registry::instance()->CFG->organization->get_pretty('email') |
|
579 | - : $payee_email; |
|
580 | - return $payee_email; |
|
581 | - } |
|
582 | - |
|
583 | - |
|
584 | - /** |
|
585 | - * Used to retrieve the appropriate content for the invoice payee tax number shortcode |
|
586 | - * |
|
587 | - * @since 4.5.0 |
|
588 | - * @param string $shortcode |
|
589 | - * @return string |
|
590 | - * @throws EE_Error |
|
591 | - * @throws InvalidArgumentException |
|
592 | - * @throws InvalidDataTypeException |
|
593 | - * @throws InvalidInterfaceException |
|
594 | - */ |
|
595 | - private function _get_invoice_payee_tax_number($shortcode) |
|
596 | - { |
|
597 | - $payee_tax_number = null; |
|
598 | - $pm = $this->_get_invoice_payment_method(); |
|
599 | - if ($pm instanceof EE_Payment_Method) { |
|
600 | - $payee_tax_number = $pm->get_extra_meta('pdf_payee_tax_number', true); |
|
601 | - } |
|
602 | - $payee_tax_number = empty($payee_tax_number) ? EE_Registry::instance()->CFG->organization->vat |
|
603 | - : $payee_tax_number; |
|
604 | - if (empty($payee_tax_number)) { |
|
605 | - return ''; |
|
606 | - } |
|
607 | - // any attributes? |
|
608 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
609 | - // prefix? |
|
610 | - $prefix = isset($attrs['prefix']) ? $attrs['prefix'] : esc_html__('VAT/Tax Number: ', 'event_espresso'); |
|
611 | - return $prefix . $payee_tax_number; |
|
612 | - } |
|
613 | - |
|
614 | - |
|
615 | - /** |
|
616 | - * Used to retrieve the appropriate content for the invoice payee address shortcode. |
|
617 | - * |
|
618 | - * @since 4.5.0 |
|
619 | - * @return string |
|
620 | - * @throws EE_Error |
|
621 | - * @throws InvalidArgumentException |
|
622 | - * @throws ReflectionException |
|
623 | - * @throws InvalidDataTypeException |
|
624 | - * @throws InvalidInterfaceException |
|
625 | - */ |
|
626 | - private function _get_invoice_payee_address() |
|
627 | - { |
|
628 | - $payee_address = null; |
|
629 | - $pm = $this->_get_invoice_payment_method(); |
|
630 | - if ($pm instanceof EE_Payment_Method) { |
|
631 | - $payee_address = $pm->get_extra_meta('pdf_payee_address', true); |
|
632 | - } |
|
633 | - if (empty($payee_address)) { |
|
634 | - $organization = EE_Registry::instance()->CFG->organization; |
|
635 | - $payee_address = $organization->get_pretty('address_1') . '<br>'; |
|
636 | - $payee_address .= ! empty($organization->address_2) |
|
637 | - ? $organization->get_pretty('address_2') . '<br>' |
|
638 | - : ''; |
|
639 | - $payee_address .= $organization->get_pretty('city') . '<br>'; |
|
640 | - // state |
|
641 | - $state = EE_Registry::instance()->load_model('State')->get_one_by_ID($organization->STA_ID); |
|
642 | - $payee_address .= $state instanceof EE_State ? $state->name() : ''; |
|
643 | - // Country |
|
644 | - $payee_address .= ! empty($organization->CNT_ISO) ? ', ' . $organization->CNT_ISO . '<br>' : ''; |
|
645 | - $payee_address .= ! empty($organization->zip) ? $organization->zip : ''; |
|
646 | - } |
|
647 | - return $payee_address; |
|
648 | - } |
|
649 | - |
|
650 | - |
|
651 | - /** |
|
652 | - * Used to retrieve the appropriate content for the invoice payment instructions shortcode. |
|
653 | - * |
|
654 | - * @since 4.5.0 |
|
655 | - * @return string |
|
656 | - * @throws EE_Error |
|
657 | - * @throws InvalidArgumentException |
|
658 | - * @throws InvalidDataTypeException |
|
659 | - * @throws InvalidInterfaceException |
|
660 | - */ |
|
661 | - private function _get_invoice_payment_instructions() |
|
662 | - { |
|
663 | - $instructions = null; |
|
664 | - $pm = $this->_get_invoice_payment_method(); |
|
665 | - return ($pm instanceof EE_Payment_Method) ? $pm->get_extra_meta('pdf_instructions', true) : ''; |
|
666 | - } |
|
667 | - |
|
668 | - |
|
669 | - /** |
|
670 | - * get invoice/receipt switch button or url. |
|
671 | - * |
|
672 | - * @param bool $button true (default) returns the html for a button, false just returns the url. |
|
673 | - * @return string |
|
674 | - * @throws EE_Error |
|
675 | - */ |
|
676 | - protected function _get_invoice_receipt_switcher($button = true) |
|
677 | - { |
|
678 | - $reg = $this->_data->primary_reg_obj; |
|
679 | - $message_type = isset($this->_extra_data['message_type']) ? $this->_extra_data['message_type'] : ''; |
|
680 | - if (! $reg instanceof EE_Registration || empty($message_type)) { |
|
681 | - return ''; |
|
682 | - } |
|
683 | - $switch_to_invoice = ! $message_type instanceof EE_Invoice_message_type ? true : false; |
|
684 | - $switch_to_label = $switch_to_invoice && ! $message_type instanceof EE_Receipt_message_type |
|
685 | - ? esc_html__('View Invoice', 'event_espresso') : esc_html__('Switch to Invoice', 'event_espresso'); |
|
686 | - $switch_to_label = ! $switch_to_invoice ? esc_html__('Switch to Receipt', 'event_espresso') : $switch_to_label; |
|
687 | - $switch_to_url = $switch_to_invoice ? $reg->invoice_url() : $reg->receipt_url(); |
|
688 | - if (! $button) { |
|
689 | - return $switch_to_url; |
|
690 | - } |
|
691 | - if (! empty($switch_to_url)) { |
|
692 | - return ' |
|
20 | + /** |
|
21 | + * @var EE_Payment_Method $_invoice_pm the invoice payment method for use in invoices etc |
|
22 | + */ |
|
23 | + protected $_invoice_pm; |
|
24 | + |
|
25 | + |
|
26 | + protected function _init_props() |
|
27 | + { |
|
28 | + $this->label = esc_html__('Transaction Shortcodes', 'event_espresso'); |
|
29 | + $this->description = esc_html__('All shortcodes specific to transaction related data', 'event_espresso'); |
|
30 | + $this->_shortcodes = array( |
|
31 | + '[TXN_ID]' => esc_html__('The transaction id for the purchase.', 'event_espresso'), |
|
32 | + '[PAYMENT_URL]' => esc_html__( |
|
33 | + 'This is a link to make a payment for the event', |
|
34 | + 'event_espresso' |
|
35 | + ), |
|
36 | + '[PAYMENT_LINK_IF_NEEDED_*]' => esc_html__( |
|
37 | + 'This is a special dynamic shortcode that allows one to insert a payment link conditional on there being amount owing on the transaction. Three params are available on this shortcode:', |
|
38 | + 'event_espresso' |
|
39 | + ) |
|
40 | + . '<ul>' |
|
41 | + . '<li>' |
|
42 | + . sprintf( |
|
43 | + esc_html__( |
|
44 | + '%sclass:%s This can be used to indicate css class is given to the containing css element (default is "callout").', |
|
45 | + 'event_espresso' |
|
46 | + ), |
|
47 | + '<strong>', |
|
48 | + '</strong>' |
|
49 | + ) |
|
50 | + . '</li>' |
|
51 | + . '<li>' |
|
52 | + . sprintf( |
|
53 | + esc_html__( |
|
54 | + '%scustom_text:%s This should be a sprintf format text string (with %%s for where the hyperlink tags go) that is used for the generated link text (The default is "You can %%smake a payment here »%%s.)', |
|
55 | + 'event_espresso' |
|
56 | + ), |
|
57 | + '<strong>', |
|
58 | + '</strong>' |
|
59 | + ) |
|
60 | + . '</li>' |
|
61 | + . '<li>' |
|
62 | + . sprintf( |
|
63 | + esc_html__( |
|
64 | + '%scontainer_tag:%s Use this to indicate what container tag you want surrounding the payment link (default is "p").', |
|
65 | + 'event_espresso' |
|
66 | + ), |
|
67 | + '<strong>', |
|
68 | + '</strong>' |
|
69 | + ) |
|
70 | + . '</li>' |
|
71 | + . '</ul>', |
|
72 | + '[PAYMENT_DUE_DATE_*]' => esc_html__( |
|
73 | + 'This is a special dynamic shortcode that allows one to output a payment due date. It will only result in a date shown if there is money owing. Three parameters are available on this shortcode:', |
|
74 | + 'event_espresso' |
|
75 | + ) |
|
76 | + . '<ul>' |
|
77 | + . '<li>' |
|
78 | + . sprintf( |
|
79 | + esc_html__( |
|
80 | + '%sformat:%s This is used to indicate what format the date is in. Default is whatever is set as date formats for your website.', |
|
81 | + 'event_espresso' |
|
82 | + ), |
|
83 | + '<strong>', |
|
84 | + '</strong>' |
|
85 | + ) |
|
86 | + . '</li>' |
|
87 | + . '<li>' |
|
88 | + . sprintf( |
|
89 | + esc_html__( |
|
90 | + '%sdays_until_due:%s This is the number of days form the transaction creation date that the payment is due. Defaults to 30.', |
|
91 | + 'event_espresso' |
|
92 | + ), |
|
93 | + '<strong>', |
|
94 | + '</strong>' |
|
95 | + ) |
|
96 | + . '</li>' |
|
97 | + . '<li>' |
|
98 | + . sprintf( |
|
99 | + esc_html__( |
|
100 | + '%sprefix_text:%s You can use this to indicate what text will prefix the date string. Defaults to "Payment in full due by:"', |
|
101 | + 'event_espresso' |
|
102 | + ), |
|
103 | + '<strong>', |
|
104 | + '</strong>' |
|
105 | + ) |
|
106 | + . '</li>', |
|
107 | + '[INVOICE_LINK]' => esc_html__( |
|
108 | + 'This is a full html link to the invoice', |
|
109 | + 'event_espresso' |
|
110 | + ), |
|
111 | + '[INVOICE_URL]' => esc_html__( |
|
112 | + 'This is just the url for the invoice', |
|
113 | + 'event_espresso' |
|
114 | + ), |
|
115 | + '[INVOICE_LOGO_URL]' => esc_html__( |
|
116 | + 'This returns the url for the logo uploaded via the invoice settings page.', |
|
117 | + 'event_espresso' |
|
118 | + ), |
|
119 | + '[INVOICE_LOGO]' => esc_html__( |
|
120 | + 'This returns the logo uploaded via the invoice settings page wrapped in img_tags and with a "logo screen" classes. The image size is also set in the img tags automatically to match the uploaded logo.', |
|
121 | + 'event_espresso' |
|
122 | + ), |
|
123 | + '[INVOICE_PAYEE_NAME]' => esc_html__( |
|
124 | + 'This will parse to either: the value of the "Company Name" field in the invoice payment method settings; if that is blank, then the value of the Company Name in the "Your Organization Settings", if that is blank then an empty string.', |
|
125 | + 'event_espresso' |
|
126 | + ), |
|
127 | + '[INVOICE_PAYEE_ADDRESS]' => esc_html__( |
|
128 | + 'This will parse to either: the value of the "Company Address" field in the invoice payment method settings; if that is blank, then the value of the Company Address in the "Your Organization Settings", if that is blank then an empty string.', |
|
129 | + 'event_espresso' |
|
130 | + ), |
|
131 | + '[INVOICE_PAYMENT_INSTRUCTIONS]' => esc_html__( |
|
132 | + 'This will parse to the value of the "Payment Instructions" field found on the Invoice payment methods settings page', |
|
133 | + 'event_espresso' |
|
134 | + ), |
|
135 | + '[INVOICE_PAYEE_EMAIL]' => esc_html__( |
|
136 | + 'This will parse to either: the value of the "Company Email" field in the invoice payment method settings; if that is blank, then the value of the Company Email in the "Your Organization Settings", if that is blank then an empty string.', |
|
137 | + 'event_espresso' |
|
138 | + ), |
|
139 | + '[INVOICE_PAYEE_TAX_NUMBER_*]' => sprintf( |
|
140 | + esc_html__( |
|
141 | + 'This will parse to either: the value of the "Company Tax Number" field in the invoice payment method settings; if that is blank, then the value of the Company Tax Number in the "Your Organization Settings", if that is blank then an empty string. Note this is also a special dynamic shortcode. You can use the "prefix" parameter to indicate what text you want to use as a prefix before this tax number. It defaults to "VAT/Tax Number:". To change this prefix you do the following format for this shortcode: %1$s[INVOICE_PAYEE_TAX_NUMBER_* prefix="GST:"]%2$s and that will output: GST: 12345t56. If you have no tax number in your settings, then no prefix will be output either.', |
|
142 | + 'event_espresso' |
|
143 | + ), |
|
144 | + '<code>', |
|
145 | + '</code>' |
|
146 | + ), |
|
147 | + '[TOTAL_COST]' => esc_html__('The total cost for the transaction', 'event_espresso'), |
|
148 | + '[TXN_STATUS]' => esc_html__( |
|
149 | + 'The transaction status for the transaction.', |
|
150 | + 'event_espresso' |
|
151 | + ), |
|
152 | + '[TXN_STATUS_ID]' => esc_html__( |
|
153 | + 'The ID representing the transaction status as saved in the db. This tends to be useful for including with css classes for styling certain statuses differently from others.', |
|
154 | + 'event_espresso' |
|
155 | + ), |
|
156 | + '[PAYMENT_STATUS]' => esc_html__( |
|
157 | + 'The transaction status for the transaction. This parses to the same value as the [TXN_STATUS] shortcode and still remains here for legacy support.', |
|
158 | + 'event_espresso' |
|
159 | + ), |
|
160 | + '[PAYMENT_GATEWAY]' => esc_html__( |
|
161 | + 'The payment gateway used for the transaction', |
|
162 | + 'event_espresso' |
|
163 | + ), |
|
164 | + '[AMOUNT_PAID]' => esc_html__( |
|
165 | + 'The amount paid or refunded. This will only have a value if there was a payment or refund at the time of generating the message.', |
|
166 | + 'event_espresso' |
|
167 | + ), |
|
168 | + '[LAST_AMOUNT_PAID]' => esc_html__( |
|
169 | + 'This is the last payment or refund made on the transaction related to the message being generated.', |
|
170 | + 'event_espresso' |
|
171 | + ), |
|
172 | + '[TOTAL_AMOUNT_PAID]' => esc_html__( |
|
173 | + 'This parses to the total amount paid over all payments', |
|
174 | + 'event_espresso' |
|
175 | + ), |
|
176 | + '[TOTAL_OWING]' => esc_html__( |
|
177 | + 'The total owing on a transaction with no attributes.', |
|
178 | + 'event_espresso' |
|
179 | + ), |
|
180 | + '[TXN_SUBTOTAL]' => esc_html__('The subtotal for all txn line items.', 'event_espresso'), |
|
181 | + '[TXN_TAX_SUBTOTAL]' => esc_html__('The subtotal for all tax line items.', 'event_espresso'), |
|
182 | + '[OWING_STATUS_MESSAGE_*]' => esc_html__( |
|
183 | + 'A dynamic shortcode for adjusting how total owing gets shown. The acceptable attributes on the shortcode are:', |
|
184 | + 'event_espresso' |
|
185 | + ) |
|
186 | + . '<p></ul>' |
|
187 | + . '<li><strong>still_owing</strong>:' |
|
188 | + . esc_html__( |
|
189 | + 'If the transaction is not paid in full, then whatever is set for this attribute is shown (otherwise its just the amount owing). The default is:', |
|
190 | + 'event_espresso' |
|
191 | + ) |
|
192 | + . sprintf( |
|
193 | + esc_html__('%sPlease make a payment.%s', 'event_espresso'), |
|
194 | + '<a href="[PAYMENT_URL]" class="noPrint">', |
|
195 | + '</a>' |
|
196 | + ) |
|
197 | + . '</li>' |
|
198 | + . |
|
199 | + '<li><strong>none_owing</strong>:' |
|
200 | + . esc_html__( |
|
201 | + 'If the transaction is paid in full, then you can indicate how this gets displayed. Note, that it defaults to just be the total owing.', |
|
202 | + 'event_espresso' |
|
203 | + ) |
|
204 | + . '</li></ul></p>', |
|
205 | + '[TXN_TOTAL_TICKETS]' => esc_html__( |
|
206 | + 'The total number of all tickets purchased in a transaction', |
|
207 | + 'event_espresso' |
|
208 | + ), |
|
209 | + '[TKT_QTY_PURCHASED]' => sprintf( |
|
210 | + esc_html__( |
|
211 | + 'The total number of all tickets purchased in a transaction. %1$sNOTE: This shortcode is good to use in the "[TICKET_LIST]" field but has been deprecated from all other contexts in favor of the more explicit [TXN_TOTAL_TICKETS] shortcode.%2$s', |
|
212 | + 'event_espresso' |
|
213 | + ), |
|
214 | + '<strong>', |
|
215 | + '</strong>' |
|
216 | + ), |
|
217 | + '[TRANSACTION_ADMIN_URL]' => esc_html__( |
|
218 | + 'The url to the admin page for this transaction', |
|
219 | + 'event_espresso' |
|
220 | + ), |
|
221 | + '[RECEIPT_URL]' => esc_html__( |
|
222 | + 'This parses to the generated url for retrieving the receipt for the transaction', |
|
223 | + 'event_espresso' |
|
224 | + ), |
|
225 | + '[INVOICE_RECEIPT_SWITCHER_URL]' => esc_html__( |
|
226 | + 'This parses to the url that will switch to the receipt if an invoice is displayed, and switch to the invoice if receipt is displayed. If a message type OTHER than invoice or receipt is displayed then this will just return the url for the invoice. If the related message type is not active then will parse to an empty string.', |
|
227 | + 'event_espresso' |
|
228 | + ), |
|
229 | + '[INVOICE_RECEIPT_SWITCHER_BUTTON]' => sprintf( |
|
230 | + esc_html__( |
|
231 | + 'The same as %1$s%2$s except this returns the html for a button linked to the invoice or receipt.', |
|
232 | + 'event_espresso' |
|
233 | + ), |
|
234 | + '<code>[INVOICE_RECEIPT_SWITCHER_URL]', |
|
235 | + '</code>' |
|
236 | + ), |
|
237 | + '[LAST_PAYMENT_TRANSACTION_ID]' => esc_html__( |
|
238 | + 'This will output the value of the payment transaction id for the last payment made on the transaction. Note, if a specific payment was included for message generation, that will be used when parsing the shortcode.', |
|
239 | + 'event_espresso' |
|
240 | + ), |
|
241 | + ); |
|
242 | + } |
|
243 | + |
|
244 | + |
|
245 | + /** |
|
246 | + * @param string $shortcode the shortcode to be parsed. |
|
247 | + * @return string parsed shortcode |
|
248 | + * @throws EE_Error |
|
249 | + * @throws InvalidArgumentException |
|
250 | + * @throws ReflectionException |
|
251 | + * @throws InvalidDataTypeException |
|
252 | + * @throws InvalidInterfaceException |
|
253 | + */ |
|
254 | + protected function _parser($shortcode) |
|
255 | + { |
|
256 | + // attempt to get the transaction. Since this is potentially used in more fields, we may have to look in the |
|
257 | + // _extra_data for the transaction. |
|
258 | + $transaction = $this->_data->txn instanceof EE_Transaction ? $this->_data->txn : null; |
|
259 | + $transaction = ! $transaction instanceof EE_Transaction |
|
260 | + && is_array($this->_extra_data) |
|
261 | + && isset($this->_extra_data['data']) |
|
262 | + && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
263 | + ? $this->_extra_data['data']->txn |
|
264 | + : $transaction; |
|
265 | + // payment |
|
266 | + $payment = $this->_data->payment instanceof EE_Payment ? $this->_data->payment : null; |
|
267 | + $payment = ! $payment instanceof EE_Payment |
|
268 | + && is_array($this->_extra_data) |
|
269 | + && isset($this->_extra_data['data']) |
|
270 | + && $this->_extra_data['data'] instanceof EE_Messages_Addressee ? $this->_extra_data['data']->payment |
|
271 | + : $payment; |
|
272 | + if (! $transaction instanceof EE_Transaction) { |
|
273 | + return ''; |
|
274 | + } |
|
275 | + switch ($shortcode) { |
|
276 | + case '[TXN_ID]': |
|
277 | + return $transaction->ID(); |
|
278 | + break; |
|
279 | + case '[PAYMENT_URL]': |
|
280 | + $payment_url = $transaction->payment_overview_url(); |
|
281 | + return empty($payment_url) |
|
282 | + ? esc_html__('http://dummypaymenturlforpreview.com', 'event_espresso') |
|
283 | + : $payment_url; |
|
284 | + break; |
|
285 | + case '[INVOICE_LINK]': |
|
286 | + $invoice_url = $transaction->invoice_url(); |
|
287 | + $invoice_url = empty($invoice_url) ? 'http://dummyinvoicelinksforpreview.com' : $invoice_url; |
|
288 | + return sprintf( |
|
289 | + esc_html__('%sClick here for Invoice%s', 'event_espresso'), |
|
290 | + '<a href="' . $invoice_url . '">', |
|
291 | + '</a>' |
|
292 | + ); |
|
293 | + break; |
|
294 | + case '[INVOICE_URL]': |
|
295 | + $invoice_url = $transaction->invoice_url(); |
|
296 | + return empty($invoice_url) ? 'http://dummyinvoicelinksforpreview.com' : $invoice_url; |
|
297 | + break; |
|
298 | + case '[INVOICE_LOGO_URL]': |
|
299 | + return $this->_get_invoice_logo(); |
|
300 | + break; |
|
301 | + case '[INVOICE_LOGO]': |
|
302 | + return $this->_get_invoice_logo(true); |
|
303 | + break; |
|
304 | + case '[INVOICE_PAYEE_NAME]': |
|
305 | + return $this->_get_invoice_payee_name(); |
|
306 | + break; |
|
307 | + case '[INVOICE_PAYEE_ADDRESS]': |
|
308 | + return $this->_get_invoice_payee_address(); |
|
309 | + break; |
|
310 | + case '[INVOICE_PAYMENT_INSTRUCTIONS]': |
|
311 | + return $this->_get_invoice_payment_instructions(); |
|
312 | + break; |
|
313 | + case '[INVOICE_PAYEE_EMAIL]': |
|
314 | + return $this->_get_invoice_payee_email(); |
|
315 | + break; |
|
316 | + case '[TOTAL_COST]': |
|
317 | + $total = $transaction->total(); |
|
318 | + return ! empty($total) ? EEH_Template::format_currency($total) : ''; |
|
319 | + break; |
|
320 | + case '[PAYMENT_STATUS]': |
|
321 | + $status = $transaction->pretty_status(); |
|
322 | + return ! empty($status) ? $status : esc_html__('Unknown', 'event_espresso'); |
|
323 | + break; /**/ |
|
324 | + // note the [payment_status] shortcode is kind of misleading because payment status might be different |
|
325 | + // from txn status so I'm adding this here for clarity. |
|
326 | + case '[TXN_STATUS]': |
|
327 | + $status = $transaction->pretty_status(); |
|
328 | + return ! empty($status) ? $status : esc_html__('Unknown', 'event_espresso'); |
|
329 | + break; |
|
330 | + case '[TXN_STATUS_ID]': |
|
331 | + return $transaction->status_ID(); |
|
332 | + break; |
|
333 | + case '[PAYMENT_GATEWAY]': |
|
334 | + return $this->_get_payment_gateway($transaction); |
|
335 | + break; |
|
336 | + case '[AMOUNT_PAID]': |
|
337 | + return $payment instanceof EE_Payment |
|
338 | + ? EEH_Template::format_currency($payment->amount()) |
|
339 | + : EEH_Template::format_currency(0); |
|
340 | + break; |
|
341 | + case '[LAST_AMOUNT_PAID]': |
|
342 | + $last_payment = $transaction->last_payment(); |
|
343 | + return $last_payment instanceof EE_Payment |
|
344 | + ? EEH_Template::format_currency($last_payment->amount()) |
|
345 | + : EEH_Template::format_currency(0); |
|
346 | + case '[TOTAL_AMOUNT_PAID]': |
|
347 | + return EEH_Template::format_currency($transaction->paid()); |
|
348 | + break; |
|
349 | + case '[TOTAL_OWING]': |
|
350 | + $total_owing = $transaction->remaining(); |
|
351 | + return EEH_Template::format_currency($total_owing); |
|
352 | + break; |
|
353 | + case '[TXN_SUBTOTAL]': |
|
354 | + return EEH_Template::format_currency($this->_get_subtotal()); |
|
355 | + break; |
|
356 | + case '[TXN_TAX_SUBTOTAL]': |
|
357 | + return EEH_Template::format_currency($this->_get_subtotal(true)); |
|
358 | + break; |
|
359 | + case '[TKT_QTY_PURCHASED]': |
|
360 | + case '[TXN_TOTAL_TICKETS]': |
|
361 | + return $this->_data->total_ticket_count; |
|
362 | + break; |
|
363 | + case '[TRANSACTION_ADMIN_URL]': |
|
364 | + require_once EE_CORE . 'admin/EE_Admin_Page.core.php'; |
|
365 | + $query_args = array( |
|
366 | + 'page' => 'espresso_transactions', |
|
367 | + 'action' => 'view_transaction', |
|
368 | + 'TXN_ID' => $transaction->ID(), |
|
369 | + ); |
|
370 | + $url = EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')); |
|
371 | + return $url; |
|
372 | + break; |
|
373 | + case '[RECEIPT_URL]': |
|
374 | + // get primary_registration |
|
375 | + $reg = $this->_data->primary_reg_obj; |
|
376 | + if (! $reg instanceof EE_Registration) { |
|
377 | + return ''; |
|
378 | + } |
|
379 | + return $reg->receipt_url(); |
|
380 | + break; |
|
381 | + case '[INVOICE_RECEIPT_SWITCHER_URL]': |
|
382 | + return $this->_get_invoice_receipt_switcher(false); |
|
383 | + break; |
|
384 | + case '[INVOICE_RECEIPT_SWITCHER_BUTTON]': |
|
385 | + return $this->_get_invoice_receipt_switcher(); |
|
386 | + break; |
|
387 | + case '[LAST_PAYMENT_TRANSACTION_ID]': |
|
388 | + $id = ''; |
|
389 | + $payment = $payment instanceof EE_Payment && $payment->ID() !== 0 |
|
390 | + ? $payment |
|
391 | + : $transaction->last_payment(); |
|
392 | + if ($payment instanceof EE_Payment) { |
|
393 | + $id = $payment->txn_id_chq_nmbr(); |
|
394 | + } |
|
395 | + return $id; |
|
396 | + break; |
|
397 | + } |
|
398 | + if (strpos($shortcode, '[OWING_STATUS_MESSAGE_*') !== false) { |
|
399 | + return $this->_get_custom_total_owing($shortcode); |
|
400 | + } |
|
401 | + if (strpos($shortcode, '[INVOICE_PAYEE_TAX_NUMBER_*') !== false) { |
|
402 | + return $this->_get_invoice_payee_tax_number($shortcode); |
|
403 | + } |
|
404 | + if (strpos($shortcode, '[PAYMENT_LINK_IF_NEEDED_*') !== false) { |
|
405 | + return $this->_get_payment_link_if_needed($shortcode); |
|
406 | + } |
|
407 | + if (strpos($shortcode, '[PAYMENT_DUE_DATE_*') !== false) { |
|
408 | + return $this->_get_payment_due_date($shortcode, $transaction); |
|
409 | + } |
|
410 | + return ''; |
|
411 | + } |
|
412 | + |
|
413 | + |
|
414 | + /** |
|
415 | + * parser for the [OWING_STATUS_MESSAGE_*] attribute type shortcode |
|
416 | + * |
|
417 | + * @since 4.5.0 |
|
418 | + * @param string $shortcode the incoming shortcode |
|
419 | + * @return string parsed. |
|
420 | + * @throws EE_Error |
|
421 | + */ |
|
422 | + private function _get_custom_total_owing($shortcode) |
|
423 | + { |
|
424 | + $valid_shortcodes = array('transaction'); |
|
425 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
426 | + // ensure default is set. |
|
427 | + $addressee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
428 | + $total_owing = $addressee instanceof EE_Messages_Addressee && $addressee->txn instanceof EE_Transaction |
|
429 | + ? $addressee->txn->remaining() : 0; |
|
430 | + if ($total_owing > 0) { |
|
431 | + $owing_content = ! empty($attrs['still_owing']) |
|
432 | + ? $attrs['still_owing'] |
|
433 | + : sprintf( |
|
434 | + esc_html__('%sPlease make a payment.%s', 'event_espresso'), |
|
435 | + '<a href="[PAYMENT_URL]" class="noPrint">', |
|
436 | + '</a>' |
|
437 | + ); |
|
438 | + $owing_content = $this->_shortcode_helper->parse_message_template( |
|
439 | + $owing_content, |
|
440 | + $addressee, |
|
441 | + $valid_shortcodes, |
|
442 | + $this->_message_type, |
|
443 | + $this->_messenger, |
|
444 | + $this->_message |
|
445 | + ); |
|
446 | + } else { |
|
447 | + $owing_content = ! empty($attrs['none_owing']) ? $attrs['none_owing'] : ''; |
|
448 | + } |
|
449 | + return $owing_content; |
|
450 | + } |
|
451 | + |
|
452 | + |
|
453 | + /** |
|
454 | + * @param EE_Transaction $transaction |
|
455 | + * @return string |
|
456 | + * @throws EE_Error |
|
457 | + */ |
|
458 | + private function _get_payment_gateway($transaction) |
|
459 | + { |
|
460 | + if ($transaction instanceof EE_Transaction) { |
|
461 | + $pm = $transaction->payment_method(); |
|
462 | + } else { |
|
463 | + $pm = null; |
|
464 | + } |
|
465 | + return $pm instanceof EE_Payment_Method ? $pm->name() : ''; |
|
466 | + } |
|
467 | + |
|
468 | + |
|
469 | + /** |
|
470 | + * This retrieves a logo to be used for the invoice from whatever is set on the invoice logo settings page. If its |
|
471 | + * not present then the organization logo is used if its found (set on the organization settings page). |
|
472 | + * |
|
473 | + * @since 4.5.0 |
|
474 | + * @param bool $img_tags TRUE means to return with the img tag wrappers. False just returns the url to the image. |
|
475 | + * @return string url or html |
|
476 | + * @throws EE_Error |
|
477 | + * @throws InvalidArgumentException |
|
478 | + * @throws InvalidDataTypeException |
|
479 | + * @throws InvalidInterfaceException |
|
480 | + */ |
|
481 | + private function _get_invoice_logo($img_tags = false) |
|
482 | + { |
|
483 | + $invoice_logo_url = ''; |
|
484 | + // try to get the invoice payment method's logo for this transaction image first |
|
485 | + $pm = $this->_get_invoice_payment_method(); |
|
486 | + if ($pm instanceof EE_Payment_Method) { |
|
487 | + $invoice_logo_url = $pm->get_extra_meta('pdf_logo_image', true); |
|
488 | + } |
|
489 | + if (empty($invoice_logo_url)) { |
|
490 | + $invoice_logo_url = EE_Registry::instance()->CFG->organization->logo_url; |
|
491 | + } |
|
492 | + if (empty($invoice_logo_url)) { |
|
493 | + return ''; |
|
494 | + } |
|
495 | + if (! $img_tags) { |
|
496 | + return $invoice_logo_url; |
|
497 | + } |
|
498 | + // image tags have been requested. |
|
499 | + $image_size = getimagesize($invoice_logo_url); |
|
500 | + // if image is wider than 300px, set the width to 300 |
|
501 | + if ($image_size[0] > 300) { |
|
502 | + $image_width = 300; |
|
503 | + } else { |
|
504 | + $image_width = $image_size[0]; |
|
505 | + } |
|
506 | + return '<img class="logo screen" src="' . $invoice_logo_url . '" width="' . $image_width . '" alt="logo" />'; |
|
507 | + } |
|
508 | + |
|
509 | + |
|
510 | + /** |
|
511 | + * Used to retrieve the appropriate content for the invoice payee name shortcode |
|
512 | + * |
|
513 | + * @since 4.5.0 |
|
514 | + * @return string |
|
515 | + * @throws EE_Error |
|
516 | + * @throws InvalidArgumentException |
|
517 | + * @throws InvalidDataTypeException |
|
518 | + * @throws InvalidInterfaceException |
|
519 | + */ |
|
520 | + private function _get_invoice_payee_name() |
|
521 | + { |
|
522 | + $payee_name = null; |
|
523 | + $pm = $this->_get_invoice_payment_method(); |
|
524 | + if ($pm instanceof EE_Payment_Method) { |
|
525 | + $payee_name = $pm->get_extra_meta('pdf_payee_name', true); |
|
526 | + } |
|
527 | + $payee_name = empty($payee_name) ? EE_Registry::instance()->CFG->organization->get_pretty('name') : $payee_name; |
|
528 | + return $payee_name; |
|
529 | + } |
|
530 | + |
|
531 | + |
|
532 | + /** |
|
533 | + * gets the default invoice payment method, but has a filter so it can be overridden |
|
534 | + * |
|
535 | + * @return EE_Payment_Method|null |
|
536 | + * @throws EE_Error |
|
537 | + * @throws InvalidArgumentException |
|
538 | + * @throws InvalidDataTypeException |
|
539 | + * @throws InvalidInterfaceException |
|
540 | + */ |
|
541 | + private function _get_invoice_payment_method() |
|
542 | + { |
|
543 | + if (! $this->_invoice_pm instanceof EE_Payment_Method) { |
|
544 | + $transaction = $this->_data->txn instanceof EE_Transaction ? $this->_data->txn : null; |
|
545 | + $transaction = ! $transaction instanceof EE_Transaction |
|
546 | + && is_array($this->_extra_data) |
|
547 | + && isset($this->_extra_data['data']) |
|
548 | + && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
549 | + ? $this->_extra_data['data']->txn : $transaction; |
|
550 | + // get the invoice payment method, and remember it for the next call too |
|
551 | + $this->_invoice_pm = apply_filters( |
|
552 | + 'FHEE__EE_Transaction_Shortcodes__get_payment_method__default', |
|
553 | + EEM_Payment_Method::instance()->get_one_of_type('Invoice'), |
|
554 | + $transaction |
|
555 | + ); |
|
556 | + } |
|
557 | + return $this->_invoice_pm; |
|
558 | + } |
|
559 | + |
|
560 | + |
|
561 | + /** |
|
562 | + * Used to retrieve the appropriate content for the invoice payee email shortcode |
|
563 | + * |
|
564 | + * @since 4.5.0 |
|
565 | + * @return string |
|
566 | + * @throws EE_Error |
|
567 | + * @throws InvalidArgumentException |
|
568 | + * @throws InvalidDataTypeException |
|
569 | + * @throws InvalidInterfaceException |
|
570 | + */ |
|
571 | + private function _get_invoice_payee_email() |
|
572 | + { |
|
573 | + $payee_email = null; |
|
574 | + $pm = $this->_get_invoice_payment_method(); |
|
575 | + if ($pm instanceof EE_Payment_Method) { |
|
576 | + $payee_email = $pm->get_extra_meta('pdf_payee_email', true); |
|
577 | + } |
|
578 | + $payee_email = empty($payee_email) ? EE_Registry::instance()->CFG->organization->get_pretty('email') |
|
579 | + : $payee_email; |
|
580 | + return $payee_email; |
|
581 | + } |
|
582 | + |
|
583 | + |
|
584 | + /** |
|
585 | + * Used to retrieve the appropriate content for the invoice payee tax number shortcode |
|
586 | + * |
|
587 | + * @since 4.5.0 |
|
588 | + * @param string $shortcode |
|
589 | + * @return string |
|
590 | + * @throws EE_Error |
|
591 | + * @throws InvalidArgumentException |
|
592 | + * @throws InvalidDataTypeException |
|
593 | + * @throws InvalidInterfaceException |
|
594 | + */ |
|
595 | + private function _get_invoice_payee_tax_number($shortcode) |
|
596 | + { |
|
597 | + $payee_tax_number = null; |
|
598 | + $pm = $this->_get_invoice_payment_method(); |
|
599 | + if ($pm instanceof EE_Payment_Method) { |
|
600 | + $payee_tax_number = $pm->get_extra_meta('pdf_payee_tax_number', true); |
|
601 | + } |
|
602 | + $payee_tax_number = empty($payee_tax_number) ? EE_Registry::instance()->CFG->organization->vat |
|
603 | + : $payee_tax_number; |
|
604 | + if (empty($payee_tax_number)) { |
|
605 | + return ''; |
|
606 | + } |
|
607 | + // any attributes? |
|
608 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
609 | + // prefix? |
|
610 | + $prefix = isset($attrs['prefix']) ? $attrs['prefix'] : esc_html__('VAT/Tax Number: ', 'event_espresso'); |
|
611 | + return $prefix . $payee_tax_number; |
|
612 | + } |
|
613 | + |
|
614 | + |
|
615 | + /** |
|
616 | + * Used to retrieve the appropriate content for the invoice payee address shortcode. |
|
617 | + * |
|
618 | + * @since 4.5.0 |
|
619 | + * @return string |
|
620 | + * @throws EE_Error |
|
621 | + * @throws InvalidArgumentException |
|
622 | + * @throws ReflectionException |
|
623 | + * @throws InvalidDataTypeException |
|
624 | + * @throws InvalidInterfaceException |
|
625 | + */ |
|
626 | + private function _get_invoice_payee_address() |
|
627 | + { |
|
628 | + $payee_address = null; |
|
629 | + $pm = $this->_get_invoice_payment_method(); |
|
630 | + if ($pm instanceof EE_Payment_Method) { |
|
631 | + $payee_address = $pm->get_extra_meta('pdf_payee_address', true); |
|
632 | + } |
|
633 | + if (empty($payee_address)) { |
|
634 | + $organization = EE_Registry::instance()->CFG->organization; |
|
635 | + $payee_address = $organization->get_pretty('address_1') . '<br>'; |
|
636 | + $payee_address .= ! empty($organization->address_2) |
|
637 | + ? $organization->get_pretty('address_2') . '<br>' |
|
638 | + : ''; |
|
639 | + $payee_address .= $organization->get_pretty('city') . '<br>'; |
|
640 | + // state |
|
641 | + $state = EE_Registry::instance()->load_model('State')->get_one_by_ID($organization->STA_ID); |
|
642 | + $payee_address .= $state instanceof EE_State ? $state->name() : ''; |
|
643 | + // Country |
|
644 | + $payee_address .= ! empty($organization->CNT_ISO) ? ', ' . $organization->CNT_ISO . '<br>' : ''; |
|
645 | + $payee_address .= ! empty($organization->zip) ? $organization->zip : ''; |
|
646 | + } |
|
647 | + return $payee_address; |
|
648 | + } |
|
649 | + |
|
650 | + |
|
651 | + /** |
|
652 | + * Used to retrieve the appropriate content for the invoice payment instructions shortcode. |
|
653 | + * |
|
654 | + * @since 4.5.0 |
|
655 | + * @return string |
|
656 | + * @throws EE_Error |
|
657 | + * @throws InvalidArgumentException |
|
658 | + * @throws InvalidDataTypeException |
|
659 | + * @throws InvalidInterfaceException |
|
660 | + */ |
|
661 | + private function _get_invoice_payment_instructions() |
|
662 | + { |
|
663 | + $instructions = null; |
|
664 | + $pm = $this->_get_invoice_payment_method(); |
|
665 | + return ($pm instanceof EE_Payment_Method) ? $pm->get_extra_meta('pdf_instructions', true) : ''; |
|
666 | + } |
|
667 | + |
|
668 | + |
|
669 | + /** |
|
670 | + * get invoice/receipt switch button or url. |
|
671 | + * |
|
672 | + * @param bool $button true (default) returns the html for a button, false just returns the url. |
|
673 | + * @return string |
|
674 | + * @throws EE_Error |
|
675 | + */ |
|
676 | + protected function _get_invoice_receipt_switcher($button = true) |
|
677 | + { |
|
678 | + $reg = $this->_data->primary_reg_obj; |
|
679 | + $message_type = isset($this->_extra_data['message_type']) ? $this->_extra_data['message_type'] : ''; |
|
680 | + if (! $reg instanceof EE_Registration || empty($message_type)) { |
|
681 | + return ''; |
|
682 | + } |
|
683 | + $switch_to_invoice = ! $message_type instanceof EE_Invoice_message_type ? true : false; |
|
684 | + $switch_to_label = $switch_to_invoice && ! $message_type instanceof EE_Receipt_message_type |
|
685 | + ? esc_html__('View Invoice', 'event_espresso') : esc_html__('Switch to Invoice', 'event_espresso'); |
|
686 | + $switch_to_label = ! $switch_to_invoice ? esc_html__('Switch to Receipt', 'event_espresso') : $switch_to_label; |
|
687 | + $switch_to_url = $switch_to_invoice ? $reg->invoice_url() : $reg->receipt_url(); |
|
688 | + if (! $button) { |
|
689 | + return $switch_to_url; |
|
690 | + } |
|
691 | + if (! empty($switch_to_url)) { |
|
692 | + return ' |
|
693 | 693 | <form method="post" action="' . $switch_to_url . '" > |
694 | 694 | <input class="print_button" type="submit" value="' . $switch_to_label . '" /> |
695 | 695 | </form> |
696 | 696 | '; |
697 | - } |
|
698 | - return ''; |
|
699 | - } |
|
700 | - |
|
701 | - |
|
702 | - /** |
|
703 | - * This returns a subtotal. |
|
704 | - * |
|
705 | - * @param bool $tax if true then return the subtotal for tax otherwise return subtotal. |
|
706 | - * @return int |
|
707 | - * @throws EE_Error |
|
708 | - */ |
|
709 | - private function _get_subtotal($tax = false) |
|
710 | - { |
|
711 | - $grand_total = isset($this->_data->grand_total_line_item) ? $this->_data->grand_total_line_item : null; |
|
712 | - if (! $grand_total instanceof EE_Line_Item) { |
|
713 | - return 0; |
|
714 | - } |
|
715 | - return $tax ? $grand_total->get_total_tax() : $grand_total->get_items_total(); |
|
716 | - } |
|
717 | - |
|
718 | - |
|
719 | - /** |
|
720 | - * parser for the [PAYMENT_LINK_IF_NEEDED_*] attribute type shortcode |
|
721 | - * |
|
722 | - * @since 4.7.0 |
|
723 | - * @param string $shortcode the incoming shortcode |
|
724 | - * @return string parsed. |
|
725 | - * @throws EE_Error |
|
726 | - */ |
|
727 | - private function _get_payment_link_if_needed($shortcode) |
|
728 | - { |
|
729 | - $valid_shortcodes = array('transaction'); |
|
730 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
731 | - // ensure default is set. |
|
732 | - $addressee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
733 | - $total_owing = $addressee instanceof EE_Messages_Addressee && $addressee->txn instanceof EE_Transaction |
|
734 | - ? $addressee->txn->remaining() : 0; |
|
735 | - if ($total_owing > 0) { |
|
736 | - $class = isset($attrs['class']) ? $attrs['class'] : 'callout'; |
|
737 | - $custom_text = isset($attrs['custom_text']) ? $attrs['custom_text'] : 'You can %smake a payment here »%s.'; |
|
738 | - $container_tag = isset($attrs['container_tag']) ? $attrs['container_tag'] : 'p'; |
|
739 | - $opening_tag = ! empty($container_tag) ? '<' . $container_tag : ''; |
|
740 | - $opening_tag .= ! empty($opening_tag) && ! empty($class) ? ' class="' . $class . '"' : $opening_tag; |
|
741 | - $opening_tag .= ! empty($opening_tag) ? '>' : $opening_tag; |
|
742 | - $closing_tag = ! empty($container_tag) ? '</' . $container_tag . '>' : ''; |
|
743 | - $content = $opening_tag . sprintf($custom_text, '<a href="[PAYMENT_URL]">', '</a>') . $closing_tag; |
|
744 | - // we need to re run this string through the parser to catch any shortcodes that are in it. |
|
745 | - $owing_content = $this->_shortcode_helper->parse_message_template( |
|
746 | - $content, |
|
747 | - $addressee, |
|
748 | - $valid_shortcodes, |
|
749 | - $this->_message_type, |
|
750 | - $this->_messenger, |
|
751 | - $this->_message |
|
752 | - ); |
|
753 | - } else { |
|
754 | - return ''; |
|
755 | - } |
|
756 | - return $owing_content; |
|
757 | - } |
|
758 | - |
|
759 | - |
|
760 | - /** |
|
761 | - * Parser for the [PAYMENT_DUE_DATE_*] attribute type shortcode |
|
762 | - * |
|
763 | - * @since 4.8.28.rc.011 |
|
764 | - * @param string $shortcode The shortcode being parsed. |
|
765 | - * @param EE_Transaction $transaction |
|
766 | - * @return string |
|
767 | - * @throws EE_Error |
|
768 | - */ |
|
769 | - protected function _get_payment_due_date($shortcode, EE_Transaction $transaction) |
|
770 | - { |
|
771 | - // if transaction is paid in full then we can just return an empty string |
|
772 | - if ($transaction->remaining() === 0) { |
|
773 | - return ''; |
|
774 | - } |
|
775 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
776 | - $format = isset($attrs['format']) ? $attrs['format'] : get_option('date_format'); |
|
777 | - $days_until_due = isset($attrs['days_until_due']) ? (int) $attrs['days_until_due'] : 30; |
|
778 | - $prefix_text = isset($attrs['prefix_text']) ? $attrs['prefix_text'] |
|
779 | - : esc_html__('Payment in full due by: ', 'event_espresso'); |
|
780 | - $transaction_created = $transaction->get_DateTime_object('TXN_timestamp'); |
|
781 | - // setup date due: |
|
782 | - try { |
|
783 | - if ($transaction_created instanceof DateTime) { |
|
784 | - $date_due = $transaction_created->add( |
|
785 | - new DateInterval('P' . $days_until_due . 'D') |
|
786 | - )->format($format); |
|
787 | - } else { |
|
788 | - throw new Exception(); |
|
789 | - } |
|
790 | - } catch (Exception $e) { |
|
791 | - // format was likely invalid. |
|
792 | - $date_due = esc_html__( |
|
793 | - 'Unable to calculate date due, likely the format string is invalid.', |
|
794 | - 'event_espresso' |
|
795 | - ); |
|
796 | - } |
|
797 | - return $prefix_text . $date_due; |
|
798 | - } |
|
697 | + } |
|
698 | + return ''; |
|
699 | + } |
|
700 | + |
|
701 | + |
|
702 | + /** |
|
703 | + * This returns a subtotal. |
|
704 | + * |
|
705 | + * @param bool $tax if true then return the subtotal for tax otherwise return subtotal. |
|
706 | + * @return int |
|
707 | + * @throws EE_Error |
|
708 | + */ |
|
709 | + private function _get_subtotal($tax = false) |
|
710 | + { |
|
711 | + $grand_total = isset($this->_data->grand_total_line_item) ? $this->_data->grand_total_line_item : null; |
|
712 | + if (! $grand_total instanceof EE_Line_Item) { |
|
713 | + return 0; |
|
714 | + } |
|
715 | + return $tax ? $grand_total->get_total_tax() : $grand_total->get_items_total(); |
|
716 | + } |
|
717 | + |
|
718 | + |
|
719 | + /** |
|
720 | + * parser for the [PAYMENT_LINK_IF_NEEDED_*] attribute type shortcode |
|
721 | + * |
|
722 | + * @since 4.7.0 |
|
723 | + * @param string $shortcode the incoming shortcode |
|
724 | + * @return string parsed. |
|
725 | + * @throws EE_Error |
|
726 | + */ |
|
727 | + private function _get_payment_link_if_needed($shortcode) |
|
728 | + { |
|
729 | + $valid_shortcodes = array('transaction'); |
|
730 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
731 | + // ensure default is set. |
|
732 | + $addressee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
733 | + $total_owing = $addressee instanceof EE_Messages_Addressee && $addressee->txn instanceof EE_Transaction |
|
734 | + ? $addressee->txn->remaining() : 0; |
|
735 | + if ($total_owing > 0) { |
|
736 | + $class = isset($attrs['class']) ? $attrs['class'] : 'callout'; |
|
737 | + $custom_text = isset($attrs['custom_text']) ? $attrs['custom_text'] : 'You can %smake a payment here »%s.'; |
|
738 | + $container_tag = isset($attrs['container_tag']) ? $attrs['container_tag'] : 'p'; |
|
739 | + $opening_tag = ! empty($container_tag) ? '<' . $container_tag : ''; |
|
740 | + $opening_tag .= ! empty($opening_tag) && ! empty($class) ? ' class="' . $class . '"' : $opening_tag; |
|
741 | + $opening_tag .= ! empty($opening_tag) ? '>' : $opening_tag; |
|
742 | + $closing_tag = ! empty($container_tag) ? '</' . $container_tag . '>' : ''; |
|
743 | + $content = $opening_tag . sprintf($custom_text, '<a href="[PAYMENT_URL]">', '</a>') . $closing_tag; |
|
744 | + // we need to re run this string through the parser to catch any shortcodes that are in it. |
|
745 | + $owing_content = $this->_shortcode_helper->parse_message_template( |
|
746 | + $content, |
|
747 | + $addressee, |
|
748 | + $valid_shortcodes, |
|
749 | + $this->_message_type, |
|
750 | + $this->_messenger, |
|
751 | + $this->_message |
|
752 | + ); |
|
753 | + } else { |
|
754 | + return ''; |
|
755 | + } |
|
756 | + return $owing_content; |
|
757 | + } |
|
758 | + |
|
759 | + |
|
760 | + /** |
|
761 | + * Parser for the [PAYMENT_DUE_DATE_*] attribute type shortcode |
|
762 | + * |
|
763 | + * @since 4.8.28.rc.011 |
|
764 | + * @param string $shortcode The shortcode being parsed. |
|
765 | + * @param EE_Transaction $transaction |
|
766 | + * @return string |
|
767 | + * @throws EE_Error |
|
768 | + */ |
|
769 | + protected function _get_payment_due_date($shortcode, EE_Transaction $transaction) |
|
770 | + { |
|
771 | + // if transaction is paid in full then we can just return an empty string |
|
772 | + if ($transaction->remaining() === 0) { |
|
773 | + return ''; |
|
774 | + } |
|
775 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
776 | + $format = isset($attrs['format']) ? $attrs['format'] : get_option('date_format'); |
|
777 | + $days_until_due = isset($attrs['days_until_due']) ? (int) $attrs['days_until_due'] : 30; |
|
778 | + $prefix_text = isset($attrs['prefix_text']) ? $attrs['prefix_text'] |
|
779 | + : esc_html__('Payment in full due by: ', 'event_espresso'); |
|
780 | + $transaction_created = $transaction->get_DateTime_object('TXN_timestamp'); |
|
781 | + // setup date due: |
|
782 | + try { |
|
783 | + if ($transaction_created instanceof DateTime) { |
|
784 | + $date_due = $transaction_created->add( |
|
785 | + new DateInterval('P' . $days_until_due . 'D') |
|
786 | + )->format($format); |
|
787 | + } else { |
|
788 | + throw new Exception(); |
|
789 | + } |
|
790 | + } catch (Exception $e) { |
|
791 | + // format was likely invalid. |
|
792 | + $date_due = esc_html__( |
|
793 | + 'Unable to calculate date due, likely the format string is invalid.', |
|
794 | + 'event_espresso' |
|
795 | + ); |
|
796 | + } |
|
797 | + return $prefix_text . $date_due; |
|
798 | + } |
|
799 | 799 | } |
@@ -269,7 +269,7 @@ discard block |
||
269 | 269 | && isset($this->_extra_data['data']) |
270 | 270 | && $this->_extra_data['data'] instanceof EE_Messages_Addressee ? $this->_extra_data['data']->payment |
271 | 271 | : $payment; |
272 | - if (! $transaction instanceof EE_Transaction) { |
|
272 | + if ( ! $transaction instanceof EE_Transaction) { |
|
273 | 273 | return ''; |
274 | 274 | } |
275 | 275 | switch ($shortcode) { |
@@ -287,7 +287,7 @@ discard block |
||
287 | 287 | $invoice_url = empty($invoice_url) ? 'http://dummyinvoicelinksforpreview.com' : $invoice_url; |
288 | 288 | return sprintf( |
289 | 289 | esc_html__('%sClick here for Invoice%s', 'event_espresso'), |
290 | - '<a href="' . $invoice_url . '">', |
|
290 | + '<a href="'.$invoice_url.'">', |
|
291 | 291 | '</a>' |
292 | 292 | ); |
293 | 293 | break; |
@@ -361,7 +361,7 @@ discard block |
||
361 | 361 | return $this->_data->total_ticket_count; |
362 | 362 | break; |
363 | 363 | case '[TRANSACTION_ADMIN_URL]': |
364 | - require_once EE_CORE . 'admin/EE_Admin_Page.core.php'; |
|
364 | + require_once EE_CORE.'admin/EE_Admin_Page.core.php'; |
|
365 | 365 | $query_args = array( |
366 | 366 | 'page' => 'espresso_transactions', |
367 | 367 | 'action' => 'view_transaction', |
@@ -373,7 +373,7 @@ discard block |
||
373 | 373 | case '[RECEIPT_URL]': |
374 | 374 | // get primary_registration |
375 | 375 | $reg = $this->_data->primary_reg_obj; |
376 | - if (! $reg instanceof EE_Registration) { |
|
376 | + if ( ! $reg instanceof EE_Registration) { |
|
377 | 377 | return ''; |
378 | 378 | } |
379 | 379 | return $reg->receipt_url(); |
@@ -492,7 +492,7 @@ discard block |
||
492 | 492 | if (empty($invoice_logo_url)) { |
493 | 493 | return ''; |
494 | 494 | } |
495 | - if (! $img_tags) { |
|
495 | + if ( ! $img_tags) { |
|
496 | 496 | return $invoice_logo_url; |
497 | 497 | } |
498 | 498 | // image tags have been requested. |
@@ -503,7 +503,7 @@ discard block |
||
503 | 503 | } else { |
504 | 504 | $image_width = $image_size[0]; |
505 | 505 | } |
506 | - return '<img class="logo screen" src="' . $invoice_logo_url . '" width="' . $image_width . '" alt="logo" />'; |
|
506 | + return '<img class="logo screen" src="'.$invoice_logo_url.'" width="'.$image_width.'" alt="logo" />'; |
|
507 | 507 | } |
508 | 508 | |
509 | 509 | |
@@ -540,7 +540,7 @@ discard block |
||
540 | 540 | */ |
541 | 541 | private function _get_invoice_payment_method() |
542 | 542 | { |
543 | - if (! $this->_invoice_pm instanceof EE_Payment_Method) { |
|
543 | + if ( ! $this->_invoice_pm instanceof EE_Payment_Method) { |
|
544 | 544 | $transaction = $this->_data->txn instanceof EE_Transaction ? $this->_data->txn : null; |
545 | 545 | $transaction = ! $transaction instanceof EE_Transaction |
546 | 546 | && is_array($this->_extra_data) |
@@ -608,7 +608,7 @@ discard block |
||
608 | 608 | $attrs = $this->_get_shortcode_attrs($shortcode); |
609 | 609 | // prefix? |
610 | 610 | $prefix = isset($attrs['prefix']) ? $attrs['prefix'] : esc_html__('VAT/Tax Number: ', 'event_espresso'); |
611 | - return $prefix . $payee_tax_number; |
|
611 | + return $prefix.$payee_tax_number; |
|
612 | 612 | } |
613 | 613 | |
614 | 614 | |
@@ -632,16 +632,16 @@ discard block |
||
632 | 632 | } |
633 | 633 | if (empty($payee_address)) { |
634 | 634 | $organization = EE_Registry::instance()->CFG->organization; |
635 | - $payee_address = $organization->get_pretty('address_1') . '<br>'; |
|
635 | + $payee_address = $organization->get_pretty('address_1').'<br>'; |
|
636 | 636 | $payee_address .= ! empty($organization->address_2) |
637 | - ? $organization->get_pretty('address_2') . '<br>' |
|
637 | + ? $organization->get_pretty('address_2').'<br>' |
|
638 | 638 | : ''; |
639 | - $payee_address .= $organization->get_pretty('city') . '<br>'; |
|
639 | + $payee_address .= $organization->get_pretty('city').'<br>'; |
|
640 | 640 | // state |
641 | 641 | $state = EE_Registry::instance()->load_model('State')->get_one_by_ID($organization->STA_ID); |
642 | 642 | $payee_address .= $state instanceof EE_State ? $state->name() : ''; |
643 | 643 | // Country |
644 | - $payee_address .= ! empty($organization->CNT_ISO) ? ', ' . $organization->CNT_ISO . '<br>' : ''; |
|
644 | + $payee_address .= ! empty($organization->CNT_ISO) ? ', '.$organization->CNT_ISO.'<br>' : ''; |
|
645 | 645 | $payee_address .= ! empty($organization->zip) ? $organization->zip : ''; |
646 | 646 | } |
647 | 647 | return $payee_address; |
@@ -677,7 +677,7 @@ discard block |
||
677 | 677 | { |
678 | 678 | $reg = $this->_data->primary_reg_obj; |
679 | 679 | $message_type = isset($this->_extra_data['message_type']) ? $this->_extra_data['message_type'] : ''; |
680 | - if (! $reg instanceof EE_Registration || empty($message_type)) { |
|
680 | + if ( ! $reg instanceof EE_Registration || empty($message_type)) { |
|
681 | 681 | return ''; |
682 | 682 | } |
683 | 683 | $switch_to_invoice = ! $message_type instanceof EE_Invoice_message_type ? true : false; |
@@ -685,13 +685,13 @@ discard block |
||
685 | 685 | ? esc_html__('View Invoice', 'event_espresso') : esc_html__('Switch to Invoice', 'event_espresso'); |
686 | 686 | $switch_to_label = ! $switch_to_invoice ? esc_html__('Switch to Receipt', 'event_espresso') : $switch_to_label; |
687 | 687 | $switch_to_url = $switch_to_invoice ? $reg->invoice_url() : $reg->receipt_url(); |
688 | - if (! $button) { |
|
688 | + if ( ! $button) { |
|
689 | 689 | return $switch_to_url; |
690 | 690 | } |
691 | - if (! empty($switch_to_url)) { |
|
691 | + if ( ! empty($switch_to_url)) { |
|
692 | 692 | return ' |
693 | - <form method="post" action="' . $switch_to_url . '" > |
|
694 | - <input class="print_button" type="submit" value="' . $switch_to_label . '" /> |
|
693 | + <form method="post" action="' . $switch_to_url.'" > |
|
694 | + <input class="print_button" type="submit" value="' . $switch_to_label.'" /> |
|
695 | 695 | </form> |
696 | 696 | '; |
697 | 697 | } |
@@ -709,7 +709,7 @@ discard block |
||
709 | 709 | private function _get_subtotal($tax = false) |
710 | 710 | { |
711 | 711 | $grand_total = isset($this->_data->grand_total_line_item) ? $this->_data->grand_total_line_item : null; |
712 | - if (! $grand_total instanceof EE_Line_Item) { |
|
712 | + if ( ! $grand_total instanceof EE_Line_Item) { |
|
713 | 713 | return 0; |
714 | 714 | } |
715 | 715 | return $tax ? $grand_total->get_total_tax() : $grand_total->get_items_total(); |
@@ -736,11 +736,11 @@ discard block |
||
736 | 736 | $class = isset($attrs['class']) ? $attrs['class'] : 'callout'; |
737 | 737 | $custom_text = isset($attrs['custom_text']) ? $attrs['custom_text'] : 'You can %smake a payment here »%s.'; |
738 | 738 | $container_tag = isset($attrs['container_tag']) ? $attrs['container_tag'] : 'p'; |
739 | - $opening_tag = ! empty($container_tag) ? '<' . $container_tag : ''; |
|
740 | - $opening_tag .= ! empty($opening_tag) && ! empty($class) ? ' class="' . $class . '"' : $opening_tag; |
|
739 | + $opening_tag = ! empty($container_tag) ? '<'.$container_tag : ''; |
|
740 | + $opening_tag .= ! empty($opening_tag) && ! empty($class) ? ' class="'.$class.'"' : $opening_tag; |
|
741 | 741 | $opening_tag .= ! empty($opening_tag) ? '>' : $opening_tag; |
742 | - $closing_tag = ! empty($container_tag) ? '</' . $container_tag . '>' : ''; |
|
743 | - $content = $opening_tag . sprintf($custom_text, '<a href="[PAYMENT_URL]">', '</a>') . $closing_tag; |
|
742 | + $closing_tag = ! empty($container_tag) ? '</'.$container_tag.'>' : ''; |
|
743 | + $content = $opening_tag.sprintf($custom_text, '<a href="[PAYMENT_URL]">', '</a>').$closing_tag; |
|
744 | 744 | // we need to re run this string through the parser to catch any shortcodes that are in it. |
745 | 745 | $owing_content = $this->_shortcode_helper->parse_message_template( |
746 | 746 | $content, |
@@ -782,7 +782,7 @@ discard block |
||
782 | 782 | try { |
783 | 783 | if ($transaction_created instanceof DateTime) { |
784 | 784 | $date_due = $transaction_created->add( |
785 | - new DateInterval('P' . $days_until_due . 'D') |
|
785 | + new DateInterval('P'.$days_until_due.'D') |
|
786 | 786 | )->format($format); |
787 | 787 | } else { |
788 | 788 | throw new Exception(); |
@@ -794,6 +794,6 @@ discard block |
||
794 | 794 | 'event_espresso' |
795 | 795 | ); |
796 | 796 | } |
797 | - return $prefix_text . $date_due; |
|
797 | + return $prefix_text.$date_due; |
|
798 | 798 | } |
799 | 799 | } |
@@ -17,315 +17,315 @@ |
||
17 | 17 | { |
18 | 18 | |
19 | 19 | |
20 | - /** |
|
21 | - * Will hold the EE_Event if available |
|
22 | - * |
|
23 | - * @var EE_Event |
|
24 | - */ |
|
25 | - protected $_event; |
|
26 | - |
|
27 | - /** |
|
28 | - * Will hold the EE_Venue if available |
|
29 | - * |
|
30 | - * @var EE_Venue |
|
31 | - */ |
|
32 | - protected $_venue; |
|
33 | - |
|
34 | - |
|
35 | - /** |
|
36 | - * Initialize properties |
|
37 | - */ |
|
38 | - protected function _init_props() |
|
39 | - { |
|
40 | - $this->label = esc_html__('Venue Shortcodes', 'event_espresso'); |
|
41 | - $this->description = esc_html__('All shortcodes specific to venue related data', 'event_espresso'); |
|
42 | - $this->_shortcodes = array( |
|
43 | - '[VENUE_TITLE]' => esc_html__('The title for the event venue', 'event_espresso'), |
|
44 | - '[VENUE_DESCRIPTION]' => esc_html__('The description for the event venue', 'event_espresso'), |
|
45 | - '[VENUE_URL]' => esc_html__('A url to a webpage for the venue', 'event_espresso'), |
|
46 | - '[VENUE_DETAILS_URL]' => sprintf( |
|
47 | - esc_html__( |
|
48 | - 'This shortcode outputs the url or website address to the venue details page on this website. This differs from %s which outputs what is entered in the "url" field in the venue details page.', |
|
49 | - 'event_espresso' |
|
50 | - ), |
|
51 | - '[VENUE_URL]' |
|
52 | - ), |
|
53 | - '[VENUE_IMAGE]' => esc_html__('An image representing the event venue', 'event_espresso'), |
|
54 | - '[VENUE_PHONE]' => esc_html__('The phone number for the venue', 'event_espresso'), |
|
55 | - '[VENUE_ADDRESS]' => esc_html__('The address for the venue', 'event_espresso'), |
|
56 | - '[VENUE_ADDRESS2]' => esc_html__('Address 2 for the venue', 'event_espresso'), |
|
57 | - '[VENUE_CITY]' => esc_html__('The city the venue is in', 'event_espresso'), |
|
58 | - '[VENUE_STATE]' => esc_html__('The state the venue is located in', 'event_espresso'), |
|
59 | - '[VENUE_COUNTRY]' => esc_html__('The country the venue is located in', 'event_espresso'), |
|
60 | - '[VENUE_FORMATTED_ADDRESS]' => esc_html__( |
|
61 | - 'This just outputs the venue address in a semantic address format.', |
|
62 | - 'event_espresso' |
|
63 | - ), |
|
64 | - '[VENUE_ZIP]' => esc_html__('The zip code for the venue address', 'event_espresso'), |
|
65 | - '[VENUE_META_*]' => esc_html__( |
|
66 | - 'This is a special dynamic shortcode. After the "*", add the exact name for your custom field, if there is a value set for that custom field within the venue then it will be output in place of this shortcode.', |
|
67 | - 'event_espresso' |
|
68 | - ), |
|
69 | - '[GOOGLE_MAP_URL]' => esc_html__( |
|
70 | - 'URL for the google map associated with the venue.', |
|
71 | - 'event_espresso' |
|
72 | - ), |
|
73 | - '[GOOGLE_MAP_LINK]' => esc_html__('Link to a google map for the venue', 'event_espresso'), |
|
74 | - '[GOOGLE_MAP_IMAGE]' => esc_html__('Google map for venue wrapped in image tags', 'event_espresso'), |
|
75 | - ); |
|
76 | - } |
|
77 | - |
|
78 | - |
|
79 | - /** |
|
80 | - * Parse incoming shortcode |
|
81 | - * |
|
82 | - * @param string $shortcode |
|
83 | - * @return string |
|
84 | - * @throws EE_Error |
|
85 | - * @throws EntityNotFoundException |
|
86 | - */ |
|
87 | - protected function _parser($shortcode) |
|
88 | - { |
|
89 | - $this->_venue = $this->_get_venue(); |
|
90 | - // If there is no venue object by now then get out. |
|
91 | - if (! $this->_venue instanceof EE_Venue) { |
|
92 | - return ''; |
|
93 | - } |
|
94 | - |
|
95 | - switch ($shortcode) { |
|
96 | - case '[VENUE_TITLE]': |
|
97 | - return $this->_venue('title'); |
|
98 | - break; |
|
99 | - |
|
100 | - case '[VENUE_DESCRIPTION]': |
|
101 | - return $this->_venue('description'); |
|
102 | - break; |
|
103 | - |
|
104 | - case '[VENUE_URL]': |
|
105 | - return $this->_venue('url'); |
|
106 | - break; |
|
107 | - |
|
108 | - case '[VENUE_IMAGE]': |
|
109 | - return $this->_venue('image'); |
|
110 | - break; |
|
111 | - |
|
112 | - case '[VENUE_PHONE]': |
|
113 | - return $this->_venue('phone'); |
|
114 | - break; |
|
115 | - |
|
116 | - case '[VENUE_ADDRESS]': |
|
117 | - return $this->_venue('address'); |
|
118 | - break; |
|
119 | - |
|
120 | - case '[VENUE_ADDRESS2]': |
|
121 | - return $this->_venue('address2'); |
|
122 | - break; |
|
123 | - |
|
124 | - case '[VENUE_CITY]': |
|
125 | - return $this->_venue('city'); |
|
126 | - break; |
|
127 | - |
|
128 | - case '[VENUE_COUNTRY]': |
|
129 | - return $this->_venue('country'); |
|
130 | - break; |
|
131 | - |
|
132 | - case '[VENUE_STATE]': |
|
133 | - return $this->_venue('state'); |
|
134 | - break; |
|
135 | - |
|
136 | - case '[VENUE_ZIP]': |
|
137 | - return $this->_venue('zip'); |
|
138 | - break; |
|
139 | - |
|
140 | - case '[VENUE_FORMATTED_ADDRESS]': |
|
141 | - return $this->_venue('formatted_address'); |
|
142 | - break; |
|
143 | - |
|
144 | - case '[GOOGLE_MAP_URL]': |
|
145 | - return $this->_venue('gmap_url'); |
|
146 | - break; |
|
147 | - |
|
148 | - case '[GOOGLE_MAP_LINK]': |
|
149 | - return $this->_venue('gmap_link'); |
|
150 | - break; |
|
151 | - |
|
152 | - case '[GOOGLE_MAP_IMAGE]': |
|
153 | - return $this->_venue('gmap_link_img'); |
|
154 | - break; |
|
155 | - |
|
156 | - case '[VENUE_DETAILS_URL]': |
|
157 | - return $this->_venue('permalink'); |
|
158 | - break; |
|
159 | - } |
|
160 | - |
|
161 | - if (strpos($shortcode, '[VENUE_META_*') !== false) { |
|
162 | - $shortcode = str_replace('[VENUE_META_*', '', $shortcode); |
|
163 | - $shortcode = trim(str_replace(']', '', $shortcode)); |
|
164 | - |
|
165 | - // pull the meta value from the venue post |
|
166 | - $venue_meta = $this->_venue->get_post_meta($shortcode, true); |
|
167 | - |
|
168 | - return ! empty($venue_meta) ? $venue_meta : ''; |
|
169 | - } |
|
170 | - } |
|
171 | - |
|
172 | - /** |
|
173 | - * This retrieves the EE_Venue from the available data object. |
|
174 | - * |
|
175 | - * @return EE_Venue|null |
|
176 | - * @throws EE_Error |
|
177 | - * @throws EntityNotFoundException |
|
178 | - */ |
|
179 | - private function _get_venue() |
|
180 | - { |
|
181 | - |
|
182 | - // we need the EE_Event object to get the venue. |
|
183 | - $this->_event = $this->_data instanceof EE_Event ? $this->_data : null; |
|
184 | - |
|
185 | - // if no event, then let's see if there is a reg_obj. If there IS, then we'll try and grab the event from the |
|
186 | - // reg_obj instead. |
|
187 | - if (! $this->_event instanceof EE_Event) { |
|
188 | - $aee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
189 | - $aee = $this->_extra_data instanceof EE_Messages_Addressee ? $this->_extra_data : $aee; |
|
190 | - |
|
191 | - $this->_event = $aee instanceof EE_Messages_Addressee && $aee->reg_obj instanceof EE_Registration |
|
192 | - ? $aee->reg_obj->event() |
|
193 | - : null; |
|
194 | - |
|
195 | - // if still empty do we have a ticket data item? |
|
196 | - $this->_event = ! $this->_event instanceof EE_Event |
|
197 | - && $this->_data instanceof EE_Ticket |
|
198 | - && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
199 | - ? $this->_extra_data['data']->tickets[ $this->_data->ID() ]['EE_Event'] |
|
200 | - : $this->_event; |
|
201 | - |
|
202 | - // if STILL empty event, let's try to get the first event in the list of events via EE_Messages_Addressee |
|
203 | - // and use that. |
|
204 | - $this->_event = ! $this->_event instanceof EE_Event && $aee instanceof EE_Messages_Addressee |
|
205 | - ? reset($aee->events) |
|
206 | - : $this->_event; |
|
207 | - } |
|
208 | - |
|
209 | - // If we have an event object use it to pull the venue. |
|
210 | - if ($this->_event instanceof EE_Event) { |
|
211 | - return $this->_event->get_first_related('Venue'); |
|
212 | - } |
|
213 | - |
|
214 | - return null; |
|
215 | - } |
|
216 | - |
|
217 | - /** |
|
218 | - * This retrieves the specified venue information |
|
219 | - * |
|
220 | - * @param string $field What Venue field to retrieve |
|
221 | - * @return string What was retrieved! |
|
222 | - * @throws EE_Error |
|
223 | - * @throws EntityNotFoundException |
|
224 | - */ |
|
225 | - private function _venue($field) |
|
226 | - { |
|
227 | - |
|
228 | - if (! $this->_venue instanceof EE_Venue) { |
|
229 | - return ''; |
|
230 | - } //no venue so get out. |
|
231 | - |
|
232 | - switch ($field) { |
|
233 | - case 'title': |
|
234 | - return $this->_venue->get('VNU_name'); |
|
235 | - break; |
|
236 | - |
|
237 | - case 'description': |
|
238 | - return $this->_venue->get('VNU_desc'); |
|
239 | - break; |
|
240 | - |
|
241 | - case 'url': |
|
242 | - $url = $this->_venue->get('VNU_url'); |
|
243 | - return empty($url) ? $this->_venue->get_permalink() : $url; |
|
244 | - break; |
|
245 | - |
|
246 | - case 'permalink': |
|
247 | - return $this->_venue->get_permalink(); |
|
248 | - break; |
|
249 | - |
|
250 | - case 'image': |
|
251 | - return '<img src="' . $this->_venue->feature_image_url(array(200, 200,)) |
|
252 | - . '" alt="' . sprintf( |
|
253 | - esc_attr__('%s Feature Image', 'event_espresso'), |
|
254 | - $this->_venue->get('VNU_name') |
|
255 | - ) . '" />'; |
|
256 | - break; |
|
257 | - |
|
258 | - case 'phone': |
|
259 | - return $this->_venue->get('VNU_phone'); |
|
260 | - break; |
|
261 | - |
|
262 | - case 'address': |
|
263 | - return $this->_venue->get('VNU_address'); |
|
264 | - break; |
|
265 | - |
|
266 | - case 'address2': |
|
267 | - return $this->_venue->get('VNU_address2'); |
|
268 | - break; |
|
269 | - |
|
270 | - case 'city': |
|
271 | - return $this->_venue->get('VNU_city'); |
|
272 | - break; |
|
273 | - |
|
274 | - case 'state': |
|
275 | - $state = $this->_venue->state_obj(); |
|
276 | - return is_object($state) ? $state->get('STA_name') : ''; |
|
277 | - break; |
|
278 | - |
|
279 | - case 'country': |
|
280 | - $country = $this->_venue->country_obj(); |
|
281 | - return is_object($country) ? $country->get('CNT_name') : ''; |
|
282 | - break; |
|
283 | - |
|
284 | - case 'zip': |
|
285 | - return $this->_venue->get('VNU_zip'); |
|
286 | - break; |
|
287 | - |
|
288 | - case 'formatted_address': |
|
289 | - return EEH_Address::format($this->_venue); |
|
290 | - break; |
|
291 | - |
|
292 | - case 'gmap_link': |
|
293 | - case 'gmap_url': |
|
294 | - case 'gmap_link_img': |
|
295 | - $atts = $this->get_map_attributes($this->_venue, $field); |
|
296 | - return EEH_Maps::google_map_link($atts); |
|
297 | - break; |
|
298 | - } |
|
299 | - return ''; |
|
300 | - } |
|
301 | - |
|
302 | - |
|
303 | - /** |
|
304 | - * Generates the attributes for retrieving a google_map artifact. |
|
305 | - * |
|
306 | - * @param EE_Venue $venue |
|
307 | - * @param string $field |
|
308 | - * @return array |
|
309 | - * @throws EE_Error |
|
310 | - */ |
|
311 | - protected function get_map_attributes(EE_Venue $venue, $field = 'gmap_link') |
|
312 | - { |
|
313 | - $state = $venue->state_obj(); |
|
314 | - $country = $venue->country_obj(); |
|
315 | - $atts = array( |
|
316 | - 'id' => $venue->ID(), |
|
317 | - 'address' => $venue->get('VNU_address'), |
|
318 | - 'city' => $venue->get('VNU_city'), |
|
319 | - 'state' => is_object($state) ? $state->get('STA_name') : '', |
|
320 | - 'zip' => $venue->get('VNU_zip'), |
|
321 | - 'country' => is_object($country) ? $country->get('CNT_name') : '', |
|
322 | - 'type' => $field === 'gmap_link' ? 'url' : 'map', |
|
323 | - 'map_w' => 200, |
|
324 | - 'map_h' => 200, |
|
325 | - ); |
|
326 | - if ($field === 'gmap_url') { |
|
327 | - $atts['type'] = 'url_only'; |
|
328 | - } |
|
329 | - return $atts; |
|
330 | - } |
|
20 | + /** |
|
21 | + * Will hold the EE_Event if available |
|
22 | + * |
|
23 | + * @var EE_Event |
|
24 | + */ |
|
25 | + protected $_event; |
|
26 | + |
|
27 | + /** |
|
28 | + * Will hold the EE_Venue if available |
|
29 | + * |
|
30 | + * @var EE_Venue |
|
31 | + */ |
|
32 | + protected $_venue; |
|
33 | + |
|
34 | + |
|
35 | + /** |
|
36 | + * Initialize properties |
|
37 | + */ |
|
38 | + protected function _init_props() |
|
39 | + { |
|
40 | + $this->label = esc_html__('Venue Shortcodes', 'event_espresso'); |
|
41 | + $this->description = esc_html__('All shortcodes specific to venue related data', 'event_espresso'); |
|
42 | + $this->_shortcodes = array( |
|
43 | + '[VENUE_TITLE]' => esc_html__('The title for the event venue', 'event_espresso'), |
|
44 | + '[VENUE_DESCRIPTION]' => esc_html__('The description for the event venue', 'event_espresso'), |
|
45 | + '[VENUE_URL]' => esc_html__('A url to a webpage for the venue', 'event_espresso'), |
|
46 | + '[VENUE_DETAILS_URL]' => sprintf( |
|
47 | + esc_html__( |
|
48 | + 'This shortcode outputs the url or website address to the venue details page on this website. This differs from %s which outputs what is entered in the "url" field in the venue details page.', |
|
49 | + 'event_espresso' |
|
50 | + ), |
|
51 | + '[VENUE_URL]' |
|
52 | + ), |
|
53 | + '[VENUE_IMAGE]' => esc_html__('An image representing the event venue', 'event_espresso'), |
|
54 | + '[VENUE_PHONE]' => esc_html__('The phone number for the venue', 'event_espresso'), |
|
55 | + '[VENUE_ADDRESS]' => esc_html__('The address for the venue', 'event_espresso'), |
|
56 | + '[VENUE_ADDRESS2]' => esc_html__('Address 2 for the venue', 'event_espresso'), |
|
57 | + '[VENUE_CITY]' => esc_html__('The city the venue is in', 'event_espresso'), |
|
58 | + '[VENUE_STATE]' => esc_html__('The state the venue is located in', 'event_espresso'), |
|
59 | + '[VENUE_COUNTRY]' => esc_html__('The country the venue is located in', 'event_espresso'), |
|
60 | + '[VENUE_FORMATTED_ADDRESS]' => esc_html__( |
|
61 | + 'This just outputs the venue address in a semantic address format.', |
|
62 | + 'event_espresso' |
|
63 | + ), |
|
64 | + '[VENUE_ZIP]' => esc_html__('The zip code for the venue address', 'event_espresso'), |
|
65 | + '[VENUE_META_*]' => esc_html__( |
|
66 | + 'This is a special dynamic shortcode. After the "*", add the exact name for your custom field, if there is a value set for that custom field within the venue then it will be output in place of this shortcode.', |
|
67 | + 'event_espresso' |
|
68 | + ), |
|
69 | + '[GOOGLE_MAP_URL]' => esc_html__( |
|
70 | + 'URL for the google map associated with the venue.', |
|
71 | + 'event_espresso' |
|
72 | + ), |
|
73 | + '[GOOGLE_MAP_LINK]' => esc_html__('Link to a google map for the venue', 'event_espresso'), |
|
74 | + '[GOOGLE_MAP_IMAGE]' => esc_html__('Google map for venue wrapped in image tags', 'event_espresso'), |
|
75 | + ); |
|
76 | + } |
|
77 | + |
|
78 | + |
|
79 | + /** |
|
80 | + * Parse incoming shortcode |
|
81 | + * |
|
82 | + * @param string $shortcode |
|
83 | + * @return string |
|
84 | + * @throws EE_Error |
|
85 | + * @throws EntityNotFoundException |
|
86 | + */ |
|
87 | + protected function _parser($shortcode) |
|
88 | + { |
|
89 | + $this->_venue = $this->_get_venue(); |
|
90 | + // If there is no venue object by now then get out. |
|
91 | + if (! $this->_venue instanceof EE_Venue) { |
|
92 | + return ''; |
|
93 | + } |
|
94 | + |
|
95 | + switch ($shortcode) { |
|
96 | + case '[VENUE_TITLE]': |
|
97 | + return $this->_venue('title'); |
|
98 | + break; |
|
99 | + |
|
100 | + case '[VENUE_DESCRIPTION]': |
|
101 | + return $this->_venue('description'); |
|
102 | + break; |
|
103 | + |
|
104 | + case '[VENUE_URL]': |
|
105 | + return $this->_venue('url'); |
|
106 | + break; |
|
107 | + |
|
108 | + case '[VENUE_IMAGE]': |
|
109 | + return $this->_venue('image'); |
|
110 | + break; |
|
111 | + |
|
112 | + case '[VENUE_PHONE]': |
|
113 | + return $this->_venue('phone'); |
|
114 | + break; |
|
115 | + |
|
116 | + case '[VENUE_ADDRESS]': |
|
117 | + return $this->_venue('address'); |
|
118 | + break; |
|
119 | + |
|
120 | + case '[VENUE_ADDRESS2]': |
|
121 | + return $this->_venue('address2'); |
|
122 | + break; |
|
123 | + |
|
124 | + case '[VENUE_CITY]': |
|
125 | + return $this->_venue('city'); |
|
126 | + break; |
|
127 | + |
|
128 | + case '[VENUE_COUNTRY]': |
|
129 | + return $this->_venue('country'); |
|
130 | + break; |
|
131 | + |
|
132 | + case '[VENUE_STATE]': |
|
133 | + return $this->_venue('state'); |
|
134 | + break; |
|
135 | + |
|
136 | + case '[VENUE_ZIP]': |
|
137 | + return $this->_venue('zip'); |
|
138 | + break; |
|
139 | + |
|
140 | + case '[VENUE_FORMATTED_ADDRESS]': |
|
141 | + return $this->_venue('formatted_address'); |
|
142 | + break; |
|
143 | + |
|
144 | + case '[GOOGLE_MAP_URL]': |
|
145 | + return $this->_venue('gmap_url'); |
|
146 | + break; |
|
147 | + |
|
148 | + case '[GOOGLE_MAP_LINK]': |
|
149 | + return $this->_venue('gmap_link'); |
|
150 | + break; |
|
151 | + |
|
152 | + case '[GOOGLE_MAP_IMAGE]': |
|
153 | + return $this->_venue('gmap_link_img'); |
|
154 | + break; |
|
155 | + |
|
156 | + case '[VENUE_DETAILS_URL]': |
|
157 | + return $this->_venue('permalink'); |
|
158 | + break; |
|
159 | + } |
|
160 | + |
|
161 | + if (strpos($shortcode, '[VENUE_META_*') !== false) { |
|
162 | + $shortcode = str_replace('[VENUE_META_*', '', $shortcode); |
|
163 | + $shortcode = trim(str_replace(']', '', $shortcode)); |
|
164 | + |
|
165 | + // pull the meta value from the venue post |
|
166 | + $venue_meta = $this->_venue->get_post_meta($shortcode, true); |
|
167 | + |
|
168 | + return ! empty($venue_meta) ? $venue_meta : ''; |
|
169 | + } |
|
170 | + } |
|
171 | + |
|
172 | + /** |
|
173 | + * This retrieves the EE_Venue from the available data object. |
|
174 | + * |
|
175 | + * @return EE_Venue|null |
|
176 | + * @throws EE_Error |
|
177 | + * @throws EntityNotFoundException |
|
178 | + */ |
|
179 | + private function _get_venue() |
|
180 | + { |
|
181 | + |
|
182 | + // we need the EE_Event object to get the venue. |
|
183 | + $this->_event = $this->_data instanceof EE_Event ? $this->_data : null; |
|
184 | + |
|
185 | + // if no event, then let's see if there is a reg_obj. If there IS, then we'll try and grab the event from the |
|
186 | + // reg_obj instead. |
|
187 | + if (! $this->_event instanceof EE_Event) { |
|
188 | + $aee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
189 | + $aee = $this->_extra_data instanceof EE_Messages_Addressee ? $this->_extra_data : $aee; |
|
190 | + |
|
191 | + $this->_event = $aee instanceof EE_Messages_Addressee && $aee->reg_obj instanceof EE_Registration |
|
192 | + ? $aee->reg_obj->event() |
|
193 | + : null; |
|
194 | + |
|
195 | + // if still empty do we have a ticket data item? |
|
196 | + $this->_event = ! $this->_event instanceof EE_Event |
|
197 | + && $this->_data instanceof EE_Ticket |
|
198 | + && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
199 | + ? $this->_extra_data['data']->tickets[ $this->_data->ID() ]['EE_Event'] |
|
200 | + : $this->_event; |
|
201 | + |
|
202 | + // if STILL empty event, let's try to get the first event in the list of events via EE_Messages_Addressee |
|
203 | + // and use that. |
|
204 | + $this->_event = ! $this->_event instanceof EE_Event && $aee instanceof EE_Messages_Addressee |
|
205 | + ? reset($aee->events) |
|
206 | + : $this->_event; |
|
207 | + } |
|
208 | + |
|
209 | + // If we have an event object use it to pull the venue. |
|
210 | + if ($this->_event instanceof EE_Event) { |
|
211 | + return $this->_event->get_first_related('Venue'); |
|
212 | + } |
|
213 | + |
|
214 | + return null; |
|
215 | + } |
|
216 | + |
|
217 | + /** |
|
218 | + * This retrieves the specified venue information |
|
219 | + * |
|
220 | + * @param string $field What Venue field to retrieve |
|
221 | + * @return string What was retrieved! |
|
222 | + * @throws EE_Error |
|
223 | + * @throws EntityNotFoundException |
|
224 | + */ |
|
225 | + private function _venue($field) |
|
226 | + { |
|
227 | + |
|
228 | + if (! $this->_venue instanceof EE_Venue) { |
|
229 | + return ''; |
|
230 | + } //no venue so get out. |
|
231 | + |
|
232 | + switch ($field) { |
|
233 | + case 'title': |
|
234 | + return $this->_venue->get('VNU_name'); |
|
235 | + break; |
|
236 | + |
|
237 | + case 'description': |
|
238 | + return $this->_venue->get('VNU_desc'); |
|
239 | + break; |
|
240 | + |
|
241 | + case 'url': |
|
242 | + $url = $this->_venue->get('VNU_url'); |
|
243 | + return empty($url) ? $this->_venue->get_permalink() : $url; |
|
244 | + break; |
|
245 | + |
|
246 | + case 'permalink': |
|
247 | + return $this->_venue->get_permalink(); |
|
248 | + break; |
|
249 | + |
|
250 | + case 'image': |
|
251 | + return '<img src="' . $this->_venue->feature_image_url(array(200, 200,)) |
|
252 | + . '" alt="' . sprintf( |
|
253 | + esc_attr__('%s Feature Image', 'event_espresso'), |
|
254 | + $this->_venue->get('VNU_name') |
|
255 | + ) . '" />'; |
|
256 | + break; |
|
257 | + |
|
258 | + case 'phone': |
|
259 | + return $this->_venue->get('VNU_phone'); |
|
260 | + break; |
|
261 | + |
|
262 | + case 'address': |
|
263 | + return $this->_venue->get('VNU_address'); |
|
264 | + break; |
|
265 | + |
|
266 | + case 'address2': |
|
267 | + return $this->_venue->get('VNU_address2'); |
|
268 | + break; |
|
269 | + |
|
270 | + case 'city': |
|
271 | + return $this->_venue->get('VNU_city'); |
|
272 | + break; |
|
273 | + |
|
274 | + case 'state': |
|
275 | + $state = $this->_venue->state_obj(); |
|
276 | + return is_object($state) ? $state->get('STA_name') : ''; |
|
277 | + break; |
|
278 | + |
|
279 | + case 'country': |
|
280 | + $country = $this->_venue->country_obj(); |
|
281 | + return is_object($country) ? $country->get('CNT_name') : ''; |
|
282 | + break; |
|
283 | + |
|
284 | + case 'zip': |
|
285 | + return $this->_venue->get('VNU_zip'); |
|
286 | + break; |
|
287 | + |
|
288 | + case 'formatted_address': |
|
289 | + return EEH_Address::format($this->_venue); |
|
290 | + break; |
|
291 | + |
|
292 | + case 'gmap_link': |
|
293 | + case 'gmap_url': |
|
294 | + case 'gmap_link_img': |
|
295 | + $atts = $this->get_map_attributes($this->_venue, $field); |
|
296 | + return EEH_Maps::google_map_link($atts); |
|
297 | + break; |
|
298 | + } |
|
299 | + return ''; |
|
300 | + } |
|
301 | + |
|
302 | + |
|
303 | + /** |
|
304 | + * Generates the attributes for retrieving a google_map artifact. |
|
305 | + * |
|
306 | + * @param EE_Venue $venue |
|
307 | + * @param string $field |
|
308 | + * @return array |
|
309 | + * @throws EE_Error |
|
310 | + */ |
|
311 | + protected function get_map_attributes(EE_Venue $venue, $field = 'gmap_link') |
|
312 | + { |
|
313 | + $state = $venue->state_obj(); |
|
314 | + $country = $venue->country_obj(); |
|
315 | + $atts = array( |
|
316 | + 'id' => $venue->ID(), |
|
317 | + 'address' => $venue->get('VNU_address'), |
|
318 | + 'city' => $venue->get('VNU_city'), |
|
319 | + 'state' => is_object($state) ? $state->get('STA_name') : '', |
|
320 | + 'zip' => $venue->get('VNU_zip'), |
|
321 | + 'country' => is_object($country) ? $country->get('CNT_name') : '', |
|
322 | + 'type' => $field === 'gmap_link' ? 'url' : 'map', |
|
323 | + 'map_w' => 200, |
|
324 | + 'map_h' => 200, |
|
325 | + ); |
|
326 | + if ($field === 'gmap_url') { |
|
327 | + $atts['type'] = 'url_only'; |
|
328 | + } |
|
329 | + return $atts; |
|
330 | + } |
|
331 | 331 | } |
@@ -88,7 +88,7 @@ discard block |
||
88 | 88 | { |
89 | 89 | $this->_venue = $this->_get_venue(); |
90 | 90 | // If there is no venue object by now then get out. |
91 | - if (! $this->_venue instanceof EE_Venue) { |
|
91 | + if ( ! $this->_venue instanceof EE_Venue) { |
|
92 | 92 | return ''; |
93 | 93 | } |
94 | 94 | |
@@ -184,7 +184,7 @@ discard block |
||
184 | 184 | |
185 | 185 | // if no event, then let's see if there is a reg_obj. If there IS, then we'll try and grab the event from the |
186 | 186 | // reg_obj instead. |
187 | - if (! $this->_event instanceof EE_Event) { |
|
187 | + if ( ! $this->_event instanceof EE_Event) { |
|
188 | 188 | $aee = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
189 | 189 | $aee = $this->_extra_data instanceof EE_Messages_Addressee ? $this->_extra_data : $aee; |
190 | 190 | |
@@ -196,7 +196,7 @@ discard block |
||
196 | 196 | $this->_event = ! $this->_event instanceof EE_Event |
197 | 197 | && $this->_data instanceof EE_Ticket |
198 | 198 | && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
199 | - ? $this->_extra_data['data']->tickets[ $this->_data->ID() ]['EE_Event'] |
|
199 | + ? $this->_extra_data['data']->tickets[$this->_data->ID()]['EE_Event'] |
|
200 | 200 | : $this->_event; |
201 | 201 | |
202 | 202 | // if STILL empty event, let's try to get the first event in the list of events via EE_Messages_Addressee |
@@ -225,7 +225,7 @@ discard block |
||
225 | 225 | private function _venue($field) |
226 | 226 | { |
227 | 227 | |
228 | - if (! $this->_venue instanceof EE_Venue) { |
|
228 | + if ( ! $this->_venue instanceof EE_Venue) { |
|
229 | 229 | return ''; |
230 | 230 | } //no venue so get out. |
231 | 231 | |
@@ -248,11 +248,11 @@ discard block |
||
248 | 248 | break; |
249 | 249 | |
250 | 250 | case 'image': |
251 | - return '<img src="' . $this->_venue->feature_image_url(array(200, 200,)) |
|
252 | - . '" alt="' . sprintf( |
|
251 | + return '<img src="'.$this->_venue->feature_image_url(array(200, 200,)) |
|
252 | + . '" alt="'.sprintf( |
|
253 | 253 | esc_attr__('%s Feature Image', 'event_espresso'), |
254 | 254 | $this->_venue->get('VNU_name') |
255 | - ) . '" />'; |
|
255 | + ).'" />'; |
|
256 | 256 | break; |
257 | 257 | |
258 | 258 | case 'phone': |
@@ -104,7 +104,7 @@ discard block |
||
104 | 104 | return '<img src="' |
105 | 105 | . EE_Registry::instance()->CFG->organization->get_pretty( |
106 | 106 | 'logo_url' |
107 | - ) . '" id="headerImage" />'; |
|
107 | + ).'" id="headerImage" />'; |
|
108 | 108 | break; |
109 | 109 | |
110 | 110 | case '[CO_LOGO_URL]': |
@@ -149,7 +149,7 @@ discard block |
||
149 | 149 | |
150 | 150 | // set custom attrs if present (or default) |
151 | 151 | $prefix = isset($attrs['prefix']) ? $attrs['prefix'] : esc_html__('VAT/Tax Number: ', 'event_espresso'); |
152 | - return $prefix . $tax_number; |
|
152 | + return $prefix.$tax_number; |
|
153 | 153 | } |
154 | 154 | |
155 | 155 | return ''; |
@@ -19,139 +19,139 @@ |
||
19 | 19 | { |
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__('Organization Shortcodes', 'event_espresso'); |
|
31 | - $this->description = esc_html__('All shortcodes specific to organization related data', 'event_espresso'); |
|
32 | - $this->_shortcodes = array( |
|
33 | - '[COMPANY]' => esc_html__('Event organization name', 'event_espresso'), |
|
34 | - '[CO_ADD1]' => esc_html__('Address 1 value for the organization', 'event_espresso'), |
|
35 | - '[CO_ADD2]' => esc_html__('Address 2 value for the organization', 'event_espresso'), |
|
36 | - '[CO_CITY]' => esc_html__('City the organization is in', 'event_espresso'), |
|
37 | - '[CO_STATE]' => esc_html__('State the organization is located in', 'event_espresso'), |
|
38 | - '[CO_ZIP]' => esc_html__('The zip code for the organization', 'event_espresso'), |
|
39 | - '[CO_LOGO]' => esc_html__('The logo image for the organization', 'event_espresso'), |
|
40 | - '[CO_EMAIL]' => esc_html__('The primary email address for the organization', 'event_espresso'), |
|
41 | - '[CO_PHONE]' => esc_html__('The phone number for the organization', 'event_espresso'), |
|
42 | - '[CO_LOGO_URL]' => esc_html__( |
|
43 | - 'Just the link to the image used as the logo for the organization', |
|
44 | - 'event_espresso' |
|
45 | - ), |
|
46 | - '[CO_FACEBOOK_URL]' => esc_html__('Link to organization Facebook page', 'event_espresso'), |
|
47 | - '[CO_TWITTER_URL]' => esc_html__('Link to organization Twitter page', 'event_espresso'), |
|
48 | - '[CO_PINTEREST_URL]' => esc_html__('Link to organization Pinterest page', 'event_espresso'), |
|
49 | - '[CO_GOOGLE_URL]' => esc_html__('Link to organization Google page', 'event_espresso'), |
|
50 | - '[CO_LINKEDIN_URL]' => esc_html__('Link to organization LinkedIn page', 'event_espresso'), |
|
51 | - '[CO_INSTAGRAM_URL]' => esc_html__('Link to organization Instagram page', 'event_espresso'), |
|
52 | - '[CO_TAX_NUMBER_*]' => sprintf( |
|
53 | - esc_html__( |
|
54 | - 'This is the shortcode used for displaying any tax number for the company. %1$sNote: This is a special dynamic shortcode.%2$s You can use the "prefix" parameter to indicate what the prefix for this tax number is. It defaults to "VAT/Tax Number:". To change this prefix you do the following format for this shortcode: [CO_TAX_NUMBER_* prefix="GST: "] and that will output: GST: 12345t56. Also take note that if you have NO number in your settings, the prefix is not output either.', |
|
55 | - 'event_espresso' |
|
56 | - ), |
|
57 | - '<strong>', |
|
58 | - '</strong>' |
|
59 | - ), |
|
60 | - ); |
|
61 | - } |
|
62 | - |
|
63 | - |
|
64 | - protected function _parser($shortcode) |
|
65 | - { |
|
66 | - |
|
67 | - switch ($shortcode) { |
|
68 | - case '[COMPANY]': |
|
69 | - return EE_Registry::instance()->CFG->organization->get_pretty('name'); |
|
70 | - break; |
|
71 | - |
|
72 | - case '[CO_ADD1]': |
|
73 | - return EE_Registry::instance()->CFG->organization->get_pretty('address_1'); |
|
74 | - break; |
|
75 | - |
|
76 | - case '[CO_ADD2]': |
|
77 | - return EE_Registry::instance()->CFG->organization->get_pretty('address_2'); |
|
78 | - break; |
|
79 | - |
|
80 | - case '[CO_CITY]': |
|
81 | - return EE_Registry::instance()->CFG->organization->get_pretty('city'); |
|
82 | - break; |
|
83 | - |
|
84 | - case '[CO_STATE]': |
|
85 | - $state = EE_Registry::instance()->load_model('State')->get_one_by_ID( |
|
86 | - EE_Registry::instance()->CFG->organization->STA_ID |
|
87 | - ); |
|
88 | - return $state instanceof EE_State ? $state->name() : ''; |
|
89 | - break; |
|
90 | - |
|
91 | - case '[CO_ZIP]': |
|
92 | - return EE_Registry::instance()->CFG->organization->get_pretty('zip'); |
|
93 | - break; |
|
94 | - |
|
95 | - case '[CO_EMAIL]': |
|
96 | - return EE_Registry::instance()->CFG->organization->get_pretty('email'); |
|
97 | - break; |
|
98 | - |
|
99 | - case '[CO_PHONE]': |
|
100 | - return EE_Registry::instance()->CFG->organization->get_pretty('phone'); |
|
101 | - break; |
|
102 | - |
|
103 | - case '[CO_LOGO]': |
|
104 | - return '<img src="' |
|
105 | - . EE_Registry::instance()->CFG->organization->get_pretty( |
|
106 | - 'logo_url' |
|
107 | - ) . '" id="headerImage" />'; |
|
108 | - break; |
|
109 | - |
|
110 | - case '[CO_LOGO_URL]': |
|
111 | - return EE_Registry::instance()->CFG->organization->get_pretty('logo_url'); |
|
112 | - break; |
|
113 | - |
|
114 | - case '[CO_FACEBOOK_URL]': |
|
115 | - return EE_Registry::instance()->CFG->organization->get_pretty('facebook'); |
|
116 | - break; |
|
117 | - |
|
118 | - case '[CO_TWITTER_URL]': |
|
119 | - return EE_Registry::instance()->CFG->organization->get_pretty('twitter'); |
|
120 | - break; |
|
121 | - |
|
122 | - case '[CO_PINTEREST_URL]': |
|
123 | - return EE_Registry::instance()->CFG->organization->get_pretty('pinterest'); |
|
124 | - break; |
|
125 | - |
|
126 | - case '[CO_LINKEDIN_URL]': |
|
127 | - return EE_Registry::instance()->CFG->organization->get_pretty('linkedin'); |
|
128 | - break; |
|
129 | - |
|
130 | - case '[CO_GOOGLE_URL]': |
|
131 | - return EE_Registry::instance()->CFG->organization->get_pretty('google'); |
|
132 | - break; |
|
133 | - |
|
134 | - case '[CO_INSTAGRAM_URL]': |
|
135 | - return EE_Registry::instance()->CFG->organization->get_pretty('instagram'); |
|
136 | - break; |
|
137 | - } |
|
138 | - |
|
139 | - // also allow for parameter shortcode |
|
140 | - if (strpos($shortcode, '[CO_TAX_NUMBER_*') !== false) { |
|
141 | - // first see if there is any company tax number set and bail early if not |
|
142 | - $tax_number = EE_Registry::instance()->CFG->organization->vat; |
|
143 | - if (empty($tax_number)) { |
|
144 | - return ''; |
|
145 | - } |
|
146 | - |
|
147 | - // see if there are any attributes. |
|
148 | - $attrs = $this->_get_shortcode_attrs($shortcode); |
|
149 | - |
|
150 | - // set custom attrs if present (or default) |
|
151 | - $prefix = isset($attrs['prefix']) ? $attrs['prefix'] : esc_html__('VAT/Tax Number: ', 'event_espresso'); |
|
152 | - return $prefix . $tax_number; |
|
153 | - } |
|
154 | - |
|
155 | - return ''; |
|
156 | - } |
|
22 | + public function __construct() |
|
23 | + { |
|
24 | + parent::__construct(); |
|
25 | + } |
|
26 | + |
|
27 | + |
|
28 | + protected function _init_props() |
|
29 | + { |
|
30 | + $this->label = esc_html__('Organization Shortcodes', 'event_espresso'); |
|
31 | + $this->description = esc_html__('All shortcodes specific to organization related data', 'event_espresso'); |
|
32 | + $this->_shortcodes = array( |
|
33 | + '[COMPANY]' => esc_html__('Event organization name', 'event_espresso'), |
|
34 | + '[CO_ADD1]' => esc_html__('Address 1 value for the organization', 'event_espresso'), |
|
35 | + '[CO_ADD2]' => esc_html__('Address 2 value for the organization', 'event_espresso'), |
|
36 | + '[CO_CITY]' => esc_html__('City the organization is in', 'event_espresso'), |
|
37 | + '[CO_STATE]' => esc_html__('State the organization is located in', 'event_espresso'), |
|
38 | + '[CO_ZIP]' => esc_html__('The zip code for the organization', 'event_espresso'), |
|
39 | + '[CO_LOGO]' => esc_html__('The logo image for the organization', 'event_espresso'), |
|
40 | + '[CO_EMAIL]' => esc_html__('The primary email address for the organization', 'event_espresso'), |
|
41 | + '[CO_PHONE]' => esc_html__('The phone number for the organization', 'event_espresso'), |
|
42 | + '[CO_LOGO_URL]' => esc_html__( |
|
43 | + 'Just the link to the image used as the logo for the organization', |
|
44 | + 'event_espresso' |
|
45 | + ), |
|
46 | + '[CO_FACEBOOK_URL]' => esc_html__('Link to organization Facebook page', 'event_espresso'), |
|
47 | + '[CO_TWITTER_URL]' => esc_html__('Link to organization Twitter page', 'event_espresso'), |
|
48 | + '[CO_PINTEREST_URL]' => esc_html__('Link to organization Pinterest page', 'event_espresso'), |
|
49 | + '[CO_GOOGLE_URL]' => esc_html__('Link to organization Google page', 'event_espresso'), |
|
50 | + '[CO_LINKEDIN_URL]' => esc_html__('Link to organization LinkedIn page', 'event_espresso'), |
|
51 | + '[CO_INSTAGRAM_URL]' => esc_html__('Link to organization Instagram page', 'event_espresso'), |
|
52 | + '[CO_TAX_NUMBER_*]' => sprintf( |
|
53 | + esc_html__( |
|
54 | + 'This is the shortcode used for displaying any tax number for the company. %1$sNote: This is a special dynamic shortcode.%2$s You can use the "prefix" parameter to indicate what the prefix for this tax number is. It defaults to "VAT/Tax Number:". To change this prefix you do the following format for this shortcode: [CO_TAX_NUMBER_* prefix="GST: "] and that will output: GST: 12345t56. Also take note that if you have NO number in your settings, the prefix is not output either.', |
|
55 | + 'event_espresso' |
|
56 | + ), |
|
57 | + '<strong>', |
|
58 | + '</strong>' |
|
59 | + ), |
|
60 | + ); |
|
61 | + } |
|
62 | + |
|
63 | + |
|
64 | + protected function _parser($shortcode) |
|
65 | + { |
|
66 | + |
|
67 | + switch ($shortcode) { |
|
68 | + case '[COMPANY]': |
|
69 | + return EE_Registry::instance()->CFG->organization->get_pretty('name'); |
|
70 | + break; |
|
71 | + |
|
72 | + case '[CO_ADD1]': |
|
73 | + return EE_Registry::instance()->CFG->organization->get_pretty('address_1'); |
|
74 | + break; |
|
75 | + |
|
76 | + case '[CO_ADD2]': |
|
77 | + return EE_Registry::instance()->CFG->organization->get_pretty('address_2'); |
|
78 | + break; |
|
79 | + |
|
80 | + case '[CO_CITY]': |
|
81 | + return EE_Registry::instance()->CFG->organization->get_pretty('city'); |
|
82 | + break; |
|
83 | + |
|
84 | + case '[CO_STATE]': |
|
85 | + $state = EE_Registry::instance()->load_model('State')->get_one_by_ID( |
|
86 | + EE_Registry::instance()->CFG->organization->STA_ID |
|
87 | + ); |
|
88 | + return $state instanceof EE_State ? $state->name() : ''; |
|
89 | + break; |
|
90 | + |
|
91 | + case '[CO_ZIP]': |
|
92 | + return EE_Registry::instance()->CFG->organization->get_pretty('zip'); |
|
93 | + break; |
|
94 | + |
|
95 | + case '[CO_EMAIL]': |
|
96 | + return EE_Registry::instance()->CFG->organization->get_pretty('email'); |
|
97 | + break; |
|
98 | + |
|
99 | + case '[CO_PHONE]': |
|
100 | + return EE_Registry::instance()->CFG->organization->get_pretty('phone'); |
|
101 | + break; |
|
102 | + |
|
103 | + case '[CO_LOGO]': |
|
104 | + return '<img src="' |
|
105 | + . EE_Registry::instance()->CFG->organization->get_pretty( |
|
106 | + 'logo_url' |
|
107 | + ) . '" id="headerImage" />'; |
|
108 | + break; |
|
109 | + |
|
110 | + case '[CO_LOGO_URL]': |
|
111 | + return EE_Registry::instance()->CFG->organization->get_pretty('logo_url'); |
|
112 | + break; |
|
113 | + |
|
114 | + case '[CO_FACEBOOK_URL]': |
|
115 | + return EE_Registry::instance()->CFG->organization->get_pretty('facebook'); |
|
116 | + break; |
|
117 | + |
|
118 | + case '[CO_TWITTER_URL]': |
|
119 | + return EE_Registry::instance()->CFG->organization->get_pretty('twitter'); |
|
120 | + break; |
|
121 | + |
|
122 | + case '[CO_PINTEREST_URL]': |
|
123 | + return EE_Registry::instance()->CFG->organization->get_pretty('pinterest'); |
|
124 | + break; |
|
125 | + |
|
126 | + case '[CO_LINKEDIN_URL]': |
|
127 | + return EE_Registry::instance()->CFG->organization->get_pretty('linkedin'); |
|
128 | + break; |
|
129 | + |
|
130 | + case '[CO_GOOGLE_URL]': |
|
131 | + return EE_Registry::instance()->CFG->organization->get_pretty('google'); |
|
132 | + break; |
|
133 | + |
|
134 | + case '[CO_INSTAGRAM_URL]': |
|
135 | + return EE_Registry::instance()->CFG->organization->get_pretty('instagram'); |
|
136 | + break; |
|
137 | + } |
|
138 | + |
|
139 | + // also allow for parameter shortcode |
|
140 | + if (strpos($shortcode, '[CO_TAX_NUMBER_*') !== false) { |
|
141 | + // first see if there is any company tax number set and bail early if not |
|
142 | + $tax_number = EE_Registry::instance()->CFG->organization->vat; |
|
143 | + if (empty($tax_number)) { |
|
144 | + return ''; |
|
145 | + } |
|
146 | + |
|
147 | + // see if there are any attributes. |
|
148 | + $attrs = $this->_get_shortcode_attrs($shortcode); |
|
149 | + |
|
150 | + // set custom attrs if present (or default) |
|
151 | + $prefix = isset($attrs['prefix']) ? $attrs['prefix'] : esc_html__('VAT/Tax Number: ', 'event_espresso'); |
|
152 | + return $prefix . $tax_number; |
|
153 | + } |
|
154 | + |
|
155 | + return ''; |
|
156 | + } |
|
157 | 157 | } |
@@ -49,7 +49,7 @@ |
||
49 | 49 | protected function _parser($shortcode) |
50 | 50 | { |
51 | 51 | // ensure that the incoming object is an EE_Payment object. If it isn't then bail early. |
52 | - if (! $this->_data instanceof EE_Payment) { |
|
52 | + if ( ! $this->_data instanceof EE_Payment) { |
|
53 | 53 | return ''; |
54 | 54 | } |
55 | 55 |
@@ -18,93 +18,93 @@ |
||
18 | 18 | { |
19 | 19 | |
20 | 20 | |
21 | - protected function _init_props() |
|
22 | - { |
|
23 | - $this->label = esc_html__('Payment Shortcodes', 'event_espresso'); |
|
24 | - $this->description = esc_html__('All shortcodes specific to payments.', 'event_espresso'); |
|
25 | - $this->_shortcodes = array( |
|
26 | - '[PAYMENT_TIMESTAMP]' => esc_html__( |
|
27 | - 'Outputs the date of the payment (using the default date format).', |
|
28 | - 'event_espresso' |
|
29 | - ), |
|
30 | - '[PAYMENT_METHOD]' => esc_html__('Outputs a the payment method.', 'event_espresso'), |
|
31 | - '[PAYMENT_AMOUNT]' => esc_html__('Outputs the payment amount (with currency symbol).', 'event_espresso'), |
|
32 | - '[PAYMENT_GATEWAY]' => esc_html__('Outputs the gateway used for the payment.', 'event_espresso'), |
|
33 | - '[PAYMENT_GATEWAY_RESPONSE]' => esc_html__('Outputs the payment gateway response.', 'event_espresso'), |
|
34 | - '[PAYMENT_GATEWAY_TXN_ID]' => esc_html__( |
|
35 | - 'This will either be the gateway transaction ID, or the manual ID added with payment applied via the admin.', |
|
36 | - 'event_espresso' |
|
37 | - ), |
|
38 | - '[PAYMENT_PO_NUMBER]' => esc_html__('Purchase Order number (if present)', 'event_espresso'), |
|
39 | - '[PAYMENT_EXTRA_ACCOUNTING]' => esc_html__( |
|
40 | - 'Any extra accounting messages. Typically added with payments made via the admin.', |
|
41 | - 'event_espresso' |
|
42 | - ), |
|
43 | - '[PAYMENT_STATUS]' => esc_html__('The status of the payment.', 'event_espresso'), |
|
44 | - // '[PAYMENT_STATUS_WITH_ICONS]' => esc_html__('The status of the payment including icons representing the status.', 'event_espresso') |
|
45 | - ); |
|
46 | - } |
|
47 | - |
|
48 | - |
|
49 | - protected function _parser($shortcode) |
|
50 | - { |
|
51 | - // ensure that the incoming object is an EE_Payment object. If it isn't then bail early. |
|
52 | - if (! $this->_data instanceof EE_Payment) { |
|
53 | - return ''; |
|
54 | - } |
|
55 | - |
|
56 | - $payment = $this->_data; |
|
57 | - |
|
58 | - switch ($shortcode) { |
|
59 | - case '[PAYMENT_TIMESTAMP]': |
|
60 | - return $payment->timestamp(); |
|
61 | - break; |
|
62 | - |
|
63 | - case '[PAYMENT_METHOD]': |
|
64 | - // previously the column 'PAY_source' was known as 'PAY_method' |
|
65 | - return $payment->source(); |
|
66 | - break; |
|
67 | - |
|
68 | - case '[PAYMENT_AMOUNT]': |
|
69 | - return $payment->amount_no_code(); |
|
70 | - break; |
|
71 | - |
|
72 | - case '[PAYMENT_GATEWAY]': |
|
73 | - // previously teh column 'PMD_ID' was more-or-less 'PAY_gateway' |
|
74 | - if ($payment->payment_method() instanceof EE_Payment_Method) { |
|
75 | - return $payment->payment_method()->name(); |
|
76 | - } else { |
|
77 | - return esc_html__('Unknown', 'event_espresso'); |
|
78 | - } |
|
79 | - break; |
|
80 | - |
|
81 | - case '[PAYMENT_GATEWAY_RESPONSE]': |
|
82 | - return $payment->gateway_response(); |
|
83 | - break; |
|
84 | - |
|
85 | - case '[PAYMENT_GATEWAY_TXN_ID]': |
|
86 | - return $payment->txn_id_chq_nmbr(); |
|
87 | - break; |
|
88 | - |
|
89 | - case '[PAYMENT_PO_NUMBER]': |
|
90 | - return $payment->po_number(); |
|
91 | - break; |
|
92 | - |
|
93 | - case '[PAYMENT_EXTRA_ACCOUNTING]': |
|
94 | - return $payment->extra_accntng(); |
|
95 | - break; |
|
96 | - |
|
97 | - case '[PAYMENT_STATUS]': |
|
98 | - return $payment->pretty_status(); |
|
99 | - break; |
|
100 | - |
|
101 | - case '[PAYMENT_STATUS_WITH_ICONS]': |
|
102 | - return $payment->pretty_status(true); |
|
103 | - break; |
|
104 | - |
|
105 | - default: |
|
106 | - return ''; |
|
107 | - break; |
|
108 | - } |
|
109 | - } |
|
21 | + protected function _init_props() |
|
22 | + { |
|
23 | + $this->label = esc_html__('Payment Shortcodes', 'event_espresso'); |
|
24 | + $this->description = esc_html__('All shortcodes specific to payments.', 'event_espresso'); |
|
25 | + $this->_shortcodes = array( |
|
26 | + '[PAYMENT_TIMESTAMP]' => esc_html__( |
|
27 | + 'Outputs the date of the payment (using the default date format).', |
|
28 | + 'event_espresso' |
|
29 | + ), |
|
30 | + '[PAYMENT_METHOD]' => esc_html__('Outputs a the payment method.', 'event_espresso'), |
|
31 | + '[PAYMENT_AMOUNT]' => esc_html__('Outputs the payment amount (with currency symbol).', 'event_espresso'), |
|
32 | + '[PAYMENT_GATEWAY]' => esc_html__('Outputs the gateway used for the payment.', 'event_espresso'), |
|
33 | + '[PAYMENT_GATEWAY_RESPONSE]' => esc_html__('Outputs the payment gateway response.', 'event_espresso'), |
|
34 | + '[PAYMENT_GATEWAY_TXN_ID]' => esc_html__( |
|
35 | + 'This will either be the gateway transaction ID, or the manual ID added with payment applied via the admin.', |
|
36 | + 'event_espresso' |
|
37 | + ), |
|
38 | + '[PAYMENT_PO_NUMBER]' => esc_html__('Purchase Order number (if present)', 'event_espresso'), |
|
39 | + '[PAYMENT_EXTRA_ACCOUNTING]' => esc_html__( |
|
40 | + 'Any extra accounting messages. Typically added with payments made via the admin.', |
|
41 | + 'event_espresso' |
|
42 | + ), |
|
43 | + '[PAYMENT_STATUS]' => esc_html__('The status of the payment.', 'event_espresso'), |
|
44 | + // '[PAYMENT_STATUS_WITH_ICONS]' => esc_html__('The status of the payment including icons representing the status.', 'event_espresso') |
|
45 | + ); |
|
46 | + } |
|
47 | + |
|
48 | + |
|
49 | + protected function _parser($shortcode) |
|
50 | + { |
|
51 | + // ensure that the incoming object is an EE_Payment object. If it isn't then bail early. |
|
52 | + if (! $this->_data instanceof EE_Payment) { |
|
53 | + return ''; |
|
54 | + } |
|
55 | + |
|
56 | + $payment = $this->_data; |
|
57 | + |
|
58 | + switch ($shortcode) { |
|
59 | + case '[PAYMENT_TIMESTAMP]': |
|
60 | + return $payment->timestamp(); |
|
61 | + break; |
|
62 | + |
|
63 | + case '[PAYMENT_METHOD]': |
|
64 | + // previously the column 'PAY_source' was known as 'PAY_method' |
|
65 | + return $payment->source(); |
|
66 | + break; |
|
67 | + |
|
68 | + case '[PAYMENT_AMOUNT]': |
|
69 | + return $payment->amount_no_code(); |
|
70 | + break; |
|
71 | + |
|
72 | + case '[PAYMENT_GATEWAY]': |
|
73 | + // previously teh column 'PMD_ID' was more-or-less 'PAY_gateway' |
|
74 | + if ($payment->payment_method() instanceof EE_Payment_Method) { |
|
75 | + return $payment->payment_method()->name(); |
|
76 | + } else { |
|
77 | + return esc_html__('Unknown', 'event_espresso'); |
|
78 | + } |
|
79 | + break; |
|
80 | + |
|
81 | + case '[PAYMENT_GATEWAY_RESPONSE]': |
|
82 | + return $payment->gateway_response(); |
|
83 | + break; |
|
84 | + |
|
85 | + case '[PAYMENT_GATEWAY_TXN_ID]': |
|
86 | + return $payment->txn_id_chq_nmbr(); |
|
87 | + break; |
|
88 | + |
|
89 | + case '[PAYMENT_PO_NUMBER]': |
|
90 | + return $payment->po_number(); |
|
91 | + break; |
|
92 | + |
|
93 | + case '[PAYMENT_EXTRA_ACCOUNTING]': |
|
94 | + return $payment->extra_accntng(); |
|
95 | + break; |
|
96 | + |
|
97 | + case '[PAYMENT_STATUS]': |
|
98 | + return $payment->pretty_status(); |
|
99 | + break; |
|
100 | + |
|
101 | + case '[PAYMENT_STATUS_WITH_ICONS]': |
|
102 | + return $payment->pretty_status(true); |
|
103 | + break; |
|
104 | + |
|
105 | + default: |
|
106 | + return ''; |
|
107 | + break; |
|
108 | + } |
|
109 | + } |
|
110 | 110 | } |
@@ -59,7 +59,7 @@ discard block |
||
59 | 59 | // now it's possible that $recipient is not an instance of EE_Messages_Addressee in which case we need to see if $this->_data is an instance of $event. |
60 | 60 | $event = $this->_data instanceof EE_Event ? $this->_data : null; |
61 | 61 | |
62 | - if (! $recipient instanceof EE_Messages_Addressee && ! $event instanceof EE_Event) { |
|
62 | + if ( ! $recipient instanceof EE_Messages_Addressee && ! $event instanceof EE_Event) { |
|
63 | 63 | return ''; |
64 | 64 | } |
65 | 65 | |
@@ -83,22 +83,22 @@ discard block |
||
83 | 83 | break; |
84 | 84 | |
85 | 85 | case '[EVENT_AUTHOR_FORMATTED_EMAIL]': |
86 | - if (! empty($recipient)) { |
|
86 | + if ( ! empty($recipient)) { |
|
87 | 87 | $email = ! empty($recipient->fname) |
88 | - ? $recipient->fname . ' ' . $recipient->lname . '<' . $recipient->admin_email . '>' |
|
88 | + ? $recipient->fname.' '.$recipient->lname.'<'.$recipient->admin_email.'>' |
|
89 | 89 | : EE_Registry::instance()->CFG->organization->get_pretty( |
90 | 90 | 'name' |
91 | - ) . '<' . $recipient->admin_email . '>'; |
|
91 | + ).'<'.$recipient->admin_email.'>'; |
|
92 | 92 | } else { |
93 | 93 | $email = null; |
94 | 94 | } |
95 | 95 | if (empty($email) && ! empty($event)) { |
96 | 96 | $user = $this->_get_author_for_event($event); |
97 | 97 | $email = ! empty($user->first_name) |
98 | - ? $user->first_name . ' ' . $user->last_name . '<' . $user->user_email . '>' |
|
98 | + ? $user->first_name.' '.$user->last_name.'<'.$user->user_email.'>' |
|
99 | 99 | : EE_Registry::instance()->CFG->organization->get_pretty( |
100 | 100 | 'name' |
101 | - ) . '<' . $user->user_email . '>'; |
|
101 | + ).'<'.$user->user_email.'>'; |
|
102 | 102 | } |
103 | 103 | return $email; |
104 | 104 | break; |
@@ -20,116 +20,116 @@ |
||
20 | 20 | class EE_Event_Author_Shortcodes extends EE_Shortcodes |
21 | 21 | { |
22 | 22 | |
23 | - public function __construct() |
|
24 | - { |
|
25 | - parent::__construct(); |
|
26 | - } |
|
23 | + public function __construct() |
|
24 | + { |
|
25 | + parent::__construct(); |
|
26 | + } |
|
27 | 27 | |
28 | 28 | |
29 | - protected function _init_props() |
|
30 | - { |
|
31 | - $this->label = esc_html__('Event Author Details Shortcodes', 'event_espresso'); |
|
32 | - $this->description = esc_html__('All shortcodes specific to event_author data', 'event_espresso'); |
|
33 | - $this->_shortcodes = array( |
|
34 | - '[EVENT_AUTHOR_FNAME]' => esc_html__('Parses to the first name of the event author.', 'event_espresso'), |
|
35 | - '[EVENT_AUTHOR_LNAME]' => esc_html__('Parses to the last name of the event author.', 'event_espresso'), |
|
36 | - '[EVENT_AUTHOR_FORMATTED_EMAIL]' => esc_html__( |
|
37 | - 'Parses to a formatted email address of the event author (fname lname <[email protected]>). <strong>NOTE:</strong> If the event author has not filled out their WordPress user profile then the organization name will be used as the "From" name.', |
|
38 | - 'event_espresso' |
|
39 | - ), |
|
40 | - '[EVENT_AUTHOR_EMAIL]' => esc_html__( |
|
41 | - 'Parses to the unformatted email address of the event author', |
|
42 | - 'event_espresso' |
|
43 | - ), |
|
44 | - ); |
|
45 | - } |
|
29 | + protected function _init_props() |
|
30 | + { |
|
31 | + $this->label = esc_html__('Event Author Details Shortcodes', 'event_espresso'); |
|
32 | + $this->description = esc_html__('All shortcodes specific to event_author data', 'event_espresso'); |
|
33 | + $this->_shortcodes = array( |
|
34 | + '[EVENT_AUTHOR_FNAME]' => esc_html__('Parses to the first name of the event author.', 'event_espresso'), |
|
35 | + '[EVENT_AUTHOR_LNAME]' => esc_html__('Parses to the last name of the event author.', 'event_espresso'), |
|
36 | + '[EVENT_AUTHOR_FORMATTED_EMAIL]' => esc_html__( |
|
37 | + 'Parses to a formatted email address of the event author (fname lname <[email protected]>). <strong>NOTE:</strong> If the event author has not filled out their WordPress user profile then the organization name will be used as the "From" name.', |
|
38 | + 'event_espresso' |
|
39 | + ), |
|
40 | + '[EVENT_AUTHOR_EMAIL]' => esc_html__( |
|
41 | + 'Parses to the unformatted email address of the event author', |
|
42 | + 'event_espresso' |
|
43 | + ), |
|
44 | + ); |
|
45 | + } |
|
46 | 46 | |
47 | 47 | |
48 | - protected function _parser($shortcode) |
|
49 | - { |
|
50 | - // make sure we end up with a copy of the EE_Messages_Addressee object |
|
51 | - $recipient = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
52 | - $recipient = ! $recipient instanceof EE_Messages_Addressee && is_array( |
|
53 | - $this->_data |
|
54 | - ) && isset($this->_data['data']) && $this->_data['data'] instanceof EE_Messages_Addressee ? $this->_data['data'] |
|
55 | - : $recipient; |
|
56 | - $recipient = ! $recipient instanceof EE_Messages_Addressee && ! empty($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
57 | - ? $this->_extra_data['data'] : $recipient; |
|
48 | + protected function _parser($shortcode) |
|
49 | + { |
|
50 | + // make sure we end up with a copy of the EE_Messages_Addressee object |
|
51 | + $recipient = $this->_data instanceof EE_Messages_Addressee ? $this->_data : null; |
|
52 | + $recipient = ! $recipient instanceof EE_Messages_Addressee && is_array( |
|
53 | + $this->_data |
|
54 | + ) && isset($this->_data['data']) && $this->_data['data'] instanceof EE_Messages_Addressee ? $this->_data['data'] |
|
55 | + : $recipient; |
|
56 | + $recipient = ! $recipient instanceof EE_Messages_Addressee && ! empty($this->_extra_data['data']) && $this->_extra_data['data'] instanceof EE_Messages_Addressee |
|
57 | + ? $this->_extra_data['data'] : $recipient; |
|
58 | 58 | |
59 | - // now it's possible that $recipient is not an instance of EE_Messages_Addressee in which case we need to see if $this->_data is an instance of $event. |
|
60 | - $event = $this->_data instanceof EE_Event ? $this->_data : null; |
|
59 | + // now it's possible that $recipient is not an instance of EE_Messages_Addressee in which case we need to see if $this->_data is an instance of $event. |
|
60 | + $event = $this->_data instanceof EE_Event ? $this->_data : null; |
|
61 | 61 | |
62 | - if (! $recipient instanceof EE_Messages_Addressee && ! $event instanceof EE_Event) { |
|
63 | - return ''; |
|
64 | - } |
|
62 | + if (! $recipient instanceof EE_Messages_Addressee && ! $event instanceof EE_Event) { |
|
63 | + return ''; |
|
64 | + } |
|
65 | 65 | |
66 | - switch ($shortcode) { |
|
67 | - case '[EVENT_AUTHOR_FNAME]': |
|
68 | - $fname = ! empty($recipient) ? $recipient->fname : null; |
|
69 | - if (empty($fname) && ! empty($event)) { |
|
70 | - $user = $this->_get_author_for_event($event); |
|
71 | - $fname = $user->first_name; |
|
72 | - } |
|
73 | - return $fname; |
|
74 | - break; |
|
66 | + switch ($shortcode) { |
|
67 | + case '[EVENT_AUTHOR_FNAME]': |
|
68 | + $fname = ! empty($recipient) ? $recipient->fname : null; |
|
69 | + if (empty($fname) && ! empty($event)) { |
|
70 | + $user = $this->_get_author_for_event($event); |
|
71 | + $fname = $user->first_name; |
|
72 | + } |
|
73 | + return $fname; |
|
74 | + break; |
|
75 | 75 | |
76 | - case '[EVENT_AUTHOR_LNAME]': |
|
77 | - $lname = ! empty($recipient) ? $recipient->lname : null; |
|
78 | - if (empty($lname) && ! empty($event)) { |
|
79 | - $user = $this->_get_author_for_event($event); |
|
80 | - $lname = $user->last_name; |
|
81 | - } |
|
82 | - return $lname; |
|
83 | - break; |
|
76 | + case '[EVENT_AUTHOR_LNAME]': |
|
77 | + $lname = ! empty($recipient) ? $recipient->lname : null; |
|
78 | + if (empty($lname) && ! empty($event)) { |
|
79 | + $user = $this->_get_author_for_event($event); |
|
80 | + $lname = $user->last_name; |
|
81 | + } |
|
82 | + return $lname; |
|
83 | + break; |
|
84 | 84 | |
85 | - case '[EVENT_AUTHOR_FORMATTED_EMAIL]': |
|
86 | - if (! empty($recipient)) { |
|
87 | - $email = ! empty($recipient->fname) |
|
88 | - ? $recipient->fname . ' ' . $recipient->lname . '<' . $recipient->admin_email . '>' |
|
89 | - : EE_Registry::instance()->CFG->organization->get_pretty( |
|
90 | - 'name' |
|
91 | - ) . '<' . $recipient->admin_email . '>'; |
|
92 | - } else { |
|
93 | - $email = null; |
|
94 | - } |
|
95 | - if (empty($email) && ! empty($event)) { |
|
96 | - $user = $this->_get_author_for_event($event); |
|
97 | - $email = ! empty($user->first_name) |
|
98 | - ? $user->first_name . ' ' . $user->last_name . '<' . $user->user_email . '>' |
|
99 | - : EE_Registry::instance()->CFG->organization->get_pretty( |
|
100 | - 'name' |
|
101 | - ) . '<' . $user->user_email . '>'; |
|
102 | - } |
|
103 | - return $email; |
|
104 | - break; |
|
85 | + case '[EVENT_AUTHOR_FORMATTED_EMAIL]': |
|
86 | + if (! empty($recipient)) { |
|
87 | + $email = ! empty($recipient->fname) |
|
88 | + ? $recipient->fname . ' ' . $recipient->lname . '<' . $recipient->admin_email . '>' |
|
89 | + : EE_Registry::instance()->CFG->organization->get_pretty( |
|
90 | + 'name' |
|
91 | + ) . '<' . $recipient->admin_email . '>'; |
|
92 | + } else { |
|
93 | + $email = null; |
|
94 | + } |
|
95 | + if (empty($email) && ! empty($event)) { |
|
96 | + $user = $this->_get_author_for_event($event); |
|
97 | + $email = ! empty($user->first_name) |
|
98 | + ? $user->first_name . ' ' . $user->last_name . '<' . $user->user_email . '>' |
|
99 | + : EE_Registry::instance()->CFG->organization->get_pretty( |
|
100 | + 'name' |
|
101 | + ) . '<' . $user->user_email . '>'; |
|
102 | + } |
|
103 | + return $email; |
|
104 | + break; |
|
105 | 105 | |
106 | - case '[EVENT_AUTHOR_EMAIL]': |
|
107 | - $email = ! empty($recipient) ? $recipient->admin_email : null; |
|
108 | - if (empty($email) && ! empty($event)) { |
|
109 | - $user = $this->_get_author_for_event($event); |
|
110 | - $email = $user->user_email; |
|
111 | - } |
|
112 | - return $email; |
|
113 | - break; |
|
106 | + case '[EVENT_AUTHOR_EMAIL]': |
|
107 | + $email = ! empty($recipient) ? $recipient->admin_email : null; |
|
108 | + if (empty($email) && ! empty($event)) { |
|
109 | + $user = $this->_get_author_for_event($event); |
|
110 | + $email = $user->user_email; |
|
111 | + } |
|
112 | + return $email; |
|
113 | + break; |
|
114 | 114 | |
115 | - default: |
|
116 | - return ''; |
|
117 | - break; |
|
118 | - } |
|
119 | - } |
|
115 | + default: |
|
116 | + return ''; |
|
117 | + break; |
|
118 | + } |
|
119 | + } |
|
120 | 120 | |
121 | 121 | |
122 | - /** |
|
123 | - * Helper method to return the user object for the author of the given EE_Event |
|
124 | - * |
|
125 | - * @param EE_Event $event |
|
126 | - * |
|
127 | - * @return WP_User |
|
128 | - */ |
|
129 | - private function _get_author_for_event(EE_Event $event) |
|
130 | - { |
|
131 | - $author_id = $event->wp_user(); |
|
132 | - $user_data = get_userdata((int) $author_id); |
|
133 | - return $user_data; |
|
134 | - } |
|
122 | + /** |
|
123 | + * Helper method to return the user object for the author of the given EE_Event |
|
124 | + * |
|
125 | + * @param EE_Event $event |
|
126 | + * |
|
127 | + * @return WP_User |
|
128 | + */ |
|
129 | + private function _get_author_for_event(EE_Event $event) |
|
130 | + { |
|
131 | + $author_id = $event->wp_user(); |
|
132 | + $user_data = get_userdata((int) $author_id); |
|
133 | + return $user_data; |
|
134 | + } |
|
135 | 135 | } |
@@ -19,167 +19,167 @@ |
||
19 | 19 | { |
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__('Email Shortcodes', 'event_espresso'); |
|
31 | - $this->description = esc_html__('All shortcodes related to emails', 'event_espresso'); |
|
32 | - $this->_shortcodes = array( |
|
33 | - '[SITE_ADMIN_EMAIL]' => esc_html__( |
|
34 | - 'Will be replaced with the admin email for the site that Event Espresso is installed on', |
|
35 | - 'event_espresso' |
|
36 | - ), |
|
37 | - '[EVENT_AUTHOR_FORMATTED_EMAIL]' => sprintf( |
|
38 | - esc_html__( |
|
39 | - 'This will be replaced with a properly formatted list of Event Creator emails for the events in a registration. %1$sNOTE:%2$s If the event author has not filled out their WordPress user profile then the organization name will be used as the "From" name.', |
|
40 | - 'event_espresso' |
|
41 | - ), |
|
42 | - '<strong>', |
|
43 | - '</strong>' |
|
44 | - ), |
|
45 | - '[EVENT_AUTHOR_EMAIL]' => sprintf( |
|
46 | - esc_html__( |
|
47 | - 'This is the same as %1$s shortcode except it is just a list of emails (not fancy headers).', |
|
48 | - 'event_espresso' |
|
49 | - ), |
|
50 | - '[EVENT_AUTHOR_FORMATTED_EMAIL]' |
|
51 | - ), |
|
52 | - '[CO_FORMATTED_EMAIL]' => esc_html__( |
|
53 | - 'This parses to the formatted email address of the organization name set in Your Organization Settings. "My Organization <[email protected]>"', |
|
54 | - 'event_espresso' |
|
55 | - ), |
|
56 | - '[CO_EMAIL]' => esc_html__( |
|
57 | - 'This will parse to the email address only for the organization set in Your Organization Settings.', |
|
58 | - 'event_espresso' |
|
59 | - ), |
|
60 | - '[ESPRESSO_ADMIN_FORMATTED_EMAIL]' => esc_html__( |
|
61 | - 'This parses to the formatted email address of the organization name set in Your Organization Settings. "My Organization <[email protected]>"', |
|
62 | - 'event_espresso' |
|
63 | - ), |
|
64 | - '[ESPRESSO_ADMIN_EMAIL]' => esc_html__( |
|
65 | - 'This parses to the email address only for the organization set in Your Organization Settings page.', |
|
66 | - 'event_espresso' |
|
67 | - ), |
|
68 | - ); |
|
69 | - } |
|
70 | - |
|
71 | - |
|
72 | - protected function _parser($shortcode) |
|
73 | - { |
|
74 | - |
|
75 | - switch ($shortcode) { |
|
76 | - case '[SITE_ADMIN_EMAIL]': |
|
77 | - return $this->_get_site_admin_email(); |
|
78 | - break; |
|
79 | - |
|
80 | - case '[EVENT_AUTHOR_FORMATTED_EMAIL]': |
|
81 | - return $this->_get_event_admin_emails(); |
|
82 | - break; |
|
83 | - |
|
84 | - case '[EVENT_AUTHOR_EMAIL]': |
|
85 | - return $this->_get_event_admin_emails(false); |
|
86 | - break; |
|
87 | - |
|
88 | - case '[CO_FORMATTED_EMAIL]': |
|
89 | - case '[ESPRESSO_ADMIN_FORMATTED_EMAIL]': |
|
90 | - return EE_Registry::instance()->CFG->organization->get_pretty('name') . ' <' |
|
91 | - . EE_Registry::instance()->CFG->organization->get_pretty('email') . '>'; |
|
92 | - break; |
|
93 | - |
|
94 | - case '[CO_EMAIL]': |
|
95 | - case '[ESPRESSO_ADMIN_EMAIL]': |
|
96 | - return EE_Registry::instance()->CFG->organization->get_pretty('email'); |
|
97 | - break; |
|
98 | - |
|
99 | - default: |
|
100 | - return ''; |
|
101 | - break; |
|
102 | - } |
|
103 | - } |
|
104 | - |
|
105 | - |
|
106 | - /** |
|
107 | - * This simply returns the site admin email (result for parsing "[SITE_ADMIN_EMAIL]" shortcode) |
|
108 | - * |
|
109 | - * @access private |
|
110 | - * @return string email address of site admin |
|
111 | - */ |
|
112 | - private function _get_site_admin_email() |
|
113 | - { |
|
114 | - return get_bloginfo('admin_email'); |
|
115 | - } |
|
116 | - |
|
117 | - |
|
118 | - private function _get_event_admin_emails($fancy_headers = true) |
|
119 | - { |
|
120 | - |
|
121 | - if (! empty($this->_data->admin_email)) { |
|
122 | - if (! $fancy_headers) { |
|
123 | - return $this->_data->admin_email; |
|
124 | - } |
|
125 | - return ! empty($this->_data->fname) |
|
126 | - ? $this->_data->fname . ' ' . $this->_data->lname . ' <' . $this->_data->admin_email . '>' |
|
127 | - : EE_Registry::instance()->CFG->organization->get_pretty( |
|
128 | - 'name' |
|
129 | - ) . ' <' . $this->_data->admin_email . '>'; |
|
130 | - } |
|
131 | - |
|
132 | - // k this shortcode has been used else where. Since we don't know what particular event this is for, let's loop through the events and get an array of event admins for the events. We'll return the formatted list of admin emails and let the messenger make sure we only pick one if this is for a field that can only have ONE!. |
|
133 | - |
|
134 | - $admin_email = array(); |
|
135 | - |
|
136 | - // loop through events and set the list of event_ids to retrieve so we can do ONE query. |
|
137 | - foreach ($this->_data->events as $event) { |
|
138 | - $ids[] = $event['ID']; |
|
139 | - } |
|
140 | - |
|
141 | - // get all the events |
|
142 | - $events = EE_Registry::instance()->load_model('Event')->get_all(array(array('EVT_ID' => array('IN', $ids)))); |
|
143 | - |
|
144 | - // now loop through each event and setup the details |
|
145 | - $admin_details = array(); |
|
146 | - $cnt = 0; |
|
147 | - foreach ($events as $event) { |
|
148 | - $user = get_userdata($event->get('EVT_wp_user')); |
|
149 | - $admin_details[ $cnt ] = new stdClass(); |
|
150 | - $admin_details[ $cnt ]->email = $user->user_email; |
|
151 | - $admin_details[ $cnt ]->first_name = $user->user_firstname; |
|
152 | - $admin_details[ $cnt ]->last_name = $user->user_lastname; |
|
153 | - $cnt++; |
|
154 | - } |
|
155 | - |
|
156 | - // results? |
|
157 | - if (empty($admin_details) || ! is_array($admin_details)) { |
|
158 | - $msg[] = esc_html__('The admin details could not be retrieved from the database.', 'event_espresso'); |
|
159 | - $msg[] = sprintf(esc_html__('Query: %s', 'event_espresso'), $sql); |
|
160 | - $msg[] = sprintf(esc_html__('Events Data: %s', 'event_espresso'), var_export($this->_data->events, true)); |
|
161 | - $msg[] = sprintf(esc_html__('Event IDS: %s', 'event_espresso'), var_export($ids, true)); |
|
162 | - $msg[] = sprintf(esc_html__('Query Results: %s', 'event_espresso'), var_export($admin_details)); |
|
163 | - do_action('AHEE_log', __FILE__, __FUNCTION__, implode(PHP_EOL, $msg), 'shortcode_parser'); |
|
164 | - } |
|
165 | - |
|
166 | - foreach ($admin_details as $admin) { |
|
167 | - // only add an admin email if it is present. |
|
168 | - if (empty($admin->email) || $admin->email == '') { |
|
169 | - continue; |
|
170 | - } |
|
171 | - |
|
172 | - if (! $fancy_headers) { |
|
173 | - $admin_email[] = $admin->email; |
|
174 | - continue; |
|
175 | - } |
|
176 | - |
|
177 | - $admin_email[] = ! empty($admin->first_name) |
|
178 | - ? $admin->first_name . ' ' . $admin->last_name . ' <' . $admin->email . '>' |
|
179 | - : EE_Registry::instance()->CFG->organization->get_pretty('name') . ' <' . $admin->email . '>'; |
|
180 | - } |
|
181 | - |
|
182 | - $admin_email = implode(',', $admin_email); |
|
183 | - return $admin_email; |
|
184 | - } |
|
22 | + public function __construct() |
|
23 | + { |
|
24 | + parent::__construct(); |
|
25 | + } |
|
26 | + |
|
27 | + |
|
28 | + protected function _init_props() |
|
29 | + { |
|
30 | + $this->label = esc_html__('Email Shortcodes', 'event_espresso'); |
|
31 | + $this->description = esc_html__('All shortcodes related to emails', 'event_espresso'); |
|
32 | + $this->_shortcodes = array( |
|
33 | + '[SITE_ADMIN_EMAIL]' => esc_html__( |
|
34 | + 'Will be replaced with the admin email for the site that Event Espresso is installed on', |
|
35 | + 'event_espresso' |
|
36 | + ), |
|
37 | + '[EVENT_AUTHOR_FORMATTED_EMAIL]' => sprintf( |
|
38 | + esc_html__( |
|
39 | + 'This will be replaced with a properly formatted list of Event Creator emails for the events in a registration. %1$sNOTE:%2$s If the event author has not filled out their WordPress user profile then the organization name will be used as the "From" name.', |
|
40 | + 'event_espresso' |
|
41 | + ), |
|
42 | + '<strong>', |
|
43 | + '</strong>' |
|
44 | + ), |
|
45 | + '[EVENT_AUTHOR_EMAIL]' => sprintf( |
|
46 | + esc_html__( |
|
47 | + 'This is the same as %1$s shortcode except it is just a list of emails (not fancy headers).', |
|
48 | + 'event_espresso' |
|
49 | + ), |
|
50 | + '[EVENT_AUTHOR_FORMATTED_EMAIL]' |
|
51 | + ), |
|
52 | + '[CO_FORMATTED_EMAIL]' => esc_html__( |
|
53 | + 'This parses to the formatted email address of the organization name set in Your Organization Settings. "My Organization <[email protected]>"', |
|
54 | + 'event_espresso' |
|
55 | + ), |
|
56 | + '[CO_EMAIL]' => esc_html__( |
|
57 | + 'This will parse to the email address only for the organization set in Your Organization Settings.', |
|
58 | + 'event_espresso' |
|
59 | + ), |
|
60 | + '[ESPRESSO_ADMIN_FORMATTED_EMAIL]' => esc_html__( |
|
61 | + 'This parses to the formatted email address of the organization name set in Your Organization Settings. "My Organization <[email protected]>"', |
|
62 | + 'event_espresso' |
|
63 | + ), |
|
64 | + '[ESPRESSO_ADMIN_EMAIL]' => esc_html__( |
|
65 | + 'This parses to the email address only for the organization set in Your Organization Settings page.', |
|
66 | + 'event_espresso' |
|
67 | + ), |
|
68 | + ); |
|
69 | + } |
|
70 | + |
|
71 | + |
|
72 | + protected function _parser($shortcode) |
|
73 | + { |
|
74 | + |
|
75 | + switch ($shortcode) { |
|
76 | + case '[SITE_ADMIN_EMAIL]': |
|
77 | + return $this->_get_site_admin_email(); |
|
78 | + break; |
|
79 | + |
|
80 | + case '[EVENT_AUTHOR_FORMATTED_EMAIL]': |
|
81 | + return $this->_get_event_admin_emails(); |
|
82 | + break; |
|
83 | + |
|
84 | + case '[EVENT_AUTHOR_EMAIL]': |
|
85 | + return $this->_get_event_admin_emails(false); |
|
86 | + break; |
|
87 | + |
|
88 | + case '[CO_FORMATTED_EMAIL]': |
|
89 | + case '[ESPRESSO_ADMIN_FORMATTED_EMAIL]': |
|
90 | + return EE_Registry::instance()->CFG->organization->get_pretty('name') . ' <' |
|
91 | + . EE_Registry::instance()->CFG->organization->get_pretty('email') . '>'; |
|
92 | + break; |
|
93 | + |
|
94 | + case '[CO_EMAIL]': |
|
95 | + case '[ESPRESSO_ADMIN_EMAIL]': |
|
96 | + return EE_Registry::instance()->CFG->organization->get_pretty('email'); |
|
97 | + break; |
|
98 | + |
|
99 | + default: |
|
100 | + return ''; |
|
101 | + break; |
|
102 | + } |
|
103 | + } |
|
104 | + |
|
105 | + |
|
106 | + /** |
|
107 | + * This simply returns the site admin email (result for parsing "[SITE_ADMIN_EMAIL]" shortcode) |
|
108 | + * |
|
109 | + * @access private |
|
110 | + * @return string email address of site admin |
|
111 | + */ |
|
112 | + private function _get_site_admin_email() |
|
113 | + { |
|
114 | + return get_bloginfo('admin_email'); |
|
115 | + } |
|
116 | + |
|
117 | + |
|
118 | + private function _get_event_admin_emails($fancy_headers = true) |
|
119 | + { |
|
120 | + |
|
121 | + if (! empty($this->_data->admin_email)) { |
|
122 | + if (! $fancy_headers) { |
|
123 | + return $this->_data->admin_email; |
|
124 | + } |
|
125 | + return ! empty($this->_data->fname) |
|
126 | + ? $this->_data->fname . ' ' . $this->_data->lname . ' <' . $this->_data->admin_email . '>' |
|
127 | + : EE_Registry::instance()->CFG->organization->get_pretty( |
|
128 | + 'name' |
|
129 | + ) . ' <' . $this->_data->admin_email . '>'; |
|
130 | + } |
|
131 | + |
|
132 | + // k this shortcode has been used else where. Since we don't know what particular event this is for, let's loop through the events and get an array of event admins for the events. We'll return the formatted list of admin emails and let the messenger make sure we only pick one if this is for a field that can only have ONE!. |
|
133 | + |
|
134 | + $admin_email = array(); |
|
135 | + |
|
136 | + // loop through events and set the list of event_ids to retrieve so we can do ONE query. |
|
137 | + foreach ($this->_data->events as $event) { |
|
138 | + $ids[] = $event['ID']; |
|
139 | + } |
|
140 | + |
|
141 | + // get all the events |
|
142 | + $events = EE_Registry::instance()->load_model('Event')->get_all(array(array('EVT_ID' => array('IN', $ids)))); |
|
143 | + |
|
144 | + // now loop through each event and setup the details |
|
145 | + $admin_details = array(); |
|
146 | + $cnt = 0; |
|
147 | + foreach ($events as $event) { |
|
148 | + $user = get_userdata($event->get('EVT_wp_user')); |
|
149 | + $admin_details[ $cnt ] = new stdClass(); |
|
150 | + $admin_details[ $cnt ]->email = $user->user_email; |
|
151 | + $admin_details[ $cnt ]->first_name = $user->user_firstname; |
|
152 | + $admin_details[ $cnt ]->last_name = $user->user_lastname; |
|
153 | + $cnt++; |
|
154 | + } |
|
155 | + |
|
156 | + // results? |
|
157 | + if (empty($admin_details) || ! is_array($admin_details)) { |
|
158 | + $msg[] = esc_html__('The admin details could not be retrieved from the database.', 'event_espresso'); |
|
159 | + $msg[] = sprintf(esc_html__('Query: %s', 'event_espresso'), $sql); |
|
160 | + $msg[] = sprintf(esc_html__('Events Data: %s', 'event_espresso'), var_export($this->_data->events, true)); |
|
161 | + $msg[] = sprintf(esc_html__('Event IDS: %s', 'event_espresso'), var_export($ids, true)); |
|
162 | + $msg[] = sprintf(esc_html__('Query Results: %s', 'event_espresso'), var_export($admin_details)); |
|
163 | + do_action('AHEE_log', __FILE__, __FUNCTION__, implode(PHP_EOL, $msg), 'shortcode_parser'); |
|
164 | + } |
|
165 | + |
|
166 | + foreach ($admin_details as $admin) { |
|
167 | + // only add an admin email if it is present. |
|
168 | + if (empty($admin->email) || $admin->email == '') { |
|
169 | + continue; |
|
170 | + } |
|
171 | + |
|
172 | + if (! $fancy_headers) { |
|
173 | + $admin_email[] = $admin->email; |
|
174 | + continue; |
|
175 | + } |
|
176 | + |
|
177 | + $admin_email[] = ! empty($admin->first_name) |
|
178 | + ? $admin->first_name . ' ' . $admin->last_name . ' <' . $admin->email . '>' |
|
179 | + : EE_Registry::instance()->CFG->organization->get_pretty('name') . ' <' . $admin->email . '>'; |
|
180 | + } |
|
181 | + |
|
182 | + $admin_email = implode(',', $admin_email); |
|
183 | + return $admin_email; |
|
184 | + } |
|
185 | 185 | } |
@@ -87,8 +87,8 @@ discard block |
||
87 | 87 | |
88 | 88 | case '[CO_FORMATTED_EMAIL]': |
89 | 89 | case '[ESPRESSO_ADMIN_FORMATTED_EMAIL]': |
90 | - return EE_Registry::instance()->CFG->organization->get_pretty('name') . ' <' |
|
91 | - . EE_Registry::instance()->CFG->organization->get_pretty('email') . '>'; |
|
90 | + return EE_Registry::instance()->CFG->organization->get_pretty('name').' <' |
|
91 | + . EE_Registry::instance()->CFG->organization->get_pretty('email').'>'; |
|
92 | 92 | break; |
93 | 93 | |
94 | 94 | case '[CO_EMAIL]': |
@@ -118,15 +118,15 @@ discard block |
||
118 | 118 | private function _get_event_admin_emails($fancy_headers = true) |
119 | 119 | { |
120 | 120 | |
121 | - if (! empty($this->_data->admin_email)) { |
|
122 | - if (! $fancy_headers) { |
|
121 | + if ( ! empty($this->_data->admin_email)) { |
|
122 | + if ( ! $fancy_headers) { |
|
123 | 123 | return $this->_data->admin_email; |
124 | 124 | } |
125 | 125 | return ! empty($this->_data->fname) |
126 | - ? $this->_data->fname . ' ' . $this->_data->lname . ' <' . $this->_data->admin_email . '>' |
|
126 | + ? $this->_data->fname.' '.$this->_data->lname.' <'.$this->_data->admin_email.'>' |
|
127 | 127 | : EE_Registry::instance()->CFG->organization->get_pretty( |
128 | 128 | 'name' |
129 | - ) . ' <' . $this->_data->admin_email . '>'; |
|
129 | + ).' <'.$this->_data->admin_email.'>'; |
|
130 | 130 | } |
131 | 131 | |
132 | 132 | // k this shortcode has been used else where. Since we don't know what particular event this is for, let's loop through the events and get an array of event admins for the events. We'll return the formatted list of admin emails and let the messenger make sure we only pick one if this is for a field that can only have ONE!. |
@@ -146,10 +146,10 @@ discard block |
||
146 | 146 | $cnt = 0; |
147 | 147 | foreach ($events as $event) { |
148 | 148 | $user = get_userdata($event->get('EVT_wp_user')); |
149 | - $admin_details[ $cnt ] = new stdClass(); |
|
150 | - $admin_details[ $cnt ]->email = $user->user_email; |
|
151 | - $admin_details[ $cnt ]->first_name = $user->user_firstname; |
|
152 | - $admin_details[ $cnt ]->last_name = $user->user_lastname; |
|
149 | + $admin_details[$cnt] = new stdClass(); |
|
150 | + $admin_details[$cnt]->email = $user->user_email; |
|
151 | + $admin_details[$cnt]->first_name = $user->user_firstname; |
|
152 | + $admin_details[$cnt]->last_name = $user->user_lastname; |
|
153 | 153 | $cnt++; |
154 | 154 | } |
155 | 155 | |
@@ -169,14 +169,14 @@ discard block |
||
169 | 169 | continue; |
170 | 170 | } |
171 | 171 | |
172 | - if (! $fancy_headers) { |
|
172 | + if ( ! $fancy_headers) { |
|
173 | 173 | $admin_email[] = $admin->email; |
174 | 174 | continue; |
175 | 175 | } |
176 | 176 | |
177 | 177 | $admin_email[] = ! empty($admin->first_name) |
178 | - ? $admin->first_name . ' ' . $admin->last_name . ' <' . $admin->email . '>' |
|
179 | - : EE_Registry::instance()->CFG->organization->get_pretty('name') . ' <' . $admin->email . '>'; |
|
178 | + ? $admin->first_name.' '.$admin->last_name.' <'.$admin->email.'>' |
|
179 | + : EE_Registry::instance()->CFG->organization->get_pretty('name').' <'.$admin->email.'>'; |
|
180 | 180 | } |
181 | 181 | |
182 | 182 | $admin_email = implode(',', $admin_email); |
@@ -19,206 +19,206 @@ |
||
19 | 19 | interface FormHandlerInterface |
20 | 20 | { |
21 | 21 | |
22 | - /** |
|
23 | - * the absolute top level form section being used on the page |
|
24 | - * |
|
25 | - * @return \EE_Form_Section_Proper |
|
26 | - */ |
|
27 | - public function form(); |
|
22 | + /** |
|
23 | + * the absolute top level form section being used on the page |
|
24 | + * |
|
25 | + * @return \EE_Form_Section_Proper |
|
26 | + */ |
|
27 | + public function form(); |
|
28 | 28 | |
29 | 29 | |
30 | 30 | |
31 | - /** |
|
32 | - * @param \EE_Form_Section_Proper $form |
|
33 | - */ |
|
34 | - public function setForm(\EE_Form_Section_Proper $form); |
|
31 | + /** |
|
32 | + * @param \EE_Form_Section_Proper $form |
|
33 | + */ |
|
34 | + public function setForm(\EE_Form_Section_Proper $form); |
|
35 | 35 | |
36 | 36 | |
37 | 37 | |
38 | - /** |
|
39 | - * if set to false, then this form has no displayable content, |
|
40 | - * and will only be used for processing data sent passed via GET or POST |
|
41 | - * |
|
42 | - * @return boolean |
|
43 | - */ |
|
44 | - public function displayable(); |
|
38 | + /** |
|
39 | + * if set to false, then this form has no displayable content, |
|
40 | + * and will only be used for processing data sent passed via GET or POST |
|
41 | + * |
|
42 | + * @return boolean |
|
43 | + */ |
|
44 | + public function displayable(); |
|
45 | 45 | |
46 | 46 | |
47 | 47 | |
48 | - /** |
|
49 | - * @param boolean $displayable |
|
50 | - */ |
|
51 | - public function setDisplayable($displayable = false); |
|
48 | + /** |
|
49 | + * @param boolean $displayable |
|
50 | + */ |
|
51 | + public function setDisplayable($displayable = false); |
|
52 | 52 | |
53 | 53 | |
54 | 54 | |
55 | - /** |
|
56 | - * a public name for the form that can be displayed on the frontend of a site |
|
57 | - * |
|
58 | - * @return string |
|
59 | - */ |
|
60 | - public function formName(); |
|
55 | + /** |
|
56 | + * a public name for the form that can be displayed on the frontend of a site |
|
57 | + * |
|
58 | + * @return string |
|
59 | + */ |
|
60 | + public function formName(); |
|
61 | 61 | |
62 | 62 | |
63 | 63 | |
64 | - /** |
|
65 | - * a public name for the form that can be displayed, but only in the admin |
|
66 | - * |
|
67 | - * @return string |
|
68 | - */ |
|
69 | - public function adminName(); |
|
64 | + /** |
|
65 | + * a public name for the form that can be displayed, but only in the admin |
|
66 | + * |
|
67 | + * @return string |
|
68 | + */ |
|
69 | + public function adminName(); |
|
70 | 70 | |
71 | 71 | |
72 | 72 | |
73 | - /** |
|
74 | - * a URL friendly string that can be used for identifying the form |
|
75 | - * |
|
76 | - * @return string |
|
77 | - */ |
|
78 | - public function slug(); |
|
73 | + /** |
|
74 | + * a URL friendly string that can be used for identifying the form |
|
75 | + * |
|
76 | + * @return string |
|
77 | + */ |
|
78 | + public function slug(); |
|
79 | 79 | |
80 | 80 | |
81 | 81 | |
82 | - /** |
|
83 | - * @return string |
|
84 | - */ |
|
85 | - public function submitBtnText(); |
|
82 | + /** |
|
83 | + * @return string |
|
84 | + */ |
|
85 | + public function submitBtnText(); |
|
86 | 86 | |
87 | 87 | |
88 | 88 | |
89 | - /** |
|
90 | - * @param string $submit_btn_text |
|
91 | - */ |
|
92 | - public function setSubmitBtnText($submit_btn_text); |
|
89 | + /** |
|
90 | + * @param string $submit_btn_text |
|
91 | + */ |
|
92 | + public function setSubmitBtnText($submit_btn_text); |
|
93 | 93 | |
94 | 94 | |
95 | 95 | |
96 | - /** |
|
97 | - * @return string |
|
98 | - */ |
|
99 | - public function formAction(); |
|
96 | + /** |
|
97 | + * @return string |
|
98 | + */ |
|
99 | + public function formAction(); |
|
100 | 100 | |
101 | 101 | |
102 | 102 | |
103 | - /** |
|
104 | - * @param string $form_action |
|
105 | - */ |
|
106 | - public function setFormAction($form_action); |
|
103 | + /** |
|
104 | + * @param string $form_action |
|
105 | + */ |
|
106 | + public function setFormAction($form_action); |
|
107 | 107 | |
108 | 108 | |
109 | 109 | |
110 | - /** |
|
111 | - * @param array $form_args |
|
112 | - */ |
|
113 | - public function addFormActionArgs($form_args = array()); |
|
110 | + /** |
|
111 | + * @param array $form_args |
|
112 | + */ |
|
113 | + public function addFormActionArgs($form_args = array()); |
|
114 | 114 | |
115 | 115 | |
116 | 116 | |
117 | - /** |
|
118 | - * if data regarding the form's state needs to be persisted, |
|
119 | - * then this method can be used to retrieve that data |
|
120 | - * |
|
121 | - * @return string |
|
122 | - */ |
|
123 | - public function formConfig(); |
|
117 | + /** |
|
118 | + * if data regarding the form's state needs to be persisted, |
|
119 | + * then this method can be used to retrieve that data |
|
120 | + * |
|
121 | + * @return string |
|
122 | + */ |
|
123 | + public function formConfig(); |
|
124 | 124 | |
125 | 125 | |
126 | 126 | |
127 | - /** |
|
128 | - * if data regarding the form's state needs to be persisted, |
|
129 | - * the this method can be used for setting the persisted data locally |
|
130 | - * |
|
131 | - * @param string $form_config |
|
132 | - */ |
|
133 | - public function setFormConfig($form_config); |
|
127 | + /** |
|
128 | + * if data regarding the form's state needs to be persisted, |
|
129 | + * the this method can be used for setting the persisted data locally |
|
130 | + * |
|
131 | + * @param string $form_config |
|
132 | + */ |
|
133 | + public function setFormConfig($form_config); |
|
134 | 134 | |
135 | 135 | |
136 | 136 | |
137 | - /** |
|
138 | - * called after the form is instantiated |
|
139 | - * and used for performing any logic that needs to occur early |
|
140 | - * before any of the other methods are called. |
|
141 | - * returns true if everything is ok to proceed, |
|
142 | - * and false if no further form logic should be implemented |
|
143 | - * |
|
144 | - * @return boolean |
|
145 | - */ |
|
146 | - public function initialize(); |
|
137 | + /** |
|
138 | + * called after the form is instantiated |
|
139 | + * and used for performing any logic that needs to occur early |
|
140 | + * before any of the other methods are called. |
|
141 | + * returns true if everything is ok to proceed, |
|
142 | + * and false if no further form logic should be implemented |
|
143 | + * |
|
144 | + * @return boolean |
|
145 | + */ |
|
146 | + public function initialize(); |
|
147 | 147 | |
148 | 148 | |
149 | 149 | |
150 | - /** |
|
151 | - * used for setting up css and js |
|
152 | - * |
|
153 | - * @return void |
|
154 | - */ |
|
155 | - public function enqueueStylesAndScripts(); |
|
150 | + /** |
|
151 | + * used for setting up css and js |
|
152 | + * |
|
153 | + * @return void |
|
154 | + */ |
|
155 | + public function enqueueStylesAndScripts(); |
|
156 | 156 | |
157 | 157 | |
158 | 158 | |
159 | - /** |
|
160 | - * creates and returns the actual form |
|
161 | - * |
|
162 | - * @return EE_Form_Section_Proper |
|
163 | - */ |
|
164 | - public function generate(); |
|
159 | + /** |
|
160 | + * creates and returns the actual form |
|
161 | + * |
|
162 | + * @return EE_Form_Section_Proper |
|
163 | + */ |
|
164 | + public function generate(); |
|
165 | 165 | |
166 | 166 | |
167 | 167 | |
168 | - /** |
|
169 | - * takes the generated form and displays it along with ony other non-form HTML that may be required |
|
170 | - * returns a string of HTML that can be directly echoed in a template |
|
171 | - * |
|
172 | - * @return string |
|
173 | - */ |
|
174 | - public function display(); |
|
168 | + /** |
|
169 | + * takes the generated form and displays it along with ony other non-form HTML that may be required |
|
170 | + * returns a string of HTML that can be directly echoed in a template |
|
171 | + * |
|
172 | + * @return string |
|
173 | + */ |
|
174 | + public function display(); |
|
175 | 175 | |
176 | 176 | |
177 | 177 | |
178 | - /** |
|
179 | - * handles processing the form submission |
|
180 | - * returns true or false depending on whether the form was processed successfully or not |
|
181 | - * |
|
182 | - * @param array $submitted_form_data |
|
183 | - * @return bool |
|
184 | - */ |
|
185 | - public function process($submitted_form_data = array()); |
|
178 | + /** |
|
179 | + * handles processing the form submission |
|
180 | + * returns true or false depending on whether the form was processed successfully or not |
|
181 | + * |
|
182 | + * @param array $submitted_form_data |
|
183 | + * @return bool |
|
184 | + */ |
|
185 | + public function process($submitted_form_data = array()); |
|
186 | 186 | |
187 | 187 | |
188 | 188 | |
189 | - /** |
|
190 | - * creates and returns an EE_Submit_Input labeled "Submit" |
|
191 | - * |
|
192 | - * @param string $text |
|
193 | - * @return \EE_Submit_Input |
|
194 | - */ |
|
195 | - public function generateSubmitButton($text = ''); |
|
189 | + /** |
|
190 | + * creates and returns an EE_Submit_Input labeled "Submit" |
|
191 | + * |
|
192 | + * @param string $text |
|
193 | + * @return \EE_Submit_Input |
|
194 | + */ |
|
195 | + public function generateSubmitButton($text = ''); |
|
196 | 196 | |
197 | 197 | |
198 | 198 | |
199 | - /** |
|
200 | - * calls generateSubmitButton() and appends it onto the form along with a float clearing div |
|
201 | - * |
|
202 | - * @return void |
|
203 | - */ |
|
204 | - public function appendSubmitButton(); |
|
199 | + /** |
|
200 | + * calls generateSubmitButton() and appends it onto the form along with a float clearing div |
|
201 | + * |
|
202 | + * @return void |
|
203 | + */ |
|
204 | + public function appendSubmitButton(); |
|
205 | 205 | |
206 | 206 | |
207 | 207 | |
208 | - /** |
|
209 | - * creates and returns an EE_Submit_Input labeled "Cancel" |
|
210 | - * |
|
211 | - * @param string $text |
|
212 | - * @return \EE_Submit_Input |
|
213 | - */ |
|
214 | - public function generateCancelButton($text = ''); |
|
208 | + /** |
|
209 | + * creates and returns an EE_Submit_Input labeled "Cancel" |
|
210 | + * |
|
211 | + * @param string $text |
|
212 | + * @return \EE_Submit_Input |
|
213 | + */ |
|
214 | + public function generateCancelButton($text = ''); |
|
215 | 215 | |
216 | 216 | |
217 | 217 | |
218 | - /** |
|
219 | - * appends a float clearing div onto end of form |
|
220 | - * |
|
221 | - * @return void |
|
222 | - */ |
|
223 | - public function clearFormButtonFloats(); |
|
218 | + /** |
|
219 | + * appends a float clearing div onto end of form |
|
220 | + * |
|
221 | + * @return void |
|
222 | + */ |
|
223 | + public function clearFormButtonFloats(); |
|
224 | 224 | } |
@@ -16,55 +16,55 @@ |
||
16 | 16 | { |
17 | 17 | |
18 | 18 | |
19 | - /** |
|
20 | - * @return int |
|
21 | - */ |
|
22 | - public function order(); |
|
19 | + /** |
|
20 | + * @return int |
|
21 | + */ |
|
22 | + public function order(); |
|
23 | 23 | |
24 | 24 | |
25 | 25 | |
26 | - /** |
|
27 | - * @param int $order |
|
28 | - * @throws InvalidArgumentException |
|
29 | - */ |
|
30 | - public function setOrder($order); |
|
26 | + /** |
|
27 | + * @param int $order |
|
28 | + * @throws InvalidArgumentException |
|
29 | + */ |
|
30 | + public function setOrder($order); |
|
31 | 31 | |
32 | 32 | |
33 | 33 | |
34 | - /** |
|
35 | - * @return string |
|
36 | - */ |
|
37 | - public function redirectUrl(); |
|
34 | + /** |
|
35 | + * @return string |
|
36 | + */ |
|
37 | + public function redirectUrl(); |
|
38 | 38 | |
39 | 39 | |
40 | 40 | |
41 | - /** |
|
42 | - * @param string $redirect_url |
|
43 | - * @throws InvalidDataTypeException |
|
44 | - * @throws InvalidArgumentException |
|
45 | - */ |
|
46 | - public function setRedirectUrl($redirect_url); |
|
41 | + /** |
|
42 | + * @param string $redirect_url |
|
43 | + * @throws InvalidDataTypeException |
|
44 | + * @throws InvalidArgumentException |
|
45 | + */ |
|
46 | + public function setRedirectUrl($redirect_url); |
|
47 | 47 | |
48 | 48 | |
49 | 49 | |
50 | - /** |
|
51 | - * @param array $redirect_args |
|
52 | - * @throws InvalidDataTypeException |
|
53 | - * @throws InvalidArgumentException |
|
54 | - */ |
|
55 | - public function addRedirectArgs($redirect_args = array()); |
|
50 | + /** |
|
51 | + * @param array $redirect_args |
|
52 | + * @throws InvalidDataTypeException |
|
53 | + * @throws InvalidArgumentException |
|
54 | + */ |
|
55 | + public function addRedirectArgs($redirect_args = array()); |
|
56 | 56 | |
57 | 57 | |
58 | 58 | |
59 | - /** |
|
60 | - * @return string |
|
61 | - */ |
|
62 | - public function redirectTo(); |
|
59 | + /** |
|
60 | + * @return string |
|
61 | + */ |
|
62 | + public function redirectTo(); |
|
63 | 63 | |
64 | 64 | |
65 | 65 | |
66 | - /** |
|
67 | - * @param string $redirect_to |
|
68 | - */ |
|
69 | - public function setRedirectTo($redirect_to); |
|
66 | + /** |
|
67 | + * @param string $redirect_to |
|
68 | + */ |
|
69 | + public function setRedirectTo($redirect_to); |
|
70 | 70 | } |
@@ -12,68 +12,68 @@ |
||
12 | 12 | class EE_Checkbox_Dropdown_Selector_Input extends EE_Form_Input_With_Options_Base |
13 | 13 | { |
14 | 14 | |
15 | - /** |
|
16 | - * @var string text to display on the select button itself |
|
17 | - */ |
|
18 | - protected $_select_button_text; |
|
15 | + /** |
|
16 | + * @var string text to display on the select button itself |
|
17 | + */ |
|
18 | + protected $_select_button_text; |
|
19 | 19 | |
20 | - /** |
|
21 | - * @param array $answer_options |
|
22 | - * @param array $input_settings |
|
23 | - */ |
|
24 | - public function __construct($answer_options, $input_settings = array()) |
|
25 | - { |
|
26 | - $this->_select_button_text = EEH_Array::is_set( |
|
27 | - $input_settings, |
|
28 | - 'select_button_text', |
|
29 | - esc_html__('Select', 'event_espresso') |
|
30 | - ); |
|
31 | - $display_strategy = new EE_Checkbox_Dropdown_Selector_Display_Strategy(); |
|
32 | - $this->_set_display_strategy($display_strategy); |
|
33 | - $this->load_iframe_assets($display_strategy); |
|
34 | - $this->_add_validation_strategy( |
|
35 | - new EE_Many_Valued_Validation_Strategy( |
|
36 | - array( |
|
37 | - new EE_Enum_Validation_Strategy( |
|
38 | - isset($input_settings['validation_error_message']) |
|
39 | - ? $input_settings['validation_error_message'] |
|
40 | - : null |
|
41 | - ), |
|
42 | - ) |
|
43 | - ) |
|
44 | - ); |
|
45 | - $this->_multiple_selections = true; |
|
46 | - parent::__construct($answer_options, $input_settings); |
|
47 | - } |
|
20 | + /** |
|
21 | + * @param array $answer_options |
|
22 | + * @param array $input_settings |
|
23 | + */ |
|
24 | + public function __construct($answer_options, $input_settings = array()) |
|
25 | + { |
|
26 | + $this->_select_button_text = EEH_Array::is_set( |
|
27 | + $input_settings, |
|
28 | + 'select_button_text', |
|
29 | + esc_html__('Select', 'event_espresso') |
|
30 | + ); |
|
31 | + $display_strategy = new EE_Checkbox_Dropdown_Selector_Display_Strategy(); |
|
32 | + $this->_set_display_strategy($display_strategy); |
|
33 | + $this->load_iframe_assets($display_strategy); |
|
34 | + $this->_add_validation_strategy( |
|
35 | + new EE_Many_Valued_Validation_Strategy( |
|
36 | + array( |
|
37 | + new EE_Enum_Validation_Strategy( |
|
38 | + isset($input_settings['validation_error_message']) |
|
39 | + ? $input_settings['validation_error_message'] |
|
40 | + : null |
|
41 | + ), |
|
42 | + ) |
|
43 | + ) |
|
44 | + ); |
|
45 | + $this->_multiple_selections = true; |
|
46 | + parent::__construct($answer_options, $input_settings); |
|
47 | + } |
|
48 | 48 | |
49 | - /* |
|
49 | + /* |
|
50 | 50 | * Returns the text to display in the select button |
51 | 51 | */ |
52 | - public function select_button_text() |
|
53 | - { |
|
54 | - return $this->_select_button_text; |
|
55 | - } |
|
52 | + public function select_button_text() |
|
53 | + { |
|
54 | + return $this->_select_button_text; |
|
55 | + } |
|
56 | 56 | |
57 | - /* |
|
57 | + /* |
|
58 | 58 | * add css and js for iframes |
59 | 59 | */ |
60 | - protected function load_iframe_assets(EE_Checkbox_Dropdown_Selector_Display_Strategy $display_strategy) |
|
61 | - { |
|
62 | - add_filter( |
|
63 | - 'FHEE__EED_Ticket_Selector__ticket_selector_iframe__css', |
|
64 | - array($display_strategy, 'iframe_css') |
|
65 | - ); |
|
66 | - add_filter( |
|
67 | - 'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js', |
|
68 | - array($display_strategy, 'iframe_js') |
|
69 | - ); |
|
70 | - add_filter( |
|
71 | - 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css', |
|
72 | - array($display_strategy, 'iframe_css') |
|
73 | - ); |
|
74 | - add_filter( |
|
75 | - 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js', |
|
76 | - array($display_strategy, 'iframe_js') |
|
77 | - ); |
|
78 | - } |
|
60 | + protected function load_iframe_assets(EE_Checkbox_Dropdown_Selector_Display_Strategy $display_strategy) |
|
61 | + { |
|
62 | + add_filter( |
|
63 | + 'FHEE__EED_Ticket_Selector__ticket_selector_iframe__css', |
|
64 | + array($display_strategy, 'iframe_css') |
|
65 | + ); |
|
66 | + add_filter( |
|
67 | + 'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js', |
|
68 | + array($display_strategy, 'iframe_js') |
|
69 | + ); |
|
70 | + add_filter( |
|
71 | + 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css', |
|
72 | + array($display_strategy, 'iframe_css') |
|
73 | + ); |
|
74 | + add_filter( |
|
75 | + 'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js', |
|
76 | + array($display_strategy, 'iframe_js') |
|
77 | + ); |
|
78 | + } |
|
79 | 79 | } |