Completed
Branch fix-caching-loader-test (60c3ed)
by
unknown
13:01 queued 04:28
created
libraries/form_sections/base/EE_Form_Section_HTML_From_Template.form.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -11,11 +11,11 @@
 block discarded – undo
11 11
  */
12 12
 class EE_Form_Section_HTML_From_Template extends EE_Form_Section_HTML
13 13
 {
14
-    public function __construct($template_file, $args = array(), $options_array = array())
15
-    {
16
-        $html = EEH_Template::locate_template($template_file, $args);
14
+	public function __construct($template_file, $args = array(), $options_array = array())
15
+	{
16
+		$html = EEH_Template::locate_template($template_file, $args);
17 17
 
18 18
 //      echo " filepath:$template_file html $html";
19
-        parent::__construct($html, $options_array);
20
-    }
19
+		parent::__construct($html, $options_array);
20
+	}
21 21
 }
Please login to merge, or discard this patch.
core/libraries/form_sections/helpers/EE_Validation_Error.error.php 1 patch
Indentation   +41 added lines, -41 removed lines patch added patch discarded remove patch
@@ -2,47 +2,47 @@
 block discarded – undo
2 2
 
3 3
 class EE_Validation_Error extends Exception
4 4
 {
5
-    /**
6
-     * Form Section from which this error originated.
7
-     * @var EE_Form_Section
8
-     */
9
-    protected $_form_section;
10
-    /**
11
-     * a short string for uniquely identifying the error, which isn't internationalized and
12
-     * machines can use to identify the error
13
-     * @var string
14
-     */
15
-    protected $_string_code;
5
+	/**
6
+	 * Form Section from which this error originated.
7
+	 * @var EE_Form_Section
8
+	 */
9
+	protected $_form_section;
10
+	/**
11
+	 * a short string for uniquely identifying the error, which isn't internationalized and
12
+	 * machines can use to identify the error
13
+	 * @var string
14
+	 */
15
+	protected $_string_code;
16 16
 
17
-    /**
18
-     * When creating a validation error, we need to know which field the error relates to.
19
-     * @param string $message message you want to display about this error
20
-     * @param string $string_code a code for uniquely identifying the exception
21
-     * @param EE_Form_Section_Validatable $form_section
22
-     * @param Exception $previous if there was an exception that caused this exception
23
-     */
24
-    public function __construct($message = null, $string_code = null, $form_section = null, $previous = null)
25
-    {
26
-        $this->_form_section = $form_section;
27
-        $this->_string_code = $string_code;
28
-        parent::__construct($message, 500, $previous);
29
-    }
17
+	/**
18
+	 * When creating a validation error, we need to know which field the error relates to.
19
+	 * @param string $message message you want to display about this error
20
+	 * @param string $string_code a code for uniquely identifying the exception
21
+	 * @param EE_Form_Section_Validatable $form_section
22
+	 * @param Exception $previous if there was an exception that caused this exception
23
+	 */
24
+	public function __construct($message = null, $string_code = null, $form_section = null, $previous = null)
25
+	{
26
+		$this->_form_section = $form_section;
27
+		$this->_string_code = $string_code;
28
+		parent::__construct($message, 500, $previous);
29
+	}
30 30
 
31
-    /**
32
-     * returns teh form section which caused the error.
33
-     * @return EE_Form_Section_Validatable
34
-     */
35
-    public function get_form_section()
36
-    {
37
-        return $this->_form_section;
38
-    }
39
-    /**
40
-     * Sets teh form seciton of the error, in case it wasnt set previously
41
-     * @param EE_Form_Section_Validatable $form_section
42
-     * @return void
43
-     */
44
-    public function set_form_section($form_section)
45
-    {
46
-        $this->_form_section = $form_section;
47
-    }
31
+	/**
32
+	 * returns teh form section which caused the error.
33
+	 * @return EE_Form_Section_Validatable
34
+	 */
35
+	public function get_form_section()
36
+	{
37
+		return $this->_form_section;
38
+	}
39
+	/**
40
+	 * Sets teh form seciton of the error, in case it wasnt set previously
41
+	 * @param EE_Form_Section_Validatable $form_section
42
+	 * @return void
43
+	 */
44
+	public function set_form_section($form_section)
45
+	{
46
+		$this->_form_section = $form_section;
47
+	}
48 48
 }
Please login to merge, or discard this patch.
core/libraries/payment_methods/EE_Gateway.lib.php 2 patches
Spacing   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
     public function set_settings($settings_array)
188 188
     {
189 189
         foreach ($settings_array as $name => $value) {
190
-            $property_name = "_" . $name;
190
+            $property_name = "_".$name;
191 191
             $this->{$property_name} = $value;
192 192
         }
193 193
     }
@@ -251,7 +251,7 @@  discard block
 block discarded – undo
251 251
      */
252 252
     public function set_gateway_data_formatter(GatewayDataFormatterInterface $gateway_data_formatter)
253 253
     {
254
-        if (! $gateway_data_formatter instanceof GatewayDataFormatterInterface) {
254
+        if ( ! $gateway_data_formatter instanceof GatewayDataFormatterInterface) {
255 255
             throw new InvalidEntityException(
256 256
                 is_object($gateway_data_formatter)
257 257
                     ? get_class($gateway_data_formatter)
@@ -270,7 +270,7 @@  discard block
 block discarded – undo
270 270
      */
271 271
     protected function _get_gateway_formatter()
272 272
     {
273
-        if (! $this->_gateway_data_formatter instanceof GatewayDataFormatterInterface) {
273
+        if ( ! $this->_gateway_data_formatter instanceof GatewayDataFormatterInterface) {
274 274
             throw new InvalidEntityException(
275 275
                 is_object($this->_gateway_data_formatter)
276 276
                     ? get_class($this->_gateway_data_formatter)
@@ -291,7 +291,7 @@  discard block
 block discarded – undo
291 291
      */
292 292
     public function set_unsupported_character_remover(FormatterInterface $formatter)
293 293
     {
294
-        if (! $formatter instanceof FormatterInterface) {
294
+        if ( ! $formatter instanceof FormatterInterface) {
295 295
             throw new InvalidEntityException(
296 296
                 is_object($formatter)
297 297
                     ? get_class($formatter)
@@ -310,7 +310,7 @@  discard block
 block discarded – undo
310 310
      */
311 311
     protected function _get_unsupported_character_remover()
312 312
     {
313
-        if (! $this->_unsupported_character_remover instanceof FormatterInterface) {
313
+        if ( ! $this->_unsupported_character_remover instanceof FormatterInterface) {
314 314
             throw new InvalidEntityException(
315 315
                 is_object($this->_unsupported_character_remover)
316 316
                     ? get_class($this->_unsupported_character_remover)
Please login to merge, or discard this patch.
Indentation   +500 added lines, -500 removed lines patch added patch discarded remove patch
@@ -23,504 +23,504 @@
 block discarded – undo
23 23
  */
24 24
 abstract class EE_Gateway
25 25
 {
26
-    /**
27
-     * a constant used as a possible value for $_currencies_supported to indicate
28
-     * that ALL currencies are supported by this gateway
29
-     */
30
-    const all_currencies_supported = 'all_currencies_supported';
31
-    /**
32
-     * Where values are 3-letter currency codes
33
-     *
34
-     * @var array
35
-     */
36
-    protected $_currencies_supported = array();
37
-    /**
38
-     * Whether or not this gateway can support SENDING a refund request (ie, initiated by
39
-     * admin in EE's wp-admin page)
40
-     *
41
-     * @var boolean
42
-     */
43
-    protected $_supports_sending_refunds = false;
44
-
45
-    /**
46
-     * Whether or not this gateway can support RECEIVING a refund request from the payment
47
-     * provider (ie, initiated by admin on the payment prover's website who sends an IPN to EE)
48
-     *
49
-     * @var boolean
50
-     */
51
-    protected $_supports_receiving_refunds = false;
52
-    /**
53
-     * Model for querying for existing payments
54
-     *
55
-     * @var EEMI_Payment
56
-     */
57
-    protected $_pay_model;
58
-
59
-    /**
60
-     * Model used for adding to the payments log
61
-     *
62
-     * @var EEMI_Payment_Log
63
-     */
64
-    protected $_pay_log;
65
-
66
-    /**
67
-     * Used for formatting some input to gateways
68
-     *
69
-     * @var EEHI_Template
70
-     */
71
-    protected $_template;
72
-
73
-    /**
74
-     * Concrete class that implements EEHI_Money, used by most gateways
75
-     *
76
-     * @var EEHI_Money
77
-     */
78
-    protected $_money;
79
-
80
-    /**
81
-     * Concrete class that implements EEHI_Line_Item, used for manipulating the line item tree
82
-     *
83
-     * @var EEHI_Line_Item
84
-     */
85
-    protected $_line_item;
86
-
87
-    /**
88
-     * @var GatewayDataFormatterInterface
89
-     */
90
-    protected $_gateway_data_formatter;
91
-
92
-    /**
93
-     * @var FormatterInterface
94
-     */
95
-    protected $_unsupported_character_remover;
96
-
97
-    /**
98
-     * The ID of the payment method using this gateway
99
-     *
100
-     * @var int
101
-     */
102
-    protected $_ID;
103
-
104
-    /**
105
-     * @var $_debug_mode boolean whether to send requests to teh sandbox site or not
106
-     */
107
-    protected $_debug_mode;
108
-    /**
109
-     *
110
-     * @var string $_name name to show for this payment method
111
-     */
112
-    protected $_name;
113
-    /**
114
-     *
115
-     * @var string name to show fir this payment method to admin-type users
116
-     */
117
-    protected $_admin_name;
118
-
119
-    /**
120
-     * EE_Gateway constructor
121
-     */
122
-    public function __construct()
123
-    {
124
-    }
125
-
126
-    /**
127
-     * We don't want to serialize models as they often have circular structures
128
-     * (eg a payment model has a reference to each payment model object; and most
129
-     * payments have a transaction, most transactions have a payment method;
130
-     * most payment methods have a payment method type; most payment method types
131
-     * have a gateway. And if a gateway serializes its models, we start at the
132
-     * beginning again)
133
-     *
134
-     * @return array
135
-     */
136
-    public function __sleep()
137
-    {
138
-        $properties = get_object_vars($this);
139
-        unset($properties['_pay_model'], $properties['_pay_log']);
140
-        return array_keys($properties);
141
-    }
142
-
143
-    /**
144
-     * Returns whether or not this gateway should support SENDING refunds
145
-     * see $_supports_sending_refunds
146
-     *
147
-     * @return boolean
148
-     */
149
-    public function supports_sending_refunds()
150
-    {
151
-        return $this->_supports_sending_refunds;
152
-    }
153
-
154
-    /**
155
-     * Returns whether or not this gateway should support RECEIVING refunds
156
-     * see $_supports_receiving_refunds
157
-     *
158
-     * @return boolean
159
-     */
160
-    public function supports_receiving_refunds()
161
-    {
162
-        return $this->_supports_receiving_refunds;
163
-    }
164
-
165
-
166
-    /**
167
-     * Tries to refund the payment specified, taking into account the extra
168
-     * refund info. Note that if the gateway's _supports_sending_refunds is false,
169
-     * this should just throw an exception.
170
-     *
171
-     * @param EE_Payment $payment
172
-     * @param array      $refund_info
173
-     * @return EE_Payment for the refund
174
-     * @throws EE_Error
175
-     */
176
-    public function do_direct_refund(EE_Payment $payment, $refund_info = null)
177
-    {
178
-        return null;
179
-    }
180
-
181
-
182
-    /**
183
-     * Sets the payment method's settings so the gateway knows where to send the request
184
-     * etc
185
-     *
186
-     * @param array $settings_array
187
-     */
188
-    public function set_settings($settings_array)
189
-    {
190
-        foreach ($settings_array as $name => $value) {
191
-            $property_name = "_" . $name;
192
-            $this->{$property_name} = $value;
193
-        }
194
-    }
195
-
196
-    /**
197
-     * See this class description
198
-     *
199
-     * @param EEMI_Payment $payment_model
200
-     */
201
-    public function set_payment_model($payment_model)
202
-    {
203
-        $this->_pay_model = $payment_model;
204
-    }
205
-
206
-    /**
207
-     * See this class description
208
-     *
209
-     * @param EEMI_Payment_Log $payment_log_model
210
-     */
211
-    public function set_payment_log($payment_log_model)
212
-    {
213
-        $this->_pay_log = $payment_log_model;
214
-    }
215
-
216
-    /**
217
-     * See this class description
218
-     *
219
-     * @param EEHI_Template $template_helper
220
-     */
221
-    public function set_template_helper($template_helper)
222
-    {
223
-        $this->_template = $template_helper;
224
-    }
225
-
226
-    /**
227
-     * See this class description
228
-     *
229
-     * @param EEHI_Line_Item $line_item_helper
230
-     */
231
-    public function set_line_item_helper($line_item_helper)
232
-    {
233
-        $this->_line_item = $line_item_helper;
234
-    }
235
-
236
-    /**
237
-     * See this class description
238
-     *
239
-     * @param EEHI_Money $money_helper
240
-     */
241
-    public function set_money_helper($money_helper)
242
-    {
243
-        $this->_money = $money_helper;
244
-    }
245
-
246
-
247
-    /**
248
-     * Sets the gateway data formatter helper
249
-     *
250
-     * @param GatewayDataFormatterInterface $gateway_data_formatter
251
-     * @throws InvalidEntityException if it's not set properly
252
-     */
253
-    public function set_gateway_data_formatter(GatewayDataFormatterInterface $gateway_data_formatter)
254
-    {
255
-        if (! $gateway_data_formatter instanceof GatewayDataFormatterInterface) {
256
-            throw new InvalidEntityException(
257
-                is_object($gateway_data_formatter)
258
-                    ? get_class($gateway_data_formatter)
259
-                    : esc_html__('Not an object', 'event_espresso'),
260
-                '\\EventEspresso\\core\\services\\payment_methods\\gateways\\GatewayDataFormatterInterface'
261
-            );
262
-        }
263
-        $this->_gateway_data_formatter = $gateway_data_formatter;
264
-    }
265
-
266
-    /**
267
-     * Gets the gateway data formatter
268
-     *
269
-     * @return GatewayDataFormatterInterface
270
-     * @throws InvalidEntityException if it's not set properly
271
-     */
272
-    protected function _get_gateway_formatter()
273
-    {
274
-        if (! $this->_gateway_data_formatter instanceof GatewayDataFormatterInterface) {
275
-            throw new InvalidEntityException(
276
-                is_object($this->_gateway_data_formatter)
277
-                    ? get_class($this->_gateway_data_formatter)
278
-                    : esc_html__('Not an object', 'event_espresso'),
279
-                '\\EventEspresso\\core\\services\\payment_methods\\gateways\\GatewayDataFormatterInterface'
280
-            );
281
-        }
282
-        return $this->_gateway_data_formatter;
283
-    }
284
-
285
-
286
-    /**
287
-     * Sets the helper which will remove unsupported characters for most gateways
288
-     *
289
-     * @param FormatterInterface $formatter
290
-     * @return FormatterInterface
291
-     * @throws InvalidEntityException
292
-     */
293
-    public function set_unsupported_character_remover(FormatterInterface $formatter)
294
-    {
295
-        if (! $formatter instanceof FormatterInterface) {
296
-            throw new InvalidEntityException(
297
-                is_object($formatter)
298
-                    ? get_class($formatter)
299
-                    : esc_html__('Not an object', 'event_espresso'),
300
-                '\\EventEspresso\\core\\services\\formatters\\FormatterInterface'
301
-            );
302
-        }
303
-        $this->_unsupported_character_remover = $formatter;
304
-    }
305
-
306
-    /**
307
-     * Gets the helper which removes characters which gateways might not support, like emojis etc.
308
-     *
309
-     * @return FormatterInterface
310
-     * @throws InvalidEntityException
311
-     */
312
-    protected function _get_unsupported_character_remover()
313
-    {
314
-        if (! $this->_unsupported_character_remover instanceof FormatterInterface) {
315
-            throw new InvalidEntityException(
316
-                is_object($this->_unsupported_character_remover)
317
-                    ? get_class($this->_unsupported_character_remover)
318
-                    : esc_html__('Not an object', 'event_espresso'),
319
-                '\\EventEspresso\\core\\services\\formatters\\FormatterInterface'
320
-            );
321
-        }
322
-        return $this->_unsupported_character_remover;
323
-    }
324
-
325
-
326
-    /**
327
-     * @param $message
328
-     * @param $payment
329
-     */
330
-    public function log($message, $object_logged)
331
-    {
332
-        if ($object_logged instanceof EEI_Payment) {
333
-            $type = 'Payment';
334
-            $id = $object_logged->ID();
335
-        } elseif ($object_logged instanceof EEI_Transaction) {
336
-            $type = 'Transaction';
337
-            $id = $object_logged->ID();
338
-        } else {
339
-            $type = 'Payment_Method';
340
-            $id = $this->_ID;
341
-        }
342
-        // only log if we're going to store it for longer than the minimum time
343
-        $reg_config = LoaderFactory::getLoader()->load('EE_Registration_Config');
344
-        if ($reg_config->gateway_log_lifespan !== '1 second') {
345
-            $this->_pay_log->gateway_log($message, $id, $type);
346
-        }
347
-    }
348
-
349
-    /**
350
-     * Formats the amount so it can generally be sent to gateways
351
-     *
352
-     * @param float $amount
353
-     * @return string
354
-     * @deprecated since 4.9.31 insetad use
355
-     *             EventEspresso\core\services\payment_methods\gateways\GatewayDataFormatter::format_currency()
356
-     */
357
-    public function format_currency($amount)
358
-    {
359
-        return $this->_get_gateway_formatter()->formatCurrency($amount);
360
-    }
361
-
362
-    /**
363
-     * Returns either an array of all the currency codes supported,
364
-     * or a string indicating they're all supported (EE_gateway::all_currencies_supported)
365
-     *
366
-     * @return mixed array or string
367
-     */
368
-    public function currencies_supported()
369
-    {
370
-        return $this->_currencies_supported;
371
-    }
372
-
373
-    /**
374
-     * Returns what a simple summing of items and taxes for this transaction. This
375
-     * can be used to determine if some more complex line items, like promotions,
376
-     * surcharges, or cancellations occurred (in which case we might want to forget
377
-     * about creating an itemized list of purchases and instead only send the total due)
378
-     *
379
-     * @param EE_Transaction $transaction
380
-     * @return float
381
-     */
382
-    protected function _sum_items_and_taxes(EE_Transaction $transaction)
383
-    {
384
-        $total_line_item = $transaction->total_line_item();
385
-        $total = 0;
386
-        foreach ($total_line_item->get_items() as $item_line_item) {
387
-            $total += max($item_line_item->total(), 0);
388
-        }
389
-        foreach ($total_line_item->tax_descendants() as $tax_line_item) {
390
-            $total += max($tax_line_item->total(), 0);
391
-        }
392
-        return $total;
393
-    }
394
-
395
-    /**
396
-     * Determines whether or not we can easily itemize the transaction using only
397
-     * items and taxes (ie, no promotions or surcharges or cancellations needed)
398
-     *
399
-     * @param EEI_Payment $payment
400
-     * @return boolean
401
-     */
402
-    protected function _can_easily_itemize_transaction_for(EEI_Payment $payment)
403
-    {
404
-        return $this->_money->compare_floats(
405
-            $this->_sum_items_and_taxes($payment->transaction()),
406
-            $payment->transaction()->total()
407
-        )
408
-               && $this->_money->compare_floats(
409
-                   $payment->amount(),
410
-                   $payment->transaction()->total()
411
-               );
412
-    }
413
-
414
-    /**
415
-     * Handles updating the transaction and any other related data based on the payment.
416
-     * You may be tempted to do this as part of do_direct_payment or handle_payment_update,
417
-     * but doing so on those functions might be too early. It's possible that the changes
418
-     * you make to teh transaction or registration or line items may just get overwritten
419
-     * at that point. Instead, you should store any info you need on the payment during those
420
-     * functions, and use that information at this step, which client code will decide
421
-     * for you when it should be called.
422
-     *
423
-     * @param EE_Payment $payment
424
-     * @return void
425
-     */
426
-    public function update_txn_based_on_payment($payment)
427
-    {
428
-        // maybe update the transaction or line items or registrations
429
-        // but most gateways don't need to do this, because they only update the payment
430
-    }
431
-
432
-    /**
433
-     * Gets the first event for this payment (it's possible that it could be for multiple)
434
-     *
435
-     * @param EEI_Payment $payment
436
-     * @return EEI_Event|null
437
-     * @deprecated since 4.9.31 instead use EEI_Payment::get_first_event()
438
-     */
439
-    protected function _get_first_event_for_payment(EEI_Payment $payment)
440
-    {
441
-        return $payment->get_first_event();
442
-    }
443
-
444
-    /**
445
-     * Gets the name of the first event for which is being paid
446
-     *
447
-     * @param EEI_Payment $payment
448
-     * @return string
449
-     * @deprecated since 4.9.31 instead use EEI_Payment::get_first_event_name()
450
-     */
451
-    protected function _get_first_event_name_for_payment(EEI_Payment $payment)
452
-    {
453
-        return $payment->get_first_event_name();
454
-    }
455
-
456
-    /**
457
-     * Gets the text to use for a gateway's line item name when this is a partial payment
458
-     *
459
-     * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatPartialPaymentLineItemName($payment)
460
-     * @param EE_Payment $payment
461
-     * @return string
462
-     */
463
-    protected function _format_partial_payment_line_item_name(EEI_Payment $payment)
464
-    {
465
-        return $this->_get_gateway_formatter()->formatPartialPaymentLineItemName($payment);
466
-    }
467
-
468
-    /**
469
-     * Gets the text to use for a gateway's line item description when this is a partial payment
470
-     *
471
-     * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatPartialPaymentLineItemDesc()
472
-     * @param EEI_Payment $payment
473
-     * @return string
474
-     */
475
-    protected function _format_partial_payment_line_item_desc(EEI_Payment $payment)
476
-    {
477
-        return $this->_get_gateway_formatter()->formatPartialPaymentLineItemDesc($payment);
478
-    }
479
-
480
-    /**
481
-     * Gets the name to use for a line item when sending line items to the gateway
482
-     *
483
-     * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatLineItemName($line_item,$payment)
484
-     * @param EE_Line_Item $line_item
485
-     * @param EEI_Payment   $payment
486
-     * @return string
487
-     */
488
-    protected function _format_line_item_name(EE_Line_Item $line_item, EEI_Payment $payment)
489
-    {
490
-        return $this->_get_gateway_formatter()->formatLineItemName($line_item, $payment);
491
-    }
492
-
493
-    /**
494
-     * Gets the description to use for a line item when sending line items to the gateway
495
-     *
496
-     * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatLineItemDesc($line_item, $payment))
497
-     * @param EE_Line_Item $line_item
498
-     * @param EEI_Payment   $payment
499
-     * @return string
500
-     */
501
-    protected function _format_line_item_desc(EE_Line_Item $line_item, EEI_Payment $payment)
502
-    {
503
-        return $this->_get_gateway_formatter()->formatLineItemDesc($line_item, $payment);
504
-    }
505
-
506
-    /**
507
-     * Gets the order description that should generlly be sent to gateways
508
-     *
509
-     * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatOrderDescription($payment)
510
-     * @param EEI_Payment $payment
511
-     * @return type
512
-     */
513
-    protected function _format_order_description(EEI_Payment $payment)
514
-    {
515
-        return $this->_get_gateway_formatter()->formatOrderDescription($payment);
516
-    }
517
-
518
-
519
-    /**
520
-     * @return bool
521
-     */
522
-    public function isInSandboxMode(): bool
523
-    {
524
-        return $this->_debug_mode;
525
-    }
26
+	/**
27
+	 * a constant used as a possible value for $_currencies_supported to indicate
28
+	 * that ALL currencies are supported by this gateway
29
+	 */
30
+	const all_currencies_supported = 'all_currencies_supported';
31
+	/**
32
+	 * Where values are 3-letter currency codes
33
+	 *
34
+	 * @var array
35
+	 */
36
+	protected $_currencies_supported = array();
37
+	/**
38
+	 * Whether or not this gateway can support SENDING a refund request (ie, initiated by
39
+	 * admin in EE's wp-admin page)
40
+	 *
41
+	 * @var boolean
42
+	 */
43
+	protected $_supports_sending_refunds = false;
44
+
45
+	/**
46
+	 * Whether or not this gateway can support RECEIVING a refund request from the payment
47
+	 * provider (ie, initiated by admin on the payment prover's website who sends an IPN to EE)
48
+	 *
49
+	 * @var boolean
50
+	 */
51
+	protected $_supports_receiving_refunds = false;
52
+	/**
53
+	 * Model for querying for existing payments
54
+	 *
55
+	 * @var EEMI_Payment
56
+	 */
57
+	protected $_pay_model;
58
+
59
+	/**
60
+	 * Model used for adding to the payments log
61
+	 *
62
+	 * @var EEMI_Payment_Log
63
+	 */
64
+	protected $_pay_log;
65
+
66
+	/**
67
+	 * Used for formatting some input to gateways
68
+	 *
69
+	 * @var EEHI_Template
70
+	 */
71
+	protected $_template;
72
+
73
+	/**
74
+	 * Concrete class that implements EEHI_Money, used by most gateways
75
+	 *
76
+	 * @var EEHI_Money
77
+	 */
78
+	protected $_money;
79
+
80
+	/**
81
+	 * Concrete class that implements EEHI_Line_Item, used for manipulating the line item tree
82
+	 *
83
+	 * @var EEHI_Line_Item
84
+	 */
85
+	protected $_line_item;
86
+
87
+	/**
88
+	 * @var GatewayDataFormatterInterface
89
+	 */
90
+	protected $_gateway_data_formatter;
91
+
92
+	/**
93
+	 * @var FormatterInterface
94
+	 */
95
+	protected $_unsupported_character_remover;
96
+
97
+	/**
98
+	 * The ID of the payment method using this gateway
99
+	 *
100
+	 * @var int
101
+	 */
102
+	protected $_ID;
103
+
104
+	/**
105
+	 * @var $_debug_mode boolean whether to send requests to teh sandbox site or not
106
+	 */
107
+	protected $_debug_mode;
108
+	/**
109
+	 *
110
+	 * @var string $_name name to show for this payment method
111
+	 */
112
+	protected $_name;
113
+	/**
114
+	 *
115
+	 * @var string name to show fir this payment method to admin-type users
116
+	 */
117
+	protected $_admin_name;
118
+
119
+	/**
120
+	 * EE_Gateway constructor
121
+	 */
122
+	public function __construct()
123
+	{
124
+	}
125
+
126
+	/**
127
+	 * We don't want to serialize models as they often have circular structures
128
+	 * (eg a payment model has a reference to each payment model object; and most
129
+	 * payments have a transaction, most transactions have a payment method;
130
+	 * most payment methods have a payment method type; most payment method types
131
+	 * have a gateway. And if a gateway serializes its models, we start at the
132
+	 * beginning again)
133
+	 *
134
+	 * @return array
135
+	 */
136
+	public function __sleep()
137
+	{
138
+		$properties = get_object_vars($this);
139
+		unset($properties['_pay_model'], $properties['_pay_log']);
140
+		return array_keys($properties);
141
+	}
142
+
143
+	/**
144
+	 * Returns whether or not this gateway should support SENDING refunds
145
+	 * see $_supports_sending_refunds
146
+	 *
147
+	 * @return boolean
148
+	 */
149
+	public function supports_sending_refunds()
150
+	{
151
+		return $this->_supports_sending_refunds;
152
+	}
153
+
154
+	/**
155
+	 * Returns whether or not this gateway should support RECEIVING refunds
156
+	 * see $_supports_receiving_refunds
157
+	 *
158
+	 * @return boolean
159
+	 */
160
+	public function supports_receiving_refunds()
161
+	{
162
+		return $this->_supports_receiving_refunds;
163
+	}
164
+
165
+
166
+	/**
167
+	 * Tries to refund the payment specified, taking into account the extra
168
+	 * refund info. Note that if the gateway's _supports_sending_refunds is false,
169
+	 * this should just throw an exception.
170
+	 *
171
+	 * @param EE_Payment $payment
172
+	 * @param array      $refund_info
173
+	 * @return EE_Payment for the refund
174
+	 * @throws EE_Error
175
+	 */
176
+	public function do_direct_refund(EE_Payment $payment, $refund_info = null)
177
+	{
178
+		return null;
179
+	}
180
+
181
+
182
+	/**
183
+	 * Sets the payment method's settings so the gateway knows where to send the request
184
+	 * etc
185
+	 *
186
+	 * @param array $settings_array
187
+	 */
188
+	public function set_settings($settings_array)
189
+	{
190
+		foreach ($settings_array as $name => $value) {
191
+			$property_name = "_" . $name;
192
+			$this->{$property_name} = $value;
193
+		}
194
+	}
195
+
196
+	/**
197
+	 * See this class description
198
+	 *
199
+	 * @param EEMI_Payment $payment_model
200
+	 */
201
+	public function set_payment_model($payment_model)
202
+	{
203
+		$this->_pay_model = $payment_model;
204
+	}
205
+
206
+	/**
207
+	 * See this class description
208
+	 *
209
+	 * @param EEMI_Payment_Log $payment_log_model
210
+	 */
211
+	public function set_payment_log($payment_log_model)
212
+	{
213
+		$this->_pay_log = $payment_log_model;
214
+	}
215
+
216
+	/**
217
+	 * See this class description
218
+	 *
219
+	 * @param EEHI_Template $template_helper
220
+	 */
221
+	public function set_template_helper($template_helper)
222
+	{
223
+		$this->_template = $template_helper;
224
+	}
225
+
226
+	/**
227
+	 * See this class description
228
+	 *
229
+	 * @param EEHI_Line_Item $line_item_helper
230
+	 */
231
+	public function set_line_item_helper($line_item_helper)
232
+	{
233
+		$this->_line_item = $line_item_helper;
234
+	}
235
+
236
+	/**
237
+	 * See this class description
238
+	 *
239
+	 * @param EEHI_Money $money_helper
240
+	 */
241
+	public function set_money_helper($money_helper)
242
+	{
243
+		$this->_money = $money_helper;
244
+	}
245
+
246
+
247
+	/**
248
+	 * Sets the gateway data formatter helper
249
+	 *
250
+	 * @param GatewayDataFormatterInterface $gateway_data_formatter
251
+	 * @throws InvalidEntityException if it's not set properly
252
+	 */
253
+	public function set_gateway_data_formatter(GatewayDataFormatterInterface $gateway_data_formatter)
254
+	{
255
+		if (! $gateway_data_formatter instanceof GatewayDataFormatterInterface) {
256
+			throw new InvalidEntityException(
257
+				is_object($gateway_data_formatter)
258
+					? get_class($gateway_data_formatter)
259
+					: esc_html__('Not an object', 'event_espresso'),
260
+				'\\EventEspresso\\core\\services\\payment_methods\\gateways\\GatewayDataFormatterInterface'
261
+			);
262
+		}
263
+		$this->_gateway_data_formatter = $gateway_data_formatter;
264
+	}
265
+
266
+	/**
267
+	 * Gets the gateway data formatter
268
+	 *
269
+	 * @return GatewayDataFormatterInterface
270
+	 * @throws InvalidEntityException if it's not set properly
271
+	 */
272
+	protected function _get_gateway_formatter()
273
+	{
274
+		if (! $this->_gateway_data_formatter instanceof GatewayDataFormatterInterface) {
275
+			throw new InvalidEntityException(
276
+				is_object($this->_gateway_data_formatter)
277
+					? get_class($this->_gateway_data_formatter)
278
+					: esc_html__('Not an object', 'event_espresso'),
279
+				'\\EventEspresso\\core\\services\\payment_methods\\gateways\\GatewayDataFormatterInterface'
280
+			);
281
+		}
282
+		return $this->_gateway_data_formatter;
283
+	}
284
+
285
+
286
+	/**
287
+	 * Sets the helper which will remove unsupported characters for most gateways
288
+	 *
289
+	 * @param FormatterInterface $formatter
290
+	 * @return FormatterInterface
291
+	 * @throws InvalidEntityException
292
+	 */
293
+	public function set_unsupported_character_remover(FormatterInterface $formatter)
294
+	{
295
+		if (! $formatter instanceof FormatterInterface) {
296
+			throw new InvalidEntityException(
297
+				is_object($formatter)
298
+					? get_class($formatter)
299
+					: esc_html__('Not an object', 'event_espresso'),
300
+				'\\EventEspresso\\core\\services\\formatters\\FormatterInterface'
301
+			);
302
+		}
303
+		$this->_unsupported_character_remover = $formatter;
304
+	}
305
+
306
+	/**
307
+	 * Gets the helper which removes characters which gateways might not support, like emojis etc.
308
+	 *
309
+	 * @return FormatterInterface
310
+	 * @throws InvalidEntityException
311
+	 */
312
+	protected function _get_unsupported_character_remover()
313
+	{
314
+		if (! $this->_unsupported_character_remover instanceof FormatterInterface) {
315
+			throw new InvalidEntityException(
316
+				is_object($this->_unsupported_character_remover)
317
+					? get_class($this->_unsupported_character_remover)
318
+					: esc_html__('Not an object', 'event_espresso'),
319
+				'\\EventEspresso\\core\\services\\formatters\\FormatterInterface'
320
+			);
321
+		}
322
+		return $this->_unsupported_character_remover;
323
+	}
324
+
325
+
326
+	/**
327
+	 * @param $message
328
+	 * @param $payment
329
+	 */
330
+	public function log($message, $object_logged)
331
+	{
332
+		if ($object_logged instanceof EEI_Payment) {
333
+			$type = 'Payment';
334
+			$id = $object_logged->ID();
335
+		} elseif ($object_logged instanceof EEI_Transaction) {
336
+			$type = 'Transaction';
337
+			$id = $object_logged->ID();
338
+		} else {
339
+			$type = 'Payment_Method';
340
+			$id = $this->_ID;
341
+		}
342
+		// only log if we're going to store it for longer than the minimum time
343
+		$reg_config = LoaderFactory::getLoader()->load('EE_Registration_Config');
344
+		if ($reg_config->gateway_log_lifespan !== '1 second') {
345
+			$this->_pay_log->gateway_log($message, $id, $type);
346
+		}
347
+	}
348
+
349
+	/**
350
+	 * Formats the amount so it can generally be sent to gateways
351
+	 *
352
+	 * @param float $amount
353
+	 * @return string
354
+	 * @deprecated since 4.9.31 insetad use
355
+	 *             EventEspresso\core\services\payment_methods\gateways\GatewayDataFormatter::format_currency()
356
+	 */
357
+	public function format_currency($amount)
358
+	{
359
+		return $this->_get_gateway_formatter()->formatCurrency($amount);
360
+	}
361
+
362
+	/**
363
+	 * Returns either an array of all the currency codes supported,
364
+	 * or a string indicating they're all supported (EE_gateway::all_currencies_supported)
365
+	 *
366
+	 * @return mixed array or string
367
+	 */
368
+	public function currencies_supported()
369
+	{
370
+		return $this->_currencies_supported;
371
+	}
372
+
373
+	/**
374
+	 * Returns what a simple summing of items and taxes for this transaction. This
375
+	 * can be used to determine if some more complex line items, like promotions,
376
+	 * surcharges, or cancellations occurred (in which case we might want to forget
377
+	 * about creating an itemized list of purchases and instead only send the total due)
378
+	 *
379
+	 * @param EE_Transaction $transaction
380
+	 * @return float
381
+	 */
382
+	protected function _sum_items_and_taxes(EE_Transaction $transaction)
383
+	{
384
+		$total_line_item = $transaction->total_line_item();
385
+		$total = 0;
386
+		foreach ($total_line_item->get_items() as $item_line_item) {
387
+			$total += max($item_line_item->total(), 0);
388
+		}
389
+		foreach ($total_line_item->tax_descendants() as $tax_line_item) {
390
+			$total += max($tax_line_item->total(), 0);
391
+		}
392
+		return $total;
393
+	}
394
+
395
+	/**
396
+	 * Determines whether or not we can easily itemize the transaction using only
397
+	 * items and taxes (ie, no promotions or surcharges or cancellations needed)
398
+	 *
399
+	 * @param EEI_Payment $payment
400
+	 * @return boolean
401
+	 */
402
+	protected function _can_easily_itemize_transaction_for(EEI_Payment $payment)
403
+	{
404
+		return $this->_money->compare_floats(
405
+			$this->_sum_items_and_taxes($payment->transaction()),
406
+			$payment->transaction()->total()
407
+		)
408
+			   && $this->_money->compare_floats(
409
+				   $payment->amount(),
410
+				   $payment->transaction()->total()
411
+			   );
412
+	}
413
+
414
+	/**
415
+	 * Handles updating the transaction and any other related data based on the payment.
416
+	 * You may be tempted to do this as part of do_direct_payment or handle_payment_update,
417
+	 * but doing so on those functions might be too early. It's possible that the changes
418
+	 * you make to teh transaction or registration or line items may just get overwritten
419
+	 * at that point. Instead, you should store any info you need on the payment during those
420
+	 * functions, and use that information at this step, which client code will decide
421
+	 * for you when it should be called.
422
+	 *
423
+	 * @param EE_Payment $payment
424
+	 * @return void
425
+	 */
426
+	public function update_txn_based_on_payment($payment)
427
+	{
428
+		// maybe update the transaction or line items or registrations
429
+		// but most gateways don't need to do this, because they only update the payment
430
+	}
431
+
432
+	/**
433
+	 * Gets the first event for this payment (it's possible that it could be for multiple)
434
+	 *
435
+	 * @param EEI_Payment $payment
436
+	 * @return EEI_Event|null
437
+	 * @deprecated since 4.9.31 instead use EEI_Payment::get_first_event()
438
+	 */
439
+	protected function _get_first_event_for_payment(EEI_Payment $payment)
440
+	{
441
+		return $payment->get_first_event();
442
+	}
443
+
444
+	/**
445
+	 * Gets the name of the first event for which is being paid
446
+	 *
447
+	 * @param EEI_Payment $payment
448
+	 * @return string
449
+	 * @deprecated since 4.9.31 instead use EEI_Payment::get_first_event_name()
450
+	 */
451
+	protected function _get_first_event_name_for_payment(EEI_Payment $payment)
452
+	{
453
+		return $payment->get_first_event_name();
454
+	}
455
+
456
+	/**
457
+	 * Gets the text to use for a gateway's line item name when this is a partial payment
458
+	 *
459
+	 * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatPartialPaymentLineItemName($payment)
460
+	 * @param EE_Payment $payment
461
+	 * @return string
462
+	 */
463
+	protected function _format_partial_payment_line_item_name(EEI_Payment $payment)
464
+	{
465
+		return $this->_get_gateway_formatter()->formatPartialPaymentLineItemName($payment);
466
+	}
467
+
468
+	/**
469
+	 * Gets the text to use for a gateway's line item description when this is a partial payment
470
+	 *
471
+	 * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatPartialPaymentLineItemDesc()
472
+	 * @param EEI_Payment $payment
473
+	 * @return string
474
+	 */
475
+	protected function _format_partial_payment_line_item_desc(EEI_Payment $payment)
476
+	{
477
+		return $this->_get_gateway_formatter()->formatPartialPaymentLineItemDesc($payment);
478
+	}
479
+
480
+	/**
481
+	 * Gets the name to use for a line item when sending line items to the gateway
482
+	 *
483
+	 * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatLineItemName($line_item,$payment)
484
+	 * @param EE_Line_Item $line_item
485
+	 * @param EEI_Payment   $payment
486
+	 * @return string
487
+	 */
488
+	protected function _format_line_item_name(EE_Line_Item $line_item, EEI_Payment $payment)
489
+	{
490
+		return $this->_get_gateway_formatter()->formatLineItemName($line_item, $payment);
491
+	}
492
+
493
+	/**
494
+	 * Gets the description to use for a line item when sending line items to the gateway
495
+	 *
496
+	 * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatLineItemDesc($line_item, $payment))
497
+	 * @param EE_Line_Item $line_item
498
+	 * @param EEI_Payment   $payment
499
+	 * @return string
500
+	 */
501
+	protected function _format_line_item_desc(EE_Line_Item $line_item, EEI_Payment $payment)
502
+	{
503
+		return $this->_get_gateway_formatter()->formatLineItemDesc($line_item, $payment);
504
+	}
505
+
506
+	/**
507
+	 * Gets the order description that should generlly be sent to gateways
508
+	 *
509
+	 * @deprecated since 4.9.31 instead use $this->_get_gateway_formatter()->formatOrderDescription($payment)
510
+	 * @param EEI_Payment $payment
511
+	 * @return type
512
+	 */
513
+	protected function _format_order_description(EEI_Payment $payment)
514
+	{
515
+		return $this->_get_gateway_formatter()->formatOrderDescription($payment);
516
+	}
517
+
518
+
519
+	/**
520
+	 * @return bool
521
+	 */
522
+	public function isInSandboxMode(): bool
523
+	{
524
+		return $this->_debug_mode;
525
+	}
526 526
 }
Please login to merge, or discard this patch.
line_item_display/EE_Invoice_Line_Item_Display_Strategy.strategy.php 2 patches
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
         // price td
109 109
         $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c');
110 110
         // total td
111
-        $total = $line_item->is_taxable() ? $line_item->total_no_code() . '*' : $line_item->total_no_code();
111
+        $total = $line_item->is_taxable() ? $line_item->total_no_code().'*' : $line_item->total_no_code();
112 112
         $html .= EEH_HTML::td($total, '', 'item_r');
113 113
         // end of row
114 114
         $html .= EEH_HTML::trx();
@@ -132,10 +132,10 @@  discard block
 block discarded – undo
132 132
         $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item');
133 133
         // desc td
134 134
         $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
135
-        $html .= EEH_HTML::td() . EEH_HTML::tdx();
135
+        $html .= EEH_HTML::td().EEH_HTML::tdx();
136 136
         // discount/surcharge td
137 137
         if ($line_item->is_percent()) {
138
-            $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c');
138
+            $html .= EEH_HTML::td($line_item->percent().'%', '', 'item_c');
139 139
         } else {
140 140
             $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c');
141 141
         }
@@ -164,7 +164,7 @@  discard block
 block discarded – undo
164 164
         // desc td
165 165
         $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
166 166
         // percent td
167
-        $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c', '', ' colspan="2"');
167
+        $html .= EEH_HTML::td($line_item->percent().'%', '', 'item_c', '', ' colspan="2"');
168 168
         // total td
169 169
         $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r');
170 170
         // end of row
Please login to merge, or discard this patch.
Indentation   +212 added lines, -212 removed lines patch added patch discarded remove patch
@@ -1,223 +1,223 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
  /**
4
- *
5
- * Class EE_Invoice_Line_Item_Display_Strategy
6
- *
7
- * Description
8
- *
9
- * @package         Event Espresso
10
- * @subpackage    core
11
- * @author              Brent Christensen
12
- *
13
- *
14
- */
4
+  *
5
+  * Class EE_Invoice_Line_Item_Display_Strategy
6
+  *
7
+  * Description
8
+  *
9
+  * @package         Event Espresso
10
+  * @subpackage    core
11
+  * @author              Brent Christensen
12
+  *
13
+  *
14
+  */
15 15
 class EE_Invoice_Line_Item_Display_Strategy implements EEI_Line_Item_Display
16 16
 {
17 17
 
18
-    /**
19
-     * @param EE_Line_Item $line_item
20
-     * @param array        $options
21
-     * @return mixed
22
-     */
23
-    public function display_line_item(EE_Line_Item $line_item, $options = array())
24
-    {
25
-
26
-        $html = '';
27
-        // set some default options and merge with incoming
28
-        $default_options = array(
29
-            'show_desc' => true,
30
-            'odd' => false
31
-        );
32
-        $options = array_merge($default_options, (array) $options);
33
-
34
-        switch ($line_item->type()) {
35
-            case EEM_Line_Item::type_total:
36
-                // loop thru children
37
-                foreach ($line_item->children() as $child_line_item) {
38
-                    // recursively feed children back into this method
39
-                    $html .= $this->display_line_item($child_line_item, $options);
40
-                }
41
-                $html .= $this->_separator_row($options);
42
-                $html .= $this->_total_row($line_item, esc_html__('Total', 'event_espresso'), $options);
43
-                break;
44
-
45
-
46
-            case EEM_Line_Item::type_sub_total:
47
-                // loop thru children
48
-                foreach ($line_item->children() as $child_line_item) {
49
-                    // recursively feed children back into this method
50
-                    $html .= $this->display_line_item($child_line_item, $options);
51
-                }
52
-                $html .= $this->_total_row($line_item, esc_html__('Sub-Total', 'event_espresso'), $options);
53
-                break;
54
-
55
-
56
-            case EEM_Line_Item::type_tax_sub_total:
57
-                // loop thru children
58
-                foreach ($line_item->children() as $child_line_item) {
59
-                    // recursively feed children back into this method
60
-                    $html .= $this->display_line_item($child_line_item, $options);
61
-                }
62
-                $html .= $this->_total_row($line_item, esc_html__('Tax Total', 'event_espresso'), $options);
63
-                break;
64
-
65
-
66
-            case EEM_Line_Item::type_line_item:
67
-                // item row
68
-                $html .= $this->_item_row($line_item, $options);
69
-                // got any kids?
70
-                foreach ($line_item->children() as $child_line_item) {
71
-                    $this->display_line_item($child_line_item, $options);
72
-                }
73
-                break;
74
-
75
-
76
-            case EEM_Line_Item::type_sub_line_item:
77
-                $html .= $this->_sub_item_row($line_item, $options);
78
-                break;
79
-
80
-
81
-            case EEM_Line_Item::type_tax:
82
-                $html .= $this->_tax_row($line_item, $options);
83
-                break;
84
-        }
85
-
86
-        return $html;
87
-    }
88
-
89
-
90
-
91
-    /**
92
-     *  _total_row
93
-     *
94
-     * @param EE_Line_Item $line_item
95
-     * @param array        $options
96
-     * @return mixed
97
-     */
98
-    private function _item_row(EE_Line_Item $line_item, $options = array())
99
-    {
100
-        // start of row
101
-        $row_class = $options['odd'] ? 'item odd' : 'item';
102
-        $html = EEH_HTML::tr('', $row_class);
103
-        // name td
104
-        $html .= EEH_HTML::td($line_item->name(), '', 'item_l');
105
-        // desc td
106
-        $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
107
-        // quantity td
108
-        $html .= EEH_HTML::td($line_item->quantity(), '', 'item_l');
109
-        // price td
110
-        $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c');
111
-        // total td
112
-        $total = $line_item->is_taxable() ? $line_item->total_no_code() . '*' : $line_item->total_no_code();
113
-        $html .= EEH_HTML::td($total, '', 'item_r');
114
-        // end of row
115
-        $html .= EEH_HTML::trx();
116
-        return $html;
117
-    }
118
-
119
-
120
-
121
-    /**
122
-     *  _sub_item_row
123
-     *
124
-     * @param EE_Line_Item $line_item
125
-     * @param array        $options
126
-     * @return mixed
127
-     */
128
-    private function _sub_item_row(EE_Line_Item $line_item, $options = array())
129
-    {
130
-        // start of row
131
-        $html = EEH_HTML::tr('', 'item sub-item-row');
132
-        // name td
133
-        $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item');
134
-        // desc td
135
-        $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
136
-        $html .= EEH_HTML::td() . EEH_HTML::tdx();
137
-        // discount/surcharge td
138
-        if ($line_item->is_percent()) {
139
-            $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c');
140
-        } else {
141
-            $html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c');
142
-        }
143
-        // total td
144
-        $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r');
145
-        // end of row
146
-        $html .= EEH_HTML::trx();
147
-        return $html;
148
-    }
149
-
150
-
151
-
152
-    /**
153
-     *  _tax_row
154
-     *
155
-     * @param EE_Line_Item $line_item
156
-     * @param array        $options
157
-     * @return mixed
158
-     */
159
-    private function _tax_row(EE_Line_Item $line_item, $options = array())
160
-    {
161
-        // start of row
162
-        $html = EEH_HTML::tr('', 'item sub-item tax-total');
163
-        // name td
164
-        $html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item');
165
-        // desc td
166
-        $html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
167
-        // percent td
168
-        $html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c', '', ' colspan="2"');
169
-        // total td
170
-        $html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r');
171
-        // end of row
172
-        $html .= EEH_HTML::trx();
173
-        return $html;
174
-    }
175
-
176
-
177
-
178
-    /**
179
-     *  _total_row
180
-     *
181
-     * @param EE_Line_Item $line_item
182
-     * @param string       $text
183
-     * @param array        $options
184
-     * @return mixed
185
-     */
186
-    private function _total_row(EE_Line_Item $line_item, $text = '', $options = array())
187
-    {
188
-        // colspan
189
-        $colspan = $options['show_desc'] ? ' colspan="2"' : '';
190
-        // start of row
191
-        $html = EEH_HTML::tr('', '', 'total_tr odd');
192
-        // empty td
193
-        $html .= EEH_HTML::td(EEH_HTML::nbsp(), '', '', '', $colspan);
194
-        // total td
195
-        $html .= EEH_HTML::td($text, '', 'total_currency total', '', $colspan);
196
-        // total td
197
-        $html .= EEH_HTML::td($line_item->total_no_code(), '', 'total');
198
-        // end of row
199
-        $html .= EEH_HTML::trx();
200
-        return $html;
201
-    }
202
-
203
-
204
-
205
-    /**
206
-     *  _separator_row
207
-     *
208
-     * @param array        $options
209
-     * @return mixed
210
-     */
211
-    private function _separator_row($options = array())
212
-    {
213
-        // colspan
214
-        $colspan = $options['show_desc'] ? ' colspan="5"' : ' colspan="4"';
215
-        // start of row
216
-        $html = EEH_HTML::tr(EEH_HTML::td('<hr>', '', '', '', $colspan));
18
+	/**
19
+	 * @param EE_Line_Item $line_item
20
+	 * @param array        $options
21
+	 * @return mixed
22
+	 */
23
+	public function display_line_item(EE_Line_Item $line_item, $options = array())
24
+	{
25
+
26
+		$html = '';
27
+		// set some default options and merge with incoming
28
+		$default_options = array(
29
+			'show_desc' => true,
30
+			'odd' => false
31
+		);
32
+		$options = array_merge($default_options, (array) $options);
33
+
34
+		switch ($line_item->type()) {
35
+			case EEM_Line_Item::type_total:
36
+				// loop thru children
37
+				foreach ($line_item->children() as $child_line_item) {
38
+					// recursively feed children back into this method
39
+					$html .= $this->display_line_item($child_line_item, $options);
40
+				}
41
+				$html .= $this->_separator_row($options);
42
+				$html .= $this->_total_row($line_item, esc_html__('Total', 'event_espresso'), $options);
43
+				break;
44
+
45
+
46
+			case EEM_Line_Item::type_sub_total:
47
+				// loop thru children
48
+				foreach ($line_item->children() as $child_line_item) {
49
+					// recursively feed children back into this method
50
+					$html .= $this->display_line_item($child_line_item, $options);
51
+				}
52
+				$html .= $this->_total_row($line_item, esc_html__('Sub-Total', 'event_espresso'), $options);
53
+				break;
54
+
55
+
56
+			case EEM_Line_Item::type_tax_sub_total:
57
+				// loop thru children
58
+				foreach ($line_item->children() as $child_line_item) {
59
+					// recursively feed children back into this method
60
+					$html .= $this->display_line_item($child_line_item, $options);
61
+				}
62
+				$html .= $this->_total_row($line_item, esc_html__('Tax Total', 'event_espresso'), $options);
63
+				break;
64
+
65
+
66
+			case EEM_Line_Item::type_line_item:
67
+				// item row
68
+				$html .= $this->_item_row($line_item, $options);
69
+				// got any kids?
70
+				foreach ($line_item->children() as $child_line_item) {
71
+					$this->display_line_item($child_line_item, $options);
72
+				}
73
+				break;
74
+
75
+
76
+			case EEM_Line_Item::type_sub_line_item:
77
+				$html .= $this->_sub_item_row($line_item, $options);
78
+				break;
79
+
80
+
81
+			case EEM_Line_Item::type_tax:
82
+				$html .= $this->_tax_row($line_item, $options);
83
+				break;
84
+		}
85
+
86
+		return $html;
87
+	}
88
+
89
+
90
+
91
+	/**
92
+	 *  _total_row
93
+	 *
94
+	 * @param EE_Line_Item $line_item
95
+	 * @param array        $options
96
+	 * @return mixed
97
+	 */
98
+	private function _item_row(EE_Line_Item $line_item, $options = array())
99
+	{
100
+		// start of row
101
+		$row_class = $options['odd'] ? 'item odd' : 'item';
102
+		$html = EEH_HTML::tr('', $row_class);
103
+		// name td
104
+		$html .= EEH_HTML::td($line_item->name(), '', 'item_l');
105
+		// desc td
106
+		$html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
107
+		// quantity td
108
+		$html .= EEH_HTML::td($line_item->quantity(), '', 'item_l');
109
+		// price td
110
+		$html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c');
111
+		// total td
112
+		$total = $line_item->is_taxable() ? $line_item->total_no_code() . '*' : $line_item->total_no_code();
113
+		$html .= EEH_HTML::td($total, '', 'item_r');
114
+		// end of row
115
+		$html .= EEH_HTML::trx();
116
+		return $html;
117
+	}
118
+
119
+
120
+
121
+	/**
122
+	 *  _sub_item_row
123
+	 *
124
+	 * @param EE_Line_Item $line_item
125
+	 * @param array        $options
126
+	 * @return mixed
127
+	 */
128
+	private function _sub_item_row(EE_Line_Item $line_item, $options = array())
129
+	{
130
+		// start of row
131
+		$html = EEH_HTML::tr('', 'item sub-item-row');
132
+		// name td
133
+		$html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item');
134
+		// desc td
135
+		$html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
136
+		$html .= EEH_HTML::td() . EEH_HTML::tdx();
137
+		// discount/surcharge td
138
+		if ($line_item->is_percent()) {
139
+			$html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c');
140
+		} else {
141
+			$html .= EEH_HTML::td($line_item->unit_price_no_code(), '', 'item_c');
142
+		}
143
+		// total td
144
+		$html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r');
145
+		// end of row
146
+		$html .= EEH_HTML::trx();
147
+		return $html;
148
+	}
149
+
150
+
151
+
152
+	/**
153
+	 *  _tax_row
154
+	 *
155
+	 * @param EE_Line_Item $line_item
156
+	 * @param array        $options
157
+	 * @return mixed
158
+	 */
159
+	private function _tax_row(EE_Line_Item $line_item, $options = array())
160
+	{
161
+		// start of row
162
+		$html = EEH_HTML::tr('', 'item sub-item tax-total');
163
+		// name td
164
+		$html .= EEH_HTML::td($line_item->name(), '', 'item_l sub-item');
165
+		// desc td
166
+		$html .= $options['show_desc'] ? EEH_HTML::td($line_item->desc(), '', 'item_l') : '';
167
+		// percent td
168
+		$html .= EEH_HTML::td($line_item->percent() . '%', '', 'item_c', '', ' colspan="2"');
169
+		// total td
170
+		$html .= EEH_HTML::td($line_item->total_no_code(), '', 'item_r');
171
+		// end of row
172
+		$html .= EEH_HTML::trx();
173
+		return $html;
174
+	}
175
+
176
+
177
+
178
+	/**
179
+	 *  _total_row
180
+	 *
181
+	 * @param EE_Line_Item $line_item
182
+	 * @param string       $text
183
+	 * @param array        $options
184
+	 * @return mixed
185
+	 */
186
+	private function _total_row(EE_Line_Item $line_item, $text = '', $options = array())
187
+	{
188
+		// colspan
189
+		$colspan = $options['show_desc'] ? ' colspan="2"' : '';
190
+		// start of row
191
+		$html = EEH_HTML::tr('', '', 'total_tr odd');
192
+		// empty td
193
+		$html .= EEH_HTML::td(EEH_HTML::nbsp(), '', '', '', $colspan);
194
+		// total td
195
+		$html .= EEH_HTML::td($text, '', 'total_currency total', '', $colspan);
196
+		// total td
197
+		$html .= EEH_HTML::td($line_item->total_no_code(), '', 'total');
198
+		// end of row
199
+		$html .= EEH_HTML::trx();
200
+		return $html;
201
+	}
202
+
203
+
204
+
205
+	/**
206
+	 *  _separator_row
207
+	 *
208
+	 * @param array        $options
209
+	 * @return mixed
210
+	 */
211
+	private function _separator_row($options = array())
212
+	{
213
+		// colspan
214
+		$colspan = $options['show_desc'] ? ' colspan="5"' : ' colspan="4"';
215
+		// start of row
216
+		$html = EEH_HTML::tr(EEH_HTML::td('<hr>', '', '', '', $colspan));
217 217
 //      // separator td
218 218
 //      $html .= EEH_HTML::td( '<hr>', '',  '',  '',  $colspan );
219 219
 //      // end of row
220 220
 //      $html .= EEH_HTML::trx();
221
-        return $html;
222
-    }
221
+		return $html;
222
+	}
223 223
 }
Please login to merge, or discard this patch.
core/request_stack/EE_Response.core.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -71,7 +71,7 @@  discard block
 block discarded – undo
71 71
      */
72 72
     public function set_notice($key, $value)
73 73
     {
74
-        $this->_notice[ $key ] = $value;
74
+        $this->_notice[$key] = $value;
75 75
     }
76 76
 
77 77
 
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
      */
83 83
     public function get_notice($key)
84 84
     {
85
-        return isset($this->_notice[ $key ]) ? $this->_notice[ $key ] : null;
85
+        return isset($this->_notice[$key]) ? $this->_notice[$key] : null;
86 86
     }
87 87
 
88 88
 
@@ -103,7 +103,7 @@  discard block
 block discarded – undo
103 103
      */
104 104
     public function add_output($string, $append = true)
105 105
     {
106
-        $this->_output = $append ? $this->_output . $string : $string . $this->_output;
106
+        $this->_output = $append ? $this->_output.$string : $string.$this->_output;
107 107
     }
108 108
 
109 109
 
Please login to merge, or discard this patch.
Indentation   +142 added lines, -142 removed lines patch added patch discarded remove patch
@@ -12,146 +12,146 @@
 block discarded – undo
12 12
  */
13 13
 class EE_Response
14 14
 {
15
-    /**
16
-     * @access    protected
17
-     * @type        array $_notice
18
-     */
19
-    protected $_notice = array();
20
-
21
-    /**
22
-     *    rendered output to be returned to WP
23
-     *
24
-     * @access    protected
25
-     * @type        string
26
-     */
27
-    protected $_output = '';
28
-
29
-    /**
30
-     * @access    protected
31
-     * @type        bool
32
-     */
33
-    protected $request_terminated = false;
34
-
35
-    /**
36
-     * @access    protected
37
-     * @type        bool
38
-     */
39
-    protected $deactivate_plugin = false;
40
-
41
-
42
-    /**
43
-     * @deprecated  4.9.53
44
-     * @return \EE_Response
45
-     */
46
-    public function __construct()
47
-    {
48
-        $this->terminate_request(false);
49
-        EE_Error::doing_it_wrong(
50
-            __METHOD__,
51
-            sprintf(
52
-                esc_html__(
53
-                    'This class is deprecated. Please use %1$s instead. All Event Espresso request stack classes have been moved to %2$s and are now under the %3$s namespace',
54
-                    'event_espresso'
55
-                ),
56
-                'EventEspresso\core\services\request\Response',
57
-                '\core\services\request',
58
-                'EventEspresso\core\services\request'
59
-            ),
60
-            '4.9.53'
61
-        );
62
-    }
63
-
64
-
65
-    /**
66
-     * @deprecated  4.9.53
67
-     * @param $key
68
-     * @param $value
69
-     * @return    void
70
-     */
71
-    public function set_notice($key, $value)
72
-    {
73
-        $this->_notice[ $key ] = $value;
74
-    }
75
-
76
-
77
-    /**
78
-     * @deprecated  4.9.53
79
-     * @param $key
80
-     * @return    mixed
81
-     */
82
-    public function get_notice($key)
83
-    {
84
-        return isset($this->_notice[ $key ]) ? $this->_notice[ $key ] : null;
85
-    }
86
-
87
-
88
-    /**
89
-     * @deprecated  4.9.53
90
-     * @return    array
91
-     */
92
-    public function get_notices()
93
-    {
94
-        return $this->_notice;
95
-    }
96
-
97
-
98
-    /**
99
-     * @deprecated  4.9.53
100
-     * @param      $string
101
-     * @param bool $append
102
-     */
103
-    public function add_output($string, $append = true)
104
-    {
105
-        $this->_output = $append ? $this->_output . $string : $string . $this->_output;
106
-    }
107
-
108
-
109
-    /**
110
-     * @deprecated  4.9.53
111
-     * @return    string
112
-     */
113
-    public function get_output()
114
-    {
115
-        return $this->_output;
116
-    }
117
-
118
-
119
-    /**
120
-     * @deprecated  4.9.53
121
-     * @return boolean
122
-     */
123
-    public function request_terminated()
124
-    {
125
-        return $this->request_terminated;
126
-    }
127
-
128
-
129
-    /**
130
-     * @deprecated  4.9.53
131
-     * @param boolean $request_terminated
132
-     */
133
-    public function terminate_request($request_terminated = true)
134
-    {
135
-        $this->request_terminated = filter_var($request_terminated, FILTER_VALIDATE_BOOLEAN);
136
-    }
137
-
138
-
139
-    /**
140
-     * @deprecated  4.9.53
141
-     * @return boolean
142
-     */
143
-    public function plugin_deactivated()
144
-    {
145
-        return $this->deactivate_plugin;
146
-    }
147
-
148
-
149
-    /**
150
-     * @deprecated  4.9.53
151
-     * sets $deactivate_plugin to true
152
-     */
153
-    public function deactivate_plugin()
154
-    {
155
-        $this->deactivate_plugin = true;
156
-    }
15
+	/**
16
+	 * @access    protected
17
+	 * @type        array $_notice
18
+	 */
19
+	protected $_notice = array();
20
+
21
+	/**
22
+	 *    rendered output to be returned to WP
23
+	 *
24
+	 * @access    protected
25
+	 * @type        string
26
+	 */
27
+	protected $_output = '';
28
+
29
+	/**
30
+	 * @access    protected
31
+	 * @type        bool
32
+	 */
33
+	protected $request_terminated = false;
34
+
35
+	/**
36
+	 * @access    protected
37
+	 * @type        bool
38
+	 */
39
+	protected $deactivate_plugin = false;
40
+
41
+
42
+	/**
43
+	 * @deprecated  4.9.53
44
+	 * @return \EE_Response
45
+	 */
46
+	public function __construct()
47
+	{
48
+		$this->terminate_request(false);
49
+		EE_Error::doing_it_wrong(
50
+			__METHOD__,
51
+			sprintf(
52
+				esc_html__(
53
+					'This class is deprecated. Please use %1$s instead. All Event Espresso request stack classes have been moved to %2$s and are now under the %3$s namespace',
54
+					'event_espresso'
55
+				),
56
+				'EventEspresso\core\services\request\Response',
57
+				'\core\services\request',
58
+				'EventEspresso\core\services\request'
59
+			),
60
+			'4.9.53'
61
+		);
62
+	}
63
+
64
+
65
+	/**
66
+	 * @deprecated  4.9.53
67
+	 * @param $key
68
+	 * @param $value
69
+	 * @return    void
70
+	 */
71
+	public function set_notice($key, $value)
72
+	{
73
+		$this->_notice[ $key ] = $value;
74
+	}
75
+
76
+
77
+	/**
78
+	 * @deprecated  4.9.53
79
+	 * @param $key
80
+	 * @return    mixed
81
+	 */
82
+	public function get_notice($key)
83
+	{
84
+		return isset($this->_notice[ $key ]) ? $this->_notice[ $key ] : null;
85
+	}
86
+
87
+
88
+	/**
89
+	 * @deprecated  4.9.53
90
+	 * @return    array
91
+	 */
92
+	public function get_notices()
93
+	{
94
+		return $this->_notice;
95
+	}
96
+
97
+
98
+	/**
99
+	 * @deprecated  4.9.53
100
+	 * @param      $string
101
+	 * @param bool $append
102
+	 */
103
+	public function add_output($string, $append = true)
104
+	{
105
+		$this->_output = $append ? $this->_output . $string : $string . $this->_output;
106
+	}
107
+
108
+
109
+	/**
110
+	 * @deprecated  4.9.53
111
+	 * @return    string
112
+	 */
113
+	public function get_output()
114
+	{
115
+		return $this->_output;
116
+	}
117
+
118
+
119
+	/**
120
+	 * @deprecated  4.9.53
121
+	 * @return boolean
122
+	 */
123
+	public function request_terminated()
124
+	{
125
+		return $this->request_terminated;
126
+	}
127
+
128
+
129
+	/**
130
+	 * @deprecated  4.9.53
131
+	 * @param boolean $request_terminated
132
+	 */
133
+	public function terminate_request($request_terminated = true)
134
+	{
135
+		$this->request_terminated = filter_var($request_terminated, FILTER_VALIDATE_BOOLEAN);
136
+	}
137
+
138
+
139
+	/**
140
+	 * @deprecated  4.9.53
141
+	 * @return boolean
142
+	 */
143
+	public function plugin_deactivated()
144
+	{
145
+		return $this->deactivate_plugin;
146
+	}
147
+
148
+
149
+	/**
150
+	 * @deprecated  4.9.53
151
+	 * sets $deactivate_plugin to true
152
+	 */
153
+	public function deactivate_plugin()
154
+	{
155
+		$this->deactivate_plugin = true;
156
+	}
157 157
 }
Please login to merge, or discard this patch.
core/EES_Shortcode.shortcode.php 2 patches
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -104,7 +104,7 @@  discard block
 block discarded – undo
104 104
         // what shortcode was actually parsed ?
105 105
         $shortcode_class = get_called_class();
106 106
         // notify rest of system that fallback processor was triggered
107
-        add_filter('FHEE__fallback_shortcode_processor__' . $shortcode_class, '__return_true');
107
+        add_filter('FHEE__fallback_shortcode_processor__'.$shortcode_class, '__return_true');
108 108
         // get instance of actual shortcode
109 109
         $shortcode_obj = self::instance($shortcode_class);
110 110
         // verify class
@@ -159,13 +159,13 @@  discard block
 block discarded – undo
159 159
     {
160 160
         foreach ($attributes as $key => $value) {
161 161
             // is a custom sanitization callback specified ?
162
-            if (isset($custom_sanitization[ $key ])) {
163
-                $callback = $custom_sanitization[ $key ];
162
+            if (isset($custom_sanitization[$key])) {
163
+                $callback = $custom_sanitization[$key];
164 164
                 if ($callback === 'skip_sanitization') {
165
-                    $attributes[ $key ] = $value;
165
+                    $attributes[$key] = $value;
166 166
                     continue;
167 167
                 } elseif (function_exists($callback)) {
168
-                    $attributes[ $key ] = $callback($value);
168
+                    $attributes[$key] = $callback($value);
169 169
                     continue;
170 170
                 }
171 171
             }
@@ -175,18 +175,18 @@  discard block
 block discarded – undo
175 175
                 case is_float($value):
176 176
                     // typical booleans
177 177
                 case in_array($value, array(true, 'true', '1', 'on', 'yes', false, 'false', '0', 'off', 'no'), true):
178
-                    $attributes[ $key ] = $value;
178
+                    $attributes[$key] = $value;
179 179
                     break;
180 180
                 case is_string($value):
181
-                    $attributes[ $key ] = sanitize_text_field($value);
181
+                    $attributes[$key] = sanitize_text_field($value);
182 182
                     break;
183 183
                 case is_array($value):
184
-                    $attributes[ $key ] = \EES_Shortcode::sanitize_attributes($value);
184
+                    $attributes[$key] = \EES_Shortcode::sanitize_attributes($value);
185 185
                     break;
186 186
                 default:
187 187
                     // only remaining data types are Object and Resource
188 188
                     // which are not allowed as shortcode attributes
189
-                    $attributes[ $key ] = null;
189
+                    $attributes[$key] = null;
190 190
                     break;
191 191
             }
192 192
         }
Please login to merge, or discard this patch.
Indentation   +182 added lines, -182 removed lines patch added patch discarded remove patch
@@ -14,186 +14,186 @@
 block discarded – undo
14 14
  */
15 15
 abstract class EES_Shortcode extends EE_Base
16 16
 {
17
-    /**
18
-     * @protected   public
19
-     * @var     array $_attributes
20
-     */
21
-    protected $_attributes = array();
22
-
23
-
24
-
25
-    /**
26
-     * class constructor - should ONLY be instantiated by EE_Front_Controller
27
-     */
28
-    final public function __construct()
29
-    {
30
-        $shortcode = LegacyShortcodesManager::generateShortcodeTagFromClassName(get_class($this));
31
-        // assign shortcode to the preferred callback, which overwrites the "fallback shortcode processor" assigned earlier
32
-        add_shortcode($shortcode, array($this, 'process_shortcode'));
33
-        // make sure system knows this is an EE page
34
-        /** @var CurrentPage $current_page */
35
-        $current_page = LoaderFactory::getLoader()->getShared(CurrentPage::class);
36
-        $current_page->setEspressoPage(true);
37
-    }
38
-
39
-
40
-
41
-    /**
42
-     * run - initial shortcode module setup called during "parse_request" hook by
43
-     * \EE_Front_Controller::_initialize_shortcodes() IF this shortcode is going to execute during this request !
44
-     * It may also get called by \EES_Shortcode::fallback_shortcode_processor() if the shortcode is being implemented
45
-     * by a theme or plugin in a non-standard way.
46
-     * Basically this method is primarily used for loading resources and assets like CSS or JS
47
-     * that will be required by the shortcode when it is actually processed.
48
-     * Please note that assets may not load if the fallback_shortcode_processor() is being used.
49
-     *
50
-     * @access    public
51
-     * @param WP $WP
52
-     * @return    void
53
-     */
54
-    abstract public function run(WP $WP);
55
-
56
-
57
-
58
-    /**
59
-     *  process_shortcode
60
-     *  this method is the callback function for the actual shortcode, and is what runs when WP encounters the shortcode within the_content
61
-     *
62
-     *  @access     public
63
-     *  @param      array   $attributes
64
-     *  @return     mixed
65
-     */
66
-    abstract public function process_shortcode($attributes = array());
67
-
68
-
69
-
70
-    /**
71
-     *    instance - returns instance of child class object
72
-     *
73
-     * @access  public
74
-     * @param   string $shortcode_class
75
-     * @return  \EES_Shortcode
76
-     */
77
-    final public static function instance($shortcode_class = null)
78
-    {
79
-        $shortcode_class = ! empty($shortcode_class) ? $shortcode_class : get_called_class();
80
-        if ($shortcode_class === 'EES_Shortcode' || empty($shortcode_class)) {
81
-            return null;
82
-        }
83
-        $shortcode = str_replace('EES_', '', strtoupper($shortcode_class));
84
-        $shortcode_obj = isset(EE_Registry::instance()->shortcodes->{$shortcode})
85
-            ? EE_Registry::instance()->shortcodes->{$shortcode}
86
-            : null;
87
-        return $shortcode_obj instanceof $shortcode_class || $shortcode_class === 'self'
88
-            ? $shortcode_obj
89
-            : new $shortcode_class();
90
-    }
91
-
92
-
93
-
94
-
95
-    /**
96
-     *    fallback_shortcode_processor - create instance and call process_shortcode
97
-     *    NOTE: shortcode may not function perfectly dues to missing assets, but it's better than not having things work at all
98
-     *
99
-     * @access  public
100
-     * @param   $attributes
101
-     * @return  mixed
102
-     */
103
-    final public static function fallback_shortcode_processor($attributes)
104
-    {
105
-        if (EE_Maintenance_Mode::disable_frontend_for_maintenance()) {
106
-            return null;
107
-        }
108
-        // what shortcode was actually parsed ?
109
-        $shortcode_class = get_called_class();
110
-        // notify rest of system that fallback processor was triggered
111
-        add_filter('FHEE__fallback_shortcode_processor__' . $shortcode_class, '__return_true');
112
-        // get instance of actual shortcode
113
-        $shortcode_obj = self::instance($shortcode_class);
114
-        // verify class
115
-        if ($shortcode_obj instanceof EES_Shortcode) {
116
-            global $wp;
117
-            $shortcode_obj->run($wp);
118
-            // set attributes and run the shortcode
119
-            $shortcode_obj->_attributes = (array) $attributes;
120
-            return $shortcode_obj->process_shortcode($shortcode_obj->_attributes);
121
-        } else {
122
-            return null;
123
-        }
124
-    }
125
-
126
-
127
-
128
-
129
-    /**
130
-     *    invalid_shortcode_processor -  used in cases where we know the shortcode is invalid, most likely due to a deactivated addon, and simply returns an empty string
131
-     *
132
-     * @access  public
133
-     * @param   $attributes
134
-     * @return  string
135
-     */
136
-    final public static function invalid_shortcode_processor($attributes)
137
-    {
138
-        return '';
139
-    }
140
-
141
-
142
-
143
-
144
-
145
-    /**
146
-     * Performs basic sanitization on shortcode attributes
147
-     * Since incoming attributes from the shortcode usage in the WP editor will all be strings,
148
-     * most attributes will by default be sanitized using the sanitize_text_field() function.
149
-     * This can be overridden by supplying an array for the $custom_sanitization param,
150
-     * where keys match keys in your attributes array,
151
-     * and values represent the sanitization function you wish to be applied to that attribute.
152
-     * So for example, if you had an integer attribute named "event_id"
153
-     * that you wanted to be sanitized using absint(),
154
-     * then you would pass the following for your $custom_sanitization array:
155
-     *      array('event_id' => 'absint')
156
-     * all other attributes would be sanitized using the defaults in the switch statement below
157
-     *
158
-     * @param array $attributes
159
-     * @param array $custom_sanitization
160
-     * @return array
161
-     */
162
-    public static function sanitize_attributes(array $attributes, $custom_sanitization = array())
163
-    {
164
-        foreach ($attributes as $key => $value) {
165
-            // is a custom sanitization callback specified ?
166
-            if (isset($custom_sanitization[ $key ])) {
167
-                $callback = $custom_sanitization[ $key ];
168
-                if ($callback === 'skip_sanitization') {
169
-                    $attributes[ $key ] = $value;
170
-                    continue;
171
-                } elseif (function_exists($callback)) {
172
-                    $attributes[ $key ] = $callback($value);
173
-                    continue;
174
-                }
175
-            }
176
-            switch (true) {
177
-                case $value === null:
178
-                case is_int($value):
179
-                case is_float($value):
180
-                    // typical booleans
181
-                case in_array($value, array(true, 'true', '1', 'on', 'yes', false, 'false', '0', 'off', 'no'), true):
182
-                    $attributes[ $key ] = $value;
183
-                    break;
184
-                case is_string($value):
185
-                    $attributes[ $key ] = sanitize_text_field($value);
186
-                    break;
187
-                case is_array($value):
188
-                    $attributes[ $key ] = \EES_Shortcode::sanitize_attributes($value);
189
-                    break;
190
-                default:
191
-                    // only remaining data types are Object and Resource
192
-                    // which are not allowed as shortcode attributes
193
-                    $attributes[ $key ] = null;
194
-                    break;
195
-            }
196
-        }
197
-        return $attributes;
198
-    }
17
+	/**
18
+	 * @protected   public
19
+	 * @var     array $_attributes
20
+	 */
21
+	protected $_attributes = array();
22
+
23
+
24
+
25
+	/**
26
+	 * class constructor - should ONLY be instantiated by EE_Front_Controller
27
+	 */
28
+	final public function __construct()
29
+	{
30
+		$shortcode = LegacyShortcodesManager::generateShortcodeTagFromClassName(get_class($this));
31
+		// assign shortcode to the preferred callback, which overwrites the "fallback shortcode processor" assigned earlier
32
+		add_shortcode($shortcode, array($this, 'process_shortcode'));
33
+		// make sure system knows this is an EE page
34
+		/** @var CurrentPage $current_page */
35
+		$current_page = LoaderFactory::getLoader()->getShared(CurrentPage::class);
36
+		$current_page->setEspressoPage(true);
37
+	}
38
+
39
+
40
+
41
+	/**
42
+	 * run - initial shortcode module setup called during "parse_request" hook by
43
+	 * \EE_Front_Controller::_initialize_shortcodes() IF this shortcode is going to execute during this request !
44
+	 * It may also get called by \EES_Shortcode::fallback_shortcode_processor() if the shortcode is being implemented
45
+	 * by a theme or plugin in a non-standard way.
46
+	 * Basically this method is primarily used for loading resources and assets like CSS or JS
47
+	 * that will be required by the shortcode when it is actually processed.
48
+	 * Please note that assets may not load if the fallback_shortcode_processor() is being used.
49
+	 *
50
+	 * @access    public
51
+	 * @param WP $WP
52
+	 * @return    void
53
+	 */
54
+	abstract public function run(WP $WP);
55
+
56
+
57
+
58
+	/**
59
+	 *  process_shortcode
60
+	 *  this method is the callback function for the actual shortcode, and is what runs when WP encounters the shortcode within the_content
61
+	 *
62
+	 *  @access     public
63
+	 *  @param      array   $attributes
64
+	 *  @return     mixed
65
+	 */
66
+	abstract public function process_shortcode($attributes = array());
67
+
68
+
69
+
70
+	/**
71
+	 *    instance - returns instance of child class object
72
+	 *
73
+	 * @access  public
74
+	 * @param   string $shortcode_class
75
+	 * @return  \EES_Shortcode
76
+	 */
77
+	final public static function instance($shortcode_class = null)
78
+	{
79
+		$shortcode_class = ! empty($shortcode_class) ? $shortcode_class : get_called_class();
80
+		if ($shortcode_class === 'EES_Shortcode' || empty($shortcode_class)) {
81
+			return null;
82
+		}
83
+		$shortcode = str_replace('EES_', '', strtoupper($shortcode_class));
84
+		$shortcode_obj = isset(EE_Registry::instance()->shortcodes->{$shortcode})
85
+			? EE_Registry::instance()->shortcodes->{$shortcode}
86
+			: null;
87
+		return $shortcode_obj instanceof $shortcode_class || $shortcode_class === 'self'
88
+			? $shortcode_obj
89
+			: new $shortcode_class();
90
+	}
91
+
92
+
93
+
94
+
95
+	/**
96
+	 *    fallback_shortcode_processor - create instance and call process_shortcode
97
+	 *    NOTE: shortcode may not function perfectly dues to missing assets, but it's better than not having things work at all
98
+	 *
99
+	 * @access  public
100
+	 * @param   $attributes
101
+	 * @return  mixed
102
+	 */
103
+	final public static function fallback_shortcode_processor($attributes)
104
+	{
105
+		if (EE_Maintenance_Mode::disable_frontend_for_maintenance()) {
106
+			return null;
107
+		}
108
+		// what shortcode was actually parsed ?
109
+		$shortcode_class = get_called_class();
110
+		// notify rest of system that fallback processor was triggered
111
+		add_filter('FHEE__fallback_shortcode_processor__' . $shortcode_class, '__return_true');
112
+		// get instance of actual shortcode
113
+		$shortcode_obj = self::instance($shortcode_class);
114
+		// verify class
115
+		if ($shortcode_obj instanceof EES_Shortcode) {
116
+			global $wp;
117
+			$shortcode_obj->run($wp);
118
+			// set attributes and run the shortcode
119
+			$shortcode_obj->_attributes = (array) $attributes;
120
+			return $shortcode_obj->process_shortcode($shortcode_obj->_attributes);
121
+		} else {
122
+			return null;
123
+		}
124
+	}
125
+
126
+
127
+
128
+
129
+	/**
130
+	 *    invalid_shortcode_processor -  used in cases where we know the shortcode is invalid, most likely due to a deactivated addon, and simply returns an empty string
131
+	 *
132
+	 * @access  public
133
+	 * @param   $attributes
134
+	 * @return  string
135
+	 */
136
+	final public static function invalid_shortcode_processor($attributes)
137
+	{
138
+		return '';
139
+	}
140
+
141
+
142
+
143
+
144
+
145
+	/**
146
+	 * Performs basic sanitization on shortcode attributes
147
+	 * Since incoming attributes from the shortcode usage in the WP editor will all be strings,
148
+	 * most attributes will by default be sanitized using the sanitize_text_field() function.
149
+	 * This can be overridden by supplying an array for the $custom_sanitization param,
150
+	 * where keys match keys in your attributes array,
151
+	 * and values represent the sanitization function you wish to be applied to that attribute.
152
+	 * So for example, if you had an integer attribute named "event_id"
153
+	 * that you wanted to be sanitized using absint(),
154
+	 * then you would pass the following for your $custom_sanitization array:
155
+	 *      array('event_id' => 'absint')
156
+	 * all other attributes would be sanitized using the defaults in the switch statement below
157
+	 *
158
+	 * @param array $attributes
159
+	 * @param array $custom_sanitization
160
+	 * @return array
161
+	 */
162
+	public static function sanitize_attributes(array $attributes, $custom_sanitization = array())
163
+	{
164
+		foreach ($attributes as $key => $value) {
165
+			// is a custom sanitization callback specified ?
166
+			if (isset($custom_sanitization[ $key ])) {
167
+				$callback = $custom_sanitization[ $key ];
168
+				if ($callback === 'skip_sanitization') {
169
+					$attributes[ $key ] = $value;
170
+					continue;
171
+				} elseif (function_exists($callback)) {
172
+					$attributes[ $key ] = $callback($value);
173
+					continue;
174
+				}
175
+			}
176
+			switch (true) {
177
+				case $value === null:
178
+				case is_int($value):
179
+				case is_float($value):
180
+					// typical booleans
181
+				case in_array($value, array(true, 'true', '1', 'on', 'yes', false, 'false', '0', 'off', 'no'), true):
182
+					$attributes[ $key ] = $value;
183
+					break;
184
+				case is_string($value):
185
+					$attributes[ $key ] = sanitize_text_field($value);
186
+					break;
187
+				case is_array($value):
188
+					$attributes[ $key ] = \EES_Shortcode::sanitize_attributes($value);
189
+					break;
190
+				default:
191
+					// only remaining data types are Object and Resource
192
+					// which are not allowed as shortcode attributes
193
+					$attributes[ $key ] = null;
194
+					break;
195
+			}
196
+		}
197
+		return $attributes;
198
+	}
199 199
 }
Please login to merge, or discard this patch.
core/db_models/EEM_Term_Taxonomy.model.php 2 patches
Spacing   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -62,49 +62,49 @@  discard block
 block discarded – undo
62 62
         );
63 63
         $cpt_models = array_keys(EE_Registry::instance()->cpt_models());
64 64
         foreach ($cpt_models as $model_name) {
65
-            $this->_model_relations[ $model_name ] = new EE_HABTM_Relation('Term_Relationship');
65
+            $this->_model_relations[$model_name] = new EE_HABTM_Relation('Term_Relationship');
66 66
         }
67 67
         $this->_wp_core_model = true;
68 68
         $this->_indexes = array(
69 69
             'term_id_taxonomy' => new EE_Unique_Index(array('term_id', 'taxonomy')),
70 70
         );
71 71
         $path_to_tax_model = '';
72
-        $this->_cap_restriction_generators[ EEM_Base::caps_read ] = new EE_Restriction_Generator_Public();
73
-        $this->_cap_restriction_generators[ EEM_Base::caps_read_admin ] = new EE_Restriction_Generator_Taxonomy_Protected(
72
+        $this->_cap_restriction_generators[EEM_Base::caps_read] = new EE_Restriction_Generator_Public();
73
+        $this->_cap_restriction_generators[EEM_Base::caps_read_admin] = new EE_Restriction_Generator_Taxonomy_Protected(
74 74
             $path_to_tax_model
75 75
         );
76
-        $this->_cap_restriction_generators[ EEM_Base::caps_edit ] = false;
77
-        $this->_cap_restriction_generators[ EEM_Base::caps_delete ] = false;
76
+        $this->_cap_restriction_generators[EEM_Base::caps_edit] = false;
77
+        $this->_cap_restriction_generators[EEM_Base::caps_delete] = false;
78 78
         // add cap restrictions for editing relating to the "ee_edit_*"
79
-        $this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_event_category'] = new EE_Default_Where_Conditions(
79
+        $this->_cap_restrictions[EEM_Base::caps_edit]['ee_edit_event_category'] = new EE_Default_Where_Conditions(
80 80
             array(
81
-                $path_to_tax_model . 'taxonomy*ee_edit_event_category' => array('!=', 'espresso_event_categories'),
81
+                $path_to_tax_model.'taxonomy*ee_edit_event_category' => array('!=', 'espresso_event_categories'),
82 82
             )
83 83
         );
84
-        $this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_venue_category'] = new EE_Default_Where_Conditions(
84
+        $this->_cap_restrictions[EEM_Base::caps_edit]['ee_edit_venue_category'] = new EE_Default_Where_Conditions(
85 85
             array(
86
-                $path_to_tax_model . 'taxonomy*ee_edit_venue_category' => array('!=', 'espresso_venue_categories'),
86
+                $path_to_tax_model.'taxonomy*ee_edit_venue_category' => array('!=', 'espresso_venue_categories'),
87 87
             )
88 88
         );
89
-        $this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_event_type'] = new EE_Default_Where_Conditions(
89
+        $this->_cap_restrictions[EEM_Base::caps_edit]['ee_edit_event_type'] = new EE_Default_Where_Conditions(
90 90
             array(
91
-                $path_to_tax_model . 'taxonomy*ee_edit_event_type' => array('!=', 'espresso_event_type'),
91
+                $path_to_tax_model.'taxonomy*ee_edit_event_type' => array('!=', 'espresso_event_type'),
92 92
             )
93 93
         );
94 94
         // add cap restrictions for deleting relating to the "ee_deleting_*"
95
-        $this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_event_category'] = new EE_Default_Where_Conditions(
95
+        $this->_cap_restrictions[EEM_Base::caps_delete]['ee_delete_event_category'] = new EE_Default_Where_Conditions(
96 96
             array(
97
-                $path_to_tax_model . 'taxonomy*ee_delete_event_category' => array('!=', 'espresso_event_categories'),
97
+                $path_to_tax_model.'taxonomy*ee_delete_event_category' => array('!=', 'espresso_event_categories'),
98 98
             )
99 99
         );
100
-        $this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_venue_category'] = new EE_Default_Where_Conditions(
100
+        $this->_cap_restrictions[EEM_Base::caps_delete]['ee_delete_venue_category'] = new EE_Default_Where_Conditions(
101 101
             array(
102
-                $path_to_tax_model . 'taxonomy*ee_delete_venue_category' => array('!=', 'espresso_venue_categories'),
102
+                $path_to_tax_model.'taxonomy*ee_delete_venue_category' => array('!=', 'espresso_venue_categories'),
103 103
             )
104 104
         );
105
-        $this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_event_type'] = new EE_Default_Where_Conditions(
105
+        $this->_cap_restrictions[EEM_Base::caps_delete]['ee_delete_event_type'] = new EE_Default_Where_Conditions(
106 106
             array(
107
-                $path_to_tax_model . 'taxonomy*ee_delete_event_type' => array('!=', 'espresso_event_type'),
107
+                $path_to_tax_model.'taxonomy*ee_delete_event_type' => array('!=', 'espresso_event_type'),
108 108
             )
109 109
         );
110 110
         parent::__construct($timezone);
@@ -126,7 +126,7 @@  discard block
 block discarded – undo
126 126
     {
127 127
         if ($model === EEM_Term_Taxonomy::instance()) {
128 128
             $taxonomies = get_taxonomies(array('show_in_rest' => true));
129
-            if (! empty($taxonomies)) {
129
+            if ( ! empty($taxonomies)) {
130 130
                 $model_query_params[0]['taxonomy'] = array('IN', $taxonomies);
131 131
             }
132 132
         }
Please login to merge, or discard this patch.
Indentation   +116 added lines, -116 removed lines patch added patch discarded remove patch
@@ -10,128 +10,128 @@
 block discarded – undo
10 10
  */
11 11
 class EEM_Term_Taxonomy extends EEM_Base
12 12
 {
13
-    // private instance of the Attendee object
14
-    protected static $_instance = null;
13
+	// private instance of the Attendee object
14
+	protected static $_instance = null;
15 15
 
16 16
 
17 17
 
18
-    protected function __construct($timezone = null)
19
-    {
20
-        $this->singular_item = esc_html__('Term Taxonomy', 'event_espresso');
21
-        $this->plural_item = esc_html__('Term Taxonomy', 'event_espresso');
22
-        $this->_tables = array(
23
-            'Term_Taxonomy' => new EE_Primary_Table('term_taxonomy', 'term_taxonomy_id'),
24
-        );
25
-        $this->_fields = array(
26
-            'Term_Taxonomy' => array(
27
-                'term_taxonomy_id' => new EE_Primary_Key_Int_Field(
28
-                    'term_taxonomy_id',
29
-                    esc_html__('Term-Taxonomy ID', 'event_espresso')
30
-                ),
31
-                'term_id'          => new EE_Foreign_Key_Int_Field(
32
-                    'term_id',
33
-                    esc_html__("Term Id", "event_espresso"),
34
-                    false,
35
-                    0,
36
-                    'Term'
37
-                ),
38
-                'taxonomy'         => new EE_Plain_Text_Field(
39
-                    'taxonomy',
40
-                    esc_html__('Taxonomy Name', 'event_espresso'),
41
-                    false,
42
-                    'category'
43
-                ),
44
-                'description'      => new EE_Post_Content_Field(
45
-                    'description',
46
-                    esc_html__("Description of Term", "event_espresso"),
47
-                    false,
48
-                    ''
49
-                ),
50
-                'parent'           => new EE_Integer_Field('parent', esc_html__("Parent Term ID", "event_espresso"), false, 0),
51
-                'term_count'       => new EE_Integer_Field(
52
-                    'count',
53
-                    esc_html__("Count of Objects attached", 'event_espresso'),
54
-                    false,
55
-                    0
56
-                ),
57
-            ),
58
-        );
59
-        $this->_model_relations = array(
60
-            'Term_Relationship' => new EE_Has_Many_Relation(),
61
-            'Term'              => new EE_Belongs_To_Relation(),
62
-        );
63
-        $cpt_models = array_keys(EE_Registry::instance()->cpt_models());
64
-        foreach ($cpt_models as $model_name) {
65
-            $this->_model_relations[ $model_name ] = new EE_HABTM_Relation('Term_Relationship');
66
-        }
67
-        $this->_wp_core_model = true;
68
-        $this->_indexes = array(
69
-            'term_id_taxonomy' => new EE_Unique_Index(array('term_id', 'taxonomy')),
70
-        );
71
-        $path_to_tax_model = '';
72
-        $this->_cap_restriction_generators[ EEM_Base::caps_read ] = new EE_Restriction_Generator_Public();
73
-        $this->_cap_restriction_generators[ EEM_Base::caps_read_admin ] = new EE_Restriction_Generator_Taxonomy_Protected(
74
-            $path_to_tax_model
75
-        );
76
-        $this->_cap_restriction_generators[ EEM_Base::caps_edit ] = false;
77
-        $this->_cap_restriction_generators[ EEM_Base::caps_delete ] = false;
78
-        // add cap restrictions for editing relating to the "ee_edit_*"
79
-        $this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_event_category'] = new EE_Default_Where_Conditions(
80
-            array(
81
-                $path_to_tax_model . 'taxonomy*ee_edit_event_category' => array('!=', 'espresso_event_categories'),
82
-            )
83
-        );
84
-        $this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_venue_category'] = new EE_Default_Where_Conditions(
85
-            array(
86
-                $path_to_tax_model . 'taxonomy*ee_edit_venue_category' => array('!=', 'espresso_venue_categories'),
87
-            )
88
-        );
89
-        $this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_event_type'] = new EE_Default_Where_Conditions(
90
-            array(
91
-                $path_to_tax_model . 'taxonomy*ee_edit_event_type' => array('!=', 'espresso_event_type'),
92
-            )
93
-        );
94
-        // add cap restrictions for deleting relating to the "ee_deleting_*"
95
-        $this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_event_category'] = new EE_Default_Where_Conditions(
96
-            array(
97
-                $path_to_tax_model . 'taxonomy*ee_delete_event_category' => array('!=', 'espresso_event_categories'),
98
-            )
99
-        );
100
-        $this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_venue_category'] = new EE_Default_Where_Conditions(
101
-            array(
102
-                $path_to_tax_model . 'taxonomy*ee_delete_venue_category' => array('!=', 'espresso_venue_categories'),
103
-            )
104
-        );
105
-        $this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_event_type'] = new EE_Default_Where_Conditions(
106
-            array(
107
-                $path_to_tax_model . 'taxonomy*ee_delete_event_type' => array('!=', 'espresso_event_type'),
108
-            )
109
-        );
110
-        parent::__construct($timezone);
111
-        add_filter('FHEE__Read__create_model_query_params', array('EEM_Term_Taxonomy', 'rest_api_query_params'), 10, 3);
112
-    }
18
+	protected function __construct($timezone = null)
19
+	{
20
+		$this->singular_item = esc_html__('Term Taxonomy', 'event_espresso');
21
+		$this->plural_item = esc_html__('Term Taxonomy', 'event_espresso');
22
+		$this->_tables = array(
23
+			'Term_Taxonomy' => new EE_Primary_Table('term_taxonomy', 'term_taxonomy_id'),
24
+		);
25
+		$this->_fields = array(
26
+			'Term_Taxonomy' => array(
27
+				'term_taxonomy_id' => new EE_Primary_Key_Int_Field(
28
+					'term_taxonomy_id',
29
+					esc_html__('Term-Taxonomy ID', 'event_espresso')
30
+				),
31
+				'term_id'          => new EE_Foreign_Key_Int_Field(
32
+					'term_id',
33
+					esc_html__("Term Id", "event_espresso"),
34
+					false,
35
+					0,
36
+					'Term'
37
+				),
38
+				'taxonomy'         => new EE_Plain_Text_Field(
39
+					'taxonomy',
40
+					esc_html__('Taxonomy Name', 'event_espresso'),
41
+					false,
42
+					'category'
43
+				),
44
+				'description'      => new EE_Post_Content_Field(
45
+					'description',
46
+					esc_html__("Description of Term", "event_espresso"),
47
+					false,
48
+					''
49
+				),
50
+				'parent'           => new EE_Integer_Field('parent', esc_html__("Parent Term ID", "event_espresso"), false, 0),
51
+				'term_count'       => new EE_Integer_Field(
52
+					'count',
53
+					esc_html__("Count of Objects attached", 'event_espresso'),
54
+					false,
55
+					0
56
+				),
57
+			),
58
+		);
59
+		$this->_model_relations = array(
60
+			'Term_Relationship' => new EE_Has_Many_Relation(),
61
+			'Term'              => new EE_Belongs_To_Relation(),
62
+		);
63
+		$cpt_models = array_keys(EE_Registry::instance()->cpt_models());
64
+		foreach ($cpt_models as $model_name) {
65
+			$this->_model_relations[ $model_name ] = new EE_HABTM_Relation('Term_Relationship');
66
+		}
67
+		$this->_wp_core_model = true;
68
+		$this->_indexes = array(
69
+			'term_id_taxonomy' => new EE_Unique_Index(array('term_id', 'taxonomy')),
70
+		);
71
+		$path_to_tax_model = '';
72
+		$this->_cap_restriction_generators[ EEM_Base::caps_read ] = new EE_Restriction_Generator_Public();
73
+		$this->_cap_restriction_generators[ EEM_Base::caps_read_admin ] = new EE_Restriction_Generator_Taxonomy_Protected(
74
+			$path_to_tax_model
75
+		);
76
+		$this->_cap_restriction_generators[ EEM_Base::caps_edit ] = false;
77
+		$this->_cap_restriction_generators[ EEM_Base::caps_delete ] = false;
78
+		// add cap restrictions for editing relating to the "ee_edit_*"
79
+		$this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_event_category'] = new EE_Default_Where_Conditions(
80
+			array(
81
+				$path_to_tax_model . 'taxonomy*ee_edit_event_category' => array('!=', 'espresso_event_categories'),
82
+			)
83
+		);
84
+		$this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_venue_category'] = new EE_Default_Where_Conditions(
85
+			array(
86
+				$path_to_tax_model . 'taxonomy*ee_edit_venue_category' => array('!=', 'espresso_venue_categories'),
87
+			)
88
+		);
89
+		$this->_cap_restrictions[ EEM_Base::caps_edit ]['ee_edit_event_type'] = new EE_Default_Where_Conditions(
90
+			array(
91
+				$path_to_tax_model . 'taxonomy*ee_edit_event_type' => array('!=', 'espresso_event_type'),
92
+			)
93
+		);
94
+		// add cap restrictions for deleting relating to the "ee_deleting_*"
95
+		$this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_event_category'] = new EE_Default_Where_Conditions(
96
+			array(
97
+				$path_to_tax_model . 'taxonomy*ee_delete_event_category' => array('!=', 'espresso_event_categories'),
98
+			)
99
+		);
100
+		$this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_venue_category'] = new EE_Default_Where_Conditions(
101
+			array(
102
+				$path_to_tax_model . 'taxonomy*ee_delete_venue_category' => array('!=', 'espresso_venue_categories'),
103
+			)
104
+		);
105
+		$this->_cap_restrictions[ EEM_Base::caps_delete ]['ee_delete_event_type'] = new EE_Default_Where_Conditions(
106
+			array(
107
+				$path_to_tax_model . 'taxonomy*ee_delete_event_type' => array('!=', 'espresso_event_type'),
108
+			)
109
+		);
110
+		parent::__construct($timezone);
111
+		add_filter('FHEE__Read__create_model_query_params', array('EEM_Term_Taxonomy', 'rest_api_query_params'), 10, 3);
112
+	}
113 113
 
114 114
 
115 115
 
116
-    /**
117
-     * Makes sure that during REST API queries, we only return term-taxonomies
118
-     * for term taxonomies which should be shown in the rest api
119
-     *
120
-     * @param array    $model_query_params
121
-     * @param array    $querystring_query_params
122
-     * @param EEM_Base $model
123
-     * @return array
124
-     */
125
-    public static function rest_api_query_params($model_query_params, $querystring_query_params, $model)
126
-    {
127
-        if ($model === EEM_Term_Taxonomy::instance()) {
128
-            $taxonomies = get_taxonomies(array('show_in_rest' => true));
129
-            if (! empty($taxonomies)) {
130
-                $model_query_params[0]['taxonomy'] = array('IN', $taxonomies);
131
-            }
132
-        }
133
-        return $model_query_params;
134
-    }
116
+	/**
117
+	 * Makes sure that during REST API queries, we only return term-taxonomies
118
+	 * for term taxonomies which should be shown in the rest api
119
+	 *
120
+	 * @param array    $model_query_params
121
+	 * @param array    $querystring_query_params
122
+	 * @param EEM_Base $model
123
+	 * @return array
124
+	 */
125
+	public static function rest_api_query_params($model_query_params, $querystring_query_params, $model)
126
+	{
127
+		if ($model === EEM_Term_Taxonomy::instance()) {
128
+			$taxonomies = get_taxonomies(array('show_in_rest' => true));
129
+			if (! empty($taxonomies)) {
130
+				$model_query_params[0]['taxonomy'] = array('IN', $taxonomies);
131
+			}
132
+		}
133
+		return $model_query_params;
134
+	}
135 135
 }
136 136
 // End of file EEM_Term_Taxonomy.model.php
137 137
 // Location: /includes/models/EEM_Term_Taxonomy.model.php
Please login to merge, or discard this patch.
core/db_models/EEM_Extra_Meta.model.php 2 patches
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -38,10 +38,10 @@
 block discarded – undo
38 38
             ));
39 39
         $this->_model_relations = array();
40 40
         foreach ($models_this_can_attach_to as $model) {
41
-            $this->_model_relations[ $model ] = new EE_Belongs_To_Any_Relation();
41
+            $this->_model_relations[$model] = new EE_Belongs_To_Any_Relation();
42 42
         }
43 43
         foreach ($this->cap_contexts_to_cap_action_map() as $cap_context => $action) {
44
-            $this->_cap_restriction_generators[ $cap_context ] = new EE_Restriction_Generator_Meta('EXM_key', 'EXM_value');
44
+            $this->_cap_restriction_generators[$cap_context] = new EE_Restriction_Generator_Meta('EXM_key', 'EXM_value');
45 45
         }
46 46
         parent::__construct($timezone);
47 47
     }
Please login to merge, or discard this patch.
Indentation   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -16,33 +16,33 @@
 block discarded – undo
16 16
  */
17 17
 class EEM_Extra_Meta extends EEM_Base
18 18
 {
19
-    // private instance of the Attendee object
20
-    protected static $_instance = null;
19
+	// private instance of the Attendee object
20
+	protected static $_instance = null;
21 21
 
22
-    protected function __construct($timezone = null)
23
-    {
24
-        $this->singular_item = esc_html__('Extra Meta', 'event_espresso');
25
-        $this->plural_item = esc_html__('Extra Metas', 'event_espresso');
26
-        $this->_tables = array(
27
-            'Extra_Meta' => new EE_Primary_Table('esp_extra_meta', 'EXM_ID')
28
-        );
29
-        $models_this_can_attach_to = array_keys(EE_Registry::instance()->non_abstract_db_models);
30
-        $this->_fields = array(
31
-            'Extra_Meta' => array(
32
-                'EXM_ID' => new EE_Primary_Key_Int_Field('EXM_ID', esc_html__("Extra Meta ID", "event_espresso")),
33
-                'OBJ_ID' => new EE_Foreign_Key_Int_Field('OBJ_ID', esc_html__("Primary Key of Attached Thing", "event_espresso"), false, 0, $models_this_can_attach_to),
34
-                'EXM_type' => new EE_Any_Foreign_Model_Name_Field('EXM_type', esc_html__("Model of Attached Thing", "event_espresso"), false, 'Transaction', $models_this_can_attach_to),
35
-                'EXM_key' => new EE_Plain_Text_Field('EXM_key', esc_html__("Meta Key", "event_espresso"), false, ''),
36
-                'EXM_value' => new EE_Maybe_Serialized_Text_Field('EXM_value', esc_html__("Meta Value", "event_espresso"), true)
22
+	protected function __construct($timezone = null)
23
+	{
24
+		$this->singular_item = esc_html__('Extra Meta', 'event_espresso');
25
+		$this->plural_item = esc_html__('Extra Metas', 'event_espresso');
26
+		$this->_tables = array(
27
+			'Extra_Meta' => new EE_Primary_Table('esp_extra_meta', 'EXM_ID')
28
+		);
29
+		$models_this_can_attach_to = array_keys(EE_Registry::instance()->non_abstract_db_models);
30
+		$this->_fields = array(
31
+			'Extra_Meta' => array(
32
+				'EXM_ID' => new EE_Primary_Key_Int_Field('EXM_ID', esc_html__("Extra Meta ID", "event_espresso")),
33
+				'OBJ_ID' => new EE_Foreign_Key_Int_Field('OBJ_ID', esc_html__("Primary Key of Attached Thing", "event_espresso"), false, 0, $models_this_can_attach_to),
34
+				'EXM_type' => new EE_Any_Foreign_Model_Name_Field('EXM_type', esc_html__("Model of Attached Thing", "event_espresso"), false, 'Transaction', $models_this_can_attach_to),
35
+				'EXM_key' => new EE_Plain_Text_Field('EXM_key', esc_html__("Meta Key", "event_espresso"), false, ''),
36
+				'EXM_value' => new EE_Maybe_Serialized_Text_Field('EXM_value', esc_html__("Meta Value", "event_espresso"), true)
37 37
 
38
-            ));
39
-        $this->_model_relations = array();
40
-        foreach ($models_this_can_attach_to as $model) {
41
-            $this->_model_relations[ $model ] = new EE_Belongs_To_Any_Relation();
42
-        }
43
-        foreach ($this->cap_contexts_to_cap_action_map() as $cap_context => $action) {
44
-            $this->_cap_restriction_generators[ $cap_context ] = new EE_Restriction_Generator_Meta('EXM_key', 'EXM_value');
45
-        }
46
-        parent::__construct($timezone);
47
-    }
38
+			));
39
+		$this->_model_relations = array();
40
+		foreach ($models_this_can_attach_to as $model) {
41
+			$this->_model_relations[ $model ] = new EE_Belongs_To_Any_Relation();
42
+		}
43
+		foreach ($this->cap_contexts_to_cap_action_map() as $cap_context => $action) {
44
+			$this->_cap_restriction_generators[ $cap_context ] = new EE_Restriction_Generator_Meta('EXM_key', 'EXM_value');
45
+		}
46
+		parent::__construct($timezone);
47
+	}
48 48
 }
Please login to merge, or discard this patch.
core/db_models/EEM_Attendee.model.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -284,8 +284,8 @@  discard block
 block discarded – undo
284 284
      */
285 285
     public function get_attendee_field_for_system_question($system_question_string)
286 286
     {
287
-        return isset($this->_system_question_to_attendee_field_name[ $system_question_string ])
288
-            ? $this->_system_question_to_attendee_field_name[ $system_question_string ]
287
+        return isset($this->_system_question_to_attendee_field_name[$system_question_string])
288
+            ? $this->_system_question_to_attendee_field_name[$system_question_string]
289 289
             : null;
290 290
     }
291 291
 
@@ -353,7 +353,7 @@  discard block
 block discarded – undo
353 353
             return false;
354 354
         }
355 355
         $attendee = $this->get_all(array($where_cols_n_values));
356
-        if (! empty($attendee)) {
356
+        if ( ! empty($attendee)) {
357 357
             return array_shift($attendee);
358 358
         }
359 359
         return false;
Please login to merge, or discard this patch.
Indentation   +419 added lines, -419 removed lines patch added patch discarded remove patch
@@ -12,432 +12,432 @@
 block discarded – undo
12 12
  */
13 13
 class EEM_Attendee extends EEM_CPT_Base
14 14
 {
15
-    // private instance of the Attendee object
16
-    protected static $_instance = null;
15
+	// private instance of the Attendee object
16
+	protected static $_instance = null;
17 17
 
18
-    /**
19
-     * QST_system for questions are strings not integers now,
20
-     * so these constants are deprecated.
21
-     * Please instead use the EEM_Attendee::system_question_* constants
22
-     *
23
-     * @deprecated
24
-     */
25
-    const fname_question_id = 1;
18
+	/**
19
+	 * QST_system for questions are strings not integers now,
20
+	 * so these constants are deprecated.
21
+	 * Please instead use the EEM_Attendee::system_question_* constants
22
+	 *
23
+	 * @deprecated
24
+	 */
25
+	const fname_question_id = 1;
26 26
 
27
-    /**
28
-     * @deprecated
29
-     */
30
-    const lname_question_id = 2;
27
+	/**
28
+	 * @deprecated
29
+	 */
30
+	const lname_question_id = 2;
31 31
 
32 32
 
33
-    /**
34
-     * @deprecated
35
-     */
36
-    const email_question_id = 3;
33
+	/**
34
+	 * @deprecated
35
+	 */
36
+	const email_question_id = 3;
37 37
 
38 38
 
39
-    /**
40
-     * @deprecated
41
-     */
42
-    const address_question_id = 4;
39
+	/**
40
+	 * @deprecated
41
+	 */
42
+	const address_question_id = 4;
43 43
 
44 44
 
45
-    /**
46
-     * @deprecated
47
-     */
48
-    const address2_question_id = 5;
45
+	/**
46
+	 * @deprecated
47
+	 */
48
+	const address2_question_id = 5;
49 49
 
50
-
51
-    /**
52
-     * @deprecated
53
-     */
54
-    const city_question_id = 6;
55
-
56
-
57
-    /**
58
-     * @deprecated
59
-     */
60
-    const state_question_id = 7;
61
-
62
-
63
-    /**
64
-     * @deprecated
65
-     */
66
-    const country_question_id = 8;
67
-
68
-
69
-    /**
70
-     * @deprecated
71
-     */
72
-    const zip_question_id = 9;
73
-
74
-
75
-    /**
76
-     * @deprecated
77
-     */
78
-    const phone_question_id = 10;
79
-
80
-    /**
81
-     * When looking for questions that correspond to attendee fields,
82
-     * look for the question with this QST_system value.
83
-     * These replace the old constants like EEM_Attendee::*_question_id
84
-     */
85
-    const system_question_fname = 'fname';
86
-
87
-    const system_question_lname = 'lname';
88
-
89
-    const system_question_email = 'email';
90
-
91
-    const system_question_email_confirm = 'email_confirm';
92
-
93
-    const system_question_address = 'address';
94
-
95
-    const system_question_address2 = 'address2';
96
-
97
-    const system_question_city = 'city';
98
-
99
-    const system_question_state = 'state';
100
-
101
-    const system_question_country = 'country';
102
-
103
-    const system_question_zip = 'zip';
104
-
105
-    const system_question_phone = 'phone';
106
-
107
-    /**
108
-     * Keys are all the EEM_Attendee::system_question_* constants, which are
109
-     * also all the values of QST_system in the questions table, and values
110
-     * are their corresponding Attendee field names
111
-     *
112
-     * @var array
113
-     */
114
-    protected $_system_question_to_attendee_field_name = array(
115
-        EEM_Attendee::system_question_fname    => 'ATT_fname',
116
-        EEM_Attendee::system_question_lname    => 'ATT_lname',
117
-        EEM_Attendee::system_question_email    => 'ATT_email',
118
-        EEM_Attendee::system_question_address  => 'ATT_address',
119
-        EEM_Attendee::system_question_address2 => 'ATT_address2',
120
-        EEM_Attendee::system_question_city     => 'ATT_city',
121
-        EEM_Attendee::system_question_state    => 'STA_ID',
122
-        EEM_Attendee::system_question_country  => 'CNT_ISO',
123
-        EEM_Attendee::system_question_zip      => 'ATT_zip',
124
-        EEM_Attendee::system_question_phone    => 'ATT_phone',
125
-    );
126
-
127
-
128
-
129
-    /**
130
-     * EEM_Attendee constructor.
131
-     *
132
-     * @param null              $timezone
133
-     * @param ModelFieldFactory $model_field_factory
134
-     * @throws EE_Error
135
-     * @throws InvalidArgumentException
136
-     */
137
-    protected function __construct($timezone, ModelFieldFactory $model_field_factory)
138
-    {
139
-        $this->singular_item = esc_html__('Attendee', 'event_espresso');
140
-        $this->plural_item = esc_html__('Attendees', 'event_espresso');
141
-        $this->_tables = array(
142
-            'Attendee_CPT'  => new EE_Primary_Table('posts', 'ID'),
143
-            'Attendee_Meta' => new EE_Secondary_Table(
144
-                'esp_attendee_meta',
145
-                'ATTM_ID',
146
-                'ATT_ID'
147
-            ),
148
-        );
149
-        $this->_fields = array(
150
-            'Attendee_CPT'  => array(
151
-                'ATT_ID'        => $model_field_factory->createPrimaryKeyIntField(
152
-                    'ID',
153
-                    esc_html__('Attendee ID', 'event_espresso')
154
-                ),
155
-                'ATT_full_name' => $model_field_factory->createPlainTextField(
156
-                    'post_title',
157
-                    esc_html__('Attendee Full Name', 'event_espresso'),
158
-                    false,
159
-                    esc_html__('Unknown', 'event_espresso')
160
-                ),
161
-                'ATT_bio'       => $model_field_factory->createPostContentField(
162
-                    'post_content',
163
-                    esc_html__('Attendee Biography', 'event_espresso'),
164
-                    false,
165
-                    esc_html__('No Biography Provided', 'event_espresso')
166
-                ),
167
-                'ATT_slug'      => $model_field_factory->createSlugField(
168
-                    'post_name',
169
-                    esc_html__('Attendee URL Slug', 'event_espresso')
170
-                ),
171
-                'ATT_created'   => $model_field_factory->createDatetimeField(
172
-                    'post_date',
173
-                    esc_html__('Time Attendee Created', 'event_espresso')
174
-                ),
175
-                'ATT_short_bio' => $model_field_factory->createSimpleHtmlField(
176
-                    'post_excerpt',
177
-                    esc_html__('Attendee Short Biography', 'event_espresso'),
178
-                    true,
179
-                    esc_html__('No Biography Provided', 'event_espresso')
180
-                ),
181
-                'ATT_modified'  => $model_field_factory->createDatetimeField(
182
-                    'post_modified',
183
-                    esc_html__('Time Attendee Last Modified', 'event_espresso')
184
-                ),
185
-                'ATT_author'    => $model_field_factory->createWpUserField(
186
-                    'post_author',
187
-                    esc_html__('Creator ID of the first Event attended', 'event_espresso'),
188
-                    false
189
-                ),
190
-                'ATT_parent'    => $model_field_factory->createDbOnlyIntField(
191
-                    'post_parent',
192
-                    esc_html__('Parent Attendee (unused)', 'event_espresso'),
193
-                    false,
194
-                    0
195
-                ),
196
-                'post_type'     => $model_field_factory->createWpPostTypeField('espresso_attendees'),
197
-                'status'        => $model_field_factory->createWpPostStatusField(
198
-                    'post_status',
199
-                    esc_html__('Attendee Status', 'event_espresso'),
200
-                    false,
201
-                    'publish'
202
-                ),
203
-                'password' => new EE_Password_Field(
204
-                    'post_password',
205
-                    esc_html__('Password', 'event_espresso'),
206
-                    false,
207
-                    '',
208
-                    array(
209
-                        'ATT_bio',
210
-                        'ATT_short_bio',
211
-                        'ATT_address',
212
-                        'ATT_address2',
213
-                        'ATT_city',
214
-                        'STA_ID',
215
-                        'CNT_ISO',
216
-                        'ATT_zip',
217
-                        'ATT_email',
218
-                        'ATT_phone'
219
-                    )
220
-                )
221
-            ),
222
-            'Attendee_Meta' => array(
223
-                'ATTM_ID'      => $model_field_factory->createDbOnlyIntField(
224
-                    'ATTM_ID',
225
-                    esc_html__('Attendee Meta Row ID', 'event_espresso'),
226
-                    false
227
-                ),
228
-                'ATT_ID_fk'    => $model_field_factory->createDbOnlyIntField(
229
-                    'ATT_ID',
230
-                    esc_html__('Foreign Key to Attendee in Post Table', 'event_espresso'),
231
-                    false
232
-                ),
233
-                'ATT_fname'    => $model_field_factory->createPlainTextField(
234
-                    'ATT_fname',
235
-                    esc_html__('First Name', 'event_espresso')
236
-                ),
237
-                'ATT_lname'    => $model_field_factory->createPlainTextField(
238
-                    'ATT_lname',
239
-                    esc_html__('Last Name', 'event_espresso')
240
-                ),
241
-                'ATT_address'  => $model_field_factory->createPlainTextField(
242
-                    'ATT_address',
243
-                    esc_html__('Address Part 1', 'event_espresso')
244
-                ),
245
-                'ATT_address2' => $model_field_factory->createPlainTextField(
246
-                    'ATT_address2',
247
-                    esc_html__('Address Part 2', 'event_espresso')
248
-                ),
249
-                'ATT_city'     => $model_field_factory->createPlainTextField(
250
-                    'ATT_city',
251
-                    esc_html__('City', 'event_espresso')
252
-                ),
253
-                'STA_ID'       => $model_field_factory->createForeignKeyIntField(
254
-                    'STA_ID',
255
-                    esc_html__('State', 'event_espresso'),
256
-                    true,
257
-                    0,
258
-                    'State'
259
-                ),
260
-                'CNT_ISO'      => $model_field_factory->createForeignKeyStringField(
261
-                    'CNT_ISO',
262
-                    esc_html__('Country', 'event_espresso'),
263
-                    true,
264
-                    '',
265
-                    'Country'
266
-                ),
267
-                'ATT_zip'      => $model_field_factory->createPlainTextField(
268
-                    'ATT_zip',
269
-                    esc_html__('ZIP/Postal Code', 'event_espresso')
270
-                ),
271
-                'ATT_email'    => $model_field_factory->createEmailField(
272
-                    'ATT_email',
273
-                    esc_html__('Email Address', 'event_espresso')
274
-                ),
275
-                'ATT_phone'    => $model_field_factory->createPlainTextField(
276
-                    'ATT_phone',
277
-                    esc_html__('Phone', 'event_espresso')
278
-                ),
279
-            ),
280
-        );
281
-        $this->_model_relations = array(
282
-            'Registration'      => new EE_Has_Many_Relation(),
283
-            'State'             => new EE_Belongs_To_Relation(),
284
-            'Country'           => new EE_Belongs_To_Relation(),
285
-            'Event'             => new EE_HABTM_Relation('Registration', false),
286
-            'WP_User'           => new EE_Belongs_To_Relation(),
287
-            'Message'           => new EE_Has_Many_Any_Relation(false),
288
-            // allow deletion of attendees even if they have messages in the queue for them.
289
-            'Term_Relationship' => new EE_Has_Many_Relation(),
290
-            'Term_Taxonomy'     => new EE_HABTM_Relation('Term_Relationship'),
291
-        );
292
-        $this->_caps_slug = 'contacts';
293
-        $this->model_chain_to_password = '';
294
-        parent::__construct($timezone);
295
-    }
296
-
297
-
298
-
299
-    /**
300
-     * Gets the name of the field on the attendee model corresponding to the system question string
301
-     * which should be one of the keys from EEM_Attendee::_system_question_to_attendee_field_name
302
-     *
303
-     * @param string $system_question_string
304
-     * @return string|null if not found
305
-     */
306
-    public function get_attendee_field_for_system_question($system_question_string)
307
-    {
308
-        return isset($this->_system_question_to_attendee_field_name[ $system_question_string ])
309
-            ? $this->_system_question_to_attendee_field_name[ $system_question_string ]
310
-            : null;
311
-    }
312
-
313
-
314
-
315
-    /**
316
-     * Gets mapping from esp_question.QST_system values to their corresponding attendee field names
317
-     *
318
-     * @return array
319
-     */
320
-    public function system_question_to_attendee_field_mapping()
321
-    {
322
-        return $this->_system_question_to_attendee_field_name;
323
-    }
324
-
325
-
326
-
327
-    /**
328
-     * Gets all the attendees for a transaction (by using the esp_registration as a join table)
329
-     *
330
-     * @param EE_Transaction /int $transaction_id_or_obj EE_Transaction or its ID
331
-     * @return EE_Attendee[]|EE_Base_Class[]
332
-     * @throws EE_Error
333
-     */
334
-    public function get_attendees_for_transaction($transaction_id_or_obj)
335
-    {
336
-        return $this->get_all(
337
-            array(
338
-                array(
339
-                    'Registration.Transaction.TXN_ID' => $transaction_id_or_obj instanceof EE_Transaction
340
-                        ? $transaction_id_or_obj->ID()
341
-                        : $transaction_id_or_obj,
342
-                ),
343
-            )
344
-        );
345
-    }
346
-
347
-
348
-
349
-    /**
350
-     * retrieve  a single attendee from db via their ID
351
-     *
352
-     * @param $ATT_ID
353
-     * @return mixed array on success, FALSE on fail
354
-     * @deprecated
355
-     */
356
-    public function get_attendee_by_ID($ATT_ID = false)
357
-    {
358
-        // retrieve a particular EE_Attendee
359
-        return $this->get_one_by_ID($ATT_ID);
360
-    }
361
-
362
-
363
-
364
-    /**
365
-     * retrieve  a single attendee from db via their ID
366
-     *
367
-     * @param array $where_cols_n_values
368
-     * @return mixed array on success, FALSE on fail
369
-     * @throws EE_Error
370
-     */
371
-    public function get_attendee($where_cols_n_values = array())
372
-    {
373
-        if (empty($where_cols_n_values)) {
374
-            return false;
375
-        }
376
-        $attendee = $this->get_all(array($where_cols_n_values));
377
-        if (! empty($attendee)) {
378
-            return array_shift($attendee);
379
-        }
380
-        return false;
381
-    }
382
-
383
-
384
-
385
-    /**
386
-     * Search for an existing Attendee record in the DB
387
-     *
388
-     * @param array $where_cols_n_values
389
-     * @return bool|mixed
390
-     * @throws EE_Error
391
-     */
392
-    public function find_existing_attendee($where_cols_n_values = null)
393
-    {
394
-        // search by combo of first and last names plus the email address
395
-        $attendee_data_keys = array(
396
-            'ATT_fname' => $this->_ATT_fname,
397
-            'ATT_lname' => $this->_ATT_lname,
398
-            'ATT_email' => $this->_ATT_email,
399
-        );
400
-        // no search params means attendee object already exists.
401
-        $where_cols_n_values = is_array($where_cols_n_values) && ! empty($where_cols_n_values)
402
-            ? $where_cols_n_values
403
-            : $attendee_data_keys;
404
-        $valid_data = true;
405
-        // check for required values
406
-        $valid_data = isset($where_cols_n_values['ATT_fname']) && ! empty($where_cols_n_values['ATT_fname'])
407
-            ? $valid_data
408
-            : false;
409
-        $valid_data = isset($where_cols_n_values['ATT_lname']) && ! empty($where_cols_n_values['ATT_lname'])
410
-            ? $valid_data
411
-            : false;
412
-        $valid_data = isset($where_cols_n_values['ATT_email']) && ! empty($where_cols_n_values['ATT_email'])
413
-            ? $valid_data
414
-            : false;
415
-        if ($valid_data) {
416
-            $attendee = $this->get_attendee($where_cols_n_values);
417
-            if ($attendee instanceof EE_Attendee) {
418
-                return $attendee;
419
-            }
420
-        }
421
-        return false;
422
-    }
423
-
424
-
425
-
426
-    /**
427
-     * Takes an incoming array of EE_Registration ids
428
-     * and sends back a list of corresponding non duplicate EE_Attendee objects.
429
-     *
430
-     * @since  4.3.0
431
-     * @param  array $ids array of EE_Registration ids
432
-     * @return EE_Attendee[]|EE_Base_Class[]
433
-     * @throws EE_Error
434
-     */
435
-    public function get_array_of_contacts_from_reg_ids($ids)
436
-    {
437
-        $ids = (array) $ids;
438
-        $_where = array(
439
-            'Registration.REG_ID' => array('in', $ids),
440
-        );
441
-        return $this->get_all(array($_where));
442
-    }
50
+
51
+	/**
52
+	 * @deprecated
53
+	 */
54
+	const city_question_id = 6;
55
+
56
+
57
+	/**
58
+	 * @deprecated
59
+	 */
60
+	const state_question_id = 7;
61
+
62
+
63
+	/**
64
+	 * @deprecated
65
+	 */
66
+	const country_question_id = 8;
67
+
68
+
69
+	/**
70
+	 * @deprecated
71
+	 */
72
+	const zip_question_id = 9;
73
+
74
+
75
+	/**
76
+	 * @deprecated
77
+	 */
78
+	const phone_question_id = 10;
79
+
80
+	/**
81
+	 * When looking for questions that correspond to attendee fields,
82
+	 * look for the question with this QST_system value.
83
+	 * These replace the old constants like EEM_Attendee::*_question_id
84
+	 */
85
+	const system_question_fname = 'fname';
86
+
87
+	const system_question_lname = 'lname';
88
+
89
+	const system_question_email = 'email';
90
+
91
+	const system_question_email_confirm = 'email_confirm';
92
+
93
+	const system_question_address = 'address';
94
+
95
+	const system_question_address2 = 'address2';
96
+
97
+	const system_question_city = 'city';
98
+
99
+	const system_question_state = 'state';
100
+
101
+	const system_question_country = 'country';
102
+
103
+	const system_question_zip = 'zip';
104
+
105
+	const system_question_phone = 'phone';
106
+
107
+	/**
108
+	 * Keys are all the EEM_Attendee::system_question_* constants, which are
109
+	 * also all the values of QST_system in the questions table, and values
110
+	 * are their corresponding Attendee field names
111
+	 *
112
+	 * @var array
113
+	 */
114
+	protected $_system_question_to_attendee_field_name = array(
115
+		EEM_Attendee::system_question_fname    => 'ATT_fname',
116
+		EEM_Attendee::system_question_lname    => 'ATT_lname',
117
+		EEM_Attendee::system_question_email    => 'ATT_email',
118
+		EEM_Attendee::system_question_address  => 'ATT_address',
119
+		EEM_Attendee::system_question_address2 => 'ATT_address2',
120
+		EEM_Attendee::system_question_city     => 'ATT_city',
121
+		EEM_Attendee::system_question_state    => 'STA_ID',
122
+		EEM_Attendee::system_question_country  => 'CNT_ISO',
123
+		EEM_Attendee::system_question_zip      => 'ATT_zip',
124
+		EEM_Attendee::system_question_phone    => 'ATT_phone',
125
+	);
126
+
127
+
128
+
129
+	/**
130
+	 * EEM_Attendee constructor.
131
+	 *
132
+	 * @param null              $timezone
133
+	 * @param ModelFieldFactory $model_field_factory
134
+	 * @throws EE_Error
135
+	 * @throws InvalidArgumentException
136
+	 */
137
+	protected function __construct($timezone, ModelFieldFactory $model_field_factory)
138
+	{
139
+		$this->singular_item = esc_html__('Attendee', 'event_espresso');
140
+		$this->plural_item = esc_html__('Attendees', 'event_espresso');
141
+		$this->_tables = array(
142
+			'Attendee_CPT'  => new EE_Primary_Table('posts', 'ID'),
143
+			'Attendee_Meta' => new EE_Secondary_Table(
144
+				'esp_attendee_meta',
145
+				'ATTM_ID',
146
+				'ATT_ID'
147
+			),
148
+		);
149
+		$this->_fields = array(
150
+			'Attendee_CPT'  => array(
151
+				'ATT_ID'        => $model_field_factory->createPrimaryKeyIntField(
152
+					'ID',
153
+					esc_html__('Attendee ID', 'event_espresso')
154
+				),
155
+				'ATT_full_name' => $model_field_factory->createPlainTextField(
156
+					'post_title',
157
+					esc_html__('Attendee Full Name', 'event_espresso'),
158
+					false,
159
+					esc_html__('Unknown', 'event_espresso')
160
+				),
161
+				'ATT_bio'       => $model_field_factory->createPostContentField(
162
+					'post_content',
163
+					esc_html__('Attendee Biography', 'event_espresso'),
164
+					false,
165
+					esc_html__('No Biography Provided', 'event_espresso')
166
+				),
167
+				'ATT_slug'      => $model_field_factory->createSlugField(
168
+					'post_name',
169
+					esc_html__('Attendee URL Slug', 'event_espresso')
170
+				),
171
+				'ATT_created'   => $model_field_factory->createDatetimeField(
172
+					'post_date',
173
+					esc_html__('Time Attendee Created', 'event_espresso')
174
+				),
175
+				'ATT_short_bio' => $model_field_factory->createSimpleHtmlField(
176
+					'post_excerpt',
177
+					esc_html__('Attendee Short Biography', 'event_espresso'),
178
+					true,
179
+					esc_html__('No Biography Provided', 'event_espresso')
180
+				),
181
+				'ATT_modified'  => $model_field_factory->createDatetimeField(
182
+					'post_modified',
183
+					esc_html__('Time Attendee Last Modified', 'event_espresso')
184
+				),
185
+				'ATT_author'    => $model_field_factory->createWpUserField(
186
+					'post_author',
187
+					esc_html__('Creator ID of the first Event attended', 'event_espresso'),
188
+					false
189
+				),
190
+				'ATT_parent'    => $model_field_factory->createDbOnlyIntField(
191
+					'post_parent',
192
+					esc_html__('Parent Attendee (unused)', 'event_espresso'),
193
+					false,
194
+					0
195
+				),
196
+				'post_type'     => $model_field_factory->createWpPostTypeField('espresso_attendees'),
197
+				'status'        => $model_field_factory->createWpPostStatusField(
198
+					'post_status',
199
+					esc_html__('Attendee Status', 'event_espresso'),
200
+					false,
201
+					'publish'
202
+				),
203
+				'password' => new EE_Password_Field(
204
+					'post_password',
205
+					esc_html__('Password', 'event_espresso'),
206
+					false,
207
+					'',
208
+					array(
209
+						'ATT_bio',
210
+						'ATT_short_bio',
211
+						'ATT_address',
212
+						'ATT_address2',
213
+						'ATT_city',
214
+						'STA_ID',
215
+						'CNT_ISO',
216
+						'ATT_zip',
217
+						'ATT_email',
218
+						'ATT_phone'
219
+					)
220
+				)
221
+			),
222
+			'Attendee_Meta' => array(
223
+				'ATTM_ID'      => $model_field_factory->createDbOnlyIntField(
224
+					'ATTM_ID',
225
+					esc_html__('Attendee Meta Row ID', 'event_espresso'),
226
+					false
227
+				),
228
+				'ATT_ID_fk'    => $model_field_factory->createDbOnlyIntField(
229
+					'ATT_ID',
230
+					esc_html__('Foreign Key to Attendee in Post Table', 'event_espresso'),
231
+					false
232
+				),
233
+				'ATT_fname'    => $model_field_factory->createPlainTextField(
234
+					'ATT_fname',
235
+					esc_html__('First Name', 'event_espresso')
236
+				),
237
+				'ATT_lname'    => $model_field_factory->createPlainTextField(
238
+					'ATT_lname',
239
+					esc_html__('Last Name', 'event_espresso')
240
+				),
241
+				'ATT_address'  => $model_field_factory->createPlainTextField(
242
+					'ATT_address',
243
+					esc_html__('Address Part 1', 'event_espresso')
244
+				),
245
+				'ATT_address2' => $model_field_factory->createPlainTextField(
246
+					'ATT_address2',
247
+					esc_html__('Address Part 2', 'event_espresso')
248
+				),
249
+				'ATT_city'     => $model_field_factory->createPlainTextField(
250
+					'ATT_city',
251
+					esc_html__('City', 'event_espresso')
252
+				),
253
+				'STA_ID'       => $model_field_factory->createForeignKeyIntField(
254
+					'STA_ID',
255
+					esc_html__('State', 'event_espresso'),
256
+					true,
257
+					0,
258
+					'State'
259
+				),
260
+				'CNT_ISO'      => $model_field_factory->createForeignKeyStringField(
261
+					'CNT_ISO',
262
+					esc_html__('Country', 'event_espresso'),
263
+					true,
264
+					'',
265
+					'Country'
266
+				),
267
+				'ATT_zip'      => $model_field_factory->createPlainTextField(
268
+					'ATT_zip',
269
+					esc_html__('ZIP/Postal Code', 'event_espresso')
270
+				),
271
+				'ATT_email'    => $model_field_factory->createEmailField(
272
+					'ATT_email',
273
+					esc_html__('Email Address', 'event_espresso')
274
+				),
275
+				'ATT_phone'    => $model_field_factory->createPlainTextField(
276
+					'ATT_phone',
277
+					esc_html__('Phone', 'event_espresso')
278
+				),
279
+			),
280
+		);
281
+		$this->_model_relations = array(
282
+			'Registration'      => new EE_Has_Many_Relation(),
283
+			'State'             => new EE_Belongs_To_Relation(),
284
+			'Country'           => new EE_Belongs_To_Relation(),
285
+			'Event'             => new EE_HABTM_Relation('Registration', false),
286
+			'WP_User'           => new EE_Belongs_To_Relation(),
287
+			'Message'           => new EE_Has_Many_Any_Relation(false),
288
+			// allow deletion of attendees even if they have messages in the queue for them.
289
+			'Term_Relationship' => new EE_Has_Many_Relation(),
290
+			'Term_Taxonomy'     => new EE_HABTM_Relation('Term_Relationship'),
291
+		);
292
+		$this->_caps_slug = 'contacts';
293
+		$this->model_chain_to_password = '';
294
+		parent::__construct($timezone);
295
+	}
296
+
297
+
298
+
299
+	/**
300
+	 * Gets the name of the field on the attendee model corresponding to the system question string
301
+	 * which should be one of the keys from EEM_Attendee::_system_question_to_attendee_field_name
302
+	 *
303
+	 * @param string $system_question_string
304
+	 * @return string|null if not found
305
+	 */
306
+	public function get_attendee_field_for_system_question($system_question_string)
307
+	{
308
+		return isset($this->_system_question_to_attendee_field_name[ $system_question_string ])
309
+			? $this->_system_question_to_attendee_field_name[ $system_question_string ]
310
+			: null;
311
+	}
312
+
313
+
314
+
315
+	/**
316
+	 * Gets mapping from esp_question.QST_system values to their corresponding attendee field names
317
+	 *
318
+	 * @return array
319
+	 */
320
+	public function system_question_to_attendee_field_mapping()
321
+	{
322
+		return $this->_system_question_to_attendee_field_name;
323
+	}
324
+
325
+
326
+
327
+	/**
328
+	 * Gets all the attendees for a transaction (by using the esp_registration as a join table)
329
+	 *
330
+	 * @param EE_Transaction /int $transaction_id_or_obj EE_Transaction or its ID
331
+	 * @return EE_Attendee[]|EE_Base_Class[]
332
+	 * @throws EE_Error
333
+	 */
334
+	public function get_attendees_for_transaction($transaction_id_or_obj)
335
+	{
336
+		return $this->get_all(
337
+			array(
338
+				array(
339
+					'Registration.Transaction.TXN_ID' => $transaction_id_or_obj instanceof EE_Transaction
340
+						? $transaction_id_or_obj->ID()
341
+						: $transaction_id_or_obj,
342
+				),
343
+			)
344
+		);
345
+	}
346
+
347
+
348
+
349
+	/**
350
+	 * retrieve  a single attendee from db via their ID
351
+	 *
352
+	 * @param $ATT_ID
353
+	 * @return mixed array on success, FALSE on fail
354
+	 * @deprecated
355
+	 */
356
+	public function get_attendee_by_ID($ATT_ID = false)
357
+	{
358
+		// retrieve a particular EE_Attendee
359
+		return $this->get_one_by_ID($ATT_ID);
360
+	}
361
+
362
+
363
+
364
+	/**
365
+	 * retrieve  a single attendee from db via their ID
366
+	 *
367
+	 * @param array $where_cols_n_values
368
+	 * @return mixed array on success, FALSE on fail
369
+	 * @throws EE_Error
370
+	 */
371
+	public function get_attendee($where_cols_n_values = array())
372
+	{
373
+		if (empty($where_cols_n_values)) {
374
+			return false;
375
+		}
376
+		$attendee = $this->get_all(array($where_cols_n_values));
377
+		if (! empty($attendee)) {
378
+			return array_shift($attendee);
379
+		}
380
+		return false;
381
+	}
382
+
383
+
384
+
385
+	/**
386
+	 * Search for an existing Attendee record in the DB
387
+	 *
388
+	 * @param array $where_cols_n_values
389
+	 * @return bool|mixed
390
+	 * @throws EE_Error
391
+	 */
392
+	public function find_existing_attendee($where_cols_n_values = null)
393
+	{
394
+		// search by combo of first and last names plus the email address
395
+		$attendee_data_keys = array(
396
+			'ATT_fname' => $this->_ATT_fname,
397
+			'ATT_lname' => $this->_ATT_lname,
398
+			'ATT_email' => $this->_ATT_email,
399
+		);
400
+		// no search params means attendee object already exists.
401
+		$where_cols_n_values = is_array($where_cols_n_values) && ! empty($where_cols_n_values)
402
+			? $where_cols_n_values
403
+			: $attendee_data_keys;
404
+		$valid_data = true;
405
+		// check for required values
406
+		$valid_data = isset($where_cols_n_values['ATT_fname']) && ! empty($where_cols_n_values['ATT_fname'])
407
+			? $valid_data
408
+			: false;
409
+		$valid_data = isset($where_cols_n_values['ATT_lname']) && ! empty($where_cols_n_values['ATT_lname'])
410
+			? $valid_data
411
+			: false;
412
+		$valid_data = isset($where_cols_n_values['ATT_email']) && ! empty($where_cols_n_values['ATT_email'])
413
+			? $valid_data
414
+			: false;
415
+		if ($valid_data) {
416
+			$attendee = $this->get_attendee($where_cols_n_values);
417
+			if ($attendee instanceof EE_Attendee) {
418
+				return $attendee;
419
+			}
420
+		}
421
+		return false;
422
+	}
423
+
424
+
425
+
426
+	/**
427
+	 * Takes an incoming array of EE_Registration ids
428
+	 * and sends back a list of corresponding non duplicate EE_Attendee objects.
429
+	 *
430
+	 * @since  4.3.0
431
+	 * @param  array $ids array of EE_Registration ids
432
+	 * @return EE_Attendee[]|EE_Base_Class[]
433
+	 * @throws EE_Error
434
+	 */
435
+	public function get_array_of_contacts_from_reg_ids($ids)
436
+	{
437
+		$ids = (array) $ids;
438
+		$_where = array(
439
+			'Registration.REG_ID' => array('in', $ids),
440
+		);
441
+		return $this->get_all(array($_where));
442
+	}
443 443
 }
Please login to merge, or discard this patch.