Completed
Branch new-addon-api (b7bde0)
by
unknown
18:29 queued 08:41
created
core/db_classes/EE_Payment.class.php 3 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -296,7 +296,7 @@  discard block
 block discarded – undo
296 296
      */
297 297
     public function timestamp($dt_frmt = '', $tm_frmt = '')
298 298
     {
299
-        return $this->get_i18n_datetime('PAY_timestamp', trim($dt_frmt . ' ' . $tm_frmt));
299
+        return $this->get_i18n_datetime('PAY_timestamp', trim($dt_frmt.' '.$tm_frmt));
300 300
     }
301 301
 
302 302
 
@@ -481,7 +481,7 @@  discard block
 block discarded – undo
481 481
                     : '';
482 482
                 break;
483 483
         }
484
-        return $icon . $status[ $this->STS_ID() ];
484
+        return $icon.$status[$this->STS_ID()];
485 485
     }
486 486
 
487 487
 
@@ -627,7 +627,7 @@  discard block
 block discarded – undo
627 627
     public function redirect_form($inside_form_html = null)
628 628
     {
629 629
         $redirect_url = $this->redirect_url();
630
-        if (! empty($redirect_url)) {
630
+        if ( ! empty($redirect_url)) {
631 631
             // what ? no inner form content?
632 632
             if ($inside_form_html === null) {
633 633
                 $inside_form_html = EEH_HTML::p(
@@ -657,7 +657,7 @@  discard block
 block discarded – undo
657 657
                 $get_params = null;
658 658
                 parse_str($querystring, $get_params);
659 659
                 $inside_form_html .= $this->_args_as_inputs($get_params);
660
-                $redirect_url = str_replace('?' . $querystring, '', $redirect_url);
660
+                $redirect_url = str_replace('?'.$querystring, '', $redirect_url);
661 661
             }
662 662
             $form = EEH_HTML::nl(1)
663 663
                     . '<form method="'
@@ -665,9 +665,9 @@  discard block
 block discarded – undo
665 665
                     . '" name="gateway_form" action="'
666 666
                     . $redirect_url
667 667
                     . '">';
668
-            $form .= EEH_HTML::nl(1) . $this->redirect_args_as_inputs();
668
+            $form .= EEH_HTML::nl(1).$this->redirect_args_as_inputs();
669 669
             $form .= $inside_form_html;
670
-            $form .= EEH_HTML::nl(-1) . '</form>' . EEH_HTML::nl(-1);
670
+            $form .= EEH_HTML::nl(-1).'</form>'.EEH_HTML::nl(-1);
671 671
             return $form;
672 672
         } else {
673 673
             return null;
Please login to merge, or discard this patch.
Doc Comments   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
      * @param array  $props_n_values          incoming values
14 14
      * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
15 15
      *                                        used.)
16
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
16
+     * @param string[]  $date_formats            incoming date_formats in an array where the first value is the
17 17
      *                                        date_format and the second value is the time format
18 18
      * @return EE_Payment
19 19
      * @throws \EE_Error
@@ -588,7 +588,7 @@  discard block
 block discarded – undo
588 588
      * Gets all the extra meta info on this payment
589 589
      *
590 590
      * @param array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
591
-     * @return EE_Extra_Meta
591
+     * @return EE_Base_Class[]
592 592
      * @throws \EE_Error
593 593
      */
594 594
     public function extra_meta($query_params = array())
@@ -836,7 +836,7 @@  discard block
 block discarded – undo
836 836
     /**
837 837
      * Returns the payment's transaction's primary registration
838 838
      *
839
-     * @return EE_Registration|null
839
+     * @return EE_Base_Class|null
840 840
      */
841 841
     public function get_primary_registration()
842 842
     {
Please login to merge, or discard this patch.
Indentation   +851 added lines, -851 removed lines patch added patch discarded remove patch
@@ -9,855 +9,855 @@
 block discarded – undo
9 9
 class EE_Payment extends EE_Base_Class implements EEI_Payment
10 10
 {
11 11
 
12
-    /**
13
-     * @param array  $props_n_values          incoming values
14
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
15
-     *                                        used.)
16
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
17
-     *                                        date_format and the second value is the time format
18
-     * @return EE_Payment
19
-     * @throws \EE_Error
20
-     */
21
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
22
-    {
23
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
24
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
25
-    }
26
-
27
-
28
-    /**
29
-     * @param array  $props_n_values  incoming values from the database
30
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
31
-     *                                the website will be used.
32
-     * @return EE_Payment
33
-     * @throws \EE_Error
34
-     */
35
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
-    {
37
-        return new self($props_n_values, true, $timezone);
38
-    }
39
-
40
-
41
-    /**
42
-     * Set Transaction ID
43
-     *
44
-     * @access public
45
-     * @param int $TXN_ID
46
-     * @throws \EE_Error
47
-     */
48
-    public function set_transaction_id($TXN_ID = 0)
49
-    {
50
-        $this->set('TXN_ID', $TXN_ID);
51
-    }
52
-
53
-
54
-    /**
55
-     * Gets the transaction related to this payment
56
-     *
57
-     * @return EE_Transaction
58
-     * @throws \EE_Error
59
-     */
60
-    public function transaction()
61
-    {
62
-        return $this->get_first_related('Transaction');
63
-    }
64
-
65
-
66
-    /**
67
-     * Set Status
68
-     *
69
-     * @access public
70
-     * @param string $STS_ID
71
-     * @throws \EE_Error
72
-     */
73
-    public function set_status($STS_ID = '')
74
-    {
75
-        $this->set('STS_ID', $STS_ID);
76
-    }
77
-
78
-
79
-    /**
80
-     * Set Payment Timestamp
81
-     *
82
-     * @access public
83
-     * @param int $timestamp
84
-     * @throws \EE_Error
85
-     */
86
-    public function set_timestamp($timestamp = 0)
87
-    {
88
-        $this->set('PAY_timestamp', $timestamp);
89
-    }
90
-
91
-
92
-    /**
93
-     * Set Payment Method
94
-     *
95
-     * @access public
96
-     * @param string $PAY_source
97
-     * @throws \EE_Error
98
-     */
99
-    public function set_source($PAY_source = '')
100
-    {
101
-        $this->set('PAY_source', $PAY_source);
102
-    }
103
-
104
-
105
-    /**
106
-     * Set Payment Amount
107
-     *
108
-     * @access public
109
-     * @param float $amount
110
-     * @throws \EE_Error
111
-     */
112
-    public function set_amount($amount = 0.00)
113
-    {
114
-        $this->set('PAY_amount', (float) $amount);
115
-    }
116
-
117
-
118
-    /**
119
-     * Set Payment Gateway Response
120
-     *
121
-     * @access public
122
-     * @param string $gateway_response
123
-     * @throws \EE_Error
124
-     */
125
-    public function set_gateway_response($gateway_response = '')
126
-    {
127
-        $this->set('PAY_gateway_response', $gateway_response);
128
-    }
129
-
130
-
131
-    /**
132
-     * Returns the name of the payment method used on this payment (previously known merely as 'gateway')
133
-     * but since 4.6.0, payment methods are models and the payment keeps a foreign key to the payment method
134
-     * used on it
135
-     *
136
-     * @deprecated
137
-     * @return string
138
-     * @throws \EE_Error
139
-     */
140
-    public function gateway()
141
-    {
142
-        EE_Error::doing_it_wrong(
143
-            'EE_Payment::gateway',
144
-            __(
145
-                'The method EE_Payment::gateway() has been deprecated. Consider instead using EE_Payment::payment_method()->name()',
146
-                'event_espresso'
147
-            ),
148
-            '4.6.0'
149
-        );
150
-        return $this->payment_method() ? $this->payment_method()->name() : __('Unknown', 'event_espresso');
151
-    }
152
-
153
-
154
-    /**
155
-     * Set Gateway Transaction ID
156
-     *
157
-     * @access public
158
-     * @param string $txn_id_chq_nmbr
159
-     * @throws \EE_Error
160
-     */
161
-    public function set_txn_id_chq_nmbr($txn_id_chq_nmbr = '')
162
-    {
163
-        $this->set('PAY_txn_id_chq_nmbr', $txn_id_chq_nmbr);
164
-    }
165
-
166
-
167
-    /**
168
-     * Set Purchase Order Number
169
-     *
170
-     * @access public
171
-     * @param string $po_number
172
-     * @throws \EE_Error
173
-     */
174
-    public function set_po_number($po_number = '')
175
-    {
176
-        $this->set('PAY_po_number', $po_number);
177
-    }
178
-
179
-
180
-    /**
181
-     * Set Extra Accounting Field
182
-     *
183
-     * @access public
184
-     * @param string $extra_accntng
185
-     * @throws \EE_Error
186
-     */
187
-    public function set_extra_accntng($extra_accntng = '')
188
-    {
189
-        $this->set('PAY_extra_accntng', $extra_accntng);
190
-    }
191
-
192
-
193
-    /**
194
-     * Set Payment made via admin flag
195
-     *
196
-     * @access public
197
-     * @param bool $via_admin
198
-     * @throws \EE_Error
199
-     */
200
-    public function set_payment_made_via_admin($via_admin = false)
201
-    {
202
-        if ($via_admin) {
203
-            $this->set('PAY_source', EEM_Payment_Method::scope_admin);
204
-        } else {
205
-            $this->set('PAY_source', EEM_Payment_Method::scope_cart);
206
-        }
207
-    }
208
-
209
-
210
-    /**
211
-     * Set Payment Details
212
-     *
213
-     * @access public
214
-     * @param string|array $details
215
-     * @throws \EE_Error
216
-     */
217
-    public function set_details($details = '')
218
-    {
219
-        if (is_array($details)) {
220
-            array_walk_recursive($details, array($this, '_strip_all_tags_within_array'));
221
-        } else {
222
-            $details = wp_strip_all_tags($details);
223
-        }
224
-        $this->set('PAY_details', $details);
225
-    }
226
-
227
-
228
-    /**
229
-     * Sets redirect_url
230
-     *
231
-     * @param string $redirect_url
232
-     * @throws \EE_Error
233
-     */
234
-    public function set_redirect_url($redirect_url)
235
-    {
236
-        $this->set('PAY_redirect_url', $redirect_url);
237
-    }
238
-
239
-
240
-    /**
241
-     * Sets redirect_args
242
-     *
243
-     * @param array $redirect_args
244
-     * @throws \EE_Error
245
-     */
246
-    public function set_redirect_args($redirect_args)
247
-    {
248
-        $this->set('PAY_redirect_args', $redirect_args);
249
-    }
250
-
251
-
252
-    /**
253
-     * get Payment Transaction ID
254
-     *
255
-     * @access public
256
-     * @throws \EE_Error
257
-     */
258
-    public function TXN_ID()
259
-    {
260
-        return $this->get('TXN_ID');
261
-    }
262
-
263
-
264
-    /**
265
-     * get Payment Status
266
-     *
267
-     * @access public
268
-     * @throws \EE_Error
269
-     */
270
-    public function status()
271
-    {
272
-        return $this->get('STS_ID');
273
-    }
274
-
275
-
276
-    /**
277
-     * get Payment Status
278
-     *
279
-     * @access public
280
-     * @throws \EE_Error
281
-     */
282
-    public function STS_ID()
283
-    {
284
-        return $this->get('STS_ID');
285
-    }
286
-
287
-
288
-    /**
289
-     * get Payment Timestamp
290
-     *
291
-     * @access public
292
-     * @param string $dt_frmt
293
-     * @param string $tm_frmt
294
-     * @return string
295
-     * @throws \EE_Error
296
-     */
297
-    public function timestamp($dt_frmt = '', $tm_frmt = '')
298
-    {
299
-        return $this->get_i18n_datetime('PAY_timestamp', trim($dt_frmt . ' ' . $tm_frmt));
300
-    }
301
-
302
-
303
-    /**
304
-     * get Payment Source
305
-     *
306
-     * @access public
307
-     * @throws \EE_Error
308
-     */
309
-    public function source()
310
-    {
311
-        return $this->get('PAY_source');
312
-    }
313
-
314
-
315
-    /**
316
-     * get Payment Amount
317
-     *
318
-     * @access public
319
-     * @return float
320
-     * @throws \EE_Error
321
-     */
322
-    public function amount()
323
-    {
324
-        return (float) $this->get('PAY_amount');
325
-    }
326
-
327
-
328
-    /**
329
-     * @return mixed
330
-     * @throws \EE_Error
331
-     */
332
-    public function amount_no_code()
333
-    {
334
-        return $this->get_pretty('PAY_amount', 'no_currency_code');
335
-    }
336
-
337
-
338
-    /**
339
-     * get Payment Gateway Response
340
-     *
341
-     * @access public
342
-     * @throws \EE_Error
343
-     */
344
-    public function gateway_response()
345
-    {
346
-        return $this->get('PAY_gateway_response');
347
-    }
348
-
349
-
350
-    /**
351
-     * get Payment Gateway Transaction ID
352
-     *
353
-     * @access public
354
-     * @throws \EE_Error
355
-     */
356
-    public function txn_id_chq_nmbr()
357
-    {
358
-        return $this->get('PAY_txn_id_chq_nmbr');
359
-    }
360
-
361
-
362
-    /**
363
-     * get Purchase Order Number
364
-     *
365
-     * @access public
366
-     * @throws \EE_Error
367
-     */
368
-    public function po_number()
369
-    {
370
-        return $this->get('PAY_po_number');
371
-    }
372
-
373
-
374
-    /**
375
-     * get Extra Accounting Field
376
-     *
377
-     * @access public
378
-     * @throws \EE_Error
379
-     */
380
-    public function extra_accntng()
381
-    {
382
-        return $this->get('PAY_extra_accntng');
383
-    }
384
-
385
-
386
-    /**
387
-     * get Payment made via admin source
388
-     *
389
-     * @access public
390
-     * @throws \EE_Error
391
-     */
392
-    public function payment_made_via_admin()
393
-    {
394
-        return ($this->get('PAY_source') === EEM_Payment_Method::scope_admin);
395
-    }
396
-
397
-
398
-    /**
399
-     * get Payment Details
400
-     *
401
-     * @access public
402
-     * @throws \EE_Error
403
-     */
404
-    public function details()
405
-    {
406
-        return $this->get('PAY_details');
407
-    }
408
-
409
-
410
-    /**
411
-     * Gets redirect_url
412
-     *
413
-     * @return string
414
-     * @throws \EE_Error
415
-     */
416
-    public function redirect_url()
417
-    {
418
-        return $this->get('PAY_redirect_url');
419
-    }
420
-
421
-
422
-    /**
423
-     * Gets redirect_args
424
-     *
425
-     * @return array
426
-     * @throws \EE_Error
427
-     */
428
-    public function redirect_args()
429
-    {
430
-        return $this->get('PAY_redirect_args');
431
-    }
432
-
433
-
434
-    /**
435
-     * echoes $this->pretty_status()
436
-     *
437
-     * @param bool $show_icons
438
-     * @return void
439
-     * @throws \EE_Error
440
-     */
441
-    public function e_pretty_status($show_icons = false)
442
-    {
443
-        echo $this->pretty_status($show_icons);
444
-    }
445
-
446
-
447
-    /**
448
-     * returns a pretty version of the status, good for displaying to users
449
-     *
450
-     * @param bool $show_icons
451
-     * @return string
452
-     * @throws \EE_Error
453
-     */
454
-    public function pretty_status($show_icons = false)
455
-    {
456
-        $status = EEM_Status::instance()->localized_status(
457
-            array($this->STS_ID() => __('unknown', 'event_espresso')),
458
-            false,
459
-            'sentence'
460
-        );
461
-        $icon = '';
462
-        switch ($this->STS_ID()) {
463
-            case EEM_Payment::status_id_approved:
464
-                $icon = $show_icons
465
-                    ? '<span class="dashicons dashicons-yes ee-icon-size-24 green-text"></span>'
466
-                    : '';
467
-                break;
468
-            case EEM_Payment::status_id_pending:
469
-                $icon = $show_icons
470
-                    ? '<span class="dashicons dashicons-clock ee-icon-size-16 orange-text"></span>'
471
-                    : '';
472
-                break;
473
-            case EEM_Payment::status_id_cancelled:
474
-                $icon = $show_icons
475
-                    ? '<span class="dashicons dashicons-no ee-icon-size-16 lt-grey-text"></span>'
476
-                    : '';
477
-                break;
478
-            case EEM_Payment::status_id_declined:
479
-                $icon = $show_icons
480
-                    ? '<span class="dashicons dashicons-no ee-icon-size-16 red-text"></span>'
481
-                    : '';
482
-                break;
483
-        }
484
-        return $icon . $status[ $this->STS_ID() ];
485
-    }
486
-
487
-
488
-    /**
489
-     * For determining the status of the payment
490
-     *
491
-     * @return boolean whether the payment is approved or not
492
-     * @throws \EE_Error
493
-     */
494
-    public function is_approved()
495
-    {
496
-        return $this->status_is(EEM_Payment::status_id_approved);
497
-    }
498
-
499
-
500
-    /**
501
-     * Generally determines if the status of this payment equals
502
-     * the $STS_ID string
503
-     *
504
-     * @param string $STS_ID an ID from the esp_status table/
505
-     *                       one of the status_id_* on the EEM_Payment model
506
-     * @return boolean whether the status of this payment equals the status id
507
-     * @throws \EE_Error
508
-     */
509
-    protected function status_is($STS_ID)
510
-    {
511
-        return $STS_ID === $this->STS_ID() ? true : false;
512
-    }
513
-
514
-
515
-    /**
516
-     * For determining the status of the payment
517
-     *
518
-     * @return boolean whether the payment is pending or not
519
-     * @throws \EE_Error
520
-     */
521
-    public function is_pending()
522
-    {
523
-        return $this->status_is(EEM_Payment::status_id_pending);
524
-    }
525
-
526
-
527
-    /**
528
-     * For determining the status of the payment
529
-     *
530
-     * @return boolean
531
-     * @throws \EE_Error
532
-     */
533
-    public function is_cancelled()
534
-    {
535
-        return $this->status_is(EEM_Payment::status_id_cancelled);
536
-    }
537
-
538
-
539
-    /**
540
-     * For determining the status of the payment
541
-     *
542
-     * @return boolean
543
-     * @throws \EE_Error
544
-     */
545
-    public function is_declined()
546
-    {
547
-        return $this->status_is(EEM_Payment::status_id_declined);
548
-    }
549
-
550
-
551
-    /**
552
-     * For determining the status of the payment
553
-     *
554
-     * @return boolean
555
-     * @throws \EE_Error
556
-     */
557
-    public function is_failed()
558
-    {
559
-        return $this->status_is(EEM_Payment::status_id_failed);
560
-    }
561
-
562
-
563
-    /**
564
-     * For determining if the payment is actually a refund ( ie: has a negative value )
565
-     *
566
-     * @return boolean
567
-     * @throws \EE_Error
568
-     */
569
-    public function is_a_refund()
570
-    {
571
-        return $this->amount() < 0 ? true : false;
572
-    }
573
-
574
-
575
-    /**
576
-     * Get the status object of this object
577
-     *
578
-     * @return EE_Status
579
-     * @throws \EE_Error
580
-     */
581
-    public function status_obj()
582
-    {
583
-        return $this->get_first_related('Status');
584
-    }
585
-
586
-
587
-    /**
588
-     * Gets all the extra meta info on this payment
589
-     *
590
-     * @param array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
591
-     * @return EE_Extra_Meta
592
-     * @throws \EE_Error
593
-     */
594
-    public function extra_meta($query_params = array())
595
-    {
596
-        return $this->get_many_related('Extra_Meta', $query_params);
597
-    }
598
-
599
-
600
-    /**
601
-     * Gets the last-used payment method on this transaction
602
-     * (we COULD just use the last-made payment, but some payment methods, namely
603
-     * offline ones, dont' create payments)
604
-     *
605
-     * @return EE_Payment_Method
606
-     * @throws \EE_Error
607
-     */
608
-    public function payment_method()
609
-    {
610
-        return $this->get_first_related('Payment_Method');
611
-    }
612
-
613
-
614
-    /**
615
-     * Gets the HTML for redirecting the user to an offsite gateway
616
-     * You can pass it special content to put inside the form, or use
617
-     * the default inner content (or possibly generate this all yourself using
618
-     * redirect_url() and redirect_args() or redirect_args_as_inputs()).
619
-     * Creates a POST request by default, but if no redirect args are specified, creates a GET request instead
620
-     * (and any querystring variables in the redirect_url are converted into html inputs
621
-     * so browsers submit them properly)
622
-     *
623
-     * @param string $inside_form_html
624
-     * @return string html
625
-     * @throws \EE_Error
626
-     */
627
-    public function redirect_form($inside_form_html = null)
628
-    {
629
-        $redirect_url = $this->redirect_url();
630
-        if (! empty($redirect_url)) {
631
-            // what ? no inner form content?
632
-            if ($inside_form_html === null) {
633
-                $inside_form_html = EEH_HTML::p(
634
-                    sprintf(
635
-                        __(
636
-                            'If you are not automatically redirected to the payment website within 10 seconds... %1$s %2$s Click Here %3$s',
637
-                            'event_espresso'
638
-                        ),
639
-                        EEH_HTML::br(2),
640
-                        '<input type="submit" value="',
641
-                        '">'
642
-                    ),
643
-                    '',
644
-                    '',
645
-                    'text-align:center;'
646
-                );
647
-            }
648
-            $method = apply_filters(
649
-                'FHEE__EE_Payment__redirect_form__method',
650
-                $this->redirect_args() ? 'POST' : 'GET',
651
-                $this
652
-            );
653
-            // if it's a GET request, we need to remove all the GET params in the querystring
654
-            // and put them into the form instead
655
-            if ($method === 'GET') {
656
-                $querystring = parse_url($redirect_url, PHP_URL_QUERY);
657
-                $get_params = null;
658
-                parse_str($querystring, $get_params);
659
-                $inside_form_html .= $this->_args_as_inputs($get_params);
660
-                $redirect_url = str_replace('?' . $querystring, '', $redirect_url);
661
-            }
662
-            $form = EEH_HTML::nl(1)
663
-                    . '<form method="'
664
-                    . $method
665
-                    . '" name="gateway_form" action="'
666
-                    . $redirect_url
667
-                    . '">';
668
-            $form .= EEH_HTML::nl(1) . $this->redirect_args_as_inputs();
669
-            $form .= $inside_form_html;
670
-            $form .= EEH_HTML::nl(-1) . '</form>' . EEH_HTML::nl(-1);
671
-            return $form;
672
-        } else {
673
-            return null;
674
-        }
675
-    }
676
-
677
-
678
-    /**
679
-     * Changes all the name-value pairs of the redirect args into html inputs
680
-     * and returns the html as a string
681
-     *
682
-     * @return string
683
-     * @throws \EE_Error
684
-     */
685
-    public function redirect_args_as_inputs()
686
-    {
687
-        return $this->_args_as_inputs($this->redirect_args());
688
-    }
689
-
690
-
691
-    /**
692
-     * Converts a 1d array of key-value pairs into html hidden inputs
693
-     * and returns the string of html
694
-     *
695
-     * @param array $args key-value pairs
696
-     * @return string
697
-     */
698
-    protected function _args_as_inputs($args)
699
-    {
700
-        $html = '';
701
-        if ($args !== null && is_array($args)) {
702
-            foreach ($args as $name => $value) {
703
-                $html .= EEH_HTML::nl(0)
704
-                         . '<input type="hidden" name="'
705
-                         . $name
706
-                         . '" value="'
707
-                         . esc_attr($value)
708
-                         . '"/>';
709
-            }
710
-        }
711
-        return $html;
712
-    }
713
-
714
-
715
-    /**
716
-     * Returns the currency of the payment.
717
-     * (At the time of writing, this will always be the currency in the configuration;
718
-     * however in the future it is anticipated that this will be stored on the payment
719
-     * object itself)
720
-     *
721
-     * @return string for the currency code
722
-     */
723
-    public function currency_code()
724
-    {
725
-        return EE_Config::instance()->currency->code;
726
-    }
727
-
728
-
729
-    /**
730
-     * apply wp_strip_all_tags to all elements within an array
731
-     *
732
-     * @access private
733
-     * @param mixed $item
734
-     */
735
-    private function _strip_all_tags_within_array(&$item)
736
-    {
737
-        if (is_object($item)) {
738
-            $item = (array) $item;
739
-        }
740
-        if (is_array($item)) {
741
-            array_walk_recursive($item, array($this, '_strip_all_tags_within_array'));
742
-        } else {
743
-            $item = wp_strip_all_tags($item);
744
-        }
745
-    }
746
-
747
-
748
-    /**
749
-     * Returns TRUE is this payment was set to approved during this request (or
750
-     * is approved and was created during this request). False otherwise.
751
-     *
752
-     * @return boolean
753
-     * @throws \EE_Error
754
-     */
755
-    public function just_approved()
756
-    {
757
-        $original_status = EEH_Array::is_set(
758
-            $this->_props_n_values_provided_in_constructor,
759
-            'STS_ID',
760
-            $this->get_model()->field_settings_for('STS_ID')->get_default_value()
761
-        );
762
-        $current_status = $this->status();
763
-        if ($original_status !== EEM_Payment::status_id_approved
764
-            && $current_status === EEM_Payment::status_id_approved
765
-        ) {
766
-            return true;
767
-        } else {
768
-            return false;
769
-        }
770
-    }
771
-
772
-
773
-    /**
774
-     * Overrides parents' get_pretty() function just for legacy reasons
775
-     * (to allow ticket https://events.codebasehq.com/projects/event-espresso/tickets/7420)
776
-     *
777
-     * @param string $field_name
778
-     * @param string $extra_cache_ref This allows the user to specify an extra cache ref for the given property
779
-     *                                (in cases where the same property may be used for different outputs
780
-     *                                - i.e. datetime, money etc.)
781
-     * @return mixed
782
-     * @throws \EE_Error
783
-     */
784
-    public function get_pretty($field_name, $extra_cache_ref = null)
785
-    {
786
-        if ($field_name === 'PAY_gateway') {
787
-            return $this->payment_method() ? $this->payment_method()->name() : __('Unknown', 'event_espresso');
788
-        }
789
-        return $this->_get_cached_property($field_name, true, $extra_cache_ref);
790
-    }
791
-
792
-
793
-    /**
794
-     * Gets details regarding which registrations this payment was applied to
795
-     *
796
-     * @param array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
797
-     * @return EE_Registration_Payment[]
798
-     * @throws \EE_Error
799
-     */
800
-    public function registration_payments($query_params = array())
801
-    {
802
-        return $this->get_many_related('Registration_Payment', $query_params);
803
-    }
804
-
805
-
806
-    /**
807
-     * Gets the first event for this payment (it's possible that it could be for multiple)
808
-     *
809
-     * @return EE_Event|null
810
-     */
811
-    public function get_first_event()
812
-    {
813
-        $transaction = $this->transaction();
814
-        if ($transaction instanceof EE_Transaction) {
815
-            $primary_registrant = $transaction->primary_registration();
816
-            if ($primary_registrant instanceof EE_Registration) {
817
-                return $primary_registrant->event_obj();
818
-            }
819
-        }
820
-        return null;
821
-    }
822
-
823
-
824
-    /**
825
-     * Gets the name of the first event for which is being paid
826
-     *
827
-     * @return string
828
-     */
829
-    public function get_first_event_name()
830
-    {
831
-        $event = $this->get_first_event();
832
-        return $event instanceof EE_Event ? $event->name() : __('Event', 'event_espresso');
833
-    }
834
-
835
-
836
-    /**
837
-     * Returns the payment's transaction's primary registration
838
-     *
839
-     * @return EE_Registration|null
840
-     */
841
-    public function get_primary_registration()
842
-    {
843
-        if ($this->transaction() instanceof EE_Transaction) {
844
-            return $this->transaction()->primary_registration();
845
-        }
846
-        return null;
847
-    }
848
-
849
-
850
-    /**
851
-     * Gets the payment's transaction's primary registration's attendee, or null
852
-     *
853
-     * @return EE_Attendee|null
854
-     */
855
-    public function get_primary_attendee()
856
-    {
857
-        $primary_reg = $this->get_primary_registration();
858
-        if ($primary_reg instanceof EE_Registration) {
859
-            return $primary_reg->attendee();
860
-        }
861
-        return null;
862
-    }
12
+	/**
13
+	 * @param array  $props_n_values          incoming values
14
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
15
+	 *                                        used.)
16
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
17
+	 *                                        date_format and the second value is the time format
18
+	 * @return EE_Payment
19
+	 * @throws \EE_Error
20
+	 */
21
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
22
+	{
23
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
24
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
25
+	}
26
+
27
+
28
+	/**
29
+	 * @param array  $props_n_values  incoming values from the database
30
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
31
+	 *                                the website will be used.
32
+	 * @return EE_Payment
33
+	 * @throws \EE_Error
34
+	 */
35
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
36
+	{
37
+		return new self($props_n_values, true, $timezone);
38
+	}
39
+
40
+
41
+	/**
42
+	 * Set Transaction ID
43
+	 *
44
+	 * @access public
45
+	 * @param int $TXN_ID
46
+	 * @throws \EE_Error
47
+	 */
48
+	public function set_transaction_id($TXN_ID = 0)
49
+	{
50
+		$this->set('TXN_ID', $TXN_ID);
51
+	}
52
+
53
+
54
+	/**
55
+	 * Gets the transaction related to this payment
56
+	 *
57
+	 * @return EE_Transaction
58
+	 * @throws \EE_Error
59
+	 */
60
+	public function transaction()
61
+	{
62
+		return $this->get_first_related('Transaction');
63
+	}
64
+
65
+
66
+	/**
67
+	 * Set Status
68
+	 *
69
+	 * @access public
70
+	 * @param string $STS_ID
71
+	 * @throws \EE_Error
72
+	 */
73
+	public function set_status($STS_ID = '')
74
+	{
75
+		$this->set('STS_ID', $STS_ID);
76
+	}
77
+
78
+
79
+	/**
80
+	 * Set Payment Timestamp
81
+	 *
82
+	 * @access public
83
+	 * @param int $timestamp
84
+	 * @throws \EE_Error
85
+	 */
86
+	public function set_timestamp($timestamp = 0)
87
+	{
88
+		$this->set('PAY_timestamp', $timestamp);
89
+	}
90
+
91
+
92
+	/**
93
+	 * Set Payment Method
94
+	 *
95
+	 * @access public
96
+	 * @param string $PAY_source
97
+	 * @throws \EE_Error
98
+	 */
99
+	public function set_source($PAY_source = '')
100
+	{
101
+		$this->set('PAY_source', $PAY_source);
102
+	}
103
+
104
+
105
+	/**
106
+	 * Set Payment Amount
107
+	 *
108
+	 * @access public
109
+	 * @param float $amount
110
+	 * @throws \EE_Error
111
+	 */
112
+	public function set_amount($amount = 0.00)
113
+	{
114
+		$this->set('PAY_amount', (float) $amount);
115
+	}
116
+
117
+
118
+	/**
119
+	 * Set Payment Gateway Response
120
+	 *
121
+	 * @access public
122
+	 * @param string $gateway_response
123
+	 * @throws \EE_Error
124
+	 */
125
+	public function set_gateway_response($gateway_response = '')
126
+	{
127
+		$this->set('PAY_gateway_response', $gateway_response);
128
+	}
129
+
130
+
131
+	/**
132
+	 * Returns the name of the payment method used on this payment (previously known merely as 'gateway')
133
+	 * but since 4.6.0, payment methods are models and the payment keeps a foreign key to the payment method
134
+	 * used on it
135
+	 *
136
+	 * @deprecated
137
+	 * @return string
138
+	 * @throws \EE_Error
139
+	 */
140
+	public function gateway()
141
+	{
142
+		EE_Error::doing_it_wrong(
143
+			'EE_Payment::gateway',
144
+			__(
145
+				'The method EE_Payment::gateway() has been deprecated. Consider instead using EE_Payment::payment_method()->name()',
146
+				'event_espresso'
147
+			),
148
+			'4.6.0'
149
+		);
150
+		return $this->payment_method() ? $this->payment_method()->name() : __('Unknown', 'event_espresso');
151
+	}
152
+
153
+
154
+	/**
155
+	 * Set Gateway Transaction ID
156
+	 *
157
+	 * @access public
158
+	 * @param string $txn_id_chq_nmbr
159
+	 * @throws \EE_Error
160
+	 */
161
+	public function set_txn_id_chq_nmbr($txn_id_chq_nmbr = '')
162
+	{
163
+		$this->set('PAY_txn_id_chq_nmbr', $txn_id_chq_nmbr);
164
+	}
165
+
166
+
167
+	/**
168
+	 * Set Purchase Order Number
169
+	 *
170
+	 * @access public
171
+	 * @param string $po_number
172
+	 * @throws \EE_Error
173
+	 */
174
+	public function set_po_number($po_number = '')
175
+	{
176
+		$this->set('PAY_po_number', $po_number);
177
+	}
178
+
179
+
180
+	/**
181
+	 * Set Extra Accounting Field
182
+	 *
183
+	 * @access public
184
+	 * @param string $extra_accntng
185
+	 * @throws \EE_Error
186
+	 */
187
+	public function set_extra_accntng($extra_accntng = '')
188
+	{
189
+		$this->set('PAY_extra_accntng', $extra_accntng);
190
+	}
191
+
192
+
193
+	/**
194
+	 * Set Payment made via admin flag
195
+	 *
196
+	 * @access public
197
+	 * @param bool $via_admin
198
+	 * @throws \EE_Error
199
+	 */
200
+	public function set_payment_made_via_admin($via_admin = false)
201
+	{
202
+		if ($via_admin) {
203
+			$this->set('PAY_source', EEM_Payment_Method::scope_admin);
204
+		} else {
205
+			$this->set('PAY_source', EEM_Payment_Method::scope_cart);
206
+		}
207
+	}
208
+
209
+
210
+	/**
211
+	 * Set Payment Details
212
+	 *
213
+	 * @access public
214
+	 * @param string|array $details
215
+	 * @throws \EE_Error
216
+	 */
217
+	public function set_details($details = '')
218
+	{
219
+		if (is_array($details)) {
220
+			array_walk_recursive($details, array($this, '_strip_all_tags_within_array'));
221
+		} else {
222
+			$details = wp_strip_all_tags($details);
223
+		}
224
+		$this->set('PAY_details', $details);
225
+	}
226
+
227
+
228
+	/**
229
+	 * Sets redirect_url
230
+	 *
231
+	 * @param string $redirect_url
232
+	 * @throws \EE_Error
233
+	 */
234
+	public function set_redirect_url($redirect_url)
235
+	{
236
+		$this->set('PAY_redirect_url', $redirect_url);
237
+	}
238
+
239
+
240
+	/**
241
+	 * Sets redirect_args
242
+	 *
243
+	 * @param array $redirect_args
244
+	 * @throws \EE_Error
245
+	 */
246
+	public function set_redirect_args($redirect_args)
247
+	{
248
+		$this->set('PAY_redirect_args', $redirect_args);
249
+	}
250
+
251
+
252
+	/**
253
+	 * get Payment Transaction ID
254
+	 *
255
+	 * @access public
256
+	 * @throws \EE_Error
257
+	 */
258
+	public function TXN_ID()
259
+	{
260
+		return $this->get('TXN_ID');
261
+	}
262
+
263
+
264
+	/**
265
+	 * get Payment Status
266
+	 *
267
+	 * @access public
268
+	 * @throws \EE_Error
269
+	 */
270
+	public function status()
271
+	{
272
+		return $this->get('STS_ID');
273
+	}
274
+
275
+
276
+	/**
277
+	 * get Payment Status
278
+	 *
279
+	 * @access public
280
+	 * @throws \EE_Error
281
+	 */
282
+	public function STS_ID()
283
+	{
284
+		return $this->get('STS_ID');
285
+	}
286
+
287
+
288
+	/**
289
+	 * get Payment Timestamp
290
+	 *
291
+	 * @access public
292
+	 * @param string $dt_frmt
293
+	 * @param string $tm_frmt
294
+	 * @return string
295
+	 * @throws \EE_Error
296
+	 */
297
+	public function timestamp($dt_frmt = '', $tm_frmt = '')
298
+	{
299
+		return $this->get_i18n_datetime('PAY_timestamp', trim($dt_frmt . ' ' . $tm_frmt));
300
+	}
301
+
302
+
303
+	/**
304
+	 * get Payment Source
305
+	 *
306
+	 * @access public
307
+	 * @throws \EE_Error
308
+	 */
309
+	public function source()
310
+	{
311
+		return $this->get('PAY_source');
312
+	}
313
+
314
+
315
+	/**
316
+	 * get Payment Amount
317
+	 *
318
+	 * @access public
319
+	 * @return float
320
+	 * @throws \EE_Error
321
+	 */
322
+	public function amount()
323
+	{
324
+		return (float) $this->get('PAY_amount');
325
+	}
326
+
327
+
328
+	/**
329
+	 * @return mixed
330
+	 * @throws \EE_Error
331
+	 */
332
+	public function amount_no_code()
333
+	{
334
+		return $this->get_pretty('PAY_amount', 'no_currency_code');
335
+	}
336
+
337
+
338
+	/**
339
+	 * get Payment Gateway Response
340
+	 *
341
+	 * @access public
342
+	 * @throws \EE_Error
343
+	 */
344
+	public function gateway_response()
345
+	{
346
+		return $this->get('PAY_gateway_response');
347
+	}
348
+
349
+
350
+	/**
351
+	 * get Payment Gateway Transaction ID
352
+	 *
353
+	 * @access public
354
+	 * @throws \EE_Error
355
+	 */
356
+	public function txn_id_chq_nmbr()
357
+	{
358
+		return $this->get('PAY_txn_id_chq_nmbr');
359
+	}
360
+
361
+
362
+	/**
363
+	 * get Purchase Order Number
364
+	 *
365
+	 * @access public
366
+	 * @throws \EE_Error
367
+	 */
368
+	public function po_number()
369
+	{
370
+		return $this->get('PAY_po_number');
371
+	}
372
+
373
+
374
+	/**
375
+	 * get Extra Accounting Field
376
+	 *
377
+	 * @access public
378
+	 * @throws \EE_Error
379
+	 */
380
+	public function extra_accntng()
381
+	{
382
+		return $this->get('PAY_extra_accntng');
383
+	}
384
+
385
+
386
+	/**
387
+	 * get Payment made via admin source
388
+	 *
389
+	 * @access public
390
+	 * @throws \EE_Error
391
+	 */
392
+	public function payment_made_via_admin()
393
+	{
394
+		return ($this->get('PAY_source') === EEM_Payment_Method::scope_admin);
395
+	}
396
+
397
+
398
+	/**
399
+	 * get Payment Details
400
+	 *
401
+	 * @access public
402
+	 * @throws \EE_Error
403
+	 */
404
+	public function details()
405
+	{
406
+		return $this->get('PAY_details');
407
+	}
408
+
409
+
410
+	/**
411
+	 * Gets redirect_url
412
+	 *
413
+	 * @return string
414
+	 * @throws \EE_Error
415
+	 */
416
+	public function redirect_url()
417
+	{
418
+		return $this->get('PAY_redirect_url');
419
+	}
420
+
421
+
422
+	/**
423
+	 * Gets redirect_args
424
+	 *
425
+	 * @return array
426
+	 * @throws \EE_Error
427
+	 */
428
+	public function redirect_args()
429
+	{
430
+		return $this->get('PAY_redirect_args');
431
+	}
432
+
433
+
434
+	/**
435
+	 * echoes $this->pretty_status()
436
+	 *
437
+	 * @param bool $show_icons
438
+	 * @return void
439
+	 * @throws \EE_Error
440
+	 */
441
+	public function e_pretty_status($show_icons = false)
442
+	{
443
+		echo $this->pretty_status($show_icons);
444
+	}
445
+
446
+
447
+	/**
448
+	 * returns a pretty version of the status, good for displaying to users
449
+	 *
450
+	 * @param bool $show_icons
451
+	 * @return string
452
+	 * @throws \EE_Error
453
+	 */
454
+	public function pretty_status($show_icons = false)
455
+	{
456
+		$status = EEM_Status::instance()->localized_status(
457
+			array($this->STS_ID() => __('unknown', 'event_espresso')),
458
+			false,
459
+			'sentence'
460
+		);
461
+		$icon = '';
462
+		switch ($this->STS_ID()) {
463
+			case EEM_Payment::status_id_approved:
464
+				$icon = $show_icons
465
+					? '<span class="dashicons dashicons-yes ee-icon-size-24 green-text"></span>'
466
+					: '';
467
+				break;
468
+			case EEM_Payment::status_id_pending:
469
+				$icon = $show_icons
470
+					? '<span class="dashicons dashicons-clock ee-icon-size-16 orange-text"></span>'
471
+					: '';
472
+				break;
473
+			case EEM_Payment::status_id_cancelled:
474
+				$icon = $show_icons
475
+					? '<span class="dashicons dashicons-no ee-icon-size-16 lt-grey-text"></span>'
476
+					: '';
477
+				break;
478
+			case EEM_Payment::status_id_declined:
479
+				$icon = $show_icons
480
+					? '<span class="dashicons dashicons-no ee-icon-size-16 red-text"></span>'
481
+					: '';
482
+				break;
483
+		}
484
+		return $icon . $status[ $this->STS_ID() ];
485
+	}
486
+
487
+
488
+	/**
489
+	 * For determining the status of the payment
490
+	 *
491
+	 * @return boolean whether the payment is approved or not
492
+	 * @throws \EE_Error
493
+	 */
494
+	public function is_approved()
495
+	{
496
+		return $this->status_is(EEM_Payment::status_id_approved);
497
+	}
498
+
499
+
500
+	/**
501
+	 * Generally determines if the status of this payment equals
502
+	 * the $STS_ID string
503
+	 *
504
+	 * @param string $STS_ID an ID from the esp_status table/
505
+	 *                       one of the status_id_* on the EEM_Payment model
506
+	 * @return boolean whether the status of this payment equals the status id
507
+	 * @throws \EE_Error
508
+	 */
509
+	protected function status_is($STS_ID)
510
+	{
511
+		return $STS_ID === $this->STS_ID() ? true : false;
512
+	}
513
+
514
+
515
+	/**
516
+	 * For determining the status of the payment
517
+	 *
518
+	 * @return boolean whether the payment is pending or not
519
+	 * @throws \EE_Error
520
+	 */
521
+	public function is_pending()
522
+	{
523
+		return $this->status_is(EEM_Payment::status_id_pending);
524
+	}
525
+
526
+
527
+	/**
528
+	 * For determining the status of the payment
529
+	 *
530
+	 * @return boolean
531
+	 * @throws \EE_Error
532
+	 */
533
+	public function is_cancelled()
534
+	{
535
+		return $this->status_is(EEM_Payment::status_id_cancelled);
536
+	}
537
+
538
+
539
+	/**
540
+	 * For determining the status of the payment
541
+	 *
542
+	 * @return boolean
543
+	 * @throws \EE_Error
544
+	 */
545
+	public function is_declined()
546
+	{
547
+		return $this->status_is(EEM_Payment::status_id_declined);
548
+	}
549
+
550
+
551
+	/**
552
+	 * For determining the status of the payment
553
+	 *
554
+	 * @return boolean
555
+	 * @throws \EE_Error
556
+	 */
557
+	public function is_failed()
558
+	{
559
+		return $this->status_is(EEM_Payment::status_id_failed);
560
+	}
561
+
562
+
563
+	/**
564
+	 * For determining if the payment is actually a refund ( ie: has a negative value )
565
+	 *
566
+	 * @return boolean
567
+	 * @throws \EE_Error
568
+	 */
569
+	public function is_a_refund()
570
+	{
571
+		return $this->amount() < 0 ? true : false;
572
+	}
573
+
574
+
575
+	/**
576
+	 * Get the status object of this object
577
+	 *
578
+	 * @return EE_Status
579
+	 * @throws \EE_Error
580
+	 */
581
+	public function status_obj()
582
+	{
583
+		return $this->get_first_related('Status');
584
+	}
585
+
586
+
587
+	/**
588
+	 * Gets all the extra meta info on this payment
589
+	 *
590
+	 * @param array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
591
+	 * @return EE_Extra_Meta
592
+	 * @throws \EE_Error
593
+	 */
594
+	public function extra_meta($query_params = array())
595
+	{
596
+		return $this->get_many_related('Extra_Meta', $query_params);
597
+	}
598
+
599
+
600
+	/**
601
+	 * Gets the last-used payment method on this transaction
602
+	 * (we COULD just use the last-made payment, but some payment methods, namely
603
+	 * offline ones, dont' create payments)
604
+	 *
605
+	 * @return EE_Payment_Method
606
+	 * @throws \EE_Error
607
+	 */
608
+	public function payment_method()
609
+	{
610
+		return $this->get_first_related('Payment_Method');
611
+	}
612
+
613
+
614
+	/**
615
+	 * Gets the HTML for redirecting the user to an offsite gateway
616
+	 * You can pass it special content to put inside the form, or use
617
+	 * the default inner content (or possibly generate this all yourself using
618
+	 * redirect_url() and redirect_args() or redirect_args_as_inputs()).
619
+	 * Creates a POST request by default, but if no redirect args are specified, creates a GET request instead
620
+	 * (and any querystring variables in the redirect_url are converted into html inputs
621
+	 * so browsers submit them properly)
622
+	 *
623
+	 * @param string $inside_form_html
624
+	 * @return string html
625
+	 * @throws \EE_Error
626
+	 */
627
+	public function redirect_form($inside_form_html = null)
628
+	{
629
+		$redirect_url = $this->redirect_url();
630
+		if (! empty($redirect_url)) {
631
+			// what ? no inner form content?
632
+			if ($inside_form_html === null) {
633
+				$inside_form_html = EEH_HTML::p(
634
+					sprintf(
635
+						__(
636
+							'If you are not automatically redirected to the payment website within 10 seconds... %1$s %2$s Click Here %3$s',
637
+							'event_espresso'
638
+						),
639
+						EEH_HTML::br(2),
640
+						'<input type="submit" value="',
641
+						'">'
642
+					),
643
+					'',
644
+					'',
645
+					'text-align:center;'
646
+				);
647
+			}
648
+			$method = apply_filters(
649
+				'FHEE__EE_Payment__redirect_form__method',
650
+				$this->redirect_args() ? 'POST' : 'GET',
651
+				$this
652
+			);
653
+			// if it's a GET request, we need to remove all the GET params in the querystring
654
+			// and put them into the form instead
655
+			if ($method === 'GET') {
656
+				$querystring = parse_url($redirect_url, PHP_URL_QUERY);
657
+				$get_params = null;
658
+				parse_str($querystring, $get_params);
659
+				$inside_form_html .= $this->_args_as_inputs($get_params);
660
+				$redirect_url = str_replace('?' . $querystring, '', $redirect_url);
661
+			}
662
+			$form = EEH_HTML::nl(1)
663
+					. '<form method="'
664
+					. $method
665
+					. '" name="gateway_form" action="'
666
+					. $redirect_url
667
+					. '">';
668
+			$form .= EEH_HTML::nl(1) . $this->redirect_args_as_inputs();
669
+			$form .= $inside_form_html;
670
+			$form .= EEH_HTML::nl(-1) . '</form>' . EEH_HTML::nl(-1);
671
+			return $form;
672
+		} else {
673
+			return null;
674
+		}
675
+	}
676
+
677
+
678
+	/**
679
+	 * Changes all the name-value pairs of the redirect args into html inputs
680
+	 * and returns the html as a string
681
+	 *
682
+	 * @return string
683
+	 * @throws \EE_Error
684
+	 */
685
+	public function redirect_args_as_inputs()
686
+	{
687
+		return $this->_args_as_inputs($this->redirect_args());
688
+	}
689
+
690
+
691
+	/**
692
+	 * Converts a 1d array of key-value pairs into html hidden inputs
693
+	 * and returns the string of html
694
+	 *
695
+	 * @param array $args key-value pairs
696
+	 * @return string
697
+	 */
698
+	protected function _args_as_inputs($args)
699
+	{
700
+		$html = '';
701
+		if ($args !== null && is_array($args)) {
702
+			foreach ($args as $name => $value) {
703
+				$html .= EEH_HTML::nl(0)
704
+						 . '<input type="hidden" name="'
705
+						 . $name
706
+						 . '" value="'
707
+						 . esc_attr($value)
708
+						 . '"/>';
709
+			}
710
+		}
711
+		return $html;
712
+	}
713
+
714
+
715
+	/**
716
+	 * Returns the currency of the payment.
717
+	 * (At the time of writing, this will always be the currency in the configuration;
718
+	 * however in the future it is anticipated that this will be stored on the payment
719
+	 * object itself)
720
+	 *
721
+	 * @return string for the currency code
722
+	 */
723
+	public function currency_code()
724
+	{
725
+		return EE_Config::instance()->currency->code;
726
+	}
727
+
728
+
729
+	/**
730
+	 * apply wp_strip_all_tags to all elements within an array
731
+	 *
732
+	 * @access private
733
+	 * @param mixed $item
734
+	 */
735
+	private function _strip_all_tags_within_array(&$item)
736
+	{
737
+		if (is_object($item)) {
738
+			$item = (array) $item;
739
+		}
740
+		if (is_array($item)) {
741
+			array_walk_recursive($item, array($this, '_strip_all_tags_within_array'));
742
+		} else {
743
+			$item = wp_strip_all_tags($item);
744
+		}
745
+	}
746
+
747
+
748
+	/**
749
+	 * Returns TRUE is this payment was set to approved during this request (or
750
+	 * is approved and was created during this request). False otherwise.
751
+	 *
752
+	 * @return boolean
753
+	 * @throws \EE_Error
754
+	 */
755
+	public function just_approved()
756
+	{
757
+		$original_status = EEH_Array::is_set(
758
+			$this->_props_n_values_provided_in_constructor,
759
+			'STS_ID',
760
+			$this->get_model()->field_settings_for('STS_ID')->get_default_value()
761
+		);
762
+		$current_status = $this->status();
763
+		if ($original_status !== EEM_Payment::status_id_approved
764
+			&& $current_status === EEM_Payment::status_id_approved
765
+		) {
766
+			return true;
767
+		} else {
768
+			return false;
769
+		}
770
+	}
771
+
772
+
773
+	/**
774
+	 * Overrides parents' get_pretty() function just for legacy reasons
775
+	 * (to allow ticket https://events.codebasehq.com/projects/event-espresso/tickets/7420)
776
+	 *
777
+	 * @param string $field_name
778
+	 * @param string $extra_cache_ref This allows the user to specify an extra cache ref for the given property
779
+	 *                                (in cases where the same property may be used for different outputs
780
+	 *                                - i.e. datetime, money etc.)
781
+	 * @return mixed
782
+	 * @throws \EE_Error
783
+	 */
784
+	public function get_pretty($field_name, $extra_cache_ref = null)
785
+	{
786
+		if ($field_name === 'PAY_gateway') {
787
+			return $this->payment_method() ? $this->payment_method()->name() : __('Unknown', 'event_espresso');
788
+		}
789
+		return $this->_get_cached_property($field_name, true, $extra_cache_ref);
790
+	}
791
+
792
+
793
+	/**
794
+	 * Gets details regarding which registrations this payment was applied to
795
+	 *
796
+	 * @param array $query_params @see https://github.com/eventespresso/event-espresso-core/tree/master/docs/G--Model-System/model-query-params.md
797
+	 * @return EE_Registration_Payment[]
798
+	 * @throws \EE_Error
799
+	 */
800
+	public function registration_payments($query_params = array())
801
+	{
802
+		return $this->get_many_related('Registration_Payment', $query_params);
803
+	}
804
+
805
+
806
+	/**
807
+	 * Gets the first event for this payment (it's possible that it could be for multiple)
808
+	 *
809
+	 * @return EE_Event|null
810
+	 */
811
+	public function get_first_event()
812
+	{
813
+		$transaction = $this->transaction();
814
+		if ($transaction instanceof EE_Transaction) {
815
+			$primary_registrant = $transaction->primary_registration();
816
+			if ($primary_registrant instanceof EE_Registration) {
817
+				return $primary_registrant->event_obj();
818
+			}
819
+		}
820
+		return null;
821
+	}
822
+
823
+
824
+	/**
825
+	 * Gets the name of the first event for which is being paid
826
+	 *
827
+	 * @return string
828
+	 */
829
+	public function get_first_event_name()
830
+	{
831
+		$event = $this->get_first_event();
832
+		return $event instanceof EE_Event ? $event->name() : __('Event', 'event_espresso');
833
+	}
834
+
835
+
836
+	/**
837
+	 * Returns the payment's transaction's primary registration
838
+	 *
839
+	 * @return EE_Registration|null
840
+	 */
841
+	public function get_primary_registration()
842
+	{
843
+		if ($this->transaction() instanceof EE_Transaction) {
844
+			return $this->transaction()->primary_registration();
845
+		}
846
+		return null;
847
+	}
848
+
849
+
850
+	/**
851
+	 * Gets the payment's transaction's primary registration's attendee, or null
852
+	 *
853
+	 * @return EE_Attendee|null
854
+	 */
855
+	public function get_primary_attendee()
856
+	{
857
+		$primary_reg = $this->get_primary_registration();
858
+		if ($primary_reg instanceof EE_Registration) {
859
+			return $primary_reg->attendee();
860
+		}
861
+		return null;
862
+	}
863 863
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Registration_Payment.class.php 1 patch
Indentation   +94 added lines, -94 removed lines patch added patch discarded remove patch
@@ -14,98 +14,98 @@
 block discarded – undo
14 14
 class EE_Registration_Payment extends EE_Base_Class
15 15
 {
16 16
 
17
-    /**
18
-     *
19
-     * @param array  $props_n_values
20
-     * @param string $timezone
21
-     * @return EE_Registration_Payment
22
-     */
23
-    public static function new_instance($props_n_values = array(), $timezone = '', $date_formats = array())
24
-    {
25
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
26
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
27
-    }
28
-
29
-
30
-    /**
31
-     * @param array  $props_n_values
32
-     * @param string $timezone
33
-     * @return EE_Registration_Payment
34
-     */
35
-    public static function new_instance_from_db($props_n_values = array(), $timezone = '')
36
-    {
37
-        return new self($props_n_values, true, $timezone);
38
-    }
39
-
40
-
41
-    /**
42
-     * registration_ID
43
-     *
44
-     * @access    public
45
-     * @return    int
46
-     */
47
-    public function registration_ID()
48
-    {
49
-        return $this->get('REG_ID');
50
-    }
51
-
52
-
53
-    /**
54
-     * payment_ID
55
-     *
56
-     * @access    public
57
-     * @return    int
58
-     */
59
-    public function payment_ID()
60
-    {
61
-        return $this->get('PAY_ID');
62
-    }
63
-
64
-
65
-    /**
66
-     * amount
67
-     *
68
-     * @access    public
69
-     * @return    float
70
-     */
71
-    public function amount()
72
-    {
73
-        return $this->get('RPY_amount');
74
-    }
75
-
76
-
77
-    /**
78
-     * amount
79
-     *
80
-     * @access    public
81
-     * @param float $amount
82
-     */
83
-    public function set_amount($amount = 0.000)
84
-    {
85
-        $this->set('RPY_amount', $amount);
86
-    }
87
-
88
-
89
-    /**
90
-     * registration
91
-     *
92
-     * @access    public
93
-     * @return \EE_Registration
94
-     */
95
-    public function registration()
96
-    {
97
-        return $this->get_first_related('Registration');
98
-    }
99
-
100
-
101
-    /**
102
-     * payment
103
-     *
104
-     * @access    public
105
-     * @return \EE_Payment
106
-     */
107
-    public function payment()
108
-    {
109
-        return $this->get_first_related('Payment');
110
-    }
17
+	/**
18
+	 *
19
+	 * @param array  $props_n_values
20
+	 * @param string $timezone
21
+	 * @return EE_Registration_Payment
22
+	 */
23
+	public static function new_instance($props_n_values = array(), $timezone = '', $date_formats = array())
24
+	{
25
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
26
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
27
+	}
28
+
29
+
30
+	/**
31
+	 * @param array  $props_n_values
32
+	 * @param string $timezone
33
+	 * @return EE_Registration_Payment
34
+	 */
35
+	public static function new_instance_from_db($props_n_values = array(), $timezone = '')
36
+	{
37
+		return new self($props_n_values, true, $timezone);
38
+	}
39
+
40
+
41
+	/**
42
+	 * registration_ID
43
+	 *
44
+	 * @access    public
45
+	 * @return    int
46
+	 */
47
+	public function registration_ID()
48
+	{
49
+		return $this->get('REG_ID');
50
+	}
51
+
52
+
53
+	/**
54
+	 * payment_ID
55
+	 *
56
+	 * @access    public
57
+	 * @return    int
58
+	 */
59
+	public function payment_ID()
60
+	{
61
+		return $this->get('PAY_ID');
62
+	}
63
+
64
+
65
+	/**
66
+	 * amount
67
+	 *
68
+	 * @access    public
69
+	 * @return    float
70
+	 */
71
+	public function amount()
72
+	{
73
+		return $this->get('RPY_amount');
74
+	}
75
+
76
+
77
+	/**
78
+	 * amount
79
+	 *
80
+	 * @access    public
81
+	 * @param float $amount
82
+	 */
83
+	public function set_amount($amount = 0.000)
84
+	{
85
+		$this->set('RPY_amount', $amount);
86
+	}
87
+
88
+
89
+	/**
90
+	 * registration
91
+	 *
92
+	 * @access    public
93
+	 * @return \EE_Registration
94
+	 */
95
+	public function registration()
96
+	{
97
+		return $this->get_first_related('Registration');
98
+	}
99
+
100
+
101
+	/**
102
+	 * payment
103
+	 *
104
+	 * @access    public
105
+	 * @return \EE_Payment
106
+	 */
107
+	public function payment()
108
+	{
109
+		return $this->get_first_related('Payment');
110
+	}
111 111
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Question_Group_Question.class.php 1 patch
Indentation   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -6,23 +6,23 @@
 block discarded – undo
6 6
 class EE_Question_Group_Question extends EE_Base_Class
7 7
 {
8 8
 
9
-    /**
10
-     * @param array $props_n_values
11
-     * @return EE_Question_Group_Question|mixed
12
-     */
13
-    public static function new_instance($props_n_values = array())
14
-    {
15
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
16
-        return $has_object ? $has_object : new self($props_n_values);
17
-    }
9
+	/**
10
+	 * @param array $props_n_values
11
+	 * @return EE_Question_Group_Question|mixed
12
+	 */
13
+	public static function new_instance($props_n_values = array())
14
+	{
15
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
16
+		return $has_object ? $has_object : new self($props_n_values);
17
+	}
18 18
 
19 19
 
20
-    /**
21
-     * @param array $props_n_values
22
-     * @return EE_Question_Group_Question
23
-     */
24
-    public static function new_instance_from_db($props_n_values = array())
25
-    {
26
-        return new self($props_n_values, true);
27
-    }
20
+	/**
21
+	 * @param array $props_n_values
22
+	 * @return EE_Question_Group_Question
23
+	 */
24
+	public static function new_instance_from_db($props_n_values = array())
25
+	{
26
+		return new self($props_n_values, true);
27
+	}
28 28
 }
Please login to merge, or discard this patch.
core/db_classes/EE_State.class.php 1 patch
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -11,104 +11,104 @@
 block discarded – undo
11 11
 class EE_State extends EE_Base_Class
12 12
 {
13 13
 
14
-    /**
15
-     * @param array $props_n_values
16
-     * @return EE_State|mixed
17
-     */
18
-    public static function new_instance($props_n_values = array())
19
-    {
20
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
-        return $has_object ? $has_object : new self($props_n_values);
22
-    }
23
-
24
-
25
-    /**
26
-     * @param array $props_n_values
27
-     * @return EE_State
28
-     */
29
-    public static function new_instance_from_db($props_n_values = array())
30
-    {
31
-        return new self($props_n_values, true);
32
-    }
33
-
34
-
35
-    /**
36
-     * @return string
37
-     */
38
-    public function country_iso()
39
-    {
40
-        return $this->get('CNT_ISO');
41
-    }
42
-
43
-
44
-    /**
45
-     * @return string
46
-     */
47
-    public function abbrev()
48
-    {
49
-        return $this->get('STA_abbrev');
50
-    }
51
-
52
-
53
-    /**
54
-     * @return bool
55
-     */
56
-    public function active()
57
-    {
58
-        return $this->get('STA_active');
59
-    }
60
-
61
-
62
-    /**
63
-     * @return string
64
-     */
65
-    public function name()
66
-    {
67
-        return $this->get('STA_name');
68
-    }
69
-
70
-
71
-    /**
72
-     * @return EE_Country
73
-     */
74
-    public function country()
75
-    {
76
-        return $this->get_first_related('Country');
77
-    }
78
-
79
-
80
-    /**
81
-     * @param $iso
82
-     */
83
-    public function set_country_iso($iso)
84
-    {
85
-        $this->set('CNT_ISO', $iso);
86
-    }
87
-
88
-
89
-    /**
90
-     * @param $abbrev
91
-     */
92
-    public function set_abbrev($abbrev)
93
-    {
94
-        $this->set('STA_abbrev', $abbrev);
95
-    }
96
-
97
-
98
-    /**
99
-     * @param $active
100
-     */
101
-    public function set_active($active)
102
-    {
103
-        $this->set('STA_active', $active);
104
-    }
105
-
106
-
107
-    /**
108
-     * @param $name
109
-     */
110
-    public function set_name($name)
111
-    {
112
-        $this->set('STA_name', $name);
113
-    }
14
+	/**
15
+	 * @param array $props_n_values
16
+	 * @return EE_State|mixed
17
+	 */
18
+	public static function new_instance($props_n_values = array())
19
+	{
20
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__);
21
+		return $has_object ? $has_object : new self($props_n_values);
22
+	}
23
+
24
+
25
+	/**
26
+	 * @param array $props_n_values
27
+	 * @return EE_State
28
+	 */
29
+	public static function new_instance_from_db($props_n_values = array())
30
+	{
31
+		return new self($props_n_values, true);
32
+	}
33
+
34
+
35
+	/**
36
+	 * @return string
37
+	 */
38
+	public function country_iso()
39
+	{
40
+		return $this->get('CNT_ISO');
41
+	}
42
+
43
+
44
+	/**
45
+	 * @return string
46
+	 */
47
+	public function abbrev()
48
+	{
49
+		return $this->get('STA_abbrev');
50
+	}
51
+
52
+
53
+	/**
54
+	 * @return bool
55
+	 */
56
+	public function active()
57
+	{
58
+		return $this->get('STA_active');
59
+	}
60
+
61
+
62
+	/**
63
+	 * @return string
64
+	 */
65
+	public function name()
66
+	{
67
+		return $this->get('STA_name');
68
+	}
69
+
70
+
71
+	/**
72
+	 * @return EE_Country
73
+	 */
74
+	public function country()
75
+	{
76
+		return $this->get_first_related('Country');
77
+	}
78
+
79
+
80
+	/**
81
+	 * @param $iso
82
+	 */
83
+	public function set_country_iso($iso)
84
+	{
85
+		$this->set('CNT_ISO', $iso);
86
+	}
87
+
88
+
89
+	/**
90
+	 * @param $abbrev
91
+	 */
92
+	public function set_abbrev($abbrev)
93
+	{
94
+		$this->set('STA_abbrev', $abbrev);
95
+	}
96
+
97
+
98
+	/**
99
+	 * @param $active
100
+	 */
101
+	public function set_active($active)
102
+	{
103
+		$this->set('STA_active', $active);
104
+	}
105
+
106
+
107
+	/**
108
+	 * @param $name
109
+	 */
110
+	public function set_name($name)
111
+	{
112
+		$this->set('STA_name', $name);
113
+	}
114 114
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Event_Message_Template.class.php 1 patch
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -12,25 +12,25 @@
 block discarded – undo
12 12
 class EE_Event_Message_Template extends EE_Base_Class
13 13
 {
14 14
 
15
-    /**
16
-     * @param array $props_n_values
17
-     * @param null  $timezone
18
-     * @return EE_Event_Message_Template|mixed
19
-     */
20
-    public static function new_instance($props_n_values = array(), $timezone = null)
21
-    {
22
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
23
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone);
24
-    }
15
+	/**
16
+	 * @param array $props_n_values
17
+	 * @param null  $timezone
18
+	 * @return EE_Event_Message_Template|mixed
19
+	 */
20
+	public static function new_instance($props_n_values = array(), $timezone = null)
21
+	{
22
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone);
23
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone);
24
+	}
25 25
 
26 26
 
27
-    /**
28
-     * @param array $props_n_values
29
-     * @param null  $timezone
30
-     * @return EE_Event_Message_Template
31
-     */
32
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
33
-    {
34
-        return new self($props_n_values, true, $timezone);
35
-    }
27
+	/**
28
+	 * @param array $props_n_values
29
+	 * @param null  $timezone
30
+	 * @return EE_Event_Message_Template
31
+	 */
32
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
33
+	{
34
+		return new self($props_n_values, true, $timezone);
35
+	}
36 36
 }
Please login to merge, or discard this patch.
core/db_classes/EE_Change_Log.class.php 2 patches
Indentation   +213 added lines, -213 removed lines patch added patch discarded remove patch
@@ -11,217 +11,217 @@
 block discarded – undo
11 11
 class EE_Change_Log extends EE_Base_Class
12 12
 {
13 13
 
14
-    /**
15
-     * @param array  $props_n_values          incoming values
16
-     * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
17
-     *                                        used.)
18
-     * @param array  $date_formats            incoming date_formats in an array where the first value is the
19
-     *                                        date_format and the second value is the time format
20
-     * @return EE_Change_Log
21
-     * @throws EE_Error
22
-     */
23
-    public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
24
-    {
25
-        $has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
26
-        return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
27
-    }
28
-
29
-
30
-    /**
31
-     * @param array  $props_n_values  incoming values from the database
32
-     * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
33
-     *                                the website will be used.
34
-     * @return EE_Change_Log
35
-     */
36
-    public static function new_instance_from_db($props_n_values = array(), $timezone = null)
37
-    {
38
-        return new self($props_n_values, true, $timezone);
39
-    }
40
-
41
-    /**
42
-     * Gets message
43
-     *
44
-     * @return mixed
45
-     * @throws EE_Error
46
-     */
47
-    public function message()
48
-    {
49
-        return $this->get('LOG_message');
50
-    }
51
-
52
-    /**
53
-     * Sets message
54
-     *
55
-     * @param mixed $message
56
-     * @throws EE_Error
57
-     */
58
-    public function set_message($message)
59
-    {
60
-        $this->set('LOG_message', $message);
61
-    }
62
-
63
-    /**
64
-     * Gets time
65
-     *
66
-     * @return string
67
-     * @throws EE_Error
68
-     */
69
-    public function time()
70
-    {
71
-        return $this->get('LOG_time');
72
-    }
73
-
74
-    /**
75
-     * Sets time
76
-     *
77
-     * @param string $time
78
-     * @throws EE_Error
79
-     */
80
-    public function set_time($time)
81
-    {
82
-        $this->set('LOG_time', $time);
83
-    }
84
-
85
-    /**
86
-     * Gets log_type
87
-     *
88
-     * @return string
89
-     * @throws EE_Error
90
-     */
91
-    public function log_type()
92
-    {
93
-        return $this->get('LOG_type');
94
-    }
95
-
96
-
97
-    /**
98
-     * Return the localized log type label.
99
-     *
100
-     * @return string
101
-     * @throws EE_Error
102
-     */
103
-    public function log_type_label()
104
-    {
105
-        return EEM_Change_Log::get_pretty_label_for_type($this->log_type());
106
-    }
107
-
108
-    /**
109
-     * Sets log_type
110
-     *
111
-     * @param string $log_type
112
-     * @throws EE_Error
113
-     */
114
-    public function set_log_type($log_type)
115
-    {
116
-        $this->set('LOG_type', $log_type);
117
-    }
118
-
119
-    /**
120
-     * Gets type of the model object related to this log
121
-     *
122
-     * @return string
123
-     * @throws EE_Error
124
-     */
125
-    public function OBJ_type()
126
-    {
127
-        return $this->get('OBJ_type');
128
-    }
129
-
130
-    /**
131
-     * Sets type
132
-     *
133
-     * @param string $type
134
-     * @throws EE_Error
135
-     */
136
-    public function set_OBJ_type($type)
137
-    {
138
-        $this->set('OBJ_type', $type);
139
-    }
140
-
141
-    /**
142
-     * Gets OBJ_ID (the ID of the item related to this log)
143
-     *
144
-     * @return mixed
145
-     * @throws EE_Error
146
-     */
147
-    public function OBJ_ID()
148
-    {
149
-        return $this->get('OBJ_ID');
150
-    }
151
-
152
-    /**
153
-     * Sets OBJ_ID
154
-     *
155
-     * @param mixed $OBJ_ID
156
-     * @throws EE_Error
157
-     */
158
-    public function set_OBJ_ID($OBJ_ID)
159
-    {
160
-        $this->set('OBJ_ID', $OBJ_ID);
161
-    }
162
-
163
-    /**
164
-     * Gets wp_user
165
-     *
166
-     * @return int
167
-     * @throws EE_Error
168
-     */
169
-    public function wp_user()
170
-    {
171
-        return $this->get('LOG_wp_user');
172
-    }
173
-
174
-    /**
175
-     * Sets wp_user
176
-     *
177
-     * @param int $wp_user_id
178
-     * @throws EE_Error
179
-     */
180
-    public function set_wp_user($wp_user_id)
181
-    {
182
-        $this->set('LOG_wp_user', $wp_user_id);
183
-    }
184
-
185
-    /**
186
-     * Gets the model object attached to this log
187
-     *
188
-     * @return EE_Base_Class
189
-     * @throws EE_Error
190
-     */
191
-    public function object()
192
-    {
193
-        $model_name_of_related_obj = $this->OBJ_type();
194
-        $is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
195
-        if (! $is_model_name) {
196
-            return null;
197
-        } else {
198
-            return $this->get_first_related($model_name_of_related_obj);
199
-        }
200
-    }
201
-
202
-    /**
203
-     * Shorthand for setting the OBJ_ID and OBJ_type. Slightly handier than using
204
-     * _add_relation_to because you don't have to specify what type of model you're
205
-     * associating it with
206
-     *
207
-     * @param EE_Base_Class $object
208
-     * @param boolean       $save
209
-     * @return bool if $save=true, NULL is $save=false
210
-     * @throws EE_Error
211
-     */
212
-    public function set_object($object, $save = true)
213
-    {
214
-        if ($object instanceof EE_Base_Class) {
215
-            $this->set_OBJ_type($object->get_model()->get_this_model_name());
216
-            $this->set_OBJ_ID($object->ID());
217
-        } else {
218
-            $this->set_OBJ_type(null);
219
-            $this->set_OBJ_ID(null);
220
-        }
221
-        if ($save) {
222
-            return $this->save();
223
-        } else {
224
-            return null;
225
-        }
226
-    }
14
+	/**
15
+	 * @param array  $props_n_values          incoming values
16
+	 * @param string $timezone                incoming timezone (if not set the timezone set for the website will be
17
+	 *                                        used.)
18
+	 * @param array  $date_formats            incoming date_formats in an array where the first value is the
19
+	 *                                        date_format and the second value is the time format
20
+	 * @return EE_Change_Log
21
+	 * @throws EE_Error
22
+	 */
23
+	public static function new_instance($props_n_values = array(), $timezone = null, $date_formats = array())
24
+	{
25
+		$has_object = parent::_check_for_object($props_n_values, __CLASS__, $timezone, $date_formats);
26
+		return $has_object ? $has_object : new self($props_n_values, false, $timezone, $date_formats);
27
+	}
28
+
29
+
30
+	/**
31
+	 * @param array  $props_n_values  incoming values from the database
32
+	 * @param string $timezone        incoming timezone as set by the model.  If not set the timezone for
33
+	 *                                the website will be used.
34
+	 * @return EE_Change_Log
35
+	 */
36
+	public static function new_instance_from_db($props_n_values = array(), $timezone = null)
37
+	{
38
+		return new self($props_n_values, true, $timezone);
39
+	}
40
+
41
+	/**
42
+	 * Gets message
43
+	 *
44
+	 * @return mixed
45
+	 * @throws EE_Error
46
+	 */
47
+	public function message()
48
+	{
49
+		return $this->get('LOG_message');
50
+	}
51
+
52
+	/**
53
+	 * Sets message
54
+	 *
55
+	 * @param mixed $message
56
+	 * @throws EE_Error
57
+	 */
58
+	public function set_message($message)
59
+	{
60
+		$this->set('LOG_message', $message);
61
+	}
62
+
63
+	/**
64
+	 * Gets time
65
+	 *
66
+	 * @return string
67
+	 * @throws EE_Error
68
+	 */
69
+	public function time()
70
+	{
71
+		return $this->get('LOG_time');
72
+	}
73
+
74
+	/**
75
+	 * Sets time
76
+	 *
77
+	 * @param string $time
78
+	 * @throws EE_Error
79
+	 */
80
+	public function set_time($time)
81
+	{
82
+		$this->set('LOG_time', $time);
83
+	}
84
+
85
+	/**
86
+	 * Gets log_type
87
+	 *
88
+	 * @return string
89
+	 * @throws EE_Error
90
+	 */
91
+	public function log_type()
92
+	{
93
+		return $this->get('LOG_type');
94
+	}
95
+
96
+
97
+	/**
98
+	 * Return the localized log type label.
99
+	 *
100
+	 * @return string
101
+	 * @throws EE_Error
102
+	 */
103
+	public function log_type_label()
104
+	{
105
+		return EEM_Change_Log::get_pretty_label_for_type($this->log_type());
106
+	}
107
+
108
+	/**
109
+	 * Sets log_type
110
+	 *
111
+	 * @param string $log_type
112
+	 * @throws EE_Error
113
+	 */
114
+	public function set_log_type($log_type)
115
+	{
116
+		$this->set('LOG_type', $log_type);
117
+	}
118
+
119
+	/**
120
+	 * Gets type of the model object related to this log
121
+	 *
122
+	 * @return string
123
+	 * @throws EE_Error
124
+	 */
125
+	public function OBJ_type()
126
+	{
127
+		return $this->get('OBJ_type');
128
+	}
129
+
130
+	/**
131
+	 * Sets type
132
+	 *
133
+	 * @param string $type
134
+	 * @throws EE_Error
135
+	 */
136
+	public function set_OBJ_type($type)
137
+	{
138
+		$this->set('OBJ_type', $type);
139
+	}
140
+
141
+	/**
142
+	 * Gets OBJ_ID (the ID of the item related to this log)
143
+	 *
144
+	 * @return mixed
145
+	 * @throws EE_Error
146
+	 */
147
+	public function OBJ_ID()
148
+	{
149
+		return $this->get('OBJ_ID');
150
+	}
151
+
152
+	/**
153
+	 * Sets OBJ_ID
154
+	 *
155
+	 * @param mixed $OBJ_ID
156
+	 * @throws EE_Error
157
+	 */
158
+	public function set_OBJ_ID($OBJ_ID)
159
+	{
160
+		$this->set('OBJ_ID', $OBJ_ID);
161
+	}
162
+
163
+	/**
164
+	 * Gets wp_user
165
+	 *
166
+	 * @return int
167
+	 * @throws EE_Error
168
+	 */
169
+	public function wp_user()
170
+	{
171
+		return $this->get('LOG_wp_user');
172
+	}
173
+
174
+	/**
175
+	 * Sets wp_user
176
+	 *
177
+	 * @param int $wp_user_id
178
+	 * @throws EE_Error
179
+	 */
180
+	public function set_wp_user($wp_user_id)
181
+	{
182
+		$this->set('LOG_wp_user', $wp_user_id);
183
+	}
184
+
185
+	/**
186
+	 * Gets the model object attached to this log
187
+	 *
188
+	 * @return EE_Base_Class
189
+	 * @throws EE_Error
190
+	 */
191
+	public function object()
192
+	{
193
+		$model_name_of_related_obj = $this->OBJ_type();
194
+		$is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
195
+		if (! $is_model_name) {
196
+			return null;
197
+		} else {
198
+			return $this->get_first_related($model_name_of_related_obj);
199
+		}
200
+	}
201
+
202
+	/**
203
+	 * Shorthand for setting the OBJ_ID and OBJ_type. Slightly handier than using
204
+	 * _add_relation_to because you don't have to specify what type of model you're
205
+	 * associating it with
206
+	 *
207
+	 * @param EE_Base_Class $object
208
+	 * @param boolean       $save
209
+	 * @return bool if $save=true, NULL is $save=false
210
+	 * @throws EE_Error
211
+	 */
212
+	public function set_object($object, $save = true)
213
+	{
214
+		if ($object instanceof EE_Base_Class) {
215
+			$this->set_OBJ_type($object->get_model()->get_this_model_name());
216
+			$this->set_OBJ_ID($object->ID());
217
+		} else {
218
+			$this->set_OBJ_type(null);
219
+			$this->set_OBJ_ID(null);
220
+		}
221
+		if ($save) {
222
+			return $this->save();
223
+		} else {
224
+			return null;
225
+		}
226
+	}
227 227
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -192,7 +192,7 @@
 block discarded – undo
192 192
     {
193 193
         $model_name_of_related_obj = $this->OBJ_type();
194 194
         $is_model_name = EE_Registry::instance()->is_model_name($model_name_of_related_obj);
195
-        if (! $is_model_name) {
195
+        if ( ! $is_model_name) {
196 196
             return null;
197 197
         } else {
198 198
             return $this->get_first_related($model_name_of_related_obj);
Please login to merge, or discard this patch.
core/libraries/line_item_filters/EE_Line_Item_Filter_Processor.class.php 1 patch
Indentation   +75 added lines, -75 removed lines patch added patch discarded remove patch
@@ -36,88 +36,88 @@
 block discarded – undo
36 36
 class EE_Line_Item_Filter_Processor
37 37
 {
38 38
 
39
-    /**
40
-     * @type EE_Line_Item_Filter_Collection $line_item_filters
41
-     */
42
-    protected $line_item_filters;
39
+	/**
40
+	 * @type EE_Line_Item_Filter_Collection $line_item_filters
41
+	 */
42
+	protected $line_item_filters;
43 43
 
44
-    /**
45
-     * @type EEI_Line_Item $grand_total_line_item
46
-     */
47
-    protected $grand_total_line_item;
44
+	/**
45
+	 * @type EEI_Line_Item $grand_total_line_item
46
+	 */
47
+	protected $grand_total_line_item;
48 48
 
49 49
 
50
-    /**
51
-     * EE_Line_Item_Filter_Processor constructor.
52
-     *
53
-     * @param \EE_Line_Item_Filter_Collection $line_item_filters
54
-     * @param \EEI_Line_Item                  $grand_total_line_item
55
-     * @throws \EE_Error
56
-     */
57
-    public function __construct(EE_Line_Item_Filter_Collection $line_item_filters, EEI_Line_Item $grand_total_line_item)
58
-    {
59
-        $this->line_item_filters = $line_item_filters;
60
-        if ($grand_total_line_item->type() !== EEM_Line_Item::type_total) {
61
-            throw new EE_Error(__('A Line Item of the type total is required', 'event_espresso'));
62
-        }
63
-        $this->grand_total_line_item = $this->clone_and_reset_line_item_tree($grand_total_line_item);
64
-    }
50
+	/**
51
+	 * EE_Line_Item_Filter_Processor constructor.
52
+	 *
53
+	 * @param \EE_Line_Item_Filter_Collection $line_item_filters
54
+	 * @param \EEI_Line_Item                  $grand_total_line_item
55
+	 * @throws \EE_Error
56
+	 */
57
+	public function __construct(EE_Line_Item_Filter_Collection $line_item_filters, EEI_Line_Item $grand_total_line_item)
58
+	{
59
+		$this->line_item_filters = $line_item_filters;
60
+		if ($grand_total_line_item->type() !== EEM_Line_Item::type_total) {
61
+			throw new EE_Error(__('A Line Item of the type total is required', 'event_espresso'));
62
+		}
63
+		$this->grand_total_line_item = $this->clone_and_reset_line_item_tree($grand_total_line_item);
64
+	}
65 65
 
66 66
 
67
-    /**
68
-     * clone_and_reset_line_item_tree
69
-     *
70
-     * @param \EEI_Line_Item $line_item
71
-     * @return \EEI_Line_Item
72
-     */
73
-    protected function clone_and_reset_line_item_tree(EEI_Line_Item $line_item)
74
-    {
75
-        $cloned_line_item = $this->clone_and_reset_line_item($line_item);
76
-        foreach ($line_item->children() as $child_line_item) {
77
-            $cloned_line_item->add_child_line_item($this->clone_and_reset_line_item_tree($child_line_item));
78
-        }
79
-        return $cloned_line_item;
80
-    }
67
+	/**
68
+	 * clone_and_reset_line_item_tree
69
+	 *
70
+	 * @param \EEI_Line_Item $line_item
71
+	 * @return \EEI_Line_Item
72
+	 */
73
+	protected function clone_and_reset_line_item_tree(EEI_Line_Item $line_item)
74
+	{
75
+		$cloned_line_item = $this->clone_and_reset_line_item($line_item);
76
+		foreach ($line_item->children() as $child_line_item) {
77
+			$cloned_line_item->add_child_line_item($this->clone_and_reset_line_item_tree($child_line_item));
78
+		}
79
+		return $cloned_line_item;
80
+	}
81 81
 
82 82
 
83
-    /**
84
-     * clone_and_reset_line_item
85
-     *
86
-     * clones the incoming object
87
-     * resets any fields that represent database primary keys
88
-     * resets total
89
-     *
90
-     * @param \EEI_Line_Item $line_item
91
-     * @return \EEI_Line_Item
92
-     */
93
-    protected function clone_and_reset_line_item(EEI_Line_Item $line_item)
94
-    {
95
-        // we don't actually want to work with the original line item, so clone it
96
-        $cloned_line_item = clone $line_item;
97
-        $cloned_line_item->set('LIN_ID', null);
98
-        $cloned_line_item->set('LIN_parent', null);
99
-        $cloned_line_item->clear_related_line_item_cache();
100
-        foreach (array_keys(EEM_Line_Item::instance()->relation_settings()) as $relation_name) {
101
-            $cloned_line_item->clear_cache($relation_name, null, true);
102
-        }
103
-        $cloned_line_item->set_allow_persist(false);
104
-        return $cloned_line_item;
105
-    }
83
+	/**
84
+	 * clone_and_reset_line_item
85
+	 *
86
+	 * clones the incoming object
87
+	 * resets any fields that represent database primary keys
88
+	 * resets total
89
+	 *
90
+	 * @param \EEI_Line_Item $line_item
91
+	 * @return \EEI_Line_Item
92
+	 */
93
+	protected function clone_and_reset_line_item(EEI_Line_Item $line_item)
94
+	{
95
+		// we don't actually want to work with the original line item, so clone it
96
+		$cloned_line_item = clone $line_item;
97
+		$cloned_line_item->set('LIN_ID', null);
98
+		$cloned_line_item->set('LIN_parent', null);
99
+		$cloned_line_item->clear_related_line_item_cache();
100
+		foreach (array_keys(EEM_Line_Item::instance()->relation_settings()) as $relation_name) {
101
+			$cloned_line_item->clear_cache($relation_name, null, true);
102
+		}
103
+		$cloned_line_item->set_allow_persist(false);
104
+		return $cloned_line_item;
105
+	}
106 106
 
107 107
 
108
-    /**
109
-     * process
110
-     *
111
-     * @return EEI_Line_Item
112
-     */
113
-    public function process()
114
-    {
115
-        $this->line_item_filters->rewind();
116
-        while ($this->line_item_filters->valid()) {
117
-            $this->grand_total_line_item = $this->line_item_filters->current()->process($this->grand_total_line_item);
118
-            $this->line_item_filters->next();
119
-        }
120
-        $this->grand_total_line_item->recalculate_total_including_taxes();
121
-        return $this->grand_total_line_item;
122
-    }
108
+	/**
109
+	 * process
110
+	 *
111
+	 * @return EEI_Line_Item
112
+	 */
113
+	public function process()
114
+	{
115
+		$this->line_item_filters->rewind();
116
+		while ($this->line_item_filters->valid()) {
117
+			$this->grand_total_line_item = $this->line_item_filters->current()->process($this->grand_total_line_item);
118
+			$this->line_item_filters->next();
119
+		}
120
+		$this->grand_total_line_item->recalculate_total_including_taxes();
121
+		return $this->grand_total_line_item;
122
+	}
123 123
 }
Please login to merge, or discard this patch.
core/libraries/line_item_filters/EE_Non_Zero_Line_Item_Filter.class.php 2 patches
Indentation   +86 added lines, -86 removed lines patch added patch discarded remove patch
@@ -14,96 +14,96 @@
 block discarded – undo
14 14
 class EE_Non_Zero_Line_Item_Filter extends EE_Line_Item_Filter_Base
15 15
 {
16 16
 
17
-    /**
18
-     * EE_Non_Zero_Line_Item_Filter constructor.
19
-     */
20
-    public function __construct()
21
-    {
22
-    }
17
+	/**
18
+	 * EE_Non_Zero_Line_Item_Filter constructor.
19
+	 */
20
+	public function __construct()
21
+	{
22
+	}
23 23
 
24 24
 
25
-    /**
26
-     * Creates a duplicate of the line item tree, except only includes billable items
27
-     * and the portion of line items attributed to billable things
28
-     *
29
-     * @param EEI_Line_Item $line_item
30
-     * @return EEI_Line_Item
31
-     */
32
-    public function process(EEI_Line_Item $line_item)
33
-    {
34
-        $non_zero_line_item = $this->_filter_zero_line_item($line_item);
35
-        if (! $non_zero_line_item instanceof EEI_Line_Item) {
36
-            return null;
37
-        }
38
-        // if this is an event subtotal, we want to only include it if it
39
-        // has a non-zero total and at least one ticket line item child
40
-        if ($line_item->children()) {
41
-            $ticket_or_subtotals_with_tkt_children_count = 0;
42
-            foreach ($line_item->children() as $child_line_item) {
43
-                $code = $child_line_item->code();
44
-                $child_line_item = $this->process($child_line_item);
45
-                if (! $child_line_item instanceof EEI_Line_Item) {
46
-                    $line_item->delete_child_line_item($code);
47
-                    continue;
48
-                }
49
-                if ((
50
-                        $child_line_item instanceof EEI_Line_Item
51
-                        && $child_line_item->type() === EEM_Line_Item::type_sub_total
52
-                    )
53
-                    || (
54
-                        $child_line_item instanceof EEI_Line_Item
55
-                        && $child_line_item->type() === EEM_Line_Item::type_line_item
56
-                        && $child_line_item->OBJ_type() === 'Ticket'
57
-                    )
58
-                ) {
59
-                    $ticket_or_subtotals_with_tkt_children_count++;
60
-                }
61
-            }
62
-            // if this is an event subtotal with NO ticket children
63
-            // we basically want to ignore it
64
-            return $this->_filter_zero_subtotal_line_item(
65
-                $non_zero_line_item,
66
-                $ticket_or_subtotals_with_tkt_children_count
67
-            );
68
-        }
69
-        return $non_zero_line_item;
70
-    }
25
+	/**
26
+	 * Creates a duplicate of the line item tree, except only includes billable items
27
+	 * and the portion of line items attributed to billable things
28
+	 *
29
+	 * @param EEI_Line_Item $line_item
30
+	 * @return EEI_Line_Item
31
+	 */
32
+	public function process(EEI_Line_Item $line_item)
33
+	{
34
+		$non_zero_line_item = $this->_filter_zero_line_item($line_item);
35
+		if (! $non_zero_line_item instanceof EEI_Line_Item) {
36
+			return null;
37
+		}
38
+		// if this is an event subtotal, we want to only include it if it
39
+		// has a non-zero total and at least one ticket line item child
40
+		if ($line_item->children()) {
41
+			$ticket_or_subtotals_with_tkt_children_count = 0;
42
+			foreach ($line_item->children() as $child_line_item) {
43
+				$code = $child_line_item->code();
44
+				$child_line_item = $this->process($child_line_item);
45
+				if (! $child_line_item instanceof EEI_Line_Item) {
46
+					$line_item->delete_child_line_item($code);
47
+					continue;
48
+				}
49
+				if ((
50
+						$child_line_item instanceof EEI_Line_Item
51
+						&& $child_line_item->type() === EEM_Line_Item::type_sub_total
52
+					)
53
+					|| (
54
+						$child_line_item instanceof EEI_Line_Item
55
+						&& $child_line_item->type() === EEM_Line_Item::type_line_item
56
+						&& $child_line_item->OBJ_type() === 'Ticket'
57
+					)
58
+				) {
59
+					$ticket_or_subtotals_with_tkt_children_count++;
60
+				}
61
+			}
62
+			// if this is an event subtotal with NO ticket children
63
+			// we basically want to ignore it
64
+			return $this->_filter_zero_subtotal_line_item(
65
+				$non_zero_line_item,
66
+				$ticket_or_subtotals_with_tkt_children_count
67
+			);
68
+		}
69
+		return $non_zero_line_item;
70
+	}
71 71
 
72 72
 
73
-    /**
74
-     * Creates a new, unsaved line item, but if it's a ticket line item
75
-     * with a total of 0, or a subtotal of 0, returns null instead
76
-     *
77
-     * @param EEI_Line_Item $line_item
78
-     * @return EEI_Line_Item
79
-     */
80
-    protected function _filter_zero_line_item(EEI_Line_Item $line_item)
81
-    {
82
-        if ($line_item->type() === EEM_Line_Item::type_line_item
83
-            && $line_item->OBJ_type() === 'Ticket'
84
-            && (int) $line_item->quantity() === 0
85
-        ) {
86
-            return null;
87
-        }
88
-        return $line_item;
89
-    }
73
+	/**
74
+	 * Creates a new, unsaved line item, but if it's a ticket line item
75
+	 * with a total of 0, or a subtotal of 0, returns null instead
76
+	 *
77
+	 * @param EEI_Line_Item $line_item
78
+	 * @return EEI_Line_Item
79
+	 */
80
+	protected function _filter_zero_line_item(EEI_Line_Item $line_item)
81
+	{
82
+		if ($line_item->type() === EEM_Line_Item::type_line_item
83
+			&& $line_item->OBJ_type() === 'Ticket'
84
+			&& (int) $line_item->quantity() === 0
85
+		) {
86
+			return null;
87
+		}
88
+		return $line_item;
89
+	}
90 90
 
91 91
 
92
-    /**
93
-     * Creates a new, unsaved line item, but if it's a ticket line item
94
-     * with a total of 0, or a subtotal of 0, returns null instead
95
-     *
96
-     * @param EEI_Line_Item $line_item
97
-     * @param int           $ticket_children
98
-     * @return EEI_Line_Item
99
-     */
100
-    protected function _filter_zero_subtotal_line_item(EEI_Line_Item $line_item, $ticket_children = 0)
101
-    {
102
-        if ((int) $ticket_children === 0
103
-            && $line_item->type() === EEM_Line_Item::type_sub_total
104
-        ) {
105
-            return null;
106
-        }
107
-        return $line_item;
108
-    }
92
+	/**
93
+	 * Creates a new, unsaved line item, but if it's a ticket line item
94
+	 * with a total of 0, or a subtotal of 0, returns null instead
95
+	 *
96
+	 * @param EEI_Line_Item $line_item
97
+	 * @param int           $ticket_children
98
+	 * @return EEI_Line_Item
99
+	 */
100
+	protected function _filter_zero_subtotal_line_item(EEI_Line_Item $line_item, $ticket_children = 0)
101
+	{
102
+		if ((int) $ticket_children === 0
103
+			&& $line_item->type() === EEM_Line_Item::type_sub_total
104
+		) {
105
+			return null;
106
+		}
107
+		return $line_item;
108
+	}
109 109
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
     public function process(EEI_Line_Item $line_item)
33 33
     {
34 34
         $non_zero_line_item = $this->_filter_zero_line_item($line_item);
35
-        if (! $non_zero_line_item instanceof EEI_Line_Item) {
35
+        if ( ! $non_zero_line_item instanceof EEI_Line_Item) {
36 36
             return null;
37 37
         }
38 38
         // if this is an event subtotal, we want to only include it if it
@@ -42,7 +42,7 @@  discard block
 block discarded – undo
42 42
             foreach ($line_item->children() as $child_line_item) {
43 43
                 $code = $child_line_item->code();
44 44
                 $child_line_item = $this->process($child_line_item);
45
-                if (! $child_line_item instanceof EEI_Line_Item) {
45
+                if ( ! $child_line_item instanceof EEI_Line_Item) {
46 46
                     $line_item->delete_child_line_item($code);
47 47
                     continue;
48 48
                 }
Please login to merge, or discard this patch.
core/libraries/line_item_filters/EE_Line_Item_Filter_Collection.class.php 1 patch
Indentation   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -18,11 +18,11 @@
 block discarded – undo
18 18
 {
19 19
 
20 20
 
21
-    /**
22
-     * EE_Line_Item_Filter_Collection constructor.
23
-     */
24
-    public function __construct()
25
-    {
26
-        $this->interface = 'EEI_Line_Item_Filter';
27
-    }
21
+	/**
22
+	 * EE_Line_Item_Filter_Collection constructor.
23
+	 */
24
+	public function __construct()
25
+	{
26
+		$this->interface = 'EEI_Line_Item_Filter';
27
+	}
28 28
 }
Please login to merge, or discard this patch.