Completed
Branch models-cleanup/model-relations (db5ca7)
by
unknown
13:03 queued 08:35
created
core/libraries/template_parts/EE_Template_Part.class.php 1 patch
Indentation   +108 added lines, -108 removed lines patch added patch discarded remove patch
@@ -16,112 +16,112 @@
 block discarded – undo
16 16
 {
17 17
 
18 18
 
19
-    /**
20
-     * @type string $name
21
-     */
22
-    protected $name;
23
-
24
-    /**
25
-     * @type string $label
26
-     */
27
-    protected $label;
28
-
29
-    /**
30
-     * @type string $template
31
-     */
32
-    protected $template;
33
-
34
-    /**
35
-     * @type int $priority
36
-     */
37
-    protected $priority;
38
-
39
-
40
-    /**
41
-     *    class constructor
42
-     *
43
-     * @param string $name
44
-     * @param string $label
45
-     * @param string $template
46
-     * @param int    $priority
47
-     */
48
-    public function __construct($name, $label, $template, $priority = 100)
49
-    {
50
-        $this->set_name($name);
51
-        $this->set_label($label);
52
-        $this->set_template($template);
53
-        $this->set_priority($priority);
54
-    }
55
-
56
-
57
-    /**
58
-     * @return mixed
59
-     */
60
-    public function name()
61
-    {
62
-        return $this->name;
63
-    }
64
-
65
-
66
-    /**
67
-     * @param mixed $name
68
-     */
69
-    public function set_name($name)
70
-    {
71
-        $this->name = $name;
72
-    }
73
-
74
-
75
-    /**
76
-     * @return string
77
-     */
78
-    public function label()
79
-    {
80
-        return $this->label;
81
-    }
82
-
83
-
84
-    /**
85
-     * @param string $label
86
-     */
87
-    public function set_label($label)
88
-    {
89
-        $this->label = $label;
90
-    }
91
-
92
-
93
-    /**
94
-     * @return array
95
-     */
96
-    public function template()
97
-    {
98
-        return $this->template;
99
-    }
100
-
101
-
102
-    /**
103
-     * @param string $template
104
-     */
105
-    public function set_template($template)
106
-    {
107
-        $this->template = $template;
108
-    }
109
-
110
-
111
-    /**
112
-     * @return int
113
-     */
114
-    public function priority()
115
-    {
116
-        return $this->priority;
117
-    }
118
-
119
-
120
-    /**
121
-     * @param int $priority
122
-     */
123
-    public function set_priority($priority)
124
-    {
125
-        $this->priority = intval($priority);
126
-    }
19
+	/**
20
+	 * @type string $name
21
+	 */
22
+	protected $name;
23
+
24
+	/**
25
+	 * @type string $label
26
+	 */
27
+	protected $label;
28
+
29
+	/**
30
+	 * @type string $template
31
+	 */
32
+	protected $template;
33
+
34
+	/**
35
+	 * @type int $priority
36
+	 */
37
+	protected $priority;
38
+
39
+
40
+	/**
41
+	 *    class constructor
42
+	 *
43
+	 * @param string $name
44
+	 * @param string $label
45
+	 * @param string $template
46
+	 * @param int    $priority
47
+	 */
48
+	public function __construct($name, $label, $template, $priority = 100)
49
+	{
50
+		$this->set_name($name);
51
+		$this->set_label($label);
52
+		$this->set_template($template);
53
+		$this->set_priority($priority);
54
+	}
55
+
56
+
57
+	/**
58
+	 * @return mixed
59
+	 */
60
+	public function name()
61
+	{
62
+		return $this->name;
63
+	}
64
+
65
+
66
+	/**
67
+	 * @param mixed $name
68
+	 */
69
+	public function set_name($name)
70
+	{
71
+		$this->name = $name;
72
+	}
73
+
74
+
75
+	/**
76
+	 * @return string
77
+	 */
78
+	public function label()
79
+	{
80
+		return $this->label;
81
+	}
82
+
83
+
84
+	/**
85
+	 * @param string $label
86
+	 */
87
+	public function set_label($label)
88
+	{
89
+		$this->label = $label;
90
+	}
91
+
92
+
93
+	/**
94
+	 * @return array
95
+	 */
96
+	public function template()
97
+	{
98
+		return $this->template;
99
+	}
100
+
101
+
102
+	/**
103
+	 * @param string $template
104
+	 */
105
+	public function set_template($template)
106
+	{
107
+		$this->template = $template;
108
+	}
109
+
110
+
111
+	/**
112
+	 * @return int
113
+	 */
114
+	public function priority()
115
+	{
116
+		return $this->priority;
117
+	}
118
+
119
+
120
+	/**
121
+	 * @param int $priority
122
+	 */
123
+	public function set_priority($priority)
124
+	{
125
+		$this->priority = intval($priority);
126
+	}
127 127
 }
Please login to merge, or discard this patch.
core/libraries/template_parts/EE_Template_Part_PriorityQueue.class.php 1 patch
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -17,43 +17,43 @@
 block discarded – undo
17 17
 {
18 18
 
19 19
 
20
-    /**
21
-     * add
22
-     *
23
-     * attaches aTemplate_Part to the Collection
24
-     * and sets any supplied data associated with the current iterator entry
25
-     *
26
-     * @access public
27
-     * @param EE_Template_Part $object
28
-     * @param int              $priority
29
-     * @return bool
30
-     */
31
-    public function insert($object, $priority = 100)
32
-    {
33
-        if ($object instanceof EE_Template_Part) {
34
-            parent::insert($object, $priority);
35
-            return true;
36
-        } else {
37
-            return false;
38
-        }
39
-    }
20
+	/**
21
+	 * add
22
+	 *
23
+	 * attaches aTemplate_Part to the Collection
24
+	 * and sets any supplied data associated with the current iterator entry
25
+	 *
26
+	 * @access public
27
+	 * @param EE_Template_Part $object
28
+	 * @param int              $priority
29
+	 * @return bool
30
+	 */
31
+	public function insert($object, $priority = 100)
32
+	{
33
+		if ($object instanceof EE_Template_Part) {
34
+			parent::insert($object, $priority);
35
+			return true;
36
+		} else {
37
+			return false;
38
+		}
39
+	}
40 40
 
41 41
 
42
-    /**
43
-     * compare
44
-     *
45
-     * sorts EE_Template_Part in ascending order based on set priority
46
-     *
47
-     * @access public
48
-     * @param int $priority1
49
-     * @param int $priority2
50
-     * @return bool
51
-     */
52
-    public function compare($priority1, $priority2)
53
-    {
54
-        if ($priority1 === $priority2) {
55
-            return 0;
56
-        }
57
-        return $priority1 > $priority2 ? -1 : 1;
58
-    }
42
+	/**
43
+	 * compare
44
+	 *
45
+	 * sorts EE_Template_Part in ascending order based on set priority
46
+	 *
47
+	 * @access public
48
+	 * @param int $priority1
49
+	 * @param int $priority2
50
+	 * @return bool
51
+	 */
52
+	public function compare($priority1, $priority2)
53
+	{
54
+		if ($priority1 === $priority2) {
55
+			return 0;
56
+		}
57
+		return $priority1 > $priority2 ? -1 : 1;
58
+	}
59 59
 }
Please login to merge, or discard this patch.
core/business/EE_Processor_Base.class.php 2 patches
Indentation   +60 added lines, -60 removed lines patch added patch discarded remove patch
@@ -14,71 +14,71 @@
 block discarded – undo
14 14
 class EE_Processor_Base
15 15
 {
16 16
 
17
-    /**
18
-     * Used to indicate whether current request is for an IPN or not.
19
-     *
20
-     * @var bool
21
-     */
22
-    protected static $IPN = false;
17
+	/**
18
+	 * Used to indicate whether current request is for an IPN or not.
19
+	 *
20
+	 * @var bool
21
+	 */
22
+	protected static $IPN = false;
23 23
 
24
-    /**
25
-     * Used to indicate whether SPCO is being revisited by registrant or not.
26
-     *
27
-     * @var bool
28
-     */
29
-    protected $_revisit = false;
24
+	/**
25
+	 * Used to indicate whether SPCO is being revisited by registrant or not.
26
+	 *
27
+	 * @var bool
28
+	 */
29
+	protected $_revisit = false;
30 30
 
31 31
 
32
-    /**
33
-     * @param boolean $IPN
34
-     */
35
-    public static function set_IPN($IPN)
36
-    {
37
-        self::$IPN = filter_var($IPN, FILTER_VALIDATE_BOOLEAN);
38
-    }
32
+	/**
33
+	 * @param boolean $IPN
34
+	 */
35
+	public static function set_IPN($IPN)
36
+	{
37
+		self::$IPN = filter_var($IPN, FILTER_VALIDATE_BOOLEAN);
38
+	}
39 39
 
40 40
 
41
-    /**
42
-     * Allows external class (usually checkout) to set whether SPCO is being revisited by registrant or not.
43
-     *
44
-     * @param bool $revisit
45
-     * @return void
46
-     */
47
-    public function set_revisit($revisit = false)
48
-    {
49
-        $this->_revisit = filter_var($revisit, FILTER_VALIDATE_BOOLEAN);
50
-    }
41
+	/**
42
+	 * Allows external class (usually checkout) to set whether SPCO is being revisited by registrant or not.
43
+	 *
44
+	 * @param bool $revisit
45
+	 * @return void
46
+	 */
47
+	public function set_revisit($revisit = false)
48
+	{
49
+		$this->_revisit = filter_var($revisit, FILTER_VALIDATE_BOOLEAN);
50
+	}
51 51
 
52 52
 
53
-    /**
54
-     * debug
55
-     *
56
-     * @param string          $class
57
-     * @param string          $func
58
-     * @param string          $line
59
-     * @param \EE_Transaction $transaction
60
-     * @param array           $info
61
-     * @param bool            $display_request
62
-     */
63
-    protected function log(
64
-        $class = '',
65
-        $func = '',
66
-        $line = '',
67
-        EE_Transaction $transaction,
68
-        $info = array(),
69
-        $display_request = false
70
-    ) {
71
-        if (WP_DEBUG && false) {
72
-            if ($transaction instanceof EE_Transaction) {
73
-                // don't serialize objects
74
-                $info = EEH_Debug_Tools::strip_objects($info);
75
-                if ($transaction->ID()) {
76
-                    $info['TXN_status'] = $transaction->status_ID();
77
-                    $info['TXN_reg_steps'] = $transaction->reg_steps();
78
-                    $index = 'EE_Transaction: ' . $transaction->ID();
79
-                    EEH_Debug_Tools::log($class, $func, $line, $info, $display_request, $index);
80
-                }
81
-            }
82
-        }
83
-    }
53
+	/**
54
+	 * debug
55
+	 *
56
+	 * @param string          $class
57
+	 * @param string          $func
58
+	 * @param string          $line
59
+	 * @param \EE_Transaction $transaction
60
+	 * @param array           $info
61
+	 * @param bool            $display_request
62
+	 */
63
+	protected function log(
64
+		$class = '',
65
+		$func = '',
66
+		$line = '',
67
+		EE_Transaction $transaction,
68
+		$info = array(),
69
+		$display_request = false
70
+	) {
71
+		if (WP_DEBUG && false) {
72
+			if ($transaction instanceof EE_Transaction) {
73
+				// don't serialize objects
74
+				$info = EEH_Debug_Tools::strip_objects($info);
75
+				if ($transaction->ID()) {
76
+					$info['TXN_status'] = $transaction->status_ID();
77
+					$info['TXN_reg_steps'] = $transaction->reg_steps();
78
+					$index = 'EE_Transaction: ' . $transaction->ID();
79
+					EEH_Debug_Tools::log($class, $func, $line, $info, $display_request, $index);
80
+				}
81
+			}
82
+		}
83
+	}
84 84
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -75,7 +75,7 @@
 block discarded – undo
75 75
                 if ($transaction->ID()) {
76 76
                     $info['TXN_status'] = $transaction->status_ID();
77 77
                     $info['TXN_reg_steps'] = $transaction->reg_steps();
78
-                    $index = 'EE_Transaction: ' . $transaction->ID();
78
+                    $index = 'EE_Transaction: '.$transaction->ID();
79 79
                     EEH_Debug_Tools::log($class, $func, $line, $info, $display_request, $index);
80 80
                 }
81 81
             }
Please login to merge, or discard this patch.
core/business/EE_Transaction_Payments.class.php 2 patches
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -43,7 +43,7 @@  discard block
 block discarded – undo
43 43
     public static function instance()
44 44
     {
45 45
         // check if class object is instantiated
46
-        if (! self::$_instance instanceof EE_Transaction_Payments) {
46
+        if ( ! self::$_instance instanceof EE_Transaction_Payments) {
47 47
             self::$_instance = new self();
48 48
         }
49 49
         return self::$_instance;
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     public function recalculate_transaction_total(EE_Transaction $transaction, $update_txn = true)
63 63
     {
64 64
         $total_line_item = $transaction->total_line_item();
65
-        if (! $total_line_item instanceof EE_Line_Item) {
65
+        if ( ! $total_line_item instanceof EE_Line_Item) {
66 66
             EE_Error::add_error(
67 67
                 sprintf(
68 68
                     __('The Total Line Item for Transaction %1$d\'s was not found or is invalid.', 'event_espresso'),
@@ -101,7 +101,7 @@  discard block
 block discarded – undo
101 101
     public function calculate_total_payments_and_update_status(EE_Transaction $transaction, $update_txn = true)
102 102
     {
103 103
         // verify transaction
104
-        if (! $transaction instanceof EE_Transaction) {
104
+        if ( ! $transaction instanceof EE_Transaction) {
105 105
             EE_Error::add_error(
106 106
                 __('Please provide a valid EE_Transaction object.', 'event_espresso'),
107 107
                 __FILE__,
@@ -116,7 +116,7 @@  discard block
 block discarded – undo
116 116
         if ($total_paid !== false && (float) $total_paid !== $transaction->paid()) {
117 117
             $transaction->set_paid($total_paid);
118 118
             // maybe update status, and make sure to save transaction if not done already
119
-            if (! $transaction->update_status_based_on_total_paid($update_txn)) {
119
+            if ( ! $transaction->update_status_based_on_total_paid($update_txn)) {
120 120
                 if ($update_txn) {
121 121
                     return $transaction->save() ? true : false;
122 122
                 }
@@ -145,7 +145,7 @@  discard block
 block discarded – undo
145 145
         $payment_status = EEM_Payment::status_id_approved
146 146
     ) {
147 147
         // verify transaction
148
-        if (! $transaction instanceof EE_Transaction) {
148
+        if ( ! $transaction instanceof EE_Transaction) {
149 149
             EE_Error::add_error(
150 150
                 __('Please provide a valid EE_Transaction object.', 'event_espresso'),
151 151
                 __FILE__,
@@ -178,7 +178,7 @@  discard block
 block discarded – undo
178 178
     public function delete_payment_and_update_transaction(EE_Payment $payment)
179 179
     {
180 180
         // verify payment
181
-        if (! $payment instanceof EE_Payment) {
181
+        if ( ! $payment instanceof EE_Payment) {
182 182
             EE_Error::add_error(
183 183
                 __('A valid Payment object was not received.', 'event_espresso'),
184 184
                 __FILE__,
@@ -187,10 +187,10 @@  discard block
 block discarded – undo
187 187
             );
188 188
             return false;
189 189
         }
190
-        if (! $this->delete_registration_payments_and_update_registrations($payment)) {
190
+        if ( ! $this->delete_registration_payments_and_update_registrations($payment)) {
191 191
             return false;
192 192
         }
193
-        if (! $payment->delete()) {
193
+        if ( ! $payment->delete()) {
194 194
             EE_Error::add_error(
195 195
                 __('The payment could not be deleted.', 'event_espresso'),
196 196
                 __FILE__,
@@ -213,7 +213,7 @@  discard block
 block discarded – undo
213 213
 
214 214
         // if this fails, that just means that the transaction didn't get its status changed and/or updated.
215 215
         // however the payment was still deleted.
216
-        if (! $this->calculate_total_payments_and_update_status($transaction)) {
216
+        if ( ! $this->calculate_total_payments_and_update_status($transaction)) {
217 217
             EE_Error::add_attention(
218 218
                 __(
219 219
                     'It appears that the Payment was deleted but no change was recorded for the Transaction for an unknown reason. Please verify that all data for this Transaction looks correct..',
@@ -255,7 +255,7 @@  discard block
 block discarded – undo
255 255
         $reg_payment_query_params = ! empty($reg_payment_query_params) ? $reg_payment_query_params
256 256
             : array(array('PAY_ID' => $payment->ID()));
257 257
         $registration_payments = EEM_Registration_Payment::instance()->get_all($reg_payment_query_params);
258
-        if (! empty($registration_payments)) {
258
+        if ( ! empty($registration_payments)) {
259 259
             foreach ($registration_payments as $registration_payment) {
260 260
                 if ($registration_payment instanceof EE_Registration_Payment) {
261 261
                     $amount_paid = $registration_payment->amount();
@@ -321,7 +321,7 @@  discard block
 block discarded – undo
321 321
     public function update_transaction_status_based_on_total_paid(EE_Transaction $transaction, $update_txn = true)
322 322
     {
323 323
         EE_Error::doing_it_wrong(
324
-            __CLASS__ . '::' . __FUNCTION__,
324
+            __CLASS__.'::'.__FUNCTION__,
325 325
             sprintf(
326 326
                 __('This method is deprecated. Please use "%s" instead', 'event_espresso'),
327 327
                 'EE_Transaction::update_status_based_on_total_paid()'
@@ -330,7 +330,7 @@  discard block
 block discarded – undo
330 330
             '5.0.0'
331 331
         );
332 332
         // verify transaction
333
-        if (! $transaction instanceof EE_Transaction) {
333
+        if ( ! $transaction instanceof EE_Transaction) {
334 334
             EE_Error::add_error(
335 335
                 __('Please provide a valid EE_Transaction object.', 'event_espresso'),
336 336
                 __FILE__,
Please login to merge, or discard this patch.
Indentation   +420 added lines, -420 removed lines patch added patch discarded remove patch
@@ -15,424 +15,424 @@
 block discarded – undo
15 15
 class EE_Transaction_Payments
16 16
 {
17 17
 
18
-    /**
19
-     * @var EE_Transaction_Payments $_instance
20
-     * @access    private
21
-     */
22
-    private static $_instance;
23
-
24
-    /**
25
-     * @deprecated
26
-     * @var string
27
-     */
28
-    protected $_old_txn_status;
29
-
30
-    /**
31
-     * @deprecated
32
-     * @var string
33
-     */
34
-    protected $_new_txn_status;
35
-
36
-
37
-    /**
38
-     * @singleton method used to instantiate class object
39
-     * @access    public
40
-     * @return EE_Transaction_Payments instance
41
-     */
42
-    public static function instance()
43
-    {
44
-        // check if class object is instantiated
45
-        if (! self::$_instance instanceof EE_Transaction_Payments) {
46
-            self::$_instance = new self();
47
-        }
48
-        return self::$_instance;
49
-    }
50
-
51
-
52
-    /**
53
-     * recalculate_transaction_total
54
-     *
55
-     * @access private
56
-     * @param EE_Transaction $transaction
57
-     * @param bool           $update_txn
58
-     * @return bool true if TXN total was updated, false if not
59
-     * @throws \EE_Error
60
-     */
61
-    public function recalculate_transaction_total(EE_Transaction $transaction, $update_txn = true)
62
-    {
63
-        $total_line_item = $transaction->total_line_item();
64
-        if (! $total_line_item instanceof EE_Line_Item) {
65
-            EE_Error::add_error(
66
-                sprintf(
67
-                    __('The Total Line Item for Transaction %1$d\'s was not found or is invalid.', 'event_espresso'),
68
-                    $transaction->ID()
69
-                ),
70
-                __FILE__,
71
-                __FUNCTION__,
72
-                __LINE__
73
-            );
74
-            return false;
75
-        }
76
-        $new_total = $total_line_item->recalculate_total_including_taxes();
77
-        $transaction->set_total($new_total);
78
-        if ($update_txn) {
79
-            return $transaction->save() ? true : false;
80
-        }
81
-        return false;
82
-    }
83
-
84
-
85
-    /**
86
-     * Updates the provided EE_Transaction with all the applicable payments
87
-     * returns a boolean for whether the TXN was saved to the db
88
-     * (meaning a status change occurred)
89
-     * or not saved (which could **still** mean that
90
-     * the TXN status changed, but just was not yet saved).
91
-     * So if passing a value of false for the $update_txn param,
92
-     * then client code needs to take responsibility for saving the TXN
93
-     * regardless of what happens within EE_Transaction_Payments;
94
-     *
95
-     * @param            EE_Transaction /int $transaction_obj_or_id EE_Transaction or its ID
96
-     * @param    boolean $update_txn whether to save the TXN
97
-     * @return    boolean        whether the TXN was saved
98
-     * @throws \EE_Error
99
-     */
100
-    public function calculate_total_payments_and_update_status(EE_Transaction $transaction, $update_txn = true)
101
-    {
102
-        // verify transaction
103
-        if (! $transaction instanceof EE_Transaction) {
104
-            EE_Error::add_error(
105
-                __('Please provide a valid EE_Transaction object.', 'event_espresso'),
106
-                __FILE__,
107
-                __FUNCTION__,
108
-                __LINE__
109
-            );
110
-            return false;
111
-        }
112
-        // calculate total paid
113
-        $total_paid = $this->recalculate_total_payments_for_transaction($transaction);
114
-        // if total paid has changed
115
-        if ($total_paid !== false && (float) $total_paid !== $transaction->paid()) {
116
-            $transaction->set_paid($total_paid);
117
-            // maybe update status, and make sure to save transaction if not done already
118
-            if (! $transaction->update_status_based_on_total_paid($update_txn)) {
119
-                if ($update_txn) {
120
-                    return $transaction->save() ? true : false;
121
-                }
122
-            } else {
123
-                // the status got updated and was saved by
124
-                // update_transaction_status_based_on_total_paid()
125
-                return true;
126
-            }
127
-        }
128
-        return false;
129
-    }
130
-
131
-
132
-    /**
133
-     * recalculate_total_payments_for_transaction
134
-     *
135
-     * @access public
136
-     * @param EE_Transaction $transaction
137
-     * @param string         $payment_status One of EEM_Payment's statuses, like 'PAP' (Approved).
138
-     *                                       By default, searches for approved payments
139
-     * @return float|false   float on success, false on fail
140
-     * @throws \EE_Error
141
-     */
142
-    public function recalculate_total_payments_for_transaction(
143
-        EE_Transaction $transaction,
144
-        $payment_status = EEM_Payment::status_id_approved
145
-    ) {
146
-        // verify transaction
147
-        if (! $transaction instanceof EE_Transaction) {
148
-            EE_Error::add_error(
149
-                __('Please provide a valid EE_Transaction object.', 'event_espresso'),
150
-                __FILE__,
151
-                __FUNCTION__,
152
-                __LINE__
153
-            );
154
-            return false;
155
-        }
156
-        // ensure Payment model is loaded
157
-        EE_Registry::instance()->load_model('Payment');
158
-        // calls EEM_Base::sum()
159
-        return EEM_Payment::instance()->sum(
160
-            // query params
161
-            array(array('TXN_ID' => $transaction->ID(), 'STS_ID' => $payment_status)),
162
-            // field to sum
163
-            'PAY_amount'
164
-        );
165
-    }
166
-
167
-
168
-    /**
169
-     * delete_payment_and_update_transaction
170
-     * Before deleting the selected payment, we fetch it's transaction,
171
-     * then delete the payment, and update the transactions' amount paid.
172
-     *
173
-     * @param EE_Payment $payment
174
-     * @return boolean
175
-     * @throws \EE_Error
176
-     */
177
-    public function delete_payment_and_update_transaction(EE_Payment $payment)
178
-    {
179
-        // verify payment
180
-        if (! $payment instanceof EE_Payment) {
181
-            EE_Error::add_error(
182
-                __('A valid Payment object was not received.', 'event_espresso'),
183
-                __FILE__,
184
-                __FUNCTION__,
185
-                __LINE__
186
-            );
187
-            return false;
188
-        }
189
-        if (! $this->delete_registration_payments_and_update_registrations($payment)) {
190
-            return false;
191
-        }
192
-        if (! $payment->delete()) {
193
-            EE_Error::add_error(
194
-                __('The payment could not be deleted.', 'event_espresso'),
195
-                __FILE__,
196
-                __FUNCTION__,
197
-                __LINE__
198
-            );
199
-            return false;
200
-        }
201
-
202
-        $transaction = $payment->transaction();
203
-        $TXN_status = $transaction->status_ID();
204
-        if (
205
-            $TXN_status === EEM_Transaction::abandoned_status_code
206
-            || $TXN_status === EEM_Transaction::failed_status_code
207
-            || $payment->amount() === 0
208
-        ) {
209
-            EE_Error::add_success(__('The Payment was successfully deleted.', 'event_espresso'));
210
-            return true;
211
-        }
212
-
213
-
214
-        // if this fails, that just means that the transaction didn't get its status changed and/or updated.
215
-        // however the payment was still deleted.
216
-        if (! $this->calculate_total_payments_and_update_status($transaction)) {
217
-            EE_Error::add_attention(
218
-                __(
219
-                    'It appears that the Payment was deleted but no change was recorded for the Transaction for an unknown reason. Please verify that all data for this Transaction looks correct..',
220
-                    'event_espresso'
221
-                ),
222
-                __FILE__,
223
-                __FUNCTION__,
224
-                __LINE__
225
-            );
226
-            return true;
227
-        }
228
-
229
-        EE_Error::add_success(
230
-            __(
231
-                'The Payment was successfully deleted, and the Transaction has been updated accordingly.',
232
-                'event_espresso'
233
-            )
234
-        );
235
-        return true;
236
-    }
237
-
238
-
239
-    /**
240
-     * delete_registration_payments_and_update_registrations
241
-     *
242
-     * removes all registration payment records associated with a payment
243
-     * and subtracts their amounts from the corresponding registrations REG_paid field
244
-     *
245
-     * @param EE_Payment $payment
246
-     * @param array      $reg_payment_query_params
247
-     * @return bool
248
-     * @throws \EE_Error
249
-     */
250
-    public function delete_registration_payments_and_update_registrations(
251
-        EE_Payment $payment,
252
-        $reg_payment_query_params = array()
253
-    ) {
254
-        $save_payment = false;
255
-        $reg_payment_query_params = ! empty($reg_payment_query_params) ? $reg_payment_query_params
256
-            : array(array('PAY_ID' => $payment->ID()));
257
-        $registration_payments = EEM_Registration_Payment::instance()->get_all($reg_payment_query_params);
258
-        if (! empty($registration_payments)) {
259
-            foreach ($registration_payments as $registration_payment) {
260
-                if ($registration_payment instanceof EE_Registration_Payment) {
261
-                    $amount_paid = $registration_payment->amount();
262
-                    $registration = $registration_payment->registration();
263
-                    if ($registration instanceof EE_Registration) {
264
-                        $registration->set_paid($registration->paid() - $amount_paid);
265
-                        if ($registration->save() !== false) {
266
-                            $registration_payment->delete_permanently();
267
-                            $save_payment = true;
268
-                        }
269
-                    } else {
270
-                        EE_Error::add_error(
271
-                            sprintf(
272
-                                __(
273
-                                    'An invalid Registration object was associated with Registration Payment ID# %1$d.',
274
-                                    'event_espresso'
275
-                                ),
276
-                                $registration_payment->ID()
277
-                            ),
278
-                            __FILE__,
279
-                            __FUNCTION__,
280
-                            __LINE__
281
-                        );
282
-                        return false;
283
-                    }
284
-                } else {
285
-                    EE_Error::add_error(
286
-                        sprintf(
287
-                            __(
288
-                                'An invalid Registration Payment object was associated with payment ID# %1$d.',
289
-                                'event_espresso'
290
-                            ),
291
-                            $payment->ID()
292
-                        ),
293
-                        __FILE__,
294
-                        __FUNCTION__,
295
-                        __LINE__
296
-                    );
297
-                    return false;
298
-                }
299
-            }
300
-        }
301
-        if ($save_payment) {
302
-            $payment->save();
303
-        }
304
-        return true;
305
-    }
306
-
307
-
308
-
309
-    /********************************** DEPRECATED METHODS **********************************/
310
-
311
-
312
-    /**
313
-     * possibly toggles TXN status
314
-     *
315
-     * @deprecated 4.9.1
316
-     * @param EE_Transaction $transaction
317
-     * @param    boolean     $update_txn whether to save the TXN
318
-     * @return    boolean        whether the TXN was saved
319
-     * @throws \EE_Error
320
-     */
321
-    public function update_transaction_status_based_on_total_paid(EE_Transaction $transaction, $update_txn = true)
322
-    {
323
-        EE_Error::doing_it_wrong(
324
-            __CLASS__ . '::' . __FUNCTION__,
325
-            sprintf(
326
-                __('This method is deprecated. Please use "%s" instead', 'event_espresso'),
327
-                'EE_Transaction::update_status_based_on_total_paid()'
328
-            ),
329
-            '4.9.1',
330
-            '5.0.0'
331
-        );
332
-        // verify transaction
333
-        if (! $transaction instanceof EE_Transaction) {
334
-            EE_Error::add_error(
335
-                __('Please provide a valid EE_Transaction object.', 'event_espresso'),
336
-                __FILE__,
337
-                __FUNCTION__,
338
-                __LINE__
339
-            );
340
-            return false;
341
-        }
342
-        // set transaction status based on comparison of TXN_paid vs TXN_total
343
-        return $transaction->update_status_based_on_total_paid($update_txn);
344
-    }
345
-
346
-
347
-    /**
348
-     * @deprecated 4.9.12
349
-     * @return string
350
-     */
351
-    public function old_txn_status()
352
-    {
353
-        EE_Error::doing_it_wrong(
354
-            __METHOD__,
355
-            esc_html__(
356
-                'This logic has been moved into \EE_Transaction::old_txn_status(), please use that method instead.',
357
-                'event_espresso'
358
-            ),
359
-            '4.9.12'
360
-        );
361
-        return $this->_old_txn_status;
362
-    }
363
-
364
-
365
-    /**
366
-     * @deprecated 4.9.12
367
-     * @param string $old_txn_status
368
-     */
369
-    public function set_old_txn_status($old_txn_status)
370
-    {
371
-        EE_Error::doing_it_wrong(
372
-            __METHOD__,
373
-            esc_html__(
374
-                'This logic has been moved into \EE_Transaction::set_old_txn_status(), please use that method instead.',
375
-                'event_espresso'
376
-            ),
377
-            '4.9.12'
378
-        );
379
-        // only set the first time
380
-        if ($this->_old_txn_status === null) {
381
-            $this->_old_txn_status = $old_txn_status;
382
-        }
383
-    }
384
-
385
-
386
-    /**
387
-     * @deprecated 4.9.12
388
-     * @return string
389
-     */
390
-    public function new_txn_status()
391
-    {
392
-        EE_Error::doing_it_wrong(
393
-            __METHOD__,
394
-            esc_html__(
395
-                'This logic has been removed. Please just use \EE_Transaction::status_ID() instead.',
396
-                'event_espresso'
397
-            ),
398
-            '4.9.12'
399
-        );
400
-        return $this->_new_txn_status;
401
-    }
402
-
403
-
404
-    /**
405
-     * @deprecated 4.9.12
406
-     * @param string $new_txn_status
407
-     */
408
-    public function set_new_txn_status($new_txn_status)
409
-    {
410
-        EE_Error::doing_it_wrong(
411
-            __METHOD__,
412
-            esc_html__(
413
-                'This logic has been removed. Please just use \EE_Transaction::set_status() instead.',
414
-                'event_espresso'
415
-            ),
416
-            '4.9.12'
417
-        );
418
-        $this->_new_txn_status = $new_txn_status;
419
-    }
420
-
421
-
422
-    /**
423
-     * @deprecated 4.9.12
424
-     * @return bool
425
-     */
426
-    public function txn_status_updated()
427
-    {
428
-        EE_Error::doing_it_wrong(
429
-            __METHOD__,
430
-            esc_html__(
431
-                'This logic has been moved into \EE_Transaction::txn_status_updated(), please use that method instead.',
432
-                'event_espresso'
433
-            ),
434
-            '4.9.12'
435
-        );
436
-        return $this->_new_txn_status !== $this->_old_txn_status && $this->_old_txn_status !== null ? true : false;
437
-    }
18
+	/**
19
+	 * @var EE_Transaction_Payments $_instance
20
+	 * @access    private
21
+	 */
22
+	private static $_instance;
23
+
24
+	/**
25
+	 * @deprecated
26
+	 * @var string
27
+	 */
28
+	protected $_old_txn_status;
29
+
30
+	/**
31
+	 * @deprecated
32
+	 * @var string
33
+	 */
34
+	protected $_new_txn_status;
35
+
36
+
37
+	/**
38
+	 * @singleton method used to instantiate class object
39
+	 * @access    public
40
+	 * @return EE_Transaction_Payments instance
41
+	 */
42
+	public static function instance()
43
+	{
44
+		// check if class object is instantiated
45
+		if (! self::$_instance instanceof EE_Transaction_Payments) {
46
+			self::$_instance = new self();
47
+		}
48
+		return self::$_instance;
49
+	}
50
+
51
+
52
+	/**
53
+	 * recalculate_transaction_total
54
+	 *
55
+	 * @access private
56
+	 * @param EE_Transaction $transaction
57
+	 * @param bool           $update_txn
58
+	 * @return bool true if TXN total was updated, false if not
59
+	 * @throws \EE_Error
60
+	 */
61
+	public function recalculate_transaction_total(EE_Transaction $transaction, $update_txn = true)
62
+	{
63
+		$total_line_item = $transaction->total_line_item();
64
+		if (! $total_line_item instanceof EE_Line_Item) {
65
+			EE_Error::add_error(
66
+				sprintf(
67
+					__('The Total Line Item for Transaction %1$d\'s was not found or is invalid.', 'event_espresso'),
68
+					$transaction->ID()
69
+				),
70
+				__FILE__,
71
+				__FUNCTION__,
72
+				__LINE__
73
+			);
74
+			return false;
75
+		}
76
+		$new_total = $total_line_item->recalculate_total_including_taxes();
77
+		$transaction->set_total($new_total);
78
+		if ($update_txn) {
79
+			return $transaction->save() ? true : false;
80
+		}
81
+		return false;
82
+	}
83
+
84
+
85
+	/**
86
+	 * Updates the provided EE_Transaction with all the applicable payments
87
+	 * returns a boolean for whether the TXN was saved to the db
88
+	 * (meaning a status change occurred)
89
+	 * or not saved (which could **still** mean that
90
+	 * the TXN status changed, but just was not yet saved).
91
+	 * So if passing a value of false for the $update_txn param,
92
+	 * then client code needs to take responsibility for saving the TXN
93
+	 * regardless of what happens within EE_Transaction_Payments;
94
+	 *
95
+	 * @param            EE_Transaction /int $transaction_obj_or_id EE_Transaction or its ID
96
+	 * @param    boolean $update_txn whether to save the TXN
97
+	 * @return    boolean        whether the TXN was saved
98
+	 * @throws \EE_Error
99
+	 */
100
+	public function calculate_total_payments_and_update_status(EE_Transaction $transaction, $update_txn = true)
101
+	{
102
+		// verify transaction
103
+		if (! $transaction instanceof EE_Transaction) {
104
+			EE_Error::add_error(
105
+				__('Please provide a valid EE_Transaction object.', 'event_espresso'),
106
+				__FILE__,
107
+				__FUNCTION__,
108
+				__LINE__
109
+			);
110
+			return false;
111
+		}
112
+		// calculate total paid
113
+		$total_paid = $this->recalculate_total_payments_for_transaction($transaction);
114
+		// if total paid has changed
115
+		if ($total_paid !== false && (float) $total_paid !== $transaction->paid()) {
116
+			$transaction->set_paid($total_paid);
117
+			// maybe update status, and make sure to save transaction if not done already
118
+			if (! $transaction->update_status_based_on_total_paid($update_txn)) {
119
+				if ($update_txn) {
120
+					return $transaction->save() ? true : false;
121
+				}
122
+			} else {
123
+				// the status got updated and was saved by
124
+				// update_transaction_status_based_on_total_paid()
125
+				return true;
126
+			}
127
+		}
128
+		return false;
129
+	}
130
+
131
+
132
+	/**
133
+	 * recalculate_total_payments_for_transaction
134
+	 *
135
+	 * @access public
136
+	 * @param EE_Transaction $transaction
137
+	 * @param string         $payment_status One of EEM_Payment's statuses, like 'PAP' (Approved).
138
+	 *                                       By default, searches for approved payments
139
+	 * @return float|false   float on success, false on fail
140
+	 * @throws \EE_Error
141
+	 */
142
+	public function recalculate_total_payments_for_transaction(
143
+		EE_Transaction $transaction,
144
+		$payment_status = EEM_Payment::status_id_approved
145
+	) {
146
+		// verify transaction
147
+		if (! $transaction instanceof EE_Transaction) {
148
+			EE_Error::add_error(
149
+				__('Please provide a valid EE_Transaction object.', 'event_espresso'),
150
+				__FILE__,
151
+				__FUNCTION__,
152
+				__LINE__
153
+			);
154
+			return false;
155
+		}
156
+		// ensure Payment model is loaded
157
+		EE_Registry::instance()->load_model('Payment');
158
+		// calls EEM_Base::sum()
159
+		return EEM_Payment::instance()->sum(
160
+			// query params
161
+			array(array('TXN_ID' => $transaction->ID(), 'STS_ID' => $payment_status)),
162
+			// field to sum
163
+			'PAY_amount'
164
+		);
165
+	}
166
+
167
+
168
+	/**
169
+	 * delete_payment_and_update_transaction
170
+	 * Before deleting the selected payment, we fetch it's transaction,
171
+	 * then delete the payment, and update the transactions' amount paid.
172
+	 *
173
+	 * @param EE_Payment $payment
174
+	 * @return boolean
175
+	 * @throws \EE_Error
176
+	 */
177
+	public function delete_payment_and_update_transaction(EE_Payment $payment)
178
+	{
179
+		// verify payment
180
+		if (! $payment instanceof EE_Payment) {
181
+			EE_Error::add_error(
182
+				__('A valid Payment object was not received.', 'event_espresso'),
183
+				__FILE__,
184
+				__FUNCTION__,
185
+				__LINE__
186
+			);
187
+			return false;
188
+		}
189
+		if (! $this->delete_registration_payments_and_update_registrations($payment)) {
190
+			return false;
191
+		}
192
+		if (! $payment->delete()) {
193
+			EE_Error::add_error(
194
+				__('The payment could not be deleted.', 'event_espresso'),
195
+				__FILE__,
196
+				__FUNCTION__,
197
+				__LINE__
198
+			);
199
+			return false;
200
+		}
201
+
202
+		$transaction = $payment->transaction();
203
+		$TXN_status = $transaction->status_ID();
204
+		if (
205
+			$TXN_status === EEM_Transaction::abandoned_status_code
206
+			|| $TXN_status === EEM_Transaction::failed_status_code
207
+			|| $payment->amount() === 0
208
+		) {
209
+			EE_Error::add_success(__('The Payment was successfully deleted.', 'event_espresso'));
210
+			return true;
211
+		}
212
+
213
+
214
+		// if this fails, that just means that the transaction didn't get its status changed and/or updated.
215
+		// however the payment was still deleted.
216
+		if (! $this->calculate_total_payments_and_update_status($transaction)) {
217
+			EE_Error::add_attention(
218
+				__(
219
+					'It appears that the Payment was deleted but no change was recorded for the Transaction for an unknown reason. Please verify that all data for this Transaction looks correct..',
220
+					'event_espresso'
221
+				),
222
+				__FILE__,
223
+				__FUNCTION__,
224
+				__LINE__
225
+			);
226
+			return true;
227
+		}
228
+
229
+		EE_Error::add_success(
230
+			__(
231
+				'The Payment was successfully deleted, and the Transaction has been updated accordingly.',
232
+				'event_espresso'
233
+			)
234
+		);
235
+		return true;
236
+	}
237
+
238
+
239
+	/**
240
+	 * delete_registration_payments_and_update_registrations
241
+	 *
242
+	 * removes all registration payment records associated with a payment
243
+	 * and subtracts their amounts from the corresponding registrations REG_paid field
244
+	 *
245
+	 * @param EE_Payment $payment
246
+	 * @param array      $reg_payment_query_params
247
+	 * @return bool
248
+	 * @throws \EE_Error
249
+	 */
250
+	public function delete_registration_payments_and_update_registrations(
251
+		EE_Payment $payment,
252
+		$reg_payment_query_params = array()
253
+	) {
254
+		$save_payment = false;
255
+		$reg_payment_query_params = ! empty($reg_payment_query_params) ? $reg_payment_query_params
256
+			: array(array('PAY_ID' => $payment->ID()));
257
+		$registration_payments = EEM_Registration_Payment::instance()->get_all($reg_payment_query_params);
258
+		if (! empty($registration_payments)) {
259
+			foreach ($registration_payments as $registration_payment) {
260
+				if ($registration_payment instanceof EE_Registration_Payment) {
261
+					$amount_paid = $registration_payment->amount();
262
+					$registration = $registration_payment->registration();
263
+					if ($registration instanceof EE_Registration) {
264
+						$registration->set_paid($registration->paid() - $amount_paid);
265
+						if ($registration->save() !== false) {
266
+							$registration_payment->delete_permanently();
267
+							$save_payment = true;
268
+						}
269
+					} else {
270
+						EE_Error::add_error(
271
+							sprintf(
272
+								__(
273
+									'An invalid Registration object was associated with Registration Payment ID# %1$d.',
274
+									'event_espresso'
275
+								),
276
+								$registration_payment->ID()
277
+							),
278
+							__FILE__,
279
+							__FUNCTION__,
280
+							__LINE__
281
+						);
282
+						return false;
283
+					}
284
+				} else {
285
+					EE_Error::add_error(
286
+						sprintf(
287
+							__(
288
+								'An invalid Registration Payment object was associated with payment ID# %1$d.',
289
+								'event_espresso'
290
+							),
291
+							$payment->ID()
292
+						),
293
+						__FILE__,
294
+						__FUNCTION__,
295
+						__LINE__
296
+					);
297
+					return false;
298
+				}
299
+			}
300
+		}
301
+		if ($save_payment) {
302
+			$payment->save();
303
+		}
304
+		return true;
305
+	}
306
+
307
+
308
+
309
+	/********************************** DEPRECATED METHODS **********************************/
310
+
311
+
312
+	/**
313
+	 * possibly toggles TXN status
314
+	 *
315
+	 * @deprecated 4.9.1
316
+	 * @param EE_Transaction $transaction
317
+	 * @param    boolean     $update_txn whether to save the TXN
318
+	 * @return    boolean        whether the TXN was saved
319
+	 * @throws \EE_Error
320
+	 */
321
+	public function update_transaction_status_based_on_total_paid(EE_Transaction $transaction, $update_txn = true)
322
+	{
323
+		EE_Error::doing_it_wrong(
324
+			__CLASS__ . '::' . __FUNCTION__,
325
+			sprintf(
326
+				__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
327
+				'EE_Transaction::update_status_based_on_total_paid()'
328
+			),
329
+			'4.9.1',
330
+			'5.0.0'
331
+		);
332
+		// verify transaction
333
+		if (! $transaction instanceof EE_Transaction) {
334
+			EE_Error::add_error(
335
+				__('Please provide a valid EE_Transaction object.', 'event_espresso'),
336
+				__FILE__,
337
+				__FUNCTION__,
338
+				__LINE__
339
+			);
340
+			return false;
341
+		}
342
+		// set transaction status based on comparison of TXN_paid vs TXN_total
343
+		return $transaction->update_status_based_on_total_paid($update_txn);
344
+	}
345
+
346
+
347
+	/**
348
+	 * @deprecated 4.9.12
349
+	 * @return string
350
+	 */
351
+	public function old_txn_status()
352
+	{
353
+		EE_Error::doing_it_wrong(
354
+			__METHOD__,
355
+			esc_html__(
356
+				'This logic has been moved into \EE_Transaction::old_txn_status(), please use that method instead.',
357
+				'event_espresso'
358
+			),
359
+			'4.9.12'
360
+		);
361
+		return $this->_old_txn_status;
362
+	}
363
+
364
+
365
+	/**
366
+	 * @deprecated 4.9.12
367
+	 * @param string $old_txn_status
368
+	 */
369
+	public function set_old_txn_status($old_txn_status)
370
+	{
371
+		EE_Error::doing_it_wrong(
372
+			__METHOD__,
373
+			esc_html__(
374
+				'This logic has been moved into \EE_Transaction::set_old_txn_status(), please use that method instead.',
375
+				'event_espresso'
376
+			),
377
+			'4.9.12'
378
+		);
379
+		// only set the first time
380
+		if ($this->_old_txn_status === null) {
381
+			$this->_old_txn_status = $old_txn_status;
382
+		}
383
+	}
384
+
385
+
386
+	/**
387
+	 * @deprecated 4.9.12
388
+	 * @return string
389
+	 */
390
+	public function new_txn_status()
391
+	{
392
+		EE_Error::doing_it_wrong(
393
+			__METHOD__,
394
+			esc_html__(
395
+				'This logic has been removed. Please just use \EE_Transaction::status_ID() instead.',
396
+				'event_espresso'
397
+			),
398
+			'4.9.12'
399
+		);
400
+		return $this->_new_txn_status;
401
+	}
402
+
403
+
404
+	/**
405
+	 * @deprecated 4.9.12
406
+	 * @param string $new_txn_status
407
+	 */
408
+	public function set_new_txn_status($new_txn_status)
409
+	{
410
+		EE_Error::doing_it_wrong(
411
+			__METHOD__,
412
+			esc_html__(
413
+				'This logic has been removed. Please just use \EE_Transaction::set_status() instead.',
414
+				'event_espresso'
415
+			),
416
+			'4.9.12'
417
+		);
418
+		$this->_new_txn_status = $new_txn_status;
419
+	}
420
+
421
+
422
+	/**
423
+	 * @deprecated 4.9.12
424
+	 * @return bool
425
+	 */
426
+	public function txn_status_updated()
427
+	{
428
+		EE_Error::doing_it_wrong(
429
+			__METHOD__,
430
+			esc_html__(
431
+				'This logic has been moved into \EE_Transaction::txn_status_updated(), please use that method instead.',
432
+				'event_espresso'
433
+			),
434
+			'4.9.12'
435
+		);
436
+		return $this->_new_txn_status !== $this->_old_txn_status && $this->_old_txn_status !== null ? true : false;
437
+	}
438 438
 }
Please login to merge, or discard this patch.
core/admin/EE_Help_Tour_final_stop.class.php 2 patches
Indentation   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -15,51 +15,51 @@
 block discarded – undo
15 15
 class EE_Help_Tour_final_stop extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Final Stop Tour', 'event_espresso');
21
-        $this->_slug = 'final-stop-tour';
22
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Final Stop Tour', 'event_espresso');
21
+		$this->_slug = 'final-stop-tour';
22
+	}
23 23
 
24 24
 
25
-    protected function _set_tour_stops()
26
-    {
27
-        $this->_stops = array(
28
-            10 => array(
29
-                'id'          => 'contextual-help-link',
30
-                'content'     => $this->_end(),
31
-                'button_text' => __('Quit', 'event_espresso'),
32
-                'options'     => array(
33
-                    'tipLocation'    => 'left',
34
-                    'tipAdjustmentY' => -20,
35
-                    'tipAdjustmentX' => 10,
36
-                ),
37
-            ),
38
-        );
39
-    }
25
+	protected function _set_tour_stops()
26
+	{
27
+		$this->_stops = array(
28
+			10 => array(
29
+				'id'          => 'contextual-help-link',
30
+				'content'     => $this->_end(),
31
+				'button_text' => __('Quit', 'event_espresso'),
32
+				'options'     => array(
33
+					'tipLocation'    => 'left',
34
+					'tipAdjustmentY' => -20,
35
+					'tipAdjustmentX' => 10,
36
+				),
37
+			),
38
+		);
39
+	}
40 40
 
41 41
 
42
-    /**
43
-     * This is the default last stop for all tours that is displayed at the end of a tour OR when a tour is exited for
44
-     * the first time.
45
-     *
46
-     * @return string
47
-     */
48
-    protected function _end()
49
-    {
50
-        $query_args = array(
51
-            'action' => 'admin_option_settings',
52
-            'page'   => 'espresso_general_settings',
53
-        );
54
-        return '<p>'
55
-               . sprintf(
56
-                   __(
57
-                       'That\'s it for the tour!  At any time you can restart a tour by clicking on this help dropdown and then clicking one of the Tour buttons.  There are help tours available on all Event Espresso Admin pages.  If you want to turn off help tours for all pages, %sgo here%s. All the best with your events!',
58
-                       'event_espresso'
59
-                   ),
60
-                   '<a href="' . EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')) . '">',
61
-                   '</a>'
62
-               )
63
-               . '</p>';
64
-    }
42
+	/**
43
+	 * This is the default last stop for all tours that is displayed at the end of a tour OR when a tour is exited for
44
+	 * the first time.
45
+	 *
46
+	 * @return string
47
+	 */
48
+	protected function _end()
49
+	{
50
+		$query_args = array(
51
+			'action' => 'admin_option_settings',
52
+			'page'   => 'espresso_general_settings',
53
+		);
54
+		return '<p>'
55
+			   . sprintf(
56
+				   __(
57
+					   'That\'s it for the tour!  At any time you can restart a tour by clicking on this help dropdown and then clicking one of the Tour buttons.  There are help tours available on all Event Espresso Admin pages.  If you want to turn off help tours for all pages, %sgo here%s. All the best with your events!',
58
+					   'event_espresso'
59
+				   ),
60
+				   '<a href="' . EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')) . '">',
61
+				   '</a>'
62
+			   )
63
+			   . '</p>';
64
+	}
65 65
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@
 block discarded – undo
57 57
                        'That\'s it for the tour!  At any time you can restart a tour by clicking on this help dropdown and then clicking one of the Tour buttons.  There are help tours available on all Event Espresso Admin pages.  If you want to turn off help tours for all pages, %sgo here%s. All the best with your events!',
58 58
                        'event_espresso'
59 59
                    ),
60
-                   '<a href="' . EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')) . '">',
60
+                   '<a href="'.EE_Admin_Page::add_query_args_and_nonce($query_args, admin_url('admin.php')).'">',
61 61
                    '</a>'
62 62
                )
63 63
                . '</p>';
Please login to merge, or discard this patch.
modules/single_page_checkout/inc/EE_SPCO_Reg_Step.class.php 2 patches
Indentation   +627 added lines, -627 removed lines patch added patch discarded remove patch
@@ -12,631 +12,631 @@
 block discarded – undo
12 12
 abstract class EE_SPCO_Reg_Step
13 13
 {
14 14
 
15
-    /**
16
-     *    $_completed - TRUE if this step has fully completed it's duties
17
-     *
18
-     * @access protected
19
-     * @type bool $_completed
20
-     */
21
-    protected $_completed = false;
22
-
23
-    /**
24
-     *    $_is_current_step - TRUE if this is the current step
25
-     *
26
-     * @access protected
27
-     * @type bool $_is_current_step
28
-     */
29
-    protected $_is_current_step = false;
30
-
31
-    /**
32
-     *    $_order - when the reg step should be run relative to other steps
33
-     *
34
-     * @access protected
35
-     * @type int $_template
36
-     */
37
-    protected $_order = 0;
38
-
39
-    /**
40
-     *    $_slug - URL param for this step
41
-     *
42
-     * @access protected
43
-     * @type string $_slug
44
-     */
45
-    protected $_slug;
46
-
47
-    /**
48
-     *    $_name - Step Name - translatable string
49
-     *
50
-     * @access protected
51
-     * @type string $_slug
52
-     */
53
-    protected $_name;
54
-
55
-    /**
56
-     *    $_submit_button_text - translatable string that appears on this step's submit button
57
-     *
58
-     * @access protected
59
-     * @type string $_slug
60
-     */
61
-    protected $_submit_button_text;
62
-
63
-    /**
64
-     *    $_template - template name
65
-     *
66
-     * @access protected
67
-     * @type string $_template
68
-     */
69
-    protected $_template;
70
-
71
-    /**
72
-     *    $_reg_form_name - the form input name and id attribute
73
-     *
74
-     * @access protected
75
-     * @var string $_reg_form_name
76
-     */
77
-    protected $_reg_form_name;
78
-
79
-    /**
80
-     *    $_success_message - text to display upon successful form submission
81
-     *
82
-     * @access private
83
-     * @var string $_success_message
84
-     */
85
-    protected $_success_message;
86
-
87
-    /**
88
-     *    $_instructions - a brief description of how to complete the reg step.
89
-     *    Usually displayed in conjunction with the previous step's success message.
90
-     *
91
-     * @access private
92
-     * @var string $_instructions
93
-     */
94
-    protected $_instructions;
95
-
96
-    /**
97
-     *    $_valid_data - the normalized and validated data for this step
98
-     *
99
-     * @access public
100
-     * @var array $_valid_data
101
-     */
102
-    protected $_valid_data = array();
103
-
104
-    /**
105
-     *    $reg_form - the registration form for this step
106
-     *
107
-     * @access public
108
-     * @var EE_Form_Section_Proper $reg_form
109
-     */
110
-    public $reg_form;
111
-
112
-    /**
113
-     *    $checkout - EE_Checkout object for handling the properties of the current checkout process
114
-     *
115
-     * @access public
116
-     * @var EE_Checkout $checkout
117
-     */
118
-    public $checkout;
119
-
120
-
121
-    /**
122
-     * @return void
123
-     */
124
-    abstract public function translate_js_strings();
125
-
126
-
127
-    /**
128
-     * @return void
129
-     */
130
-    abstract public function enqueue_styles_and_scripts();
131
-
132
-
133
-    /**
134
-     * @return boolean
135
-     */
136
-    abstract public function initialize_reg_step();
137
-
138
-
139
-    /**
140
-     * @return string
141
-     */
142
-    abstract public function generate_reg_form();
143
-
144
-
145
-    /**
146
-     * @return boolean
147
-     */
148
-    abstract public function process_reg_step();
149
-
150
-
151
-    /**
152
-     * @return boolean
153
-     */
154
-    abstract public function update_reg_step();
155
-
156
-
157
-    /**
158
-     * @return boolean
159
-     */
160
-    public function completed()
161
-    {
162
-        return $this->_completed;
163
-    }
164
-
165
-
166
-    /**
167
-     * set_completed - toggles $_completed to TRUE
168
-     */
169
-    public function set_completed()
170
-    {
171
-        // DEBUG LOG
172
-        // $this->checkout->log( __CLASS__, __FUNCTION__, __LINE__ );
173
-        $this->_completed = apply_filters('FHEE__EE_SPCO_Reg_Step__set_completed___completed', true, $this);
174
-    }
175
-
176
-
177
-    /**
178
-     * set_completed - toggles $_completed to FALSE
179
-     */
180
-    public function set_not_completed()
181
-    {
182
-        $this->_completed = false;
183
-    }
184
-
185
-
186
-    /**
187
-     * @return string
188
-     */
189
-    public function name()
190
-    {
191
-        return $this->_name;
192
-    }
193
-
194
-
195
-    /**
196
-     * @return string
197
-     */
198
-    public function slug()
199
-    {
200
-        return $this->_slug;
201
-    }
202
-
203
-
204
-    /**
205
-     * submit_button_text
206
-     * the text that appears on the reg step form submit button
207
-     *
208
-     * @return string
209
-     */
210
-    public function submit_button_text()
211
-    {
212
-        return $this->_submit_button_text;
213
-    }
214
-
215
-
216
-    /**
217
-     * set_submit_button_text
218
-     * sets the text that appears on the reg step form submit button
219
-     *
220
-     * @param string $submit_button_text
221
-     */
222
-    public function set_submit_button_text($submit_button_text = '')
223
-    {
224
-        if (! empty($submit_button_text)) {
225
-            $this->_submit_button_text = $submit_button_text;
226
-        } elseif ($this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
227
-            if ($this->checkout->revisit) {
228
-                $this->_submit_button_text = sprintf(
229
-                    __('Update %s', 'event_espresso'),
230
-                    $this->checkout->current_step->name()
231
-                );
232
-            } else {
233
-                $this->_submit_button_text = sprintf(
234
-                    __('Proceed to %s', 'event_espresso'),
235
-                    $this->checkout->next_step->name()
236
-                );
237
-            }
238
-        }
239
-        // filters the submit button text
240
-        $this->_submit_button_text = apply_filters(
241
-            'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
242
-            $this->_submit_button_text,
243
-            $this->checkout
244
-        );
245
-    }
246
-
247
-
248
-    /**
249
-     * @param boolean $is_current_step
250
-     */
251
-    public function set_is_current_step($is_current_step)
252
-    {
253
-        $this->_is_current_step = $is_current_step;
254
-    }
255
-
256
-
257
-    /**
258
-     * @return boolean
259
-     */
260
-    public function is_current_step()
261
-    {
262
-        return $this->_is_current_step;
263
-    }
264
-
265
-
266
-    /**
267
-     * @return boolean
268
-     */
269
-    public function is_final_step()
270
-    {
271
-        return $this instanceof EE_SPCO_Reg_Step_Finalize_Registration ? true : false;
272
-    }
273
-
274
-
275
-    /**
276
-     * @param int $order
277
-     */
278
-    public function set_order($order)
279
-    {
280
-        $this->_order = $order;
281
-    }
282
-
283
-
284
-    /**
285
-     * @return int
286
-     */
287
-    public function order()
288
-    {
289
-        return $this->_order;
290
-    }
291
-
292
-
293
-    /**
294
-     * @return string
295
-     */
296
-    public function template()
297
-    {
298
-        return $this->_template;
299
-    }
300
-
301
-
302
-    /**
303
-     * @return string
304
-     */
305
-    public function success_message()
306
-    {
307
-        return $this->_success_message;
308
-    }
309
-
310
-
311
-    /**
312
-     * _set_success_message
313
-     *
314
-     * @param string $success_message
315
-     */
316
-    protected function _set_success_message($success_message)
317
-    {
318
-        $this->_success_message = $success_message;
319
-    }
320
-
321
-
322
-    /**
323
-     * _reset_success_message
324
-     *
325
-     * @return void
326
-     */
327
-    protected function _reset_success_message()
328
-    {
329
-        $this->_success_message = '';
330
-    }
331
-
332
-
333
-    /**
334
-     * @return string
335
-     */
336
-    public function _instructions()
337
-    {
338
-        return $this->_instructions;
339
-    }
340
-
341
-
342
-    /**
343
-     * @param string $instructions
344
-     */
345
-    public function set_instructions($instructions)
346
-    {
347
-        $this->_instructions = apply_filters(
348
-            'FHEE__EE_SPCO_Reg_Step__set_instructions__instructions',
349
-            $instructions,
350
-            $this
351
-        );
352
-    }
353
-
354
-
355
-    /**
356
-     * @param array $valid_data
357
-     */
358
-    public function set_valid_data($valid_data)
359
-    {
360
-        $this->_valid_data = $valid_data;
361
-    }
362
-
363
-
364
-    /**
365
-     * @return array
366
-     */
367
-    public function valid_data()
368
-    {
369
-        if (empty($this->_valid_data)) {
370
-            $this->_valid_data = $this->reg_form->valid_data();
371
-        }
372
-        return $this->_valid_data;
373
-    }
374
-
375
-
376
-    /**
377
-     * @return string
378
-     */
379
-    public function reg_form_name()
380
-    {
381
-        if (empty($this->_reg_form_name)) {
382
-            $this->set_reg_form_name('ee-spco-' . $this->slug() . '-reg-step-form');
383
-        }
384
-        return $this->_reg_form_name;
385
-    }
386
-
387
-
388
-    /**
389
-     * @param string $reg_form_name
390
-     */
391
-    protected function set_reg_form_name($reg_form_name)
392
-    {
393
-        $this->_reg_form_name = $reg_form_name;
394
-    }
395
-
396
-
397
-    /**
398
-     * reg_step_url
399
-     *
400
-     * @param string $action
401
-     * @return string
402
-     */
403
-    public function reg_step_url($action = '')
404
-    {
405
-        $query_args = array('step' => $this->slug());
406
-        if (! empty($action)) {
407
-            $query_args['action'] = $action;
408
-        }
409
-        // final step has no display
410
-        if ($this instanceof EE_SPCO_Reg_Step_Finalize_Registration && $action === 'display_spco_reg_step') {
411
-            $query_args['action'] = 'process_reg_step';
412
-        }
413
-        if ($this->checkout->revisit) {
414
-            $query_args['revisit'] = true;
415
-        }
416
-        if ($this->checkout->reg_url_link) {
417
-            $query_args['e_reg_url_link'] = $this->checkout->reg_url_link;
418
-        }
419
-        return add_query_arg($query_args, $this->checkout->reg_page_base_url);
420
-    }
421
-
422
-
423
-    /**
424
-     * creates the default hidden inputs section
425
-     *
426
-     * @return EE_Form_Section_Proper
427
-     * @throws \EE_Error
428
-     */
429
-    public function reg_step_hidden_inputs()
430
-    {
431
-        // hidden inputs for admin registrations
432
-        if ($this->checkout->admin_request) {
433
-            return new EE_Form_Section_Proper(
434
-                array(
435
-                    'layout_strategy' => new EE_Div_Per_Section_Layout(),
436
-                    'html_id'         => 'ee-' . $this->slug() . '-hidden-inputs',
437
-                    'subsections'     => array(
438
-                        'next_step' => new EE_Fixed_Hidden_Input(
439
-                            array(
440
-                                'html_name' => 'next_step',
441
-                                'html_id'   => 'spco-' . $this->slug() . '-next-step',
442
-                                'default'   => $this->checkout->next_step instanceof EE_SPCO_Reg_Step
443
-                                    ? $this->checkout->next_step->slug()
444
-                                    : '',
445
-                            )
446
-                        ),
447
-                    ),
448
-                )
449
-            );
450
-        }
451
-        // hidden inputs for frontend registrations
452
-        return new EE_Form_Section_Proper(
453
-            array(
454
-                'layout_strategy' => new EE_Div_Per_Section_Layout(),
455
-                'html_id'         => 'ee-' . $this->slug() . '-hidden-inputs',
456
-                'subsections'     => array(
457
-                    'action'         => new EE_Fixed_Hidden_Input(
458
-                        array(
459
-                            'html_name' => 'action',
460
-                            'html_id'   => 'spco-' . $this->slug() . '-action',
461
-                            'default'   => apply_filters(
462
-                                'FHEE__EE_SPCO_Reg_Step__reg_step_hidden_inputs__default_form_action',
463
-                                empty($this->checkout->reg_url_link)
464
-                                    ? 'process_reg_step'
465
-                                    : 'update_reg_step',
466
-                                $this
467
-                            ),
468
-                        )
469
-                    ),
470
-                    'next_step'      => new EE_Fixed_Hidden_Input(
471
-                        array(
472
-                            'html_name' => 'next_step',
473
-                            'html_id'   => 'spco-' . $this->slug() . '-next-step',
474
-                            'default'   => $this->checkout->next_step instanceof EE_SPCO_Reg_Step
475
-                                ? $this->checkout->next_step->slug()
476
-                                : '',
477
-                        )
478
-                    ),
479
-                    'e_reg_url_link' => new EE_Fixed_Hidden_Input(
480
-                        array(
481
-                            'html_name' => 'e_reg_url_link',
482
-                            'html_id'   => 'spco-reg_url_link',
483
-                            'default'   => $this->checkout->reg_url_link,
484
-                        )
485
-                    ),
486
-                    'revisit'        => new EE_Fixed_Hidden_Input(
487
-                        array(
488
-                            'html_name' => 'revisit',
489
-                            'html_id'   => 'spco-revisit',
490
-                            'default'   => $this->checkout->revisit,
491
-                        )
492
-                    ),
493
-                ),
494
-            )
495
-        );
496
-    }
497
-
498
-
499
-    /**
500
-     * generate_reg_form_for_actions
501
-     *
502
-     * @param array $actions
503
-     * @return void
504
-     */
505
-    public function generate_reg_form_for_actions($actions = array())
506
-    {
507
-        $actions = array_merge(
508
-            array(
509
-                'generate_reg_form',
510
-                'display_spco_reg_step',
511
-                'process_reg_step',
512
-                'update_reg_step',
513
-            ),
514
-            $actions
515
-        );
516
-        $this->checkout->generate_reg_form = in_array($this->checkout->action, $actions, true) ? true : false;
517
-    }
518
-
519
-
520
-    /**
521
-     * @return string
522
-     * @throws \EE_Error
523
-     */
524
-    public function display_reg_form()
525
-    {
526
-        $html = '';
527
-        if ($this->reg_form instanceof EE_Form_Section_Proper) {
528
-            do_action('AHEE__EE_SPCO_Reg_Step__display_reg_form__reg_form', $this->reg_form, $this);
529
-            $html .= ! $this->checkout->admin_request ? $this->reg_form->form_open($this->reg_step_url()) : '';
530
-            if (EE_Registry::instance()->REQ->ajax) {
531
-                $this->reg_form->localize_validation_rules();
532
-                $this->checkout->json_response->add_validation_rules(EE_Form_Section_Proper::js_localization());
533
-            }
534
-            $html .= $this->reg_form->get_html();
535
-            $html .= ! $this->checkout->admin_request ? $this->reg_step_submit_button() : '';
536
-            $html .= ! $this->checkout->admin_request ? $this->reg_form->form_close() : '';
537
-        }
538
-        return $html;
539
-    }
540
-
541
-
542
-    /**
543
-     * div_class - returns nothing for current step, but a css class of "hidden" for others
544
-     *
545
-     * @return string
546
-     * @throws \EE_Error
547
-     */
548
-    public function reg_step_submit_button()
549
-    {
550
-        if (! $this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
551
-            return '';
552
-        }
553
-        ob_start();
554
-        do_action(
555
-            'AHEE__before_spco_whats_next_buttons',
556
-            $this->slug(),
557
-            $this->checkout->next_step->slug(),
558
-            $this->checkout
559
-        );
560
-        $html = ob_get_clean();
561
-        // generate submit button
562
-        $sbmt_btn = new EE_Submit_Input(
563
-            array(
564
-                'html_name'             => 'spco-go-to-step-' . $this->checkout->next_step->slug(),
565
-                'html_id'               => 'spco-go-to-step-' . $this->checkout->next_step->slug(),
566
-                'html_class'            => 'spco-next-step-btn',
567
-                'other_html_attributes' => ' rel="' . $this->slug() . '"',
568
-                'default'               => $this->submit_button_text(),
569
-            )
570
-        );
571
-        $sbmt_btn->set_button_css_attributes(true, 'large');
572
-        $sbmt_btn_html = $sbmt_btn->get_html_for_input();
573
-        $html .= EEH_HTML::div(
574
-            apply_filters('FHEE__EE_SPCO_Reg_Step__reg_step_submit_button__sbmt_btn_html', $sbmt_btn_html, $this),
575
-            'spco-' . $this->slug() . '-whats-next-buttons-dv',
576
-            'spco-whats-next-buttons'
577
-        );
578
-        return $html;
579
-    }
580
-
581
-
582
-    /**
583
-     * div_class - returns nothing for current step, but a css class of "hidden" for others
584
-     *
585
-     * @return string
586
-     */
587
-    public function div_class()
588
-    {
589
-        return $this->is_current_step() ? '' : ' hidden';
590
-    }
591
-
592
-
593
-    /**
594
-     * div_class - returns  a css class of "hidden" for current step, but nothing for others
595
-     *
596
-     * @return string
597
-     */
598
-    public function edit_lnk_url()
599
-    {
600
-        return add_query_arg(array('step' => $this->slug()), $this->checkout->reg_page_base_url);
601
-    }
602
-
603
-
604
-    /**
605
-     * div_class - returns  a css class of "hidden" for current step, but nothing for others
606
-     *
607
-     * @return string
608
-     */
609
-    public function edit_link_class()
610
-    {
611
-        return $this->is_current_step() ? ' hidden' : '';
612
-    }
613
-
614
-
615
-    /**
616
-     * update_checkout with changes that have been made to the cart
617
-     *
618
-     * @return void
619
-     * @throws \EE_Error
620
-     */
621
-    public function update_checkout()
622
-    {
623
-        // grab the cart grand total and reset TXN total
624
-        $this->checkout->transaction->set_total($this->checkout->cart->get_cart_grand_total());
625
-        $this->checkout->stash_transaction_and_checkout();
626
-    }
627
-
628
-
629
-    /**
630
-     *    __sleep
631
-     * to conserve db space, let's remove the reg_form and the EE_Checkout object from EE_SPCO_Reg_Step objects upon
632
-     * serialization EE_Checkout will handle the reimplementation of itself upon waking, but we won't bother with the
633
-     * reg form, because if needed, it will be regenerated anyways
634
-     *
635
-     * @return array
636
-     */
637
-    public function __sleep()
638
-    {
639
-        // remove the reg form and the checkout
640
-        return array_diff(array_keys(get_object_vars($this)), array('reg_form', 'checkout'));
641
-    }
15
+	/**
16
+	 *    $_completed - TRUE if this step has fully completed it's duties
17
+	 *
18
+	 * @access protected
19
+	 * @type bool $_completed
20
+	 */
21
+	protected $_completed = false;
22
+
23
+	/**
24
+	 *    $_is_current_step - TRUE if this is the current step
25
+	 *
26
+	 * @access protected
27
+	 * @type bool $_is_current_step
28
+	 */
29
+	protected $_is_current_step = false;
30
+
31
+	/**
32
+	 *    $_order - when the reg step should be run relative to other steps
33
+	 *
34
+	 * @access protected
35
+	 * @type int $_template
36
+	 */
37
+	protected $_order = 0;
38
+
39
+	/**
40
+	 *    $_slug - URL param for this step
41
+	 *
42
+	 * @access protected
43
+	 * @type string $_slug
44
+	 */
45
+	protected $_slug;
46
+
47
+	/**
48
+	 *    $_name - Step Name - translatable string
49
+	 *
50
+	 * @access protected
51
+	 * @type string $_slug
52
+	 */
53
+	protected $_name;
54
+
55
+	/**
56
+	 *    $_submit_button_text - translatable string that appears on this step's submit button
57
+	 *
58
+	 * @access protected
59
+	 * @type string $_slug
60
+	 */
61
+	protected $_submit_button_text;
62
+
63
+	/**
64
+	 *    $_template - template name
65
+	 *
66
+	 * @access protected
67
+	 * @type string $_template
68
+	 */
69
+	protected $_template;
70
+
71
+	/**
72
+	 *    $_reg_form_name - the form input name and id attribute
73
+	 *
74
+	 * @access protected
75
+	 * @var string $_reg_form_name
76
+	 */
77
+	protected $_reg_form_name;
78
+
79
+	/**
80
+	 *    $_success_message - text to display upon successful form submission
81
+	 *
82
+	 * @access private
83
+	 * @var string $_success_message
84
+	 */
85
+	protected $_success_message;
86
+
87
+	/**
88
+	 *    $_instructions - a brief description of how to complete the reg step.
89
+	 *    Usually displayed in conjunction with the previous step's success message.
90
+	 *
91
+	 * @access private
92
+	 * @var string $_instructions
93
+	 */
94
+	protected $_instructions;
95
+
96
+	/**
97
+	 *    $_valid_data - the normalized and validated data for this step
98
+	 *
99
+	 * @access public
100
+	 * @var array $_valid_data
101
+	 */
102
+	protected $_valid_data = array();
103
+
104
+	/**
105
+	 *    $reg_form - the registration form for this step
106
+	 *
107
+	 * @access public
108
+	 * @var EE_Form_Section_Proper $reg_form
109
+	 */
110
+	public $reg_form;
111
+
112
+	/**
113
+	 *    $checkout - EE_Checkout object for handling the properties of the current checkout process
114
+	 *
115
+	 * @access public
116
+	 * @var EE_Checkout $checkout
117
+	 */
118
+	public $checkout;
119
+
120
+
121
+	/**
122
+	 * @return void
123
+	 */
124
+	abstract public function translate_js_strings();
125
+
126
+
127
+	/**
128
+	 * @return void
129
+	 */
130
+	abstract public function enqueue_styles_and_scripts();
131
+
132
+
133
+	/**
134
+	 * @return boolean
135
+	 */
136
+	abstract public function initialize_reg_step();
137
+
138
+
139
+	/**
140
+	 * @return string
141
+	 */
142
+	abstract public function generate_reg_form();
143
+
144
+
145
+	/**
146
+	 * @return boolean
147
+	 */
148
+	abstract public function process_reg_step();
149
+
150
+
151
+	/**
152
+	 * @return boolean
153
+	 */
154
+	abstract public function update_reg_step();
155
+
156
+
157
+	/**
158
+	 * @return boolean
159
+	 */
160
+	public function completed()
161
+	{
162
+		return $this->_completed;
163
+	}
164
+
165
+
166
+	/**
167
+	 * set_completed - toggles $_completed to TRUE
168
+	 */
169
+	public function set_completed()
170
+	{
171
+		// DEBUG LOG
172
+		// $this->checkout->log( __CLASS__, __FUNCTION__, __LINE__ );
173
+		$this->_completed = apply_filters('FHEE__EE_SPCO_Reg_Step__set_completed___completed', true, $this);
174
+	}
175
+
176
+
177
+	/**
178
+	 * set_completed - toggles $_completed to FALSE
179
+	 */
180
+	public function set_not_completed()
181
+	{
182
+		$this->_completed = false;
183
+	}
184
+
185
+
186
+	/**
187
+	 * @return string
188
+	 */
189
+	public function name()
190
+	{
191
+		return $this->_name;
192
+	}
193
+
194
+
195
+	/**
196
+	 * @return string
197
+	 */
198
+	public function slug()
199
+	{
200
+		return $this->_slug;
201
+	}
202
+
203
+
204
+	/**
205
+	 * submit_button_text
206
+	 * the text that appears on the reg step form submit button
207
+	 *
208
+	 * @return string
209
+	 */
210
+	public function submit_button_text()
211
+	{
212
+		return $this->_submit_button_text;
213
+	}
214
+
215
+
216
+	/**
217
+	 * set_submit_button_text
218
+	 * sets the text that appears on the reg step form submit button
219
+	 *
220
+	 * @param string $submit_button_text
221
+	 */
222
+	public function set_submit_button_text($submit_button_text = '')
223
+	{
224
+		if (! empty($submit_button_text)) {
225
+			$this->_submit_button_text = $submit_button_text;
226
+		} elseif ($this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
227
+			if ($this->checkout->revisit) {
228
+				$this->_submit_button_text = sprintf(
229
+					__('Update %s', 'event_espresso'),
230
+					$this->checkout->current_step->name()
231
+				);
232
+			} else {
233
+				$this->_submit_button_text = sprintf(
234
+					__('Proceed to %s', 'event_espresso'),
235
+					$this->checkout->next_step->name()
236
+				);
237
+			}
238
+		}
239
+		// filters the submit button text
240
+		$this->_submit_button_text = apply_filters(
241
+			'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
242
+			$this->_submit_button_text,
243
+			$this->checkout
244
+		);
245
+	}
246
+
247
+
248
+	/**
249
+	 * @param boolean $is_current_step
250
+	 */
251
+	public function set_is_current_step($is_current_step)
252
+	{
253
+		$this->_is_current_step = $is_current_step;
254
+	}
255
+
256
+
257
+	/**
258
+	 * @return boolean
259
+	 */
260
+	public function is_current_step()
261
+	{
262
+		return $this->_is_current_step;
263
+	}
264
+
265
+
266
+	/**
267
+	 * @return boolean
268
+	 */
269
+	public function is_final_step()
270
+	{
271
+		return $this instanceof EE_SPCO_Reg_Step_Finalize_Registration ? true : false;
272
+	}
273
+
274
+
275
+	/**
276
+	 * @param int $order
277
+	 */
278
+	public function set_order($order)
279
+	{
280
+		$this->_order = $order;
281
+	}
282
+
283
+
284
+	/**
285
+	 * @return int
286
+	 */
287
+	public function order()
288
+	{
289
+		return $this->_order;
290
+	}
291
+
292
+
293
+	/**
294
+	 * @return string
295
+	 */
296
+	public function template()
297
+	{
298
+		return $this->_template;
299
+	}
300
+
301
+
302
+	/**
303
+	 * @return string
304
+	 */
305
+	public function success_message()
306
+	{
307
+		return $this->_success_message;
308
+	}
309
+
310
+
311
+	/**
312
+	 * _set_success_message
313
+	 *
314
+	 * @param string $success_message
315
+	 */
316
+	protected function _set_success_message($success_message)
317
+	{
318
+		$this->_success_message = $success_message;
319
+	}
320
+
321
+
322
+	/**
323
+	 * _reset_success_message
324
+	 *
325
+	 * @return void
326
+	 */
327
+	protected function _reset_success_message()
328
+	{
329
+		$this->_success_message = '';
330
+	}
331
+
332
+
333
+	/**
334
+	 * @return string
335
+	 */
336
+	public function _instructions()
337
+	{
338
+		return $this->_instructions;
339
+	}
340
+
341
+
342
+	/**
343
+	 * @param string $instructions
344
+	 */
345
+	public function set_instructions($instructions)
346
+	{
347
+		$this->_instructions = apply_filters(
348
+			'FHEE__EE_SPCO_Reg_Step__set_instructions__instructions',
349
+			$instructions,
350
+			$this
351
+		);
352
+	}
353
+
354
+
355
+	/**
356
+	 * @param array $valid_data
357
+	 */
358
+	public function set_valid_data($valid_data)
359
+	{
360
+		$this->_valid_data = $valid_data;
361
+	}
362
+
363
+
364
+	/**
365
+	 * @return array
366
+	 */
367
+	public function valid_data()
368
+	{
369
+		if (empty($this->_valid_data)) {
370
+			$this->_valid_data = $this->reg_form->valid_data();
371
+		}
372
+		return $this->_valid_data;
373
+	}
374
+
375
+
376
+	/**
377
+	 * @return string
378
+	 */
379
+	public function reg_form_name()
380
+	{
381
+		if (empty($this->_reg_form_name)) {
382
+			$this->set_reg_form_name('ee-spco-' . $this->slug() . '-reg-step-form');
383
+		}
384
+		return $this->_reg_form_name;
385
+	}
386
+
387
+
388
+	/**
389
+	 * @param string $reg_form_name
390
+	 */
391
+	protected function set_reg_form_name($reg_form_name)
392
+	{
393
+		$this->_reg_form_name = $reg_form_name;
394
+	}
395
+
396
+
397
+	/**
398
+	 * reg_step_url
399
+	 *
400
+	 * @param string $action
401
+	 * @return string
402
+	 */
403
+	public function reg_step_url($action = '')
404
+	{
405
+		$query_args = array('step' => $this->slug());
406
+		if (! empty($action)) {
407
+			$query_args['action'] = $action;
408
+		}
409
+		// final step has no display
410
+		if ($this instanceof EE_SPCO_Reg_Step_Finalize_Registration && $action === 'display_spco_reg_step') {
411
+			$query_args['action'] = 'process_reg_step';
412
+		}
413
+		if ($this->checkout->revisit) {
414
+			$query_args['revisit'] = true;
415
+		}
416
+		if ($this->checkout->reg_url_link) {
417
+			$query_args['e_reg_url_link'] = $this->checkout->reg_url_link;
418
+		}
419
+		return add_query_arg($query_args, $this->checkout->reg_page_base_url);
420
+	}
421
+
422
+
423
+	/**
424
+	 * creates the default hidden inputs section
425
+	 *
426
+	 * @return EE_Form_Section_Proper
427
+	 * @throws \EE_Error
428
+	 */
429
+	public function reg_step_hidden_inputs()
430
+	{
431
+		// hidden inputs for admin registrations
432
+		if ($this->checkout->admin_request) {
433
+			return new EE_Form_Section_Proper(
434
+				array(
435
+					'layout_strategy' => new EE_Div_Per_Section_Layout(),
436
+					'html_id'         => 'ee-' . $this->slug() . '-hidden-inputs',
437
+					'subsections'     => array(
438
+						'next_step' => new EE_Fixed_Hidden_Input(
439
+							array(
440
+								'html_name' => 'next_step',
441
+								'html_id'   => 'spco-' . $this->slug() . '-next-step',
442
+								'default'   => $this->checkout->next_step instanceof EE_SPCO_Reg_Step
443
+									? $this->checkout->next_step->slug()
444
+									: '',
445
+							)
446
+						),
447
+					),
448
+				)
449
+			);
450
+		}
451
+		// hidden inputs for frontend registrations
452
+		return new EE_Form_Section_Proper(
453
+			array(
454
+				'layout_strategy' => new EE_Div_Per_Section_Layout(),
455
+				'html_id'         => 'ee-' . $this->slug() . '-hidden-inputs',
456
+				'subsections'     => array(
457
+					'action'         => new EE_Fixed_Hidden_Input(
458
+						array(
459
+							'html_name' => 'action',
460
+							'html_id'   => 'spco-' . $this->slug() . '-action',
461
+							'default'   => apply_filters(
462
+								'FHEE__EE_SPCO_Reg_Step__reg_step_hidden_inputs__default_form_action',
463
+								empty($this->checkout->reg_url_link)
464
+									? 'process_reg_step'
465
+									: 'update_reg_step',
466
+								$this
467
+							),
468
+						)
469
+					),
470
+					'next_step'      => new EE_Fixed_Hidden_Input(
471
+						array(
472
+							'html_name' => 'next_step',
473
+							'html_id'   => 'spco-' . $this->slug() . '-next-step',
474
+							'default'   => $this->checkout->next_step instanceof EE_SPCO_Reg_Step
475
+								? $this->checkout->next_step->slug()
476
+								: '',
477
+						)
478
+					),
479
+					'e_reg_url_link' => new EE_Fixed_Hidden_Input(
480
+						array(
481
+							'html_name' => 'e_reg_url_link',
482
+							'html_id'   => 'spco-reg_url_link',
483
+							'default'   => $this->checkout->reg_url_link,
484
+						)
485
+					),
486
+					'revisit'        => new EE_Fixed_Hidden_Input(
487
+						array(
488
+							'html_name' => 'revisit',
489
+							'html_id'   => 'spco-revisit',
490
+							'default'   => $this->checkout->revisit,
491
+						)
492
+					),
493
+				),
494
+			)
495
+		);
496
+	}
497
+
498
+
499
+	/**
500
+	 * generate_reg_form_for_actions
501
+	 *
502
+	 * @param array $actions
503
+	 * @return void
504
+	 */
505
+	public function generate_reg_form_for_actions($actions = array())
506
+	{
507
+		$actions = array_merge(
508
+			array(
509
+				'generate_reg_form',
510
+				'display_spco_reg_step',
511
+				'process_reg_step',
512
+				'update_reg_step',
513
+			),
514
+			$actions
515
+		);
516
+		$this->checkout->generate_reg_form = in_array($this->checkout->action, $actions, true) ? true : false;
517
+	}
518
+
519
+
520
+	/**
521
+	 * @return string
522
+	 * @throws \EE_Error
523
+	 */
524
+	public function display_reg_form()
525
+	{
526
+		$html = '';
527
+		if ($this->reg_form instanceof EE_Form_Section_Proper) {
528
+			do_action('AHEE__EE_SPCO_Reg_Step__display_reg_form__reg_form', $this->reg_form, $this);
529
+			$html .= ! $this->checkout->admin_request ? $this->reg_form->form_open($this->reg_step_url()) : '';
530
+			if (EE_Registry::instance()->REQ->ajax) {
531
+				$this->reg_form->localize_validation_rules();
532
+				$this->checkout->json_response->add_validation_rules(EE_Form_Section_Proper::js_localization());
533
+			}
534
+			$html .= $this->reg_form->get_html();
535
+			$html .= ! $this->checkout->admin_request ? $this->reg_step_submit_button() : '';
536
+			$html .= ! $this->checkout->admin_request ? $this->reg_form->form_close() : '';
537
+		}
538
+		return $html;
539
+	}
540
+
541
+
542
+	/**
543
+	 * div_class - returns nothing for current step, but a css class of "hidden" for others
544
+	 *
545
+	 * @return string
546
+	 * @throws \EE_Error
547
+	 */
548
+	public function reg_step_submit_button()
549
+	{
550
+		if (! $this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
551
+			return '';
552
+		}
553
+		ob_start();
554
+		do_action(
555
+			'AHEE__before_spco_whats_next_buttons',
556
+			$this->slug(),
557
+			$this->checkout->next_step->slug(),
558
+			$this->checkout
559
+		);
560
+		$html = ob_get_clean();
561
+		// generate submit button
562
+		$sbmt_btn = new EE_Submit_Input(
563
+			array(
564
+				'html_name'             => 'spco-go-to-step-' . $this->checkout->next_step->slug(),
565
+				'html_id'               => 'spco-go-to-step-' . $this->checkout->next_step->slug(),
566
+				'html_class'            => 'spco-next-step-btn',
567
+				'other_html_attributes' => ' rel="' . $this->slug() . '"',
568
+				'default'               => $this->submit_button_text(),
569
+			)
570
+		);
571
+		$sbmt_btn->set_button_css_attributes(true, 'large');
572
+		$sbmt_btn_html = $sbmt_btn->get_html_for_input();
573
+		$html .= EEH_HTML::div(
574
+			apply_filters('FHEE__EE_SPCO_Reg_Step__reg_step_submit_button__sbmt_btn_html', $sbmt_btn_html, $this),
575
+			'spco-' . $this->slug() . '-whats-next-buttons-dv',
576
+			'spco-whats-next-buttons'
577
+		);
578
+		return $html;
579
+	}
580
+
581
+
582
+	/**
583
+	 * div_class - returns nothing for current step, but a css class of "hidden" for others
584
+	 *
585
+	 * @return string
586
+	 */
587
+	public function div_class()
588
+	{
589
+		return $this->is_current_step() ? '' : ' hidden';
590
+	}
591
+
592
+
593
+	/**
594
+	 * div_class - returns  a css class of "hidden" for current step, but nothing for others
595
+	 *
596
+	 * @return string
597
+	 */
598
+	public function edit_lnk_url()
599
+	{
600
+		return add_query_arg(array('step' => $this->slug()), $this->checkout->reg_page_base_url);
601
+	}
602
+
603
+
604
+	/**
605
+	 * div_class - returns  a css class of "hidden" for current step, but nothing for others
606
+	 *
607
+	 * @return string
608
+	 */
609
+	public function edit_link_class()
610
+	{
611
+		return $this->is_current_step() ? ' hidden' : '';
612
+	}
613
+
614
+
615
+	/**
616
+	 * update_checkout with changes that have been made to the cart
617
+	 *
618
+	 * @return void
619
+	 * @throws \EE_Error
620
+	 */
621
+	public function update_checkout()
622
+	{
623
+		// grab the cart grand total and reset TXN total
624
+		$this->checkout->transaction->set_total($this->checkout->cart->get_cart_grand_total());
625
+		$this->checkout->stash_transaction_and_checkout();
626
+	}
627
+
628
+
629
+	/**
630
+	 *    __sleep
631
+	 * to conserve db space, let's remove the reg_form and the EE_Checkout object from EE_SPCO_Reg_Step objects upon
632
+	 * serialization EE_Checkout will handle the reimplementation of itself upon waking, but we won't bother with the
633
+	 * reg form, because if needed, it will be regenerated anyways
634
+	 *
635
+	 * @return array
636
+	 */
637
+	public function __sleep()
638
+	{
639
+		// remove the reg form and the checkout
640
+		return array_diff(array_keys(get_object_vars($this)), array('reg_form', 'checkout'));
641
+	}
642 642
 }
Please login to merge, or discard this patch.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -221,7 +221,7 @@  discard block
 block discarded – undo
221 221
      */
222 222
     public function set_submit_button_text($submit_button_text = '')
223 223
     {
224
-        if (! empty($submit_button_text)) {
224
+        if ( ! empty($submit_button_text)) {
225 225
             $this->_submit_button_text = $submit_button_text;
226 226
         } elseif ($this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
227 227
             if ($this->checkout->revisit) {
@@ -379,7 +379,7 @@  discard block
 block discarded – undo
379 379
     public function reg_form_name()
380 380
     {
381 381
         if (empty($this->_reg_form_name)) {
382
-            $this->set_reg_form_name('ee-spco-' . $this->slug() . '-reg-step-form');
382
+            $this->set_reg_form_name('ee-spco-'.$this->slug().'-reg-step-form');
383 383
         }
384 384
         return $this->_reg_form_name;
385 385
     }
@@ -403,7 +403,7 @@  discard block
 block discarded – undo
403 403
     public function reg_step_url($action = '')
404 404
     {
405 405
         $query_args = array('step' => $this->slug());
406
-        if (! empty($action)) {
406
+        if ( ! empty($action)) {
407 407
             $query_args['action'] = $action;
408 408
         }
409 409
         // final step has no display
@@ -433,12 +433,12 @@  discard block
 block discarded – undo
433 433
             return new EE_Form_Section_Proper(
434 434
                 array(
435 435
                     'layout_strategy' => new EE_Div_Per_Section_Layout(),
436
-                    'html_id'         => 'ee-' . $this->slug() . '-hidden-inputs',
436
+                    'html_id'         => 'ee-'.$this->slug().'-hidden-inputs',
437 437
                     'subsections'     => array(
438 438
                         'next_step' => new EE_Fixed_Hidden_Input(
439 439
                             array(
440 440
                                 'html_name' => 'next_step',
441
-                                'html_id'   => 'spco-' . $this->slug() . '-next-step',
441
+                                'html_id'   => 'spco-'.$this->slug().'-next-step',
442 442
                                 'default'   => $this->checkout->next_step instanceof EE_SPCO_Reg_Step
443 443
                                     ? $this->checkout->next_step->slug()
444 444
                                     : '',
@@ -452,12 +452,12 @@  discard block
 block discarded – undo
452 452
         return new EE_Form_Section_Proper(
453 453
             array(
454 454
                 'layout_strategy' => new EE_Div_Per_Section_Layout(),
455
-                'html_id'         => 'ee-' . $this->slug() . '-hidden-inputs',
455
+                'html_id'         => 'ee-'.$this->slug().'-hidden-inputs',
456 456
                 'subsections'     => array(
457 457
                     'action'         => new EE_Fixed_Hidden_Input(
458 458
                         array(
459 459
                             'html_name' => 'action',
460
-                            'html_id'   => 'spco-' . $this->slug() . '-action',
460
+                            'html_id'   => 'spco-'.$this->slug().'-action',
461 461
                             'default'   => apply_filters(
462 462
                                 'FHEE__EE_SPCO_Reg_Step__reg_step_hidden_inputs__default_form_action',
463 463
                                 empty($this->checkout->reg_url_link)
@@ -470,7 +470,7 @@  discard block
 block discarded – undo
470 470
                     'next_step'      => new EE_Fixed_Hidden_Input(
471 471
                         array(
472 472
                             'html_name' => 'next_step',
473
-                            'html_id'   => 'spco-' . $this->slug() . '-next-step',
473
+                            'html_id'   => 'spco-'.$this->slug().'-next-step',
474 474
                             'default'   => $this->checkout->next_step instanceof EE_SPCO_Reg_Step
475 475
                                 ? $this->checkout->next_step->slug()
476 476
                                 : '',
@@ -547,7 +547,7 @@  discard block
 block discarded – undo
547 547
      */
548 548
     public function reg_step_submit_button()
549 549
     {
550
-        if (! $this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
550
+        if ( ! $this->checkout->next_step instanceof EE_SPCO_Reg_Step) {
551 551
             return '';
552 552
         }
553 553
         ob_start();
@@ -561,10 +561,10 @@  discard block
 block discarded – undo
561 561
         // generate submit button
562 562
         $sbmt_btn = new EE_Submit_Input(
563 563
             array(
564
-                'html_name'             => 'spco-go-to-step-' . $this->checkout->next_step->slug(),
565
-                'html_id'               => 'spco-go-to-step-' . $this->checkout->next_step->slug(),
564
+                'html_name'             => 'spco-go-to-step-'.$this->checkout->next_step->slug(),
565
+                'html_id'               => 'spco-go-to-step-'.$this->checkout->next_step->slug(),
566 566
                 'html_class'            => 'spco-next-step-btn',
567
-                'other_html_attributes' => ' rel="' . $this->slug() . '"',
567
+                'other_html_attributes' => ' rel="'.$this->slug().'"',
568 568
                 'default'               => $this->submit_button_text(),
569 569
             )
570 570
         );
@@ -572,7 +572,7 @@  discard block
 block discarded – undo
572 572
         $sbmt_btn_html = $sbmt_btn->get_html_for_input();
573 573
         $html .= EEH_HTML::div(
574 574
             apply_filters('FHEE__EE_SPCO_Reg_Step__reg_step_submit_button__sbmt_btn_html', $sbmt_btn_html, $this),
575
-            'spco-' . $this->slug() . '-whats-next-buttons-dv',
575
+            'spco-'.$this->slug().'-whats-next-buttons-dv',
576 576
             'spco-whats-next-buttons'
577 577
         );
578 578
         return $html;
Please login to merge, or discard this patch.
modules/single_page_checkout/inc/EE_Checkout.class.php 2 patches
Spacing   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -313,7 +313,7 @@  discard block
 block discarded – undo
313 313
      */
314 314
     public function reg_status_updated($REG_ID)
315 315
     {
316
-        return isset($this->reg_status_updated[ $REG_ID ]) ? $this->reg_status_updated[ $REG_ID ] : false;
316
+        return isset($this->reg_status_updated[$REG_ID]) ? $this->reg_status_updated[$REG_ID] : false;
317 317
     }
318 318
 
319 319
 
@@ -323,7 +323,7 @@  discard block
 block discarded – undo
323 323
      */
324 324
     public function set_reg_status_updated($REG_ID, $reg_status)
325 325
     {
326
-        $this->reg_status_updated[ $REG_ID ] = filter_var($reg_status, FILTER_VALIDATE_BOOLEAN);
326
+        $this->reg_status_updated[$REG_ID] = filter_var($reg_status, FILTER_VALIDATE_BOOLEAN);
327 327
     }
328 328
 
329 329
 
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
      */
383 383
     public function add_reg_step(EE_SPCO_Reg_Step $reg_step_obj)
384 384
     {
385
-        $this->reg_steps[ $reg_step_obj->slug() ] = $reg_step_obj;
385
+        $this->reg_steps[$reg_step_obj->slug()] = $reg_step_obj;
386 386
     }
387 387
 
388 388
 
@@ -428,7 +428,7 @@  discard block
 block discarded – undo
428 428
      */
429 429
     public function remove_reg_step($reg_step_slug = '', $reset = true)
430 430
     {
431
-        unset($this->reg_steps[ $reg_step_slug ]);
431
+        unset($this->reg_steps[$reg_step_slug]);
432 432
         if ($this->transaction instanceof EE_Transaction) {
433 433
             // now remove reg step from TXN and save
434 434
             $this->transaction->remove_reg_step($reg_step_slug);
@@ -450,8 +450,8 @@  discard block
 block discarded – undo
450 450
      */
451 451
     public function set_reg_step_order($reg_step_slug = '', $order = 100)
452 452
     {
453
-        if (isset($this->reg_steps[ $reg_step_slug ])) {
454
-            $this->reg_steps[ $reg_step_slug ]->set_order($order);
453
+        if (isset($this->reg_steps[$reg_step_slug])) {
454
+            $this->reg_steps[$reg_step_slug]->set_order($order);
455 455
         }
456 456
     }
457 457
 
@@ -466,8 +466,8 @@  discard block
 block discarded – undo
466 466
     public function set_current_step($current_step)
467 467
     {
468 468
         // grab what step we're on
469
-        $this->current_step = isset($this->reg_steps[ $current_step ])
470
-            ? $this->reg_steps[ $current_step ]
469
+        $this->current_step = isset($this->reg_steps[$current_step])
470
+            ? $this->reg_steps[$current_step]
471 471
             : reset(
472 472
                 $this->reg_steps
473 473
             );
@@ -578,7 +578,7 @@  discard block
 block discarded – undo
578 578
      */
579 579
     public function find_reg_step($reg_step_slug = '')
580 580
     {
581
-        if (! empty($reg_step_slug)) {
581
+        if ( ! empty($reg_step_slug)) {
582 582
             // copy reg step array
583 583
             $reg_steps = $this->reg_steps;
584 584
             // set pointer to start of array
@@ -639,7 +639,7 @@  discard block
 block discarded – undo
639 639
             )
640 640
         ) {
641 641
             // set the start time for this reg step
642
-            if (! $this->transaction->set_reg_step_initiated($reg_step->slug())) {
642
+            if ( ! $this->transaction->set_reg_step_initiated($reg_step->slug())) {
643 643
                 if (WP_DEBUG) {
644 644
                     EE_Error::add_error(
645 645
                         sprintf(
@@ -742,7 +742,7 @@  discard block
 block discarded – undo
742 742
         $session = EE_Registry::instance()->load_core('Session');
743 743
         $cart = $transaction instanceof EE_Transaction ? EE_Cart::get_cart_from_txn($transaction, $session) : null;
744 744
         // verify cart
745
-        if (! $cart instanceof EE_Cart) {
745
+        if ( ! $cart instanceof EE_Cart) {
746 746
             $cart = EE_Registry::instance()->load_core('Cart');
747 747
         }
748 748
 
@@ -760,7 +760,7 @@  discard block
 block discarded – undo
760 760
     {
761 761
         $txn_reg_steps_array = array();
762 762
         foreach ($this->reg_steps as $reg_step) {
763
-            $txn_reg_steps_array[ $reg_step->slug() ] = false;
763
+            $txn_reg_steps_array[$reg_step->slug()] = false;
764 764
         }
765 765
         return $txn_reg_steps_array;
766 766
     }
@@ -799,7 +799,7 @@  discard block
 block discarded – undo
799 799
      */
800 800
     public function stash_transaction_and_checkout()
801 801
     {
802
-        if (! $this->revisit) {
802
+        if ( ! $this->revisit) {
803 803
             $this->update_txn_reg_steps_array();
804 804
         }
805 805
         $this->track_transaction_and_registration_status_updates();
@@ -926,7 +926,7 @@  discard block
 block discarded – undo
926 926
             // should this registration be processed during this visit ?
927 927
             if ($this->visit_allows_processing_of_this_registration($registration)) {
928 928
                 // set TXN ID
929
-                if (! $registration->transaction_ID()) {
929
+                if ( ! $registration->transaction_ID()) {
930 930
                     $registration->set_transaction_id($this->transaction->ID());
931 931
                 }
932 932
                 // verify and save the attendee
@@ -936,7 +936,7 @@  discard block
 block discarded – undo
936 936
                 // save changes
937 937
                 $registration->save();
938 938
                 // update txn cache
939
-                if (! $this->transaction->update_cache_after_object_save('Registration', $registration)) {
939
+                if ( ! $this->transaction->update_cache_after_object_save('Registration', $registration)) {
940 940
                     if ($show_errors) {
941 941
                         EE_Error::add_error(
942 942
                             __(
@@ -979,7 +979,7 @@  discard block
 block discarded – undo
979 979
         if ($registration->attendee() instanceof EE_Attendee) {
980 980
             // save so that ATT has ID
981 981
             $registration->attendee()->save();
982
-            if (! $registration->update_cache_after_object_save('Attendee', $registration->attendee())) {
982
+            if ( ! $registration->update_cache_after_object_save('Attendee', $registration->attendee())) {
983 983
                 if ($show_errors) {
984 984
                     EE_Error::add_error(
985 985
                         __(
@@ -1028,7 +1028,7 @@  discard block
 block discarded – undo
1028 1028
             if ($answer instanceof EE_Answer) {
1029 1029
                 $answer->set_registration($registration->ID());
1030 1030
                 $answer->save();
1031
-                if (! $registration->update_cache_after_object_save('Answer', $answer, $cache_key)) {
1031
+                if ( ! $registration->update_cache_after_object_save('Answer', $answer, $cache_key)) {
1032 1032
                     if ($show_errors) {
1033 1033
                         EE_Error::add_error(
1034 1034
                             __(
@@ -1349,11 +1349,11 @@  discard block
 block discarded – undo
1349 1349
      */
1350 1350
     public function __wakeup()
1351 1351
     {
1352
-        if (! $this->primary_attendee_obj instanceof EE_Attendee && absint($this->primary_attendee_obj) !== 0) {
1352
+        if ( ! $this->primary_attendee_obj instanceof EE_Attendee && absint($this->primary_attendee_obj) !== 0) {
1353 1353
             // $this->primary_attendee_obj is actually just an ID, so use it to get the object from the db
1354 1354
             $this->primary_attendee_obj = EEM_Attendee::instance()->get_one_by_ID($this->primary_attendee_obj);
1355 1355
         }
1356
-        if (! $this->transaction instanceof EE_Transaction && absint($this->transaction) !== 0) {
1356
+        if ( ! $this->transaction instanceof EE_Transaction && absint($this->transaction) !== 0) {
1357 1357
             // $this->transaction is actually just an ID, so use it to get the object from the db
1358 1358
             $this->transaction = EEM_Transaction::instance()->get_one_by_ID($this->transaction);
1359 1359
         }
@@ -1377,9 +1377,9 @@  discard block
 block discarded – undo
1377 1377
     {
1378 1378
         $disabled = true;
1379 1379
         if (WP_DEBUG && ! $disabled) {
1380
-            $debug_data = get_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), array());
1380
+            $debug_data = get_option('EE_DEBUG_SPCO_'.EE_Session::instance()->id(), array());
1381 1381
             $default_data = array(
1382
-                $class                    => $func . '() : ' . $line,
1382
+                $class                    => $func.'() : '.$line,
1383 1383
                 'request->step'           => $this->step,
1384 1384
                 'request->action'         => $this->action,
1385 1385
                 'current_step->slug'      => $this->current_step instanceof EE_SPCO_Reg_Step ?
@@ -1395,20 +1395,20 @@  discard block
 block discarded – undo
1395 1395
                 $default_data['TXN_status'] = $this->transaction->status_ID();
1396 1396
                 $default_data['TXN_reg_steps'] = $this->transaction->reg_steps();
1397 1397
                 foreach ($this->transaction->registrations($this->reg_cache_where_params) as $REG_ID => $registration) {
1398
-                    $default_data['registrations'][ $REG_ID ] = $registration->status_ID();
1398
+                    $default_data['registrations'][$REG_ID] = $registration->status_ID();
1399 1399
                 }
1400 1400
                 if ($this->transaction->ID()) {
1401
-                    $TXN_ID = 'EE_Transaction: ' . $this->transaction->ID();
1401
+                    $TXN_ID = 'EE_Transaction: '.$this->transaction->ID();
1402 1402
                     // don't serialize objects
1403 1403
                     $info = $this->_strip_objects($info);
1404
-                    if (! isset($debug_data[ $TXN_ID ])) {
1405
-                        $debug_data[ $TXN_ID ] = array();
1404
+                    if ( ! isset($debug_data[$TXN_ID])) {
1405
+                        $debug_data[$TXN_ID] = array();
1406 1406
                     }
1407
-                    $debug_data[ $TXN_ID ][ microtime() ] = array_merge(
1407
+                    $debug_data[$TXN_ID][microtime()] = array_merge(
1408 1408
                         $default_data,
1409 1409
                         $info
1410 1410
                     );
1411
-                    update_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), $debug_data);
1411
+                    update_option('EE_DEBUG_SPCO_'.EE_Session::instance()->id(), $debug_data);
1412 1412
                 }
1413 1413
             }
1414 1414
         }
@@ -1425,17 +1425,17 @@  discard block
 block discarded – undo
1425 1425
     {
1426 1426
         foreach ((array) $info as $key => $value) {
1427 1427
             if (is_array($value)) {
1428
-                $info[ $key ] = $this->_strip_objects($value);
1428
+                $info[$key] = $this->_strip_objects($value);
1429 1429
             } elseif (is_object($value)) {
1430 1430
                 $object_class = get_class($value);
1431
-                $info[ $object_class ] = array();
1432
-                $info[ $object_class ]['ID'] = method_exists($value, 'ID') ? $value->ID() : 0;
1431
+                $info[$object_class] = array();
1432
+                $info[$object_class]['ID'] = method_exists($value, 'ID') ? $value->ID() : 0;
1433 1433
                 if (method_exists($value, 'status')) {
1434
-                    $info[ $object_class ]['status'] = $value->status();
1434
+                    $info[$object_class]['status'] = $value->status();
1435 1435
                 } elseif (method_exists($value, 'status_ID')) {
1436
-                    $info[ $object_class ]['status'] = $value->status_ID();
1436
+                    $info[$object_class]['status'] = $value->status_ID();
1437 1437
                 }
1438
-                unset($info[ $key ]);
1438
+                unset($info[$key]);
1439 1439
             }
1440 1440
         }
1441 1441
         return (array) $info;
Please login to merge, or discard this patch.
Indentation   +1425 added lines, -1425 removed lines patch added patch discarded remove patch
@@ -15,1430 +15,1430 @@
 block discarded – undo
15 15
 class EE_Checkout
16 16
 {
17 17
 
18
-    /**
19
-     *    whether current request originated from the EE admin
20
-     *
21
-     * @type bool
22
-     */
23
-    public $admin_request = false;
24
-
25
-    /**
26
-     * whether returning to edit attendee information or to retry a payment
27
-     *
28
-     * @type bool
29
-     */
30
-    public $revisit = false;
31
-
32
-    /**
33
-     * whether the primary registrant is returning to edit attendee information or to retry a payment
34
-     *
35
-     * @type bool
36
-     */
37
-    public $primary_revisit = false;
38
-
39
-    /**
40
-     * is registration allowed to progress or halted for some reason such as failing to pass recaptcha?
41
-     *
42
-     * @type bool
43
-     */
44
-    public $continue_reg = true;
45
-
46
-    /**
47
-     * redirect to thank you page ?
48
-     *
49
-     * @type bool
50
-     */
51
-    public $redirect = false;
52
-
53
-    /**
54
-     * generate the reg form or not ?
55
-     *
56
-     * @type bool
57
-     */
58
-    public $generate_reg_form = true;
59
-
60
-    /**
61
-     * process a reg form submission or not ?
62
-     *
63
-     * @type bool
64
-     */
65
-    public $process_form_submission = false;
66
-
67
-    /**
68
-     * tracks whether the TXN status modified during this checkout
69
-     *
70
-     * @type bool
71
-     */
72
-    public $txn_status_updated = false;
73
-
74
-    /**
75
-     * only triggered to true after absolutely everything has finished.
76
-     *
77
-     * @type bool
78
-     */
79
-    protected $exit_spco = false;
80
-
81
-    /**
82
-     * tracks whether any of the TXN's Registrations statuses modified during this checkout
83
-     * indexed by registration ID
84
-     *
85
-     * @type array
86
-     */
87
-    protected $reg_status_updated = array();
88
-
89
-    /**
90
-     * timestamp when redirected from Ticket Selector to the checkout
91
-     *
92
-     * @type int
93
-     */
94
-    public $uts = 0;
95
-
96
-    /**
97
-     * total number of tickets that were in the cart
98
-     *
99
-     * @type int
100
-     */
101
-    public $total_ticket_count = 0;
102
-
103
-    /**
104
-     * corresponds loosely to EE_Transaction::remaining()
105
-     * but can be modified by SPCO
106
-     *
107
-     * @type float
108
-     */
109
-    public $amount_owing = 0;
110
-
111
-    /**
112
-     * the reg step slug from the incoming request
113
-     *
114
-     * @type string
115
-     */
116
-    public $step = '';
117
-
118
-    /**
119
-     * the reg step slug for a step being edited
120
-     *
121
-     * @type string
122
-     */
123
-    public $edit_step = '';
124
-
125
-    /**
126
-     * the action being performed on the current step
127
-     *
128
-     * @type string
129
-     */
130
-    public $action = '';
131
-
132
-    /**
133
-     * reg_url_link for a previously saved registration
134
-     *
135
-     * @type string
136
-     */
137
-    public $reg_url_link = '';
138
-
139
-    /**
140
-     * string slug for the payment method that was selected during the payment options step
141
-     *
142
-     * @type string
143
-     */
144
-    public $selected_method_of_payment = '';
145
-
146
-    /**
147
-     * base url for the site's registration checkout page - additional url params will be added to this
148
-     *
149
-     * @type string
150
-     */
151
-    public $reg_page_base_url = '';
152
-
153
-    /**
154
-     * base url for the site's registration cancelled page - additional url params will be added to this
155
-     *
156
-     * @type string
157
-     */
158
-    public $cancel_page_url = '';
159
-
160
-    /**
161
-     * base url for the site's thank you page - additional url params will be added to this
162
-     *
163
-     * @type string
164
-     */
165
-    public $thank_you_page_url = '';
166
-
167
-    /**
168
-     * base url for any redirects - additional url params will be added to this
169
-     *
170
-     * @type string
171
-     */
172
-    public $redirect_url = '';
173
-
174
-    /**
175
-     * form of POST data for use with off-site gateways
176
-     *
177
-     * @type string
178
-     */
179
-    public $redirect_form = '';
180
-
181
-    /**
182
-     * array of query where params to use when retrieving cached registrations from $this->checkout->transaction
183
-     *
184
-     * @type array
185
-     */
186
-    public $reg_cache_where_params = array();
187
-
188
-    /**
189
-     * a class for managing and creating the JSON encoded array of data that gets passed back to the client during AJAX
190
-     * requests
191
-     *
192
-     * @type EE_SPCO_JSON_Response
193
-     */
194
-    public $json_response;
195
-
196
-    /**
197
-     * where we are going next in the reg process
198
-     *
199
-     * @type EE_SPCO_Reg_Step
200
-     */
201
-    public $next_step;
202
-
203
-    /**
204
-     * where we are in the reg process
205
-     *
206
-     * @type EE_SPCO_Reg_Step
207
-     */
208
-    public $current_step;
209
-
210
-    /**
211
-     *    $_cart - the current cart object
212
-     *
213
-     * @var EE_CART
214
-     */
215
-    public $cart;
216
-
217
-    /**
218
-     *    $_transaction - the current transaction object
219
-     *
220
-     * @var EE_Transaction
221
-     */
222
-    public $transaction;
223
-
224
-    /**
225
-     *    the related attendee object for the primary registrant
226
-     *
227
-     * @type EE_Attendee
228
-     */
229
-    public $primary_attendee_obj;
230
-
231
-    /**
232
-     *    $payment_method - the payment method object for the selected method of payment
233
-     *
234
-     * @type EE_Payment_Method
235
-     */
236
-    public $payment_method;
237
-
238
-    /**
239
-     *    $payment - if a payment was successfully made during the reg process,
240
-     *    then here it is !!!
241
-     *
242
-     * @type EE_Payment
243
-     */
244
-    public $payment;
245
-
246
-    /**
247
-     *    if a payment method was selected that uses an on-site gateway, then this is the billing form
248
-     *
249
-     * @type EE_Billing_Info_Form | EE_Billing_Attendee_Info_Form
250
-     */
251
-    public $billing_form;
252
-
253
-    /**
254
-     *    the entire registration form composed of ALL of the subsections generated by the various reg steps
255
-     *
256
-     * @type EE_Form_Section_Proper
257
-     */
258
-    public $registration_form;
259
-
260
-    /**
261
-     * array of EE_SPCO_Reg_Step objects
262
-     *
263
-     * @type EE_SPCO_Reg_Step[]
264
-     */
265
-    public $reg_steps = array();
266
-
267
-    /**
268
-     * array of EE_Payment_Method objects
269
-     *
270
-     * @type EE_Payment_Method[]
271
-     */
272
-    public $available_payment_methods = array();
273
-
274
-
275
-    /**
276
-     *    class constructor
277
-     *
278
-     * @access    public
279
-     */
280
-    public function __construct()
281
-    {
282
-        $this->reg_page_base_url = EE_Registry::instance()->CFG->core->reg_page_url();
283
-        $this->thank_you_page_url = EE_Registry::instance()->CFG->core->thank_you_page_url();
284
-        $this->cancel_page_url = EE_Registry::instance()->CFG->core->cancel_page_url();
285
-        $this->continue_reg = apply_filters('FHEE__EE_Checkout___construct___continue_reg', true);
286
-        $this->admin_request = is_admin() && ! EE_Registry::instance()->REQ->ajax;
287
-        $this->reg_cache_where_params = array(
288
-            0          => array('REG_deleted' => false),
289
-            'order_by' => array('REG_count' => 'ASC'),
290
-        );
291
-    }
292
-
293
-
294
-    /**
295
-     * returns true if ANY reg status was updated during checkout
296
-     *
297
-     * @return boolean
298
-     */
299
-    public function any_reg_status_updated()
300
-    {
301
-        foreach ($this->reg_status_updated as $reg_status) {
302
-            if ($reg_status) {
303
-                return true;
304
-            }
305
-        }
306
-        return false;
307
-    }
308
-
309
-
310
-    /**
311
-     * @param $REG_ID
312
-     * @return boolean
313
-     */
314
-    public function reg_status_updated($REG_ID)
315
-    {
316
-        return isset($this->reg_status_updated[ $REG_ID ]) ? $this->reg_status_updated[ $REG_ID ] : false;
317
-    }
318
-
319
-
320
-    /**
321
-     * @param $REG_ID
322
-     * @param $reg_status
323
-     */
324
-    public function set_reg_status_updated($REG_ID, $reg_status)
325
-    {
326
-        $this->reg_status_updated[ $REG_ID ] = filter_var($reg_status, FILTER_VALIDATE_BOOLEAN);
327
-    }
328
-
329
-
330
-    /**
331
-     * exit_spco
332
-     *
333
-     * @return bool
334
-     */
335
-    public function exit_spco()
336
-    {
337
-        return $this->exit_spco;
338
-    }
339
-
340
-
341
-    /**
342
-     * set_exit_spco
343
-     * can ONLY be set by the  Finalize_Registration reg step
344
-     */
345
-    public function set_exit_spco()
346
-    {
347
-        if ($this->current_step instanceof EE_SPCO_Reg_Step_Finalize_Registration) {
348
-            $this->exit_spco = true;
349
-        }
350
-    }
351
-
352
-
353
-    /**
354
-     *    reset_for_current_request
355
-     *
356
-     * @access    public
357
-     * @return    void
358
-     */
359
-    public function reset_for_current_request()
360
-    {
361
-        $this->process_form_submission = false;
362
-        $this->continue_reg = apply_filters('FHEE__EE_Checkout___construct___continue_reg', true);
363
-        $this->admin_request = is_admin() && ! EE_Registry::instance()->REQ->front_ajax;
364
-        $this->continue_reg = true;
365
-        $this->redirect = false;
366
-        // don't reset the cached redirect form if we're about to be asked to display it !!!
367
-        if (EE_Registry::instance()->REQ->get('action', 'display_spco_reg_step') !== 'redirect_form') {
368
-            $this->redirect_form = '';
369
-        }
370
-        $this->redirect_url = '';
371
-        $this->json_response = new EE_SPCO_JSON_Response();
372
-        EE_Form_Section_Proper::reset_js_localization();
373
-    }
374
-
375
-
376
-    /**
377
-     *    add_reg_step
378
-     *
379
-     * @access    public
380
-     * @param EE_SPCO_Reg_Step $reg_step_obj
381
-     * @return    void
382
-     */
383
-    public function add_reg_step(EE_SPCO_Reg_Step $reg_step_obj)
384
-    {
385
-        $this->reg_steps[ $reg_step_obj->slug() ] = $reg_step_obj;
386
-    }
387
-
388
-
389
-    /**
390
-     * skip_reg_step
391
-     * if the current reg step does not need to run for some reason,
392
-     * then this will advance SPCO to the next reg step,
393
-     * and mark the skipped step as completed
394
-     *
395
-     * @access    public
396
-     * @param string $reg_step_slug
397
-     * @return    void
398
-     * @throws \EE_Error
399
-     */
400
-    public function skip_reg_step($reg_step_slug = '')
401
-    {
402
-        $step_to_skip = $this->find_reg_step($reg_step_slug);
403
-        if ($step_to_skip instanceof EE_SPCO_Reg_Step && $step_to_skip->is_current_step()) {
404
-            $step_to_skip->set_is_current_step(false);
405
-            $step_to_skip->set_completed();
406
-            // advance to the next step
407
-            $this->set_current_step($this->next_step->slug());
408
-            // also reset the step param in the request in case any other code references that directly
409
-            EE_Registry::instance()->REQ->set('step', $this->current_step->slug());
410
-            // since we are skipping a step and setting the current step to be what was previously the next step,
411
-            // we need to check that the next step is now correct, and not still set to the current step.
412
-            if ($this->current_step->slug() === $this->next_step->slug()) {
413
-                // correctly setup the next step
414
-                $this->set_next_step();
415
-            }
416
-            $this->set_reg_step_initiated($this->current_step);
417
-        }
418
-    }
419
-
420
-
421
-    /**
422
-     *    remove_reg_step
423
-     *
424
-     * @access    public
425
-     * @param string $reg_step_slug
426
-     * @param bool   $reset whether to reset reg steps after removal
427
-     * @throws EE_Error
428
-     */
429
-    public function remove_reg_step($reg_step_slug = '', $reset = true)
430
-    {
431
-        unset($this->reg_steps[ $reg_step_slug ]);
432
-        if ($this->transaction instanceof EE_Transaction) {
433
-            // now remove reg step from TXN and save
434
-            $this->transaction->remove_reg_step($reg_step_slug);
435
-            $this->transaction->save();
436
-        }
437
-        if ($reset) {
438
-            $this->reset_reg_steps();
439
-        }
440
-    }
441
-
442
-
443
-    /**
444
-     *    set_reg_step_order
445
-     *
446
-     * @access    public
447
-     * @param string $reg_step_slug
448
-     * @param int    $order
449
-     * @return    void
450
-     */
451
-    public function set_reg_step_order($reg_step_slug = '', $order = 100)
452
-    {
453
-        if (isset($this->reg_steps[ $reg_step_slug ])) {
454
-            $this->reg_steps[ $reg_step_slug ]->set_order($order);
455
-        }
456
-    }
457
-
458
-
459
-    /**
460
-     *    set_current_step
461
-     *
462
-     * @access    public
463
-     * @param string $current_step
464
-     * @return    void
465
-     */
466
-    public function set_current_step($current_step)
467
-    {
468
-        // grab what step we're on
469
-        $this->current_step = isset($this->reg_steps[ $current_step ])
470
-            ? $this->reg_steps[ $current_step ]
471
-            : reset(
472
-                $this->reg_steps
473
-            );
474
-        // verify instance
475
-        if ($this->current_step instanceof EE_SPCO_Reg_Step) {
476
-            // we don't want to repeat completed steps if this is the first time through SPCO
477
-            if ($this->continue_reg && ! $this->revisit && $this->current_step->completed()) {
478
-                // so advance to the next step
479
-                $this->set_next_step();
480
-                if ($this->next_step instanceof EE_SPCO_Reg_Step) {
481
-                    // and attempt to set it as the current step
482
-                    $this->set_current_step($this->next_step->slug());
483
-                }
484
-                return;
485
-            }
486
-            $this->current_step->set_is_current_step(true);
487
-        } else {
488
-            EE_Error::add_error(
489
-                __('The current step could not be set.', 'event_espresso'),
490
-                __FILE__,
491
-                __FUNCTION__,
492
-                __LINE__
493
-            );
494
-        }
495
-    }
496
-
497
-
498
-    /**
499
-     *    set_next_step
500
-     * advances the reg_steps array pointer and sets the next step, then reverses pointer back to the current step
501
-     *
502
-     * @access    public
503
-     * @return    void
504
-     */
505
-    public function set_next_step()
506
-    {
507
-        // set pointer to start of array
508
-        reset($this->reg_steps);
509
-        // if there is more than one step
510
-        if (count($this->reg_steps) > 1) {
511
-            // advance to the current step and set pointer
512
-            while (key($this->reg_steps) !== $this->current_step->slug() && key($this->reg_steps) !== '') {
513
-                next($this->reg_steps);
514
-            }
515
-        }
516
-        // advance one more spot ( if it exists )
517
-        $this->next_step = next($this->reg_steps);
518
-        // verify instance
519
-        $this->next_step = $this->next_step instanceof EE_SPCO_Reg_Step ? $this->next_step : null;
520
-        // then back to current step to reset
521
-        prev($this->reg_steps);
522
-    }
523
-
524
-
525
-    /**
526
-     *    get_next_reg_step
527
-     *    this simply returns the next step from reg_steps array
528
-     *
529
-     * @access    public
530
-     * @return    EE_SPCO_Reg_Step | null
531
-     */
532
-    public function get_next_reg_step()
533
-    {
534
-        $next = next($this->reg_steps);
535
-        prev($this->reg_steps);
536
-        return $next instanceof EE_SPCO_Reg_Step ? $next : null;
537
-    }
538
-
539
-
540
-    /**
541
-     * get_prev_reg_step
542
-     *    this simply returns the previous step from reg_steps array
543
-     *
544
-     * @access    public
545
-     * @return    EE_SPCO_Reg_Step | null
546
-     */
547
-    public function get_prev_reg_step()
548
-    {
549
-        $prev = prev($this->reg_steps);
550
-        next($this->reg_steps);
551
-        return $prev instanceof EE_SPCO_Reg_Step ? $prev : null;
552
-    }
553
-
554
-
555
-    /**
556
-     * sort_reg_steps
557
-     *
558
-     * @access public
559
-     * @return void
560
-     */
561
-    public function sort_reg_steps()
562
-    {
563
-        $reg_step_sorting_callback = apply_filters(
564
-            'FHEE__EE_Checkout__sort_reg_steps__reg_step_sorting_callback',
565
-            'reg_step_sorting_callback'
566
-        );
567
-        uasort($this->reg_steps, array($this, $reg_step_sorting_callback));
568
-    }
569
-
570
-
571
-    /**
572
-     * find_reg_step
573
-     * finds a reg step by the given slug
574
-     *
575
-     * @access    public
576
-     * @param string $reg_step_slug
577
-     * @return EE_SPCO_Reg_Step|null
578
-     */
579
-    public function find_reg_step($reg_step_slug = '')
580
-    {
581
-        if (! empty($reg_step_slug)) {
582
-            // copy reg step array
583
-            $reg_steps = $this->reg_steps;
584
-            // set pointer to start of array
585
-            reset($reg_steps);
586
-            // if there is more than one step
587
-            if (count($reg_steps) > 1) {
588
-                // advance to the current step and set pointer
589
-                while (key($reg_steps) !== $reg_step_slug && key($reg_steps) !== '') {
590
-                    next($reg_steps);
591
-                }
592
-                return current($reg_steps);
593
-            }
594
-        }
595
-        return null;
596
-    }
597
-
598
-
599
-    /**
600
-     * reg_step_sorting_callback
601
-     *
602
-     * @access public
603
-     * @param EE_SPCO_Reg_Step $reg_step_A
604
-     * @param EE_SPCO_Reg_Step $reg_step_B
605
-     * @return int
606
-     */
607
-    public function reg_step_sorting_callback(EE_SPCO_Reg_Step $reg_step_A, EE_SPCO_Reg_Step $reg_step_B)
608
-    {
609
-        // send finalize_registration step to the end of the array
610
-        if ($reg_step_A->slug() === 'finalize_registration') {
611
-            return 1;
612
-        } elseif ($reg_step_B->slug() === 'finalize_registration') {
613
-            return -1;
614
-        }
615
-        if ($reg_step_A->order() === $reg_step_B->order()) {
616
-            return 0;
617
-        }
618
-        return ($reg_step_A->order() > $reg_step_B->order()) ? 1 : -1;
619
-    }
620
-
621
-
622
-    /**
623
-     * set_reg_step_initiated
624
-     *
625
-     * @access    public
626
-     * @param    EE_SPCO_Reg_Step $reg_step
627
-     * @throws \EE_Error
628
-     */
629
-    public function set_reg_step_initiated(EE_SPCO_Reg_Step $reg_step)
630
-    {
631
-        // call set_reg_step_initiated ???
632
-        if (
18
+	/**
19
+	 *    whether current request originated from the EE admin
20
+	 *
21
+	 * @type bool
22
+	 */
23
+	public $admin_request = false;
24
+
25
+	/**
26
+	 * whether returning to edit attendee information or to retry a payment
27
+	 *
28
+	 * @type bool
29
+	 */
30
+	public $revisit = false;
31
+
32
+	/**
33
+	 * whether the primary registrant is returning to edit attendee information or to retry a payment
34
+	 *
35
+	 * @type bool
36
+	 */
37
+	public $primary_revisit = false;
38
+
39
+	/**
40
+	 * is registration allowed to progress or halted for some reason such as failing to pass recaptcha?
41
+	 *
42
+	 * @type bool
43
+	 */
44
+	public $continue_reg = true;
45
+
46
+	/**
47
+	 * redirect to thank you page ?
48
+	 *
49
+	 * @type bool
50
+	 */
51
+	public $redirect = false;
52
+
53
+	/**
54
+	 * generate the reg form or not ?
55
+	 *
56
+	 * @type bool
57
+	 */
58
+	public $generate_reg_form = true;
59
+
60
+	/**
61
+	 * process a reg form submission or not ?
62
+	 *
63
+	 * @type bool
64
+	 */
65
+	public $process_form_submission = false;
66
+
67
+	/**
68
+	 * tracks whether the TXN status modified during this checkout
69
+	 *
70
+	 * @type bool
71
+	 */
72
+	public $txn_status_updated = false;
73
+
74
+	/**
75
+	 * only triggered to true after absolutely everything has finished.
76
+	 *
77
+	 * @type bool
78
+	 */
79
+	protected $exit_spco = false;
80
+
81
+	/**
82
+	 * tracks whether any of the TXN's Registrations statuses modified during this checkout
83
+	 * indexed by registration ID
84
+	 *
85
+	 * @type array
86
+	 */
87
+	protected $reg_status_updated = array();
88
+
89
+	/**
90
+	 * timestamp when redirected from Ticket Selector to the checkout
91
+	 *
92
+	 * @type int
93
+	 */
94
+	public $uts = 0;
95
+
96
+	/**
97
+	 * total number of tickets that were in the cart
98
+	 *
99
+	 * @type int
100
+	 */
101
+	public $total_ticket_count = 0;
102
+
103
+	/**
104
+	 * corresponds loosely to EE_Transaction::remaining()
105
+	 * but can be modified by SPCO
106
+	 *
107
+	 * @type float
108
+	 */
109
+	public $amount_owing = 0;
110
+
111
+	/**
112
+	 * the reg step slug from the incoming request
113
+	 *
114
+	 * @type string
115
+	 */
116
+	public $step = '';
117
+
118
+	/**
119
+	 * the reg step slug for a step being edited
120
+	 *
121
+	 * @type string
122
+	 */
123
+	public $edit_step = '';
124
+
125
+	/**
126
+	 * the action being performed on the current step
127
+	 *
128
+	 * @type string
129
+	 */
130
+	public $action = '';
131
+
132
+	/**
133
+	 * reg_url_link for a previously saved registration
134
+	 *
135
+	 * @type string
136
+	 */
137
+	public $reg_url_link = '';
138
+
139
+	/**
140
+	 * string slug for the payment method that was selected during the payment options step
141
+	 *
142
+	 * @type string
143
+	 */
144
+	public $selected_method_of_payment = '';
145
+
146
+	/**
147
+	 * base url for the site's registration checkout page - additional url params will be added to this
148
+	 *
149
+	 * @type string
150
+	 */
151
+	public $reg_page_base_url = '';
152
+
153
+	/**
154
+	 * base url for the site's registration cancelled page - additional url params will be added to this
155
+	 *
156
+	 * @type string
157
+	 */
158
+	public $cancel_page_url = '';
159
+
160
+	/**
161
+	 * base url for the site's thank you page - additional url params will be added to this
162
+	 *
163
+	 * @type string
164
+	 */
165
+	public $thank_you_page_url = '';
166
+
167
+	/**
168
+	 * base url for any redirects - additional url params will be added to this
169
+	 *
170
+	 * @type string
171
+	 */
172
+	public $redirect_url = '';
173
+
174
+	/**
175
+	 * form of POST data for use with off-site gateways
176
+	 *
177
+	 * @type string
178
+	 */
179
+	public $redirect_form = '';
180
+
181
+	/**
182
+	 * array of query where params to use when retrieving cached registrations from $this->checkout->transaction
183
+	 *
184
+	 * @type array
185
+	 */
186
+	public $reg_cache_where_params = array();
187
+
188
+	/**
189
+	 * a class for managing and creating the JSON encoded array of data that gets passed back to the client during AJAX
190
+	 * requests
191
+	 *
192
+	 * @type EE_SPCO_JSON_Response
193
+	 */
194
+	public $json_response;
195
+
196
+	/**
197
+	 * where we are going next in the reg process
198
+	 *
199
+	 * @type EE_SPCO_Reg_Step
200
+	 */
201
+	public $next_step;
202
+
203
+	/**
204
+	 * where we are in the reg process
205
+	 *
206
+	 * @type EE_SPCO_Reg_Step
207
+	 */
208
+	public $current_step;
209
+
210
+	/**
211
+	 *    $_cart - the current cart object
212
+	 *
213
+	 * @var EE_CART
214
+	 */
215
+	public $cart;
216
+
217
+	/**
218
+	 *    $_transaction - the current transaction object
219
+	 *
220
+	 * @var EE_Transaction
221
+	 */
222
+	public $transaction;
223
+
224
+	/**
225
+	 *    the related attendee object for the primary registrant
226
+	 *
227
+	 * @type EE_Attendee
228
+	 */
229
+	public $primary_attendee_obj;
230
+
231
+	/**
232
+	 *    $payment_method - the payment method object for the selected method of payment
233
+	 *
234
+	 * @type EE_Payment_Method
235
+	 */
236
+	public $payment_method;
237
+
238
+	/**
239
+	 *    $payment - if a payment was successfully made during the reg process,
240
+	 *    then here it is !!!
241
+	 *
242
+	 * @type EE_Payment
243
+	 */
244
+	public $payment;
245
+
246
+	/**
247
+	 *    if a payment method was selected that uses an on-site gateway, then this is the billing form
248
+	 *
249
+	 * @type EE_Billing_Info_Form | EE_Billing_Attendee_Info_Form
250
+	 */
251
+	public $billing_form;
252
+
253
+	/**
254
+	 *    the entire registration form composed of ALL of the subsections generated by the various reg steps
255
+	 *
256
+	 * @type EE_Form_Section_Proper
257
+	 */
258
+	public $registration_form;
259
+
260
+	/**
261
+	 * array of EE_SPCO_Reg_Step objects
262
+	 *
263
+	 * @type EE_SPCO_Reg_Step[]
264
+	 */
265
+	public $reg_steps = array();
266
+
267
+	/**
268
+	 * array of EE_Payment_Method objects
269
+	 *
270
+	 * @type EE_Payment_Method[]
271
+	 */
272
+	public $available_payment_methods = array();
273
+
274
+
275
+	/**
276
+	 *    class constructor
277
+	 *
278
+	 * @access    public
279
+	 */
280
+	public function __construct()
281
+	{
282
+		$this->reg_page_base_url = EE_Registry::instance()->CFG->core->reg_page_url();
283
+		$this->thank_you_page_url = EE_Registry::instance()->CFG->core->thank_you_page_url();
284
+		$this->cancel_page_url = EE_Registry::instance()->CFG->core->cancel_page_url();
285
+		$this->continue_reg = apply_filters('FHEE__EE_Checkout___construct___continue_reg', true);
286
+		$this->admin_request = is_admin() && ! EE_Registry::instance()->REQ->ajax;
287
+		$this->reg_cache_where_params = array(
288
+			0          => array('REG_deleted' => false),
289
+			'order_by' => array('REG_count' => 'ASC'),
290
+		);
291
+	}
292
+
293
+
294
+	/**
295
+	 * returns true if ANY reg status was updated during checkout
296
+	 *
297
+	 * @return boolean
298
+	 */
299
+	public function any_reg_status_updated()
300
+	{
301
+		foreach ($this->reg_status_updated as $reg_status) {
302
+			if ($reg_status) {
303
+				return true;
304
+			}
305
+		}
306
+		return false;
307
+	}
308
+
309
+
310
+	/**
311
+	 * @param $REG_ID
312
+	 * @return boolean
313
+	 */
314
+	public function reg_status_updated($REG_ID)
315
+	{
316
+		return isset($this->reg_status_updated[ $REG_ID ]) ? $this->reg_status_updated[ $REG_ID ] : false;
317
+	}
318
+
319
+
320
+	/**
321
+	 * @param $REG_ID
322
+	 * @param $reg_status
323
+	 */
324
+	public function set_reg_status_updated($REG_ID, $reg_status)
325
+	{
326
+		$this->reg_status_updated[ $REG_ID ] = filter_var($reg_status, FILTER_VALIDATE_BOOLEAN);
327
+	}
328
+
329
+
330
+	/**
331
+	 * exit_spco
332
+	 *
333
+	 * @return bool
334
+	 */
335
+	public function exit_spco()
336
+	{
337
+		return $this->exit_spco;
338
+	}
339
+
340
+
341
+	/**
342
+	 * set_exit_spco
343
+	 * can ONLY be set by the  Finalize_Registration reg step
344
+	 */
345
+	public function set_exit_spco()
346
+	{
347
+		if ($this->current_step instanceof EE_SPCO_Reg_Step_Finalize_Registration) {
348
+			$this->exit_spco = true;
349
+		}
350
+	}
351
+
352
+
353
+	/**
354
+	 *    reset_for_current_request
355
+	 *
356
+	 * @access    public
357
+	 * @return    void
358
+	 */
359
+	public function reset_for_current_request()
360
+	{
361
+		$this->process_form_submission = false;
362
+		$this->continue_reg = apply_filters('FHEE__EE_Checkout___construct___continue_reg', true);
363
+		$this->admin_request = is_admin() && ! EE_Registry::instance()->REQ->front_ajax;
364
+		$this->continue_reg = true;
365
+		$this->redirect = false;
366
+		// don't reset the cached redirect form if we're about to be asked to display it !!!
367
+		if (EE_Registry::instance()->REQ->get('action', 'display_spco_reg_step') !== 'redirect_form') {
368
+			$this->redirect_form = '';
369
+		}
370
+		$this->redirect_url = '';
371
+		$this->json_response = new EE_SPCO_JSON_Response();
372
+		EE_Form_Section_Proper::reset_js_localization();
373
+	}
374
+
375
+
376
+	/**
377
+	 *    add_reg_step
378
+	 *
379
+	 * @access    public
380
+	 * @param EE_SPCO_Reg_Step $reg_step_obj
381
+	 * @return    void
382
+	 */
383
+	public function add_reg_step(EE_SPCO_Reg_Step $reg_step_obj)
384
+	{
385
+		$this->reg_steps[ $reg_step_obj->slug() ] = $reg_step_obj;
386
+	}
387
+
388
+
389
+	/**
390
+	 * skip_reg_step
391
+	 * if the current reg step does not need to run for some reason,
392
+	 * then this will advance SPCO to the next reg step,
393
+	 * and mark the skipped step as completed
394
+	 *
395
+	 * @access    public
396
+	 * @param string $reg_step_slug
397
+	 * @return    void
398
+	 * @throws \EE_Error
399
+	 */
400
+	public function skip_reg_step($reg_step_slug = '')
401
+	{
402
+		$step_to_skip = $this->find_reg_step($reg_step_slug);
403
+		if ($step_to_skip instanceof EE_SPCO_Reg_Step && $step_to_skip->is_current_step()) {
404
+			$step_to_skip->set_is_current_step(false);
405
+			$step_to_skip->set_completed();
406
+			// advance to the next step
407
+			$this->set_current_step($this->next_step->slug());
408
+			// also reset the step param in the request in case any other code references that directly
409
+			EE_Registry::instance()->REQ->set('step', $this->current_step->slug());
410
+			// since we are skipping a step and setting the current step to be what was previously the next step,
411
+			// we need to check that the next step is now correct, and not still set to the current step.
412
+			if ($this->current_step->slug() === $this->next_step->slug()) {
413
+				// correctly setup the next step
414
+				$this->set_next_step();
415
+			}
416
+			$this->set_reg_step_initiated($this->current_step);
417
+		}
418
+	}
419
+
420
+
421
+	/**
422
+	 *    remove_reg_step
423
+	 *
424
+	 * @access    public
425
+	 * @param string $reg_step_slug
426
+	 * @param bool   $reset whether to reset reg steps after removal
427
+	 * @throws EE_Error
428
+	 */
429
+	public function remove_reg_step($reg_step_slug = '', $reset = true)
430
+	{
431
+		unset($this->reg_steps[ $reg_step_slug ]);
432
+		if ($this->transaction instanceof EE_Transaction) {
433
+			// now remove reg step from TXN and save
434
+			$this->transaction->remove_reg_step($reg_step_slug);
435
+			$this->transaction->save();
436
+		}
437
+		if ($reset) {
438
+			$this->reset_reg_steps();
439
+		}
440
+	}
441
+
442
+
443
+	/**
444
+	 *    set_reg_step_order
445
+	 *
446
+	 * @access    public
447
+	 * @param string $reg_step_slug
448
+	 * @param int    $order
449
+	 * @return    void
450
+	 */
451
+	public function set_reg_step_order($reg_step_slug = '', $order = 100)
452
+	{
453
+		if (isset($this->reg_steps[ $reg_step_slug ])) {
454
+			$this->reg_steps[ $reg_step_slug ]->set_order($order);
455
+		}
456
+	}
457
+
458
+
459
+	/**
460
+	 *    set_current_step
461
+	 *
462
+	 * @access    public
463
+	 * @param string $current_step
464
+	 * @return    void
465
+	 */
466
+	public function set_current_step($current_step)
467
+	{
468
+		// grab what step we're on
469
+		$this->current_step = isset($this->reg_steps[ $current_step ])
470
+			? $this->reg_steps[ $current_step ]
471
+			: reset(
472
+				$this->reg_steps
473
+			);
474
+		// verify instance
475
+		if ($this->current_step instanceof EE_SPCO_Reg_Step) {
476
+			// we don't want to repeat completed steps if this is the first time through SPCO
477
+			if ($this->continue_reg && ! $this->revisit && $this->current_step->completed()) {
478
+				// so advance to the next step
479
+				$this->set_next_step();
480
+				if ($this->next_step instanceof EE_SPCO_Reg_Step) {
481
+					// and attempt to set it as the current step
482
+					$this->set_current_step($this->next_step->slug());
483
+				}
484
+				return;
485
+			}
486
+			$this->current_step->set_is_current_step(true);
487
+		} else {
488
+			EE_Error::add_error(
489
+				__('The current step could not be set.', 'event_espresso'),
490
+				__FILE__,
491
+				__FUNCTION__,
492
+				__LINE__
493
+			);
494
+		}
495
+	}
496
+
497
+
498
+	/**
499
+	 *    set_next_step
500
+	 * advances the reg_steps array pointer and sets the next step, then reverses pointer back to the current step
501
+	 *
502
+	 * @access    public
503
+	 * @return    void
504
+	 */
505
+	public function set_next_step()
506
+	{
507
+		// set pointer to start of array
508
+		reset($this->reg_steps);
509
+		// if there is more than one step
510
+		if (count($this->reg_steps) > 1) {
511
+			// advance to the current step and set pointer
512
+			while (key($this->reg_steps) !== $this->current_step->slug() && key($this->reg_steps) !== '') {
513
+				next($this->reg_steps);
514
+			}
515
+		}
516
+		// advance one more spot ( if it exists )
517
+		$this->next_step = next($this->reg_steps);
518
+		// verify instance
519
+		$this->next_step = $this->next_step instanceof EE_SPCO_Reg_Step ? $this->next_step : null;
520
+		// then back to current step to reset
521
+		prev($this->reg_steps);
522
+	}
523
+
524
+
525
+	/**
526
+	 *    get_next_reg_step
527
+	 *    this simply returns the next step from reg_steps array
528
+	 *
529
+	 * @access    public
530
+	 * @return    EE_SPCO_Reg_Step | null
531
+	 */
532
+	public function get_next_reg_step()
533
+	{
534
+		$next = next($this->reg_steps);
535
+		prev($this->reg_steps);
536
+		return $next instanceof EE_SPCO_Reg_Step ? $next : null;
537
+	}
538
+
539
+
540
+	/**
541
+	 * get_prev_reg_step
542
+	 *    this simply returns the previous step from reg_steps array
543
+	 *
544
+	 * @access    public
545
+	 * @return    EE_SPCO_Reg_Step | null
546
+	 */
547
+	public function get_prev_reg_step()
548
+	{
549
+		$prev = prev($this->reg_steps);
550
+		next($this->reg_steps);
551
+		return $prev instanceof EE_SPCO_Reg_Step ? $prev : null;
552
+	}
553
+
554
+
555
+	/**
556
+	 * sort_reg_steps
557
+	 *
558
+	 * @access public
559
+	 * @return void
560
+	 */
561
+	public function sort_reg_steps()
562
+	{
563
+		$reg_step_sorting_callback = apply_filters(
564
+			'FHEE__EE_Checkout__sort_reg_steps__reg_step_sorting_callback',
565
+			'reg_step_sorting_callback'
566
+		);
567
+		uasort($this->reg_steps, array($this, $reg_step_sorting_callback));
568
+	}
569
+
570
+
571
+	/**
572
+	 * find_reg_step
573
+	 * finds a reg step by the given slug
574
+	 *
575
+	 * @access    public
576
+	 * @param string $reg_step_slug
577
+	 * @return EE_SPCO_Reg_Step|null
578
+	 */
579
+	public function find_reg_step($reg_step_slug = '')
580
+	{
581
+		if (! empty($reg_step_slug)) {
582
+			// copy reg step array
583
+			$reg_steps = $this->reg_steps;
584
+			// set pointer to start of array
585
+			reset($reg_steps);
586
+			// if there is more than one step
587
+			if (count($reg_steps) > 1) {
588
+				// advance to the current step and set pointer
589
+				while (key($reg_steps) !== $reg_step_slug && key($reg_steps) !== '') {
590
+					next($reg_steps);
591
+				}
592
+				return current($reg_steps);
593
+			}
594
+		}
595
+		return null;
596
+	}
597
+
598
+
599
+	/**
600
+	 * reg_step_sorting_callback
601
+	 *
602
+	 * @access public
603
+	 * @param EE_SPCO_Reg_Step $reg_step_A
604
+	 * @param EE_SPCO_Reg_Step $reg_step_B
605
+	 * @return int
606
+	 */
607
+	public function reg_step_sorting_callback(EE_SPCO_Reg_Step $reg_step_A, EE_SPCO_Reg_Step $reg_step_B)
608
+	{
609
+		// send finalize_registration step to the end of the array
610
+		if ($reg_step_A->slug() === 'finalize_registration') {
611
+			return 1;
612
+		} elseif ($reg_step_B->slug() === 'finalize_registration') {
613
+			return -1;
614
+		}
615
+		if ($reg_step_A->order() === $reg_step_B->order()) {
616
+			return 0;
617
+		}
618
+		return ($reg_step_A->order() > $reg_step_B->order()) ? 1 : -1;
619
+	}
620
+
621
+
622
+	/**
623
+	 * set_reg_step_initiated
624
+	 *
625
+	 * @access    public
626
+	 * @param    EE_SPCO_Reg_Step $reg_step
627
+	 * @throws \EE_Error
628
+	 */
629
+	public function set_reg_step_initiated(EE_SPCO_Reg_Step $reg_step)
630
+	{
631
+		// call set_reg_step_initiated ???
632
+		if (
633 633
 // first time visiting SPCO ?
634
-            ! $this->revisit
635
-            && (
636
-                // and displaying the reg step form for the first time ?
637
-                $this->action === 'display_spco_reg_step'
638
-                // or initializing the final step
639
-                || $reg_step instanceof EE_SPCO_Reg_Step_Finalize_Registration
640
-            )
641
-        ) {
642
-            // set the start time for this reg step
643
-            if (! $this->transaction->set_reg_step_initiated($reg_step->slug())) {
644
-                if (WP_DEBUG) {
645
-                    EE_Error::add_error(
646
-                        sprintf(
647
-                            __('The "%1$s" registration step was not initialized properly.', 'event_espresso'),
648
-                            $reg_step->name()
649
-                        ),
650
-                        __FILE__,
651
-                        __FUNCTION__,
652
-                        __LINE__
653
-                    );
654
-                }
655
-            }
656
-        }
657
-    }
658
-
659
-
660
-    /**
661
-     *    set_reg_step_JSON_info
662
-     *
663
-     * @access public
664
-     * @return    void
665
-     */
666
-    public function set_reg_step_JSON_info()
667
-    {
668
-        EE_Registry::$i18n_js_strings['reg_steps'] = array();
669
-        // pass basic reg step data to JS
670
-        foreach ($this->reg_steps as $reg_step) {
671
-            EE_Registry::$i18n_js_strings['reg_steps'][] = $reg_step->slug();
672
-        }
673
-        // reset reg step html
674
-        // $this->json_response->set_reg_step_html('');
675
-    }
676
-
677
-
678
-    /**
679
-     *    reset_reg_steps
680
-     *
681
-     * @access public
682
-     * @return void
683
-     */
684
-    public function reset_reg_steps()
685
-    {
686
-        $this->sort_reg_steps();
687
-        $this->set_current_step(EE_Registry::instance()->REQ->get('step'));
688
-        $this->set_next_step();
689
-        // the text that appears on the reg step form submit button
690
-        $this->current_step->set_submit_button_text();
691
-        $this->set_reg_step_JSON_info();
692
-    }
693
-
694
-
695
-    /**
696
-     *    get_registration_time_limit
697
-     *
698
-     * @access    public
699
-     * @return        string
700
-     */
701
-    public function get_registration_time_limit()
702
-    {
703
-
704
-        $registration_time_limit = (float) (EE_Registry::instance()->SSN->expiration() - time());
705
-        $time_limit_format = $registration_time_limit > 60 * MINUTE_IN_SECONDS ? 'H:i:s' : 'i:s';
706
-        $registration_time_limit = date($time_limit_format, $registration_time_limit);
707
-        return apply_filters(
708
-            'FHEE__EE_Checkout__get_registration_time_limit__registration_time_limit',
709
-            $registration_time_limit
710
-        );
711
-    }
712
-
713
-
714
-    /**
715
-     * payment_required
716
-     *
717
-     * @return boolean
718
-     */
719
-    public function payment_required()
720
-    {
721
-        // if NOT:
722
-        //     registration via admin
723
-        //      completed TXN
724
-        //      overpaid TXN
725
-        //      free TXN(total = 0.00)
726
-        //      then payment required is TRUE
727
-        return ! ($this->admin_request
728
-                  || $this->transaction->is_completed()
729
-                  || $this->transaction->is_overpaid()
730
-                  || $this->transaction->is_free()) ? true : false;
731
-    }
732
-
733
-
734
-    /**
735
-     * get_cart_for_transaction
736
-     *
737
-     * @access public
738
-     * @param EE_Transaction $transaction
739
-     * @return EE_Cart
740
-     */
741
-    public function get_cart_for_transaction($transaction)
742
-    {
743
-        $session = EE_Registry::instance()->load_core('Session');
744
-        $cart = $transaction instanceof EE_Transaction ? EE_Cart::get_cart_from_txn($transaction, $session) : null;
745
-        // verify cart
746
-        if (! $cart instanceof EE_Cart) {
747
-            $cart = EE_Registry::instance()->load_core('Cart');
748
-        }
749
-
750
-        return $cart;
751
-    }
752
-
753
-
754
-    /**
755
-     *    initialize_txn_reg_steps_array
756
-     *
757
-     * @access public
758
-     * @return    array
759
-     */
760
-    public function initialize_txn_reg_steps_array()
761
-    {
762
-        $txn_reg_steps_array = array();
763
-        foreach ($this->reg_steps as $reg_step) {
764
-            $txn_reg_steps_array[ $reg_step->slug() ] = false;
765
-        }
766
-        return $txn_reg_steps_array;
767
-    }
768
-
769
-
770
-    /**
771
-     *    update_txn_reg_steps_array
772
-     *
773
-     * @access public
774
-     * @return    bool
775
-     * @throws \EE_Error
776
-     */
777
-    public function update_txn_reg_steps_array()
778
-    {
779
-        $updated = false;
780
-        foreach ($this->reg_steps as $reg_step) {
781
-            if ($reg_step->completed()) {
782
-                $updated = $this->transaction->set_reg_step_completed($reg_step->slug())
783
-                    ? true
784
-                    : $updated;
785
-            }
786
-        }
787
-        if ($updated) {
788
-            $this->transaction->save();
789
-        }
790
-        return $updated;
791
-    }
792
-
793
-
794
-    /**
795
-     *    stash_transaction_and_checkout
796
-     *
797
-     * @access public
798
-     * @return    void
799
-     * @throws \EE_Error
800
-     */
801
-    public function stash_transaction_and_checkout()
802
-    {
803
-        if (! $this->revisit) {
804
-            $this->update_txn_reg_steps_array();
805
-        }
806
-        $this->track_transaction_and_registration_status_updates();
807
-        // save all data to the db, but suppress errors
808
-        // $this->save_all_data( FALSE );
809
-        // cache the checkout in the session
810
-        EE_Registry::instance()->SSN->set_checkout($this);
811
-    }
812
-
813
-
814
-    /**
815
-     *    track_transaction_and_registration_status_updates
816
-     *    stores whether any updates were made to the TXN or it's related registrations
817
-     *
818
-     * @access public
819
-     * @return void
820
-     * @throws \EE_Error
821
-     */
822
-    public function track_transaction_and_registration_status_updates()
823
-    {
824
-        // verify the transaction
825
-        if ($this->transaction instanceof EE_Transaction) {
826
-            // has there been a TXN status change during this checkout?
827
-            $this->txn_status_updated = $this->transaction->txn_status_updated();
828
-            /** @type EE_Registration_Processor $registration_processor */
829
-            $registration_processor = EE_Registry::instance()->load_class('Registration_Processor');
830
-            // grab the saved registrations from the transaction
831
-            foreach ($this->transaction->registrations($this->reg_cache_where_params) as $registration) {
832
-                if ($registration_processor->reg_status_updated($registration->ID())) {
833
-                    $this->set_reg_status_updated($registration->ID(), true);
834
-                }
835
-            }
836
-        }
837
-    }
838
-
839
-
840
-    /**
841
-     *    visit_allows_processing_of_this_registration
842
-     *    determines if the current SPCO visit should allow the passed EE_Registration to be used in processing.
843
-     *    one of the following conditions must be met:
844
-     *        EITHER:    A) first time thru SPCO -> process ALL registrations ( NOT a revisit )
845
-     *        OR :        B) primary registrant is editing info -> process ALL registrations ( primary_revisit )
846
-     *        OR :        C) another registrant is editing info -> ONLY process their registration ( revisit AND their
847
-     *        reg_url_link matches )
848
-     *
849
-     * @access public
850
-     * @param    EE_Registration $registration
851
-     * @return    bool
852
-     * @throws \EE_Error
853
-     */
854
-    public function visit_allows_processing_of_this_registration(EE_Registration $registration)
855
-    {
856
-        return ! $this->revisit
857
-               || $this->primary_revisit
858
-               || (
859
-                   $this->revisit && $this->reg_url_link === $registration->reg_url_link()
860
-               )
861
-            ? true
862
-            : false;
863
-    }
864
-
865
-
866
-    /**
867
-     *    _transaction_has_primary_registration
868
-     *
869
-     * @access        private
870
-     * @return        bool
871
-     */
872
-    public function transaction_has_primary_registrant()
873
-    {
874
-        return $this->primary_attendee_obj instanceof EE_Attendee ? true : false;
875
-    }
876
-
877
-
878
-    /**
879
-     *    save_all_data
880
-     *    simply loops through the current transaction and saves all data for each registration
881
-     *
882
-     * @access public
883
-     * @param bool $show_errors
884
-     * @return bool
885
-     * @throws \EE_Error
886
-     */
887
-    public function save_all_data($show_errors = true)
888
-    {
889
-        // verify the transaction
890
-        if ($this->transaction instanceof EE_Transaction) {
891
-            // save to ensure that TXN has ID
892
-            $this->transaction->save();
893
-            // grab the saved registrations from the transaction
894
-            foreach ($this->transaction->registrations($this->reg_cache_where_params) as $registration) {
895
-                $this->_save_registration($registration, $show_errors);
896
-            }
897
-        } else {
898
-            if ($show_errors) {
899
-                EE_Error::add_error(
900
-                    __(
901
-                        'A valid Transaction was not found when attempting to save your registration information.',
902
-                        'event_espresso'
903
-                    ),
904
-                    __FILE__,
905
-                    __FUNCTION__,
906
-                    __LINE__
907
-                );
908
-            }
909
-            return false;
910
-        }
911
-        return true;
912
-    }
913
-
914
-
915
-    /**
916
-     * _save_registration_attendee
917
-     *
918
-     * @param    EE_Registration $registration
919
-     * @param bool               $show_errors
920
-     * @return void
921
-     * @throws \EE_Error
922
-     */
923
-    private function _save_registration($registration, $show_errors = true)
924
-    {
925
-        // verify object
926
-        if ($registration instanceof EE_Registration) {
927
-            // should this registration be processed during this visit ?
928
-            if ($this->visit_allows_processing_of_this_registration($registration)) {
929
-                // set TXN ID
930
-                if (! $registration->transaction_ID()) {
931
-                    $registration->set_transaction_id($this->transaction->ID());
932
-                }
933
-                // verify and save the attendee
934
-                $this->_save_registration_attendee($registration, $show_errors);
935
-                // save answers to reg form questions
936
-                $this->_save_registration_answers($registration, $show_errors);
937
-                // save changes
938
-                $registration->save();
939
-                // update txn cache
940
-                if (! $this->transaction->update_cache_after_object_save('Registration', $registration)) {
941
-                    if ($show_errors) {
942
-                        EE_Error::add_error(
943
-                            __(
944
-                                'The newly saved Registration object could not be cached on the Transaction.',
945
-                                'event_espresso'
946
-                            ),
947
-                            __FILE__,
948
-                            __FUNCTION__,
949
-                            __LINE__
950
-                        );
951
-                    }
952
-                }
953
-            }
954
-        } else {
955
-            if ($show_errors) {
956
-                EE_Error::add_error(
957
-                    __(
958
-                        'An invalid Registration object was discovered when attempting to save your registration information.',
959
-                        'event_espresso'
960
-                    ),
961
-                    __FILE__,
962
-                    __FUNCTION__,
963
-                    __LINE__
964
-                );
965
-            }
966
-        }
967
-    }
968
-
969
-
970
-    /**
971
-     * _save_registration_attendee
972
-     *
973
-     * @param    EE_Registration $registration
974
-     * @param bool               $show_errors
975
-     * @return void
976
-     * @throws \EE_Error
977
-     */
978
-    private function _save_registration_attendee($registration, $show_errors = true)
979
-    {
980
-        if ($registration->attendee() instanceof EE_Attendee) {
981
-            // save so that ATT has ID
982
-            $registration->attendee()->save();
983
-            if (! $registration->update_cache_after_object_save('Attendee', $registration->attendee())) {
984
-                if ($show_errors) {
985
-                    EE_Error::add_error(
986
-                        __(
987
-                            'The newly saved Attendee object could not be cached on the registration.',
988
-                            'event_espresso'
989
-                        ),
990
-                        __FILE__,
991
-                        __FUNCTION__,
992
-                        __LINE__
993
-                    );
994
-                }
995
-            }
996
-        } else {
997
-            if ($show_errors) {
998
-                EE_Error::add_error(
999
-                    sprintf(
1000
-                        '%1$s||%1$s $attendee = %2$s',
1001
-                        __(
1002
-                            'Either no Attendee information was found, or an invalid Attendee object was discovered when attempting to save your registration information.',
1003
-                            'event_espresso'
1004
-                        ),
1005
-                        var_export($registration->attendee(), true)
1006
-                    ),
1007
-                    __FILE__,
1008
-                    __FUNCTION__,
1009
-                    __LINE__
1010
-                );
1011
-            }
1012
-        }
1013
-    }
1014
-
1015
-
1016
-    /**
1017
-     * _save_question_answers
1018
-     *
1019
-     * @param    EE_Registration $registration
1020
-     * @param bool               $show_errors
1021
-     * @return void
1022
-     * @throws \EE_Error
1023
-     */
1024
-    private function _save_registration_answers($registration, $show_errors = true)
1025
-    {
1026
-        // now save the answers
1027
-        foreach ($registration->answers() as $cache_key => $answer) {
1028
-            // verify object
1029
-            if ($answer instanceof EE_Answer) {
1030
-                $answer->set_registration($registration->ID());
1031
-                $answer->save();
1032
-                if (! $registration->update_cache_after_object_save('Answer', $answer, $cache_key)) {
1033
-                    if ($show_errors) {
1034
-                        EE_Error::add_error(
1035
-                            __(
1036
-                                'The newly saved Answer object could not be cached on the registration.',
1037
-                                'event_espresso'
1038
-                            ),
1039
-                            __FILE__,
1040
-                            __FUNCTION__,
1041
-                            __LINE__
1042
-                        );
1043
-                    }
1044
-                }
1045
-            } else {
1046
-                if ($show_errors) {
1047
-                    EE_Error::add_error(
1048
-                        __(
1049
-                            'An invalid Answer object was discovered when attempting to save your registration information.',
1050
-                            'event_espresso'
1051
-                        ),
1052
-                        __FILE__,
1053
-                        __FUNCTION__,
1054
-                        __LINE__
1055
-                    );
1056
-                }
1057
-            }
1058
-        }
1059
-    }
1060
-
1061
-
1062
-    /**
1063
-     *    refresh_all_entities
1064
-     *   will either refresh the entity map with objects form the db or from the checkout cache
1065
-     *
1066
-     * @access public
1067
-     * @param bool $from_db
1068
-     * @return bool
1069
-     * @throws \EE_Error
1070
-     */
1071
-    public function refresh_all_entities($from_db = false)
1072
-    {
1073
-        $from_db = $this->current_step->is_final_step() || $this->action === 'process_gateway_response'
1074
-            ? true
1075
-            : $from_db;
1076
-        // $this->log(
1077
-        //     __CLASS__,
1078
-        //     __FUNCTION__,
1079
-        //     __LINE__,
1080
-        //     array('from_db' => $from_db)
1081
-        // );
1082
-        return $from_db ? $this->refresh_from_db() : $this->refresh_entity_map();
1083
-    }
1084
-
1085
-
1086
-    /**
1087
-     *  refresh_entity_map
1088
-     *  simply loops through the current transaction and updates each
1089
-     *  model's entity map using EEM_Base::refresh_entity_map_from_db()
1090
-     *
1091
-     * @access public
1092
-     * @return bool
1093
-     * @throws \EE_Error
1094
-     */
1095
-    protected function refresh_from_db()
1096
-    {
1097
-        // verify the transaction
1098
-        if ($this->transaction instanceof EE_Transaction && $this->transaction->ID()) {
1099
-            // pull fresh TXN data from the db
1100
-            $this->transaction = $this->transaction->get_model()->refresh_entity_map_from_db($this->transaction->ID());
1101
-            // update EE_Checkout's cached primary_attendee object
1102
-            $this->primary_attendee_obj = $this->_refresh_primary_attendee_obj_from_db($this->transaction);
1103
-            // update EE_Checkout's cached payment object
1104
-            $payment = $this->transaction->last_payment();
1105
-            $this->payment = $payment instanceof EE_Payment ? $payment : $this->payment;
1106
-            // update EE_Checkout's cached payment_method object
1107
-            $payment_method = $this->payment instanceof EE_Payment ? $this->payment->payment_method() : null;
1108
-            $this->payment_method = $payment_method instanceof EE_Payment_Method ? $payment_method
1109
-                : $this->payment_method;
1110
-            // now refresh the cart, based on the TXN
1111
-            $this->cart = $this->get_cart_for_transaction($this->transaction);
1112
-        } else {
1113
-            EE_Error::add_error(
1114
-                __(
1115
-                    'A valid Transaction was not found when attempting to update the model entity mapper.',
1116
-                    'event_espresso'
1117
-                ),
1118
-                __FILE__,
1119
-                __FUNCTION__,
1120
-                __LINE__
1121
-            );
1122
-            return false;
1123
-        }
1124
-        return true;
1125
-    }
1126
-
1127
-
1128
-    /**
1129
-     * _refresh_primary_attendee_obj_from_db
1130
-     *
1131
-     * @param   EE_Transaction $transaction
1132
-     * @return  EE_Attendee | null
1133
-     * @throws \EE_Error
1134
-     */
1135
-    protected function _refresh_primary_attendee_obj_from_db(EE_Transaction $transaction)
1136
-    {
1137
-
1138
-        $primary_attendee_obj = null;
1139
-        // grab the saved registrations from the transaction
1140
-        foreach ($transaction->registrations($this->reg_cache_where_params, true) as $registration) {
1141
-            // verify object
1142
-            if ($registration instanceof EE_Registration) {
1143
-                $attendee = $registration->attendee();
1144
-                // verify object && maybe cache primary_attendee_obj ?
1145
-                if ($attendee instanceof EE_Attendee && $registration->is_primary_registrant()) {
1146
-                    $primary_attendee_obj = $attendee;
1147
-                }
1148
-            } else {
1149
-                EE_Error::add_error(
1150
-                    __(
1151
-                        'An invalid Registration object was discovered when attempting to update the model entity mapper.',
1152
-                        'event_espresso'
1153
-                    ),
1154
-                    __FILE__,
1155
-                    __FUNCTION__,
1156
-                    __LINE__
1157
-                );
1158
-            }
1159
-        }
1160
-        return $primary_attendee_obj;
1161
-    }
1162
-
1163
-
1164
-    /**
1165
-     *  refresh_entity_map
1166
-     *  simply loops through the current transaction and updates
1167
-     *  each model's entity map using EEM_Base::refresh_entity_map_with()
1168
-     *
1169
-     * @access public
1170
-     * @return bool
1171
-     * @throws \EE_Error
1172
-     */
1173
-    protected function refresh_entity_map()
1174
-    {
1175
-        // verify the transaction
1176
-        if ($this->transaction instanceof EE_Transaction && $this->transaction->ID()) {
1177
-            // never cache payment info
1178
-            $this->transaction->clear_cache('Payment');
1179
-            // is the Payment Options Reg Step completed ?
1180
-            if ($this->transaction->reg_step_completed('payment_options')) {
1181
-                // then check for payments and update TXN accordingly
1182
-                /** @type EE_Transaction_Payments $transaction_payments */
1183
-                $transaction_payments = EE_Registry::instance()->load_class('Transaction_Payments');
1184
-                $transaction_payments->calculate_total_payments_and_update_status($this->transaction);
1185
-            }
1186
-            // grab the saved registrations from the transaction
1187
-            foreach ($this->transaction->registrations($this->reg_cache_where_params) as $reg_cache_ID => $registration) {
1188
-                $this->_refresh_registration($reg_cache_ID, $registration);
1189
-            }
1190
-            // make sure our cached TXN is added to the model entity mapper
1191
-            $this->transaction = $this->transaction->get_model()->refresh_entity_map_with(
1192
-                $this->transaction->ID(),
1193
-                $this->transaction
1194
-            );
1195
-        } else {
1196
-            EE_Error::add_error(
1197
-                __(
1198
-                    'A valid Transaction was not found when attempting to update the model entity mapper.',
1199
-                    'event_espresso'
1200
-                ),
1201
-                __FILE__,
1202
-                __FUNCTION__,
1203
-                __LINE__
1204
-            );
1205
-            return false;
1206
-        }
1207
-        // verify and update the cart because inaccurate totals are not so much fun
1208
-        if ($this->cart instanceof EE_Cart) {
1209
-            $grand_total = $this->cart->get_grand_total();
1210
-            if ($grand_total instanceof EE_Line_Item && $grand_total->ID()) {
1211
-                $grand_total->recalculate_total_including_taxes();
1212
-                $grand_total = $grand_total->get_model()->refresh_entity_map_with(
1213
-                    $this->cart->get_grand_total()->ID(),
1214
-                    $this->cart->get_grand_total()
1215
-                );
1216
-            }
1217
-            if ($grand_total instanceof EE_Line_Item) {
1218
-                $this->cart = EE_Cart::instance($grand_total);
1219
-            } else {
1220
-                EE_Error::add_error(
1221
-                    __(
1222
-                        'A valid Cart was not found when attempting to update the model entity mapper.',
1223
-                        'event_espresso'
1224
-                    ),
1225
-                    __FILE__,
1226
-                    __FUNCTION__,
1227
-                    __LINE__
1228
-                );
1229
-                return false;
1230
-            }
1231
-        }
1232
-        return true;
1233
-    }
1234
-
1235
-
1236
-    /**
1237
-     * _refresh_registration
1238
-     *
1239
-     * @param    string | int    $reg_cache_ID
1240
-     * @param    EE_Registration $registration
1241
-     * @return void
1242
-     * @throws \EE_Error
1243
-     */
1244
-    protected function _refresh_registration($reg_cache_ID, $registration)
1245
-    {
1246
-
1247
-        // verify object
1248
-        if ($registration instanceof EE_Registration) {
1249
-            // update the entity mapper attendee
1250
-            $this->_refresh_registration_attendee($registration);
1251
-            // update the entity mapper answers for reg form questions
1252
-            $this->_refresh_registration_answers($registration);
1253
-            // make sure the cached registration is added to the model entity mapper
1254
-            $registration->get_model()->refresh_entity_map_with($reg_cache_ID, $registration);
1255
-        } else {
1256
-            EE_Error::add_error(
1257
-                __(
1258
-                    'An invalid Registration object was discovered when attempting to update the model entity mapper.',
1259
-                    'event_espresso'
1260
-                ),
1261
-                __FILE__,
1262
-                __FUNCTION__,
1263
-                __LINE__
1264
-            );
1265
-        }
1266
-    }
1267
-
1268
-
1269
-    /**
1270
-     * _save_registration_attendee
1271
-     *
1272
-     * @param    EE_Registration $registration
1273
-     * @return void
1274
-     * @throws \EE_Error
1275
-     */
1276
-    protected function _refresh_registration_attendee($registration)
1277
-    {
1278
-
1279
-        $attendee = $registration->attendee();
1280
-        // verify object
1281
-        if ($attendee instanceof EE_Attendee && $attendee->ID()) {
1282
-            // make sure the cached attendee is added to the model entity mapper
1283
-            $registration->attendee()->get_model()->refresh_entity_map_with($attendee->ID(), $attendee);
1284
-            // maybe cache primary_attendee_obj ?
1285
-            if ($registration->is_primary_registrant()) {
1286
-                $this->primary_attendee_obj = $attendee;
1287
-            }
1288
-        }
1289
-    }
1290
-
1291
-
1292
-    /**
1293
-     * _refresh_registration_answers
1294
-     *
1295
-     * @param    EE_Registration $registration
1296
-     * @return void
1297
-     * @throws \EE_Error
1298
-     */
1299
-    protected function _refresh_registration_answers($registration)
1300
-    {
1301
-
1302
-        // now update the answers
1303
-        foreach ($registration->answers() as $cache_key => $answer) {
1304
-            // verify object
1305
-            if ($answer instanceof EE_Answer) {
1306
-                if ($answer->ID()) {
1307
-                    // make sure the cached answer is added to the model entity mapper
1308
-                    $answer->get_model()->refresh_entity_map_with($answer->ID(), $answer);
1309
-                }
1310
-            } else {
1311
-                EE_Error::add_error(
1312
-                    __(
1313
-                        'An invalid Answer object was discovered when attempting to update the model entity mapper.',
1314
-                        'event_espresso'
1315
-                    ),
1316
-                    __FILE__,
1317
-                    __FUNCTION__,
1318
-                    __LINE__
1319
-                );
1320
-            }
1321
-        }
1322
-    }
1323
-
1324
-
1325
-    /**
1326
-     *    __sleep
1327
-     * to conserve db space, let's remove the reg_form and the EE_Checkout object from EE_SPCO_Reg_Step objects upon
1328
-     * serialization EE_Checkout will handle the reimplementation of itself upon waking, but we won't bother with the
1329
-     * reg form, because if needed, it will be regenerated anyways
1330
-     *
1331
-     * @return array
1332
-     * @throws \EE_Error
1333
-     */
1334
-    public function __sleep()
1335
-    {
1336
-        if ($this->primary_attendee_obj instanceof EE_Attendee && $this->primary_attendee_obj->ID()) {
1337
-            $this->primary_attendee_obj = $this->primary_attendee_obj->ID();
1338
-        }        // remove the reg form and the checkout
1339
-        if ($this->transaction instanceof EE_Transaction && $this->transaction->ID()) {
1340
-            $this->transaction = $this->transaction->ID();
1341
-        }        // remove the reg form and the checkout
1342
-        return array_diff(array_keys(get_object_vars($this)), array('billing_form', 'registration_form'));
1343
-    }
1344
-
1345
-
1346
-    /**
1347
-     *    __wakeup
1348
-     * to conserve db space, we are removing the EE_Checkout object from EE_SPCO_Reg_Step objects upon serialization
1349
-     * this will reinstate the EE_Checkout object on each EE_SPCO_Reg_Step object
1350
-     */
1351
-    public function __wakeup()
1352
-    {
1353
-        if (! $this->primary_attendee_obj instanceof EE_Attendee && absint($this->primary_attendee_obj) !== 0) {
1354
-            // $this->primary_attendee_obj is actually just an ID, so use it to get the object from the db
1355
-            $this->primary_attendee_obj = EEM_Attendee::instance()->get_one_by_ID($this->primary_attendee_obj);
1356
-        }
1357
-        if (! $this->transaction instanceof EE_Transaction && absint($this->transaction) !== 0) {
1358
-            // $this->transaction is actually just an ID, so use it to get the object from the db
1359
-            $this->transaction = EEM_Transaction::instance()->get_one_by_ID($this->transaction);
1360
-        }
1361
-        foreach ($this->reg_steps as $reg_step) {
1362
-            $reg_step->checkout = $this;
1363
-        }
1364
-    }
1365
-
1366
-
1367
-    /**
1368
-     * debug
1369
-     *
1370
-     * @param string $class
1371
-     * @param string $func
1372
-     * @param string $line
1373
-     * @param array  $info
1374
-     * @param bool   $display_request
1375
-     * @throws \EE_Error
1376
-     */
1377
-    public function log($class = '', $func = '', $line = '', $info = array(), $display_request = false)
1378
-    {
1379
-        $disabled = true;
1380
-        if (WP_DEBUG && ! $disabled) {
1381
-            $debug_data = get_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), array());
1382
-            $default_data = array(
1383
-                $class                    => $func . '() : ' . $line,
1384
-                'request->step'           => $this->step,
1385
-                'request->action'         => $this->action,
1386
-                'current_step->slug'      => $this->current_step instanceof EE_SPCO_Reg_Step ?
1387
-                    $this->current_step->slug() : '',
1388
-                'current_step->completed' => $this->current_step instanceof EE_SPCO_Reg_Step ?
1389
-                    $this->current_step->completed() : '',
1390
-                'txn_status_updated'      => $this->transaction->txn_status_updated(),
1391
-                'reg_status_updated'      => $this->reg_status_updated,
1392
-                'reg_url_link'            => $this->reg_url_link,
1393
-                'REQ'                     => $display_request ? $_REQUEST : '',
1394
-            );
1395
-            if ($this->transaction instanceof EE_Transaction) {
1396
-                $default_data['TXN_status'] = $this->transaction->status_ID();
1397
-                $default_data['TXN_reg_steps'] = $this->transaction->reg_steps();
1398
-                foreach ($this->transaction->registrations($this->reg_cache_where_params) as $REG_ID => $registration) {
1399
-                    $default_data['registrations'][ $REG_ID ] = $registration->status_ID();
1400
-                }
1401
-                if ($this->transaction->ID()) {
1402
-                    $TXN_ID = 'EE_Transaction: ' . $this->transaction->ID();
1403
-                    // don't serialize objects
1404
-                    $info = $this->_strip_objects($info);
1405
-                    if (! isset($debug_data[ $TXN_ID ])) {
1406
-                        $debug_data[ $TXN_ID ] = array();
1407
-                    }
1408
-                    $debug_data[ $TXN_ID ][ microtime() ] = array_merge(
1409
-                        $default_data,
1410
-                        $info
1411
-                    );
1412
-                    update_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), $debug_data);
1413
-                }
1414
-            }
1415
-        }
1416
-    }
1417
-
1418
-
1419
-    /**
1420
-     * _strip_objects
1421
-     *
1422
-     * @param array $info
1423
-     * @return array
1424
-     */
1425
-    public function _strip_objects($info = array())
1426
-    {
1427
-        foreach ((array) $info as $key => $value) {
1428
-            if (is_array($value)) {
1429
-                $info[ $key ] = $this->_strip_objects($value);
1430
-            } elseif (is_object($value)) {
1431
-                $object_class = get_class($value);
1432
-                $info[ $object_class ] = array();
1433
-                $info[ $object_class ]['ID'] = method_exists($value, 'ID') ? $value->ID() : 0;
1434
-                if (method_exists($value, 'status')) {
1435
-                    $info[ $object_class ]['status'] = $value->status();
1436
-                } elseif (method_exists($value, 'status_ID')) {
1437
-                    $info[ $object_class ]['status'] = $value->status_ID();
1438
-                }
1439
-                unset($info[ $key ]);
1440
-            }
1441
-        }
1442
-        return (array) $info;
1443
-    }
634
+			! $this->revisit
635
+			&& (
636
+				// and displaying the reg step form for the first time ?
637
+				$this->action === 'display_spco_reg_step'
638
+				// or initializing the final step
639
+				|| $reg_step instanceof EE_SPCO_Reg_Step_Finalize_Registration
640
+			)
641
+		) {
642
+			// set the start time for this reg step
643
+			if (! $this->transaction->set_reg_step_initiated($reg_step->slug())) {
644
+				if (WP_DEBUG) {
645
+					EE_Error::add_error(
646
+						sprintf(
647
+							__('The "%1$s" registration step was not initialized properly.', 'event_espresso'),
648
+							$reg_step->name()
649
+						),
650
+						__FILE__,
651
+						__FUNCTION__,
652
+						__LINE__
653
+					);
654
+				}
655
+			}
656
+		}
657
+	}
658
+
659
+
660
+	/**
661
+	 *    set_reg_step_JSON_info
662
+	 *
663
+	 * @access public
664
+	 * @return    void
665
+	 */
666
+	public function set_reg_step_JSON_info()
667
+	{
668
+		EE_Registry::$i18n_js_strings['reg_steps'] = array();
669
+		// pass basic reg step data to JS
670
+		foreach ($this->reg_steps as $reg_step) {
671
+			EE_Registry::$i18n_js_strings['reg_steps'][] = $reg_step->slug();
672
+		}
673
+		// reset reg step html
674
+		// $this->json_response->set_reg_step_html('');
675
+	}
676
+
677
+
678
+	/**
679
+	 *    reset_reg_steps
680
+	 *
681
+	 * @access public
682
+	 * @return void
683
+	 */
684
+	public function reset_reg_steps()
685
+	{
686
+		$this->sort_reg_steps();
687
+		$this->set_current_step(EE_Registry::instance()->REQ->get('step'));
688
+		$this->set_next_step();
689
+		// the text that appears on the reg step form submit button
690
+		$this->current_step->set_submit_button_text();
691
+		$this->set_reg_step_JSON_info();
692
+	}
693
+
694
+
695
+	/**
696
+	 *    get_registration_time_limit
697
+	 *
698
+	 * @access    public
699
+	 * @return        string
700
+	 */
701
+	public function get_registration_time_limit()
702
+	{
703
+
704
+		$registration_time_limit = (float) (EE_Registry::instance()->SSN->expiration() - time());
705
+		$time_limit_format = $registration_time_limit > 60 * MINUTE_IN_SECONDS ? 'H:i:s' : 'i:s';
706
+		$registration_time_limit = date($time_limit_format, $registration_time_limit);
707
+		return apply_filters(
708
+			'FHEE__EE_Checkout__get_registration_time_limit__registration_time_limit',
709
+			$registration_time_limit
710
+		);
711
+	}
712
+
713
+
714
+	/**
715
+	 * payment_required
716
+	 *
717
+	 * @return boolean
718
+	 */
719
+	public function payment_required()
720
+	{
721
+		// if NOT:
722
+		//     registration via admin
723
+		//      completed TXN
724
+		//      overpaid TXN
725
+		//      free TXN(total = 0.00)
726
+		//      then payment required is TRUE
727
+		return ! ($this->admin_request
728
+				  || $this->transaction->is_completed()
729
+				  || $this->transaction->is_overpaid()
730
+				  || $this->transaction->is_free()) ? true : false;
731
+	}
732
+
733
+
734
+	/**
735
+	 * get_cart_for_transaction
736
+	 *
737
+	 * @access public
738
+	 * @param EE_Transaction $transaction
739
+	 * @return EE_Cart
740
+	 */
741
+	public function get_cart_for_transaction($transaction)
742
+	{
743
+		$session = EE_Registry::instance()->load_core('Session');
744
+		$cart = $transaction instanceof EE_Transaction ? EE_Cart::get_cart_from_txn($transaction, $session) : null;
745
+		// verify cart
746
+		if (! $cart instanceof EE_Cart) {
747
+			$cart = EE_Registry::instance()->load_core('Cart');
748
+		}
749
+
750
+		return $cart;
751
+	}
752
+
753
+
754
+	/**
755
+	 *    initialize_txn_reg_steps_array
756
+	 *
757
+	 * @access public
758
+	 * @return    array
759
+	 */
760
+	public function initialize_txn_reg_steps_array()
761
+	{
762
+		$txn_reg_steps_array = array();
763
+		foreach ($this->reg_steps as $reg_step) {
764
+			$txn_reg_steps_array[ $reg_step->slug() ] = false;
765
+		}
766
+		return $txn_reg_steps_array;
767
+	}
768
+
769
+
770
+	/**
771
+	 *    update_txn_reg_steps_array
772
+	 *
773
+	 * @access public
774
+	 * @return    bool
775
+	 * @throws \EE_Error
776
+	 */
777
+	public function update_txn_reg_steps_array()
778
+	{
779
+		$updated = false;
780
+		foreach ($this->reg_steps as $reg_step) {
781
+			if ($reg_step->completed()) {
782
+				$updated = $this->transaction->set_reg_step_completed($reg_step->slug())
783
+					? true
784
+					: $updated;
785
+			}
786
+		}
787
+		if ($updated) {
788
+			$this->transaction->save();
789
+		}
790
+		return $updated;
791
+	}
792
+
793
+
794
+	/**
795
+	 *    stash_transaction_and_checkout
796
+	 *
797
+	 * @access public
798
+	 * @return    void
799
+	 * @throws \EE_Error
800
+	 */
801
+	public function stash_transaction_and_checkout()
802
+	{
803
+		if (! $this->revisit) {
804
+			$this->update_txn_reg_steps_array();
805
+		}
806
+		$this->track_transaction_and_registration_status_updates();
807
+		// save all data to the db, but suppress errors
808
+		// $this->save_all_data( FALSE );
809
+		// cache the checkout in the session
810
+		EE_Registry::instance()->SSN->set_checkout($this);
811
+	}
812
+
813
+
814
+	/**
815
+	 *    track_transaction_and_registration_status_updates
816
+	 *    stores whether any updates were made to the TXN or it's related registrations
817
+	 *
818
+	 * @access public
819
+	 * @return void
820
+	 * @throws \EE_Error
821
+	 */
822
+	public function track_transaction_and_registration_status_updates()
823
+	{
824
+		// verify the transaction
825
+		if ($this->transaction instanceof EE_Transaction) {
826
+			// has there been a TXN status change during this checkout?
827
+			$this->txn_status_updated = $this->transaction->txn_status_updated();
828
+			/** @type EE_Registration_Processor $registration_processor */
829
+			$registration_processor = EE_Registry::instance()->load_class('Registration_Processor');
830
+			// grab the saved registrations from the transaction
831
+			foreach ($this->transaction->registrations($this->reg_cache_where_params) as $registration) {
832
+				if ($registration_processor->reg_status_updated($registration->ID())) {
833
+					$this->set_reg_status_updated($registration->ID(), true);
834
+				}
835
+			}
836
+		}
837
+	}
838
+
839
+
840
+	/**
841
+	 *    visit_allows_processing_of_this_registration
842
+	 *    determines if the current SPCO visit should allow the passed EE_Registration to be used in processing.
843
+	 *    one of the following conditions must be met:
844
+	 *        EITHER:    A) first time thru SPCO -> process ALL registrations ( NOT a revisit )
845
+	 *        OR :        B) primary registrant is editing info -> process ALL registrations ( primary_revisit )
846
+	 *        OR :        C) another registrant is editing info -> ONLY process their registration ( revisit AND their
847
+	 *        reg_url_link matches )
848
+	 *
849
+	 * @access public
850
+	 * @param    EE_Registration $registration
851
+	 * @return    bool
852
+	 * @throws \EE_Error
853
+	 */
854
+	public function visit_allows_processing_of_this_registration(EE_Registration $registration)
855
+	{
856
+		return ! $this->revisit
857
+			   || $this->primary_revisit
858
+			   || (
859
+				   $this->revisit && $this->reg_url_link === $registration->reg_url_link()
860
+			   )
861
+			? true
862
+			: false;
863
+	}
864
+
865
+
866
+	/**
867
+	 *    _transaction_has_primary_registration
868
+	 *
869
+	 * @access        private
870
+	 * @return        bool
871
+	 */
872
+	public function transaction_has_primary_registrant()
873
+	{
874
+		return $this->primary_attendee_obj instanceof EE_Attendee ? true : false;
875
+	}
876
+
877
+
878
+	/**
879
+	 *    save_all_data
880
+	 *    simply loops through the current transaction and saves all data for each registration
881
+	 *
882
+	 * @access public
883
+	 * @param bool $show_errors
884
+	 * @return bool
885
+	 * @throws \EE_Error
886
+	 */
887
+	public function save_all_data($show_errors = true)
888
+	{
889
+		// verify the transaction
890
+		if ($this->transaction instanceof EE_Transaction) {
891
+			// save to ensure that TXN has ID
892
+			$this->transaction->save();
893
+			// grab the saved registrations from the transaction
894
+			foreach ($this->transaction->registrations($this->reg_cache_where_params) as $registration) {
895
+				$this->_save_registration($registration, $show_errors);
896
+			}
897
+		} else {
898
+			if ($show_errors) {
899
+				EE_Error::add_error(
900
+					__(
901
+						'A valid Transaction was not found when attempting to save your registration information.',
902
+						'event_espresso'
903
+					),
904
+					__FILE__,
905
+					__FUNCTION__,
906
+					__LINE__
907
+				);
908
+			}
909
+			return false;
910
+		}
911
+		return true;
912
+	}
913
+
914
+
915
+	/**
916
+	 * _save_registration_attendee
917
+	 *
918
+	 * @param    EE_Registration $registration
919
+	 * @param bool               $show_errors
920
+	 * @return void
921
+	 * @throws \EE_Error
922
+	 */
923
+	private function _save_registration($registration, $show_errors = true)
924
+	{
925
+		// verify object
926
+		if ($registration instanceof EE_Registration) {
927
+			// should this registration be processed during this visit ?
928
+			if ($this->visit_allows_processing_of_this_registration($registration)) {
929
+				// set TXN ID
930
+				if (! $registration->transaction_ID()) {
931
+					$registration->set_transaction_id($this->transaction->ID());
932
+				}
933
+				// verify and save the attendee
934
+				$this->_save_registration_attendee($registration, $show_errors);
935
+				// save answers to reg form questions
936
+				$this->_save_registration_answers($registration, $show_errors);
937
+				// save changes
938
+				$registration->save();
939
+				// update txn cache
940
+				if (! $this->transaction->update_cache_after_object_save('Registration', $registration)) {
941
+					if ($show_errors) {
942
+						EE_Error::add_error(
943
+							__(
944
+								'The newly saved Registration object could not be cached on the Transaction.',
945
+								'event_espresso'
946
+							),
947
+							__FILE__,
948
+							__FUNCTION__,
949
+							__LINE__
950
+						);
951
+					}
952
+				}
953
+			}
954
+		} else {
955
+			if ($show_errors) {
956
+				EE_Error::add_error(
957
+					__(
958
+						'An invalid Registration object was discovered when attempting to save your registration information.',
959
+						'event_espresso'
960
+					),
961
+					__FILE__,
962
+					__FUNCTION__,
963
+					__LINE__
964
+				);
965
+			}
966
+		}
967
+	}
968
+
969
+
970
+	/**
971
+	 * _save_registration_attendee
972
+	 *
973
+	 * @param    EE_Registration $registration
974
+	 * @param bool               $show_errors
975
+	 * @return void
976
+	 * @throws \EE_Error
977
+	 */
978
+	private function _save_registration_attendee($registration, $show_errors = true)
979
+	{
980
+		if ($registration->attendee() instanceof EE_Attendee) {
981
+			// save so that ATT has ID
982
+			$registration->attendee()->save();
983
+			if (! $registration->update_cache_after_object_save('Attendee', $registration->attendee())) {
984
+				if ($show_errors) {
985
+					EE_Error::add_error(
986
+						__(
987
+							'The newly saved Attendee object could not be cached on the registration.',
988
+							'event_espresso'
989
+						),
990
+						__FILE__,
991
+						__FUNCTION__,
992
+						__LINE__
993
+					);
994
+				}
995
+			}
996
+		} else {
997
+			if ($show_errors) {
998
+				EE_Error::add_error(
999
+					sprintf(
1000
+						'%1$s||%1$s $attendee = %2$s',
1001
+						__(
1002
+							'Either no Attendee information was found, or an invalid Attendee object was discovered when attempting to save your registration information.',
1003
+							'event_espresso'
1004
+						),
1005
+						var_export($registration->attendee(), true)
1006
+					),
1007
+					__FILE__,
1008
+					__FUNCTION__,
1009
+					__LINE__
1010
+				);
1011
+			}
1012
+		}
1013
+	}
1014
+
1015
+
1016
+	/**
1017
+	 * _save_question_answers
1018
+	 *
1019
+	 * @param    EE_Registration $registration
1020
+	 * @param bool               $show_errors
1021
+	 * @return void
1022
+	 * @throws \EE_Error
1023
+	 */
1024
+	private function _save_registration_answers($registration, $show_errors = true)
1025
+	{
1026
+		// now save the answers
1027
+		foreach ($registration->answers() as $cache_key => $answer) {
1028
+			// verify object
1029
+			if ($answer instanceof EE_Answer) {
1030
+				$answer->set_registration($registration->ID());
1031
+				$answer->save();
1032
+				if (! $registration->update_cache_after_object_save('Answer', $answer, $cache_key)) {
1033
+					if ($show_errors) {
1034
+						EE_Error::add_error(
1035
+							__(
1036
+								'The newly saved Answer object could not be cached on the registration.',
1037
+								'event_espresso'
1038
+							),
1039
+							__FILE__,
1040
+							__FUNCTION__,
1041
+							__LINE__
1042
+						);
1043
+					}
1044
+				}
1045
+			} else {
1046
+				if ($show_errors) {
1047
+					EE_Error::add_error(
1048
+						__(
1049
+							'An invalid Answer object was discovered when attempting to save your registration information.',
1050
+							'event_espresso'
1051
+						),
1052
+						__FILE__,
1053
+						__FUNCTION__,
1054
+						__LINE__
1055
+					);
1056
+				}
1057
+			}
1058
+		}
1059
+	}
1060
+
1061
+
1062
+	/**
1063
+	 *    refresh_all_entities
1064
+	 *   will either refresh the entity map with objects form the db or from the checkout cache
1065
+	 *
1066
+	 * @access public
1067
+	 * @param bool $from_db
1068
+	 * @return bool
1069
+	 * @throws \EE_Error
1070
+	 */
1071
+	public function refresh_all_entities($from_db = false)
1072
+	{
1073
+		$from_db = $this->current_step->is_final_step() || $this->action === 'process_gateway_response'
1074
+			? true
1075
+			: $from_db;
1076
+		// $this->log(
1077
+		//     __CLASS__,
1078
+		//     __FUNCTION__,
1079
+		//     __LINE__,
1080
+		//     array('from_db' => $from_db)
1081
+		// );
1082
+		return $from_db ? $this->refresh_from_db() : $this->refresh_entity_map();
1083
+	}
1084
+
1085
+
1086
+	/**
1087
+	 *  refresh_entity_map
1088
+	 *  simply loops through the current transaction and updates each
1089
+	 *  model's entity map using EEM_Base::refresh_entity_map_from_db()
1090
+	 *
1091
+	 * @access public
1092
+	 * @return bool
1093
+	 * @throws \EE_Error
1094
+	 */
1095
+	protected function refresh_from_db()
1096
+	{
1097
+		// verify the transaction
1098
+		if ($this->transaction instanceof EE_Transaction && $this->transaction->ID()) {
1099
+			// pull fresh TXN data from the db
1100
+			$this->transaction = $this->transaction->get_model()->refresh_entity_map_from_db($this->transaction->ID());
1101
+			// update EE_Checkout's cached primary_attendee object
1102
+			$this->primary_attendee_obj = $this->_refresh_primary_attendee_obj_from_db($this->transaction);
1103
+			// update EE_Checkout's cached payment object
1104
+			$payment = $this->transaction->last_payment();
1105
+			$this->payment = $payment instanceof EE_Payment ? $payment : $this->payment;
1106
+			// update EE_Checkout's cached payment_method object
1107
+			$payment_method = $this->payment instanceof EE_Payment ? $this->payment->payment_method() : null;
1108
+			$this->payment_method = $payment_method instanceof EE_Payment_Method ? $payment_method
1109
+				: $this->payment_method;
1110
+			// now refresh the cart, based on the TXN
1111
+			$this->cart = $this->get_cart_for_transaction($this->transaction);
1112
+		} else {
1113
+			EE_Error::add_error(
1114
+				__(
1115
+					'A valid Transaction was not found when attempting to update the model entity mapper.',
1116
+					'event_espresso'
1117
+				),
1118
+				__FILE__,
1119
+				__FUNCTION__,
1120
+				__LINE__
1121
+			);
1122
+			return false;
1123
+		}
1124
+		return true;
1125
+	}
1126
+
1127
+
1128
+	/**
1129
+	 * _refresh_primary_attendee_obj_from_db
1130
+	 *
1131
+	 * @param   EE_Transaction $transaction
1132
+	 * @return  EE_Attendee | null
1133
+	 * @throws \EE_Error
1134
+	 */
1135
+	protected function _refresh_primary_attendee_obj_from_db(EE_Transaction $transaction)
1136
+	{
1137
+
1138
+		$primary_attendee_obj = null;
1139
+		// grab the saved registrations from the transaction
1140
+		foreach ($transaction->registrations($this->reg_cache_where_params, true) as $registration) {
1141
+			// verify object
1142
+			if ($registration instanceof EE_Registration) {
1143
+				$attendee = $registration->attendee();
1144
+				// verify object && maybe cache primary_attendee_obj ?
1145
+				if ($attendee instanceof EE_Attendee && $registration->is_primary_registrant()) {
1146
+					$primary_attendee_obj = $attendee;
1147
+				}
1148
+			} else {
1149
+				EE_Error::add_error(
1150
+					__(
1151
+						'An invalid Registration object was discovered when attempting to update the model entity mapper.',
1152
+						'event_espresso'
1153
+					),
1154
+					__FILE__,
1155
+					__FUNCTION__,
1156
+					__LINE__
1157
+				);
1158
+			}
1159
+		}
1160
+		return $primary_attendee_obj;
1161
+	}
1162
+
1163
+
1164
+	/**
1165
+	 *  refresh_entity_map
1166
+	 *  simply loops through the current transaction and updates
1167
+	 *  each model's entity map using EEM_Base::refresh_entity_map_with()
1168
+	 *
1169
+	 * @access public
1170
+	 * @return bool
1171
+	 * @throws \EE_Error
1172
+	 */
1173
+	protected function refresh_entity_map()
1174
+	{
1175
+		// verify the transaction
1176
+		if ($this->transaction instanceof EE_Transaction && $this->transaction->ID()) {
1177
+			// never cache payment info
1178
+			$this->transaction->clear_cache('Payment');
1179
+			// is the Payment Options Reg Step completed ?
1180
+			if ($this->transaction->reg_step_completed('payment_options')) {
1181
+				// then check for payments and update TXN accordingly
1182
+				/** @type EE_Transaction_Payments $transaction_payments */
1183
+				$transaction_payments = EE_Registry::instance()->load_class('Transaction_Payments');
1184
+				$transaction_payments->calculate_total_payments_and_update_status($this->transaction);
1185
+			}
1186
+			// grab the saved registrations from the transaction
1187
+			foreach ($this->transaction->registrations($this->reg_cache_where_params) as $reg_cache_ID => $registration) {
1188
+				$this->_refresh_registration($reg_cache_ID, $registration);
1189
+			}
1190
+			// make sure our cached TXN is added to the model entity mapper
1191
+			$this->transaction = $this->transaction->get_model()->refresh_entity_map_with(
1192
+				$this->transaction->ID(),
1193
+				$this->transaction
1194
+			);
1195
+		} else {
1196
+			EE_Error::add_error(
1197
+				__(
1198
+					'A valid Transaction was not found when attempting to update the model entity mapper.',
1199
+					'event_espresso'
1200
+				),
1201
+				__FILE__,
1202
+				__FUNCTION__,
1203
+				__LINE__
1204
+			);
1205
+			return false;
1206
+		}
1207
+		// verify and update the cart because inaccurate totals are not so much fun
1208
+		if ($this->cart instanceof EE_Cart) {
1209
+			$grand_total = $this->cart->get_grand_total();
1210
+			if ($grand_total instanceof EE_Line_Item && $grand_total->ID()) {
1211
+				$grand_total->recalculate_total_including_taxes();
1212
+				$grand_total = $grand_total->get_model()->refresh_entity_map_with(
1213
+					$this->cart->get_grand_total()->ID(),
1214
+					$this->cart->get_grand_total()
1215
+				);
1216
+			}
1217
+			if ($grand_total instanceof EE_Line_Item) {
1218
+				$this->cart = EE_Cart::instance($grand_total);
1219
+			} else {
1220
+				EE_Error::add_error(
1221
+					__(
1222
+						'A valid Cart was not found when attempting to update the model entity mapper.',
1223
+						'event_espresso'
1224
+					),
1225
+					__FILE__,
1226
+					__FUNCTION__,
1227
+					__LINE__
1228
+				);
1229
+				return false;
1230
+			}
1231
+		}
1232
+		return true;
1233
+	}
1234
+
1235
+
1236
+	/**
1237
+	 * _refresh_registration
1238
+	 *
1239
+	 * @param    string | int    $reg_cache_ID
1240
+	 * @param    EE_Registration $registration
1241
+	 * @return void
1242
+	 * @throws \EE_Error
1243
+	 */
1244
+	protected function _refresh_registration($reg_cache_ID, $registration)
1245
+	{
1246
+
1247
+		// verify object
1248
+		if ($registration instanceof EE_Registration) {
1249
+			// update the entity mapper attendee
1250
+			$this->_refresh_registration_attendee($registration);
1251
+			// update the entity mapper answers for reg form questions
1252
+			$this->_refresh_registration_answers($registration);
1253
+			// make sure the cached registration is added to the model entity mapper
1254
+			$registration->get_model()->refresh_entity_map_with($reg_cache_ID, $registration);
1255
+		} else {
1256
+			EE_Error::add_error(
1257
+				__(
1258
+					'An invalid Registration object was discovered when attempting to update the model entity mapper.',
1259
+					'event_espresso'
1260
+				),
1261
+				__FILE__,
1262
+				__FUNCTION__,
1263
+				__LINE__
1264
+			);
1265
+		}
1266
+	}
1267
+
1268
+
1269
+	/**
1270
+	 * _save_registration_attendee
1271
+	 *
1272
+	 * @param    EE_Registration $registration
1273
+	 * @return void
1274
+	 * @throws \EE_Error
1275
+	 */
1276
+	protected function _refresh_registration_attendee($registration)
1277
+	{
1278
+
1279
+		$attendee = $registration->attendee();
1280
+		// verify object
1281
+		if ($attendee instanceof EE_Attendee && $attendee->ID()) {
1282
+			// make sure the cached attendee is added to the model entity mapper
1283
+			$registration->attendee()->get_model()->refresh_entity_map_with($attendee->ID(), $attendee);
1284
+			// maybe cache primary_attendee_obj ?
1285
+			if ($registration->is_primary_registrant()) {
1286
+				$this->primary_attendee_obj = $attendee;
1287
+			}
1288
+		}
1289
+	}
1290
+
1291
+
1292
+	/**
1293
+	 * _refresh_registration_answers
1294
+	 *
1295
+	 * @param    EE_Registration $registration
1296
+	 * @return void
1297
+	 * @throws \EE_Error
1298
+	 */
1299
+	protected function _refresh_registration_answers($registration)
1300
+	{
1301
+
1302
+		// now update the answers
1303
+		foreach ($registration->answers() as $cache_key => $answer) {
1304
+			// verify object
1305
+			if ($answer instanceof EE_Answer) {
1306
+				if ($answer->ID()) {
1307
+					// make sure the cached answer is added to the model entity mapper
1308
+					$answer->get_model()->refresh_entity_map_with($answer->ID(), $answer);
1309
+				}
1310
+			} else {
1311
+				EE_Error::add_error(
1312
+					__(
1313
+						'An invalid Answer object was discovered when attempting to update the model entity mapper.',
1314
+						'event_espresso'
1315
+					),
1316
+					__FILE__,
1317
+					__FUNCTION__,
1318
+					__LINE__
1319
+				);
1320
+			}
1321
+		}
1322
+	}
1323
+
1324
+
1325
+	/**
1326
+	 *    __sleep
1327
+	 * to conserve db space, let's remove the reg_form and the EE_Checkout object from EE_SPCO_Reg_Step objects upon
1328
+	 * serialization EE_Checkout will handle the reimplementation of itself upon waking, but we won't bother with the
1329
+	 * reg form, because if needed, it will be regenerated anyways
1330
+	 *
1331
+	 * @return array
1332
+	 * @throws \EE_Error
1333
+	 */
1334
+	public function __sleep()
1335
+	{
1336
+		if ($this->primary_attendee_obj instanceof EE_Attendee && $this->primary_attendee_obj->ID()) {
1337
+			$this->primary_attendee_obj = $this->primary_attendee_obj->ID();
1338
+		}        // remove the reg form and the checkout
1339
+		if ($this->transaction instanceof EE_Transaction && $this->transaction->ID()) {
1340
+			$this->transaction = $this->transaction->ID();
1341
+		}        // remove the reg form and the checkout
1342
+		return array_diff(array_keys(get_object_vars($this)), array('billing_form', 'registration_form'));
1343
+	}
1344
+
1345
+
1346
+	/**
1347
+	 *    __wakeup
1348
+	 * to conserve db space, we are removing the EE_Checkout object from EE_SPCO_Reg_Step objects upon serialization
1349
+	 * this will reinstate the EE_Checkout object on each EE_SPCO_Reg_Step object
1350
+	 */
1351
+	public function __wakeup()
1352
+	{
1353
+		if (! $this->primary_attendee_obj instanceof EE_Attendee && absint($this->primary_attendee_obj) !== 0) {
1354
+			// $this->primary_attendee_obj is actually just an ID, so use it to get the object from the db
1355
+			$this->primary_attendee_obj = EEM_Attendee::instance()->get_one_by_ID($this->primary_attendee_obj);
1356
+		}
1357
+		if (! $this->transaction instanceof EE_Transaction && absint($this->transaction) !== 0) {
1358
+			// $this->transaction is actually just an ID, so use it to get the object from the db
1359
+			$this->transaction = EEM_Transaction::instance()->get_one_by_ID($this->transaction);
1360
+		}
1361
+		foreach ($this->reg_steps as $reg_step) {
1362
+			$reg_step->checkout = $this;
1363
+		}
1364
+	}
1365
+
1366
+
1367
+	/**
1368
+	 * debug
1369
+	 *
1370
+	 * @param string $class
1371
+	 * @param string $func
1372
+	 * @param string $line
1373
+	 * @param array  $info
1374
+	 * @param bool   $display_request
1375
+	 * @throws \EE_Error
1376
+	 */
1377
+	public function log($class = '', $func = '', $line = '', $info = array(), $display_request = false)
1378
+	{
1379
+		$disabled = true;
1380
+		if (WP_DEBUG && ! $disabled) {
1381
+			$debug_data = get_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), array());
1382
+			$default_data = array(
1383
+				$class                    => $func . '() : ' . $line,
1384
+				'request->step'           => $this->step,
1385
+				'request->action'         => $this->action,
1386
+				'current_step->slug'      => $this->current_step instanceof EE_SPCO_Reg_Step ?
1387
+					$this->current_step->slug() : '',
1388
+				'current_step->completed' => $this->current_step instanceof EE_SPCO_Reg_Step ?
1389
+					$this->current_step->completed() : '',
1390
+				'txn_status_updated'      => $this->transaction->txn_status_updated(),
1391
+				'reg_status_updated'      => $this->reg_status_updated,
1392
+				'reg_url_link'            => $this->reg_url_link,
1393
+				'REQ'                     => $display_request ? $_REQUEST : '',
1394
+			);
1395
+			if ($this->transaction instanceof EE_Transaction) {
1396
+				$default_data['TXN_status'] = $this->transaction->status_ID();
1397
+				$default_data['TXN_reg_steps'] = $this->transaction->reg_steps();
1398
+				foreach ($this->transaction->registrations($this->reg_cache_where_params) as $REG_ID => $registration) {
1399
+					$default_data['registrations'][ $REG_ID ] = $registration->status_ID();
1400
+				}
1401
+				if ($this->transaction->ID()) {
1402
+					$TXN_ID = 'EE_Transaction: ' . $this->transaction->ID();
1403
+					// don't serialize objects
1404
+					$info = $this->_strip_objects($info);
1405
+					if (! isset($debug_data[ $TXN_ID ])) {
1406
+						$debug_data[ $TXN_ID ] = array();
1407
+					}
1408
+					$debug_data[ $TXN_ID ][ microtime() ] = array_merge(
1409
+						$default_data,
1410
+						$info
1411
+					);
1412
+					update_option('EE_DEBUG_SPCO_' . EE_Session::instance()->id(), $debug_data);
1413
+				}
1414
+			}
1415
+		}
1416
+	}
1417
+
1418
+
1419
+	/**
1420
+	 * _strip_objects
1421
+	 *
1422
+	 * @param array $info
1423
+	 * @return array
1424
+	 */
1425
+	public function _strip_objects($info = array())
1426
+	{
1427
+		foreach ((array) $info as $key => $value) {
1428
+			if (is_array($value)) {
1429
+				$info[ $key ] = $this->_strip_objects($value);
1430
+			} elseif (is_object($value)) {
1431
+				$object_class = get_class($value);
1432
+				$info[ $object_class ] = array();
1433
+				$info[ $object_class ]['ID'] = method_exists($value, 'ID') ? $value->ID() : 0;
1434
+				if (method_exists($value, 'status')) {
1435
+					$info[ $object_class ]['status'] = $value->status();
1436
+				} elseif (method_exists($value, 'status_ID')) {
1437
+					$info[ $object_class ]['status'] = $value->status_ID();
1438
+				}
1439
+				unset($info[ $key ]);
1440
+			}
1441
+		}
1442
+		return (array) $info;
1443
+	}
1444 1444
 }
Please login to merge, or discard this patch.
admin_pages/registrations/help_tours/Event_Checkin_Help_Tour.class.php 2 patches
Indentation   +266 added lines, -266 removed lines patch added patch discarded remove patch
@@ -15,289 +15,289 @@
 block discarded – undo
15 15
 class Event_Checkin_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Event Check-in Tour', 'event_espresso');
21
-        if (isset($this->_req_data['event_id'])) {
22
-            $this->_slug = 'event-checkin-overview-joyride';
23
-        } else {
24
-            $this->_slug = 'all-event-checkin-overview-joyride';
25
-        }
26
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Event Check-in Tour', 'event_espresso');
21
+		if (isset($this->_req_data['event_id'])) {
22
+			$this->_slug = 'event-checkin-overview-joyride';
23
+		} else {
24
+			$this->_slug = 'all-event-checkin-overview-joyride';
25
+		}
26
+	}
27 27
 
28 28
 
29
-    protected function _set_tour_stops()
30
-    {
31
-        $this->_stops = array(
32
-            10  => array(
33
-                'content' => $this->_start(),
34
-            ),
35
-            20  => array(
36
-                'id'      => '_REG_count',
37
-                'content' => $this->_reg_count_stop(),
38
-                'options' => array(
39
-                    'tipLocation'    => 'top',
40
-                    'tipAdjustmentX' => -5,
41
-                    'tipAdjustmentY' => -20,
42
-                ),
43
-            ),
44
-            30  => array(
45
-                'id'      => 'ATT_name',
46
-                'content' => $this->_attendee_name_stop(),
47
-                'options' => array(
48
-                    'tipLocation'    => 'top',
49
-                    'tipAdjustmentX' => -5,
50
-                    'tipAdjustmentY' => -20,
51
-                ),
52
-            ),
53
-            40  => array(
54
-                'id'      => 'ATT_email',
55
-                'content' => $this->_attendee_email_stop(),
56
-                'options' => array(
57
-                    'tipLocation'    => 'top',
58
-                    'tipAdjustmentX' => -5,
59
-                    'tipAdjustmentY' => -20,
60
-                ),
61
-            ),
62
-            50  => array(
63
-                'id'      => '_REG_date',
64
-                'content' => $this->_reg_date_stop(),
65
-                'options' => array(
66
-                    'tipLocation'    => 'top',
67
-                    'tipAdjustmentX' => -5,
68
-                    'tipAdjustmentY' => -20,
69
-                ),
70
-            ),
71
-            60  => array(
72
-                'id'      => '_REG_code',
73
-                'content' => $this->_reg_code_stop(),
74
-                'options' => array(
75
-                    'tipLocation'    => 'top',
76
-                    'tipAdjustmentX' => -5,
77
-                    'tipAdjustmentY' => -20,
78
-                ),
79
-            ),
80
-            80  => array(
81
-                'id'      => '_REG_final_price',
82
-                'content' => $this->_reg_final_price_stop(),
83
-                'options' => array(
84
-                    'tipLocation'    => 'top',
85
-                    'tipAdjustmentX' => -5,
86
-                    'tipAdjustmentY' => -20,
87
-                ),
88
-            ),
89
-            90  => array(
90
-                'id'      => 'TXN_paid',
91
-                'content' => $this->_txn_paid_stop(),
92
-                'options' => array(
93
-                    'tipLocation'    => 'left',
94
-                    'tipAdjustmentX' => 0,
95
-                    'tipAdjustmentY' => -50,
96
-                ),
97
-            ),
98
-            100 => array(
99
-                'id'      => 'TXN_total',
100
-                'content' => $this->_txn_total_stop(),
101
-                'options' => array(
102
-                    'tipLocation'    => 'left',
103
-                    'tipAdjustmentX' => 0,
104
-                    'tipAdjustmentY' => -50,
105
-                ),
106
-            ),
107
-            110 => array(
108
-                'id'      => 'PRC_name',
109
-                'content' => $this->_prc_name_stop(),
110
-                'options' => array(
111
-                    'tipLocation'    => 'left',
112
-                    'tipAdjustmentX' => 0,
113
-                    'tipAdjustmentY' => -50,
114
-                ),
115
-            ),
116
-            115 => array(
117
-                'id'      => 'actions',
118
-                'content' => $this->_actions_stop(),
119
-                'options' => array(
120
-                    'tipLocation'    => 'left',
121
-                    'tipAdjustmentX' => 0,
122
-                    'tipAdjustmentY' => -30,
123
-                ),
124
-            ),
125
-            120 => array(
126
-                'class'   => 'ee-list-table-legend-container',
127
-                'content' => $this->_legend_stop(),
128
-                'options' => array(
129
-                    'tipLocation'    => 'top',
130
-                    'tipAdjustmentX' => 15,
131
-                    'tipAdjustmentY' => -40,
132
-                ),
133
-            ),
134
-            125 => array(
135
-                'class'   => 'bulkactions',
136
-                'content' => $this->_bulkactions_stop(),
137
-                'options' => array(
138
-                    'tipLocation'    => 'bottom',
139
-                    'tipAdjustmentY' => -30,
140
-                    'tipAdjustmentX' => 15,
141
-                ),
142
-            ),
143
-            130 => array(
144
-                'id'      => 'event_id',
145
-                'content' => $this->_event_selector_stop(),
146
-                'options' => array(
147
-                    'tipLocation'    => 'right',
148
-                    'tipAdjustmentY' => -50,
149
-                    'tipAdjustmentX' => 25,
150
-                ),
151
-            ),
152
-            135 => array(
153
-                'id'      => 'DTT_ID',
154
-                'content' => $this->_dtt_selector_stop(),
155
-                'options' => array(
156
-                    'tipLocation'    => 'bottom',
157
-                    'tipAdjustmentY' => -30,
158
-                    'tipAdjustmentX' => 15,
159
-                ),
160
-            ),
161
-            140 => array(
162
-                'id'      => 'event-espresso_page_espresso_registrations-search-input',
163
-                'content' => $this->_search_stop(),
164
-                'options' => array(
165
-                    'tipLocation'    => 'left',
166
-                    'tipAdjustmentY' => -50,
167
-                    'tipAdjustmentX' => -15,
168
-                ),
169
-            ),
170
-        );
171
-    }
29
+	protected function _set_tour_stops()
30
+	{
31
+		$this->_stops = array(
32
+			10  => array(
33
+				'content' => $this->_start(),
34
+			),
35
+			20  => array(
36
+				'id'      => '_REG_count',
37
+				'content' => $this->_reg_count_stop(),
38
+				'options' => array(
39
+					'tipLocation'    => 'top',
40
+					'tipAdjustmentX' => -5,
41
+					'tipAdjustmentY' => -20,
42
+				),
43
+			),
44
+			30  => array(
45
+				'id'      => 'ATT_name',
46
+				'content' => $this->_attendee_name_stop(),
47
+				'options' => array(
48
+					'tipLocation'    => 'top',
49
+					'tipAdjustmentX' => -5,
50
+					'tipAdjustmentY' => -20,
51
+				),
52
+			),
53
+			40  => array(
54
+				'id'      => 'ATT_email',
55
+				'content' => $this->_attendee_email_stop(),
56
+				'options' => array(
57
+					'tipLocation'    => 'top',
58
+					'tipAdjustmentX' => -5,
59
+					'tipAdjustmentY' => -20,
60
+				),
61
+			),
62
+			50  => array(
63
+				'id'      => '_REG_date',
64
+				'content' => $this->_reg_date_stop(),
65
+				'options' => array(
66
+					'tipLocation'    => 'top',
67
+					'tipAdjustmentX' => -5,
68
+					'tipAdjustmentY' => -20,
69
+				),
70
+			),
71
+			60  => array(
72
+				'id'      => '_REG_code',
73
+				'content' => $this->_reg_code_stop(),
74
+				'options' => array(
75
+					'tipLocation'    => 'top',
76
+					'tipAdjustmentX' => -5,
77
+					'tipAdjustmentY' => -20,
78
+				),
79
+			),
80
+			80  => array(
81
+				'id'      => '_REG_final_price',
82
+				'content' => $this->_reg_final_price_stop(),
83
+				'options' => array(
84
+					'tipLocation'    => 'top',
85
+					'tipAdjustmentX' => -5,
86
+					'tipAdjustmentY' => -20,
87
+				),
88
+			),
89
+			90  => array(
90
+				'id'      => 'TXN_paid',
91
+				'content' => $this->_txn_paid_stop(),
92
+				'options' => array(
93
+					'tipLocation'    => 'left',
94
+					'tipAdjustmentX' => 0,
95
+					'tipAdjustmentY' => -50,
96
+				),
97
+			),
98
+			100 => array(
99
+				'id'      => 'TXN_total',
100
+				'content' => $this->_txn_total_stop(),
101
+				'options' => array(
102
+					'tipLocation'    => 'left',
103
+					'tipAdjustmentX' => 0,
104
+					'tipAdjustmentY' => -50,
105
+				),
106
+			),
107
+			110 => array(
108
+				'id'      => 'PRC_name',
109
+				'content' => $this->_prc_name_stop(),
110
+				'options' => array(
111
+					'tipLocation'    => 'left',
112
+					'tipAdjustmentX' => 0,
113
+					'tipAdjustmentY' => -50,
114
+				),
115
+			),
116
+			115 => array(
117
+				'id'      => 'actions',
118
+				'content' => $this->_actions_stop(),
119
+				'options' => array(
120
+					'tipLocation'    => 'left',
121
+					'tipAdjustmentX' => 0,
122
+					'tipAdjustmentY' => -30,
123
+				),
124
+			),
125
+			120 => array(
126
+				'class'   => 'ee-list-table-legend-container',
127
+				'content' => $this->_legend_stop(),
128
+				'options' => array(
129
+					'tipLocation'    => 'top',
130
+					'tipAdjustmentX' => 15,
131
+					'tipAdjustmentY' => -40,
132
+				),
133
+			),
134
+			125 => array(
135
+				'class'   => 'bulkactions',
136
+				'content' => $this->_bulkactions_stop(),
137
+				'options' => array(
138
+					'tipLocation'    => 'bottom',
139
+					'tipAdjustmentY' => -30,
140
+					'tipAdjustmentX' => 15,
141
+				),
142
+			),
143
+			130 => array(
144
+				'id'      => 'event_id',
145
+				'content' => $this->_event_selector_stop(),
146
+				'options' => array(
147
+					'tipLocation'    => 'right',
148
+					'tipAdjustmentY' => -50,
149
+					'tipAdjustmentX' => 25,
150
+				),
151
+			),
152
+			135 => array(
153
+				'id'      => 'DTT_ID',
154
+				'content' => $this->_dtt_selector_stop(),
155
+				'options' => array(
156
+					'tipLocation'    => 'bottom',
157
+					'tipAdjustmentY' => -30,
158
+					'tipAdjustmentX' => 15,
159
+				),
160
+			),
161
+			140 => array(
162
+				'id'      => 'event-espresso_page_espresso_registrations-search-input',
163
+				'content' => $this->_search_stop(),
164
+				'options' => array(
165
+					'tipLocation'    => 'left',
166
+					'tipAdjustmentY' => -50,
167
+					'tipAdjustmentX' => -15,
168
+				),
169
+			),
170
+		);
171
+	}
172 172
 
173 173
 
174
-    protected function _start()
175
-    {
176
-        $content = '<h3>' . __('Event Check-in', 'event_espresso') . '</h3>';
177
-        if (isset($this->_req_data['event_id'])) {
178
-            $content .= '<p>'
179
-                        . __(
180
-                            'This tour of the Event Check-in page will go over different areas of the screen to help you understand what they are used for.<br /><br /> Note: You are currently viewing the check-in for a specific event so you can toggle the check-in status for attendees.',
181
-                            'event_espresso'
182
-                        ) . '</p>';
183
-        } else {
184
-            $content .= '<p>'
185
-                        . __(
186
-                            'This tour of the event check-in page will go over different areas of the screen to help you understand what they are used for. <br /><br /> Note: You must select an event from the dropdown menu before you can toggle the check-in status for an attendee.',
187
-                            'event_espresso'
188
-                        ) . '</p>';
189
-        }
190
-        return $content;
191
-    }
174
+	protected function _start()
175
+	{
176
+		$content = '<h3>' . __('Event Check-in', 'event_espresso') . '</h3>';
177
+		if (isset($this->_req_data['event_id'])) {
178
+			$content .= '<p>'
179
+						. __(
180
+							'This tour of the Event Check-in page will go over different areas of the screen to help you understand what they are used for.<br /><br /> Note: You are currently viewing the check-in for a specific event so you can toggle the check-in status for attendees.',
181
+							'event_espresso'
182
+						) . '</p>';
183
+		} else {
184
+			$content .= '<p>'
185
+						. __(
186
+							'This tour of the event check-in page will go over different areas of the screen to help you understand what they are used for. <br /><br /> Note: You must select an event from the dropdown menu before you can toggle the check-in status for an attendee.',
187
+							'event_espresso'
188
+						) . '</p>';
189
+		}
190
+		return $content;
191
+	}
192 192
 
193
-    protected function _reg_count_stop()
194
-    {
195
-        return '<p>' . __('View registration number.', 'event_espresso') . '</p>';
196
-    }
193
+	protected function _reg_count_stop()
194
+	{
195
+		return '<p>' . __('View registration number.', 'event_espresso') . '</p>';
196
+	}
197 197
 
198
-    protected function _attendee_name_stop()
199
-    {
200
-        return '<p>'
201
-               . __(
202
-                   'View name of registrant. Can be sorted in ascending or descending order.',
203
-                   'event_espresso'
204
-               ) . '</p>';
205
-    }
198
+	protected function _attendee_name_stop()
199
+	{
200
+		return '<p>'
201
+			   . __(
202
+				   'View name of registrant. Can be sorted in ascending or descending order.',
203
+				   'event_espresso'
204
+			   ) . '</p>';
205
+	}
206 206
 
207
-    protected function _attendee_email_stop()
208
-    {
209
-        return '<p>' . __('View email address for a registrant.', 'event_espresso') . '</p>';
210
-    }
207
+	protected function _attendee_email_stop()
208
+	{
209
+		return '<p>' . __('View email address for a registrant.', 'event_espresso') . '</p>';
210
+	}
211 211
 
212
-    protected function _reg_date_stop()
213
-    {
214
-        return '<p>'
215
-               . __(
216
-                   'View registration date. Can be sorted in ascending or descending order.',
217
-                   'event_espresso'
218
-               ) . '</p>';
219
-    }
212
+	protected function _reg_date_stop()
213
+	{
214
+		return '<p>'
215
+			   . __(
216
+				   'View registration date. Can be sorted in ascending or descending order.',
217
+				   'event_espresso'
218
+			   ) . '</p>';
219
+	}
220 220
 
221
-    protected function _reg_code_stop()
222
-    {
223
-        return '<p>'
224
-               . __(
225
-                   'View registration code. Can be sorted in ascending or descending order.',
226
-                   'event_espresso'
227
-               ) . '</p>';
228
-    }
221
+	protected function _reg_code_stop()
222
+	{
223
+		return '<p>'
224
+			   . __(
225
+				   'View registration code. Can be sorted in ascending or descending order.',
226
+				   'event_espresso'
227
+			   ) . '</p>';
228
+	}
229 229
 
230
-    protected function _reg_final_price_stop()
231
-    {
232
-        return '<p>' . __('View price for ticket.', 'event_espresso') . '</p>';
233
-    }
230
+	protected function _reg_final_price_stop()
231
+	{
232
+		return '<p>' . __('View price for ticket.', 'event_espresso') . '</p>';
233
+	}
234 234
 
235
-    protected function _txn_paid_stop()
236
-    {
237
-        return '<p>' . __('View if registrant has paid for ticket.', 'event_espresso') . '</p>';
238
-    }
235
+	protected function _txn_paid_stop()
236
+	{
237
+		return '<p>' . __('View if registrant has paid for ticket.', 'event_espresso') . '</p>';
238
+	}
239 239
 
240
-    protected function _txn_total_stop()
241
-    {
242
-        return '<p>' . __('View total amount paid.', 'event_espresso') . '</p>';
243
-    }
240
+	protected function _txn_total_stop()
241
+	{
242
+		return '<p>' . __('View total amount paid.', 'event_espresso') . '</p>';
243
+	}
244 244
 
245
-    protected function _prc_name_stop()
246
-    {
247
-        return '<p>' . __('View type of ticket.', 'event_espresso') . '</p>';
248
-    }
245
+	protected function _prc_name_stop()
246
+	{
247
+		return '<p>' . __('View type of ticket.', 'event_espresso') . '</p>';
248
+	}
249 249
 
250
-    protected function _actions_stop()
251
-    {
252
-        return '<p>'
253
-               . __(
254
-                   'Perform an action to a registration. See legend in bottom left corner.',
255
-                   'event_espresso'
256
-               ) . '</p>';
257
-    }
250
+	protected function _actions_stop()
251
+	{
252
+		return '<p>'
253
+			   . __(
254
+				   'Perform an action to a registration. See legend in bottom left corner.',
255
+				   'event_espresso'
256
+			   ) . '</p>';
257
+	}
258 258
 
259
-    protected function _legend_stop()
260
-    {
261
-        return '<p>'
262
-               . __(
263
-                   'This is the legend that describes the different check-in statuses. Also shows available status for registrations.',
264
-                   'event_espresso'
265
-               ) . '</p>';
266
-    }
259
+	protected function _legend_stop()
260
+	{
261
+		return '<p>'
262
+			   . __(
263
+				   'This is the legend that describes the different check-in statuses. Also shows available status for registrations.',
264
+				   'event_espresso'
265
+			   ) . '</p>';
266
+	}
267 267
 
268
-    protected function _bulkactions_stop()
269
-    {
270
-        return '<p>'
271
-               . __(
272
-                   'Perform a bulk action to multiple registrations (only available when viewing check-in for a specific event).',
273
-                   'event_espresso'
274
-               ) . '</p>';
275
-    }
268
+	protected function _bulkactions_stop()
269
+	{
270
+		return '<p>'
271
+			   . __(
272
+				   'Perform a bulk action to multiple registrations (only available when viewing check-in for a specific event).',
273
+				   'event_espresso'
274
+			   ) . '</p>';
275
+	}
276 276
 
277
-    protected function _event_selector_stop()
278
-    {
279
-        return '<p>'
280
-               . __(
281
-                   'Select an event from this dropdown and click the filter button to see the check-in registration list for a specific event. You will then be able to toggle the check-in status for a registration.',
282
-                   'event_espresso'
283
-               ) . '</p>';
284
-    }
277
+	protected function _event_selector_stop()
278
+	{
279
+		return '<p>'
280
+			   . __(
281
+				   'Select an event from this dropdown and click the filter button to see the check-in registration list for a specific event. You will then be able to toggle the check-in status for a registration.',
282
+				   'event_espresso'
283
+			   ) . '</p>';
284
+	}
285 285
 
286
-    protected function _dtt_selector_stop()
287
-    {
288
-        return '<p>'
289
-               . __(
290
-                   'This dropdown shows you the date and time that a displayed registration is attached to. You can switch to a different event by selecting another date and clicking on the filter button. You can also switch out of this view by clicking on the reset filters button.',
291
-                   'event_espresso'
292
-               ) . '</p>';
293
-    }
286
+	protected function _dtt_selector_stop()
287
+	{
288
+		return '<p>'
289
+			   . __(
290
+				   'This dropdown shows you the date and time that a displayed registration is attached to. You can switch to a different event by selecting another date and clicking on the filter button. You can also switch out of this view by clicking on the reset filters button.',
291
+				   'event_espresso'
292
+			   ) . '</p>';
293
+	}
294 294
 
295
-    protected function _search_stop()
296
-    {
297
-        return '<p>'
298
-               . __(
299
-                   'Search through registrations. The following sources will be searched: Event Name, Event Description, First Name, Last Name, Biography, Email Address, Address, Comments, Notes, Registration Final Price, Registration Code, Registration Group Size, Ticket Name, and Ticket Description.',
300
-                   'event_espresso'
301
-               ) . '</p>';
302
-    }
295
+	protected function _search_stop()
296
+	{
297
+		return '<p>'
298
+			   . __(
299
+				   'Search through registrations. The following sources will be searched: Event Name, Event Description, First Name, Last Name, Biography, Email Address, Address, Comments, Notes, Registration Final Price, Registration Code, Registration Group Size, Ticket Name, and Ticket Description.',
300
+				   'event_espresso'
301
+			   ) . '</p>';
302
+	}
303 303
 }
Please login to merge, or discard this patch.
Spacing   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -173,26 +173,26 @@  discard block
 block discarded – undo
173 173
 
174 174
     protected function _start()
175 175
     {
176
-        $content = '<h3>' . __('Event Check-in', 'event_espresso') . '</h3>';
176
+        $content = '<h3>'.__('Event Check-in', 'event_espresso').'</h3>';
177 177
         if (isset($this->_req_data['event_id'])) {
178 178
             $content .= '<p>'
179 179
                         . __(
180 180
                             'This tour of the Event Check-in page will go over different areas of the screen to help you understand what they are used for.<br /><br /> Note: You are currently viewing the check-in for a specific event so you can toggle the check-in status for attendees.',
181 181
                             'event_espresso'
182
-                        ) . '</p>';
182
+                        ).'</p>';
183 183
         } else {
184 184
             $content .= '<p>'
185 185
                         . __(
186 186
                             'This tour of the event check-in page will go over different areas of the screen to help you understand what they are used for. <br /><br /> Note: You must select an event from the dropdown menu before you can toggle the check-in status for an attendee.',
187 187
                             'event_espresso'
188
-                        ) . '</p>';
188
+                        ).'</p>';
189 189
         }
190 190
         return $content;
191 191
     }
192 192
 
193 193
     protected function _reg_count_stop()
194 194
     {
195
-        return '<p>' . __('View registration number.', 'event_espresso') . '</p>';
195
+        return '<p>'.__('View registration number.', 'event_espresso').'</p>';
196 196
     }
197 197
 
198 198
     protected function _attendee_name_stop()
@@ -201,12 +201,12 @@  discard block
 block discarded – undo
201 201
                . __(
202 202
                    'View name of registrant. Can be sorted in ascending or descending order.',
203 203
                    'event_espresso'
204
-               ) . '</p>';
204
+               ).'</p>';
205 205
     }
206 206
 
207 207
     protected function _attendee_email_stop()
208 208
     {
209
-        return '<p>' . __('View email address for a registrant.', 'event_espresso') . '</p>';
209
+        return '<p>'.__('View email address for a registrant.', 'event_espresso').'</p>';
210 210
     }
211 211
 
212 212
     protected function _reg_date_stop()
@@ -215,7 +215,7 @@  discard block
 block discarded – undo
215 215
                . __(
216 216
                    'View registration date. Can be sorted in ascending or descending order.',
217 217
                    'event_espresso'
218
-               ) . '</p>';
218
+               ).'</p>';
219 219
     }
220 220
 
221 221
     protected function _reg_code_stop()
@@ -224,27 +224,27 @@  discard block
 block discarded – undo
224 224
                . __(
225 225
                    'View registration code. Can be sorted in ascending or descending order.',
226 226
                    'event_espresso'
227
-               ) . '</p>';
227
+               ).'</p>';
228 228
     }
229 229
 
230 230
     protected function _reg_final_price_stop()
231 231
     {
232
-        return '<p>' . __('View price for ticket.', 'event_espresso') . '</p>';
232
+        return '<p>'.__('View price for ticket.', 'event_espresso').'</p>';
233 233
     }
234 234
 
235 235
     protected function _txn_paid_stop()
236 236
     {
237
-        return '<p>' . __('View if registrant has paid for ticket.', 'event_espresso') . '</p>';
237
+        return '<p>'.__('View if registrant has paid for ticket.', 'event_espresso').'</p>';
238 238
     }
239 239
 
240 240
     protected function _txn_total_stop()
241 241
     {
242
-        return '<p>' . __('View total amount paid.', 'event_espresso') . '</p>';
242
+        return '<p>'.__('View total amount paid.', 'event_espresso').'</p>';
243 243
     }
244 244
 
245 245
     protected function _prc_name_stop()
246 246
     {
247
-        return '<p>' . __('View type of ticket.', 'event_espresso') . '</p>';
247
+        return '<p>'.__('View type of ticket.', 'event_espresso').'</p>';
248 248
     }
249 249
 
250 250
     protected function _actions_stop()
@@ -253,7 +253,7 @@  discard block
 block discarded – undo
253 253
                . __(
254 254
                    'Perform an action to a registration. See legend in bottom left corner.',
255 255
                    'event_espresso'
256
-               ) . '</p>';
256
+               ).'</p>';
257 257
     }
258 258
 
259 259
     protected function _legend_stop()
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
                . __(
263 263
                    'This is the legend that describes the different check-in statuses. Also shows available status for registrations.',
264 264
                    'event_espresso'
265
-               ) . '</p>';
265
+               ).'</p>';
266 266
     }
267 267
 
268 268
     protected function _bulkactions_stop()
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
                . __(
272 272
                    'Perform a bulk action to multiple registrations (only available when viewing check-in for a specific event).',
273 273
                    'event_espresso'
274
-               ) . '</p>';
274
+               ).'</p>';
275 275
     }
276 276
 
277 277
     protected function _event_selector_stop()
@@ -280,7 +280,7 @@  discard block
 block discarded – undo
280 280
                . __(
281 281
                    'Select an event from this dropdown and click the filter button to see the check-in registration list for a specific event. You will then be able to toggle the check-in status for a registration.',
282 282
                    'event_espresso'
283
-               ) . '</p>';
283
+               ).'</p>';
284 284
     }
285 285
 
286 286
     protected function _dtt_selector_stop()
@@ -289,7 +289,7 @@  discard block
 block discarded – undo
289 289
                . __(
290 290
                    'This dropdown shows you the date and time that a displayed registration is attached to. You can switch to a different event by selecting another date and clicking on the filter button. You can also switch out of this view by clicking on the reset filters button.',
291 291
                    'event_espresso'
292
-               ) . '</p>';
292
+               ).'</p>';
293 293
     }
294 294
 
295 295
     protected function _search_stop()
@@ -298,6 +298,6 @@  discard block
 block discarded – undo
298 298
                . __(
299 299
                    'Search through registrations. The following sources will be searched: Event Name, Event Description, First Name, Last Name, Biography, Email Address, Address, Comments, Notes, Registration Final Price, Registration Code, Registration Group Size, Ticket Name, and Ticket Description.',
300 300
                    'event_espresso'
301
-               ) . '</p>';
301
+               ).'</p>';
302 302
     }
303 303
 }
Please login to merge, or discard this patch.
admin_pages/registrations/help_tours/Contact_List_Help_Tour.class.php 2 patches
Indentation   +223 added lines, -223 removed lines patch added patch discarded remove patch
@@ -15,227 +15,227 @@
 block discarded – undo
15 15
 class Contact_List_Help_Tour extends EE_Help_Tour
16 16
 {
17 17
 
18
-    protected function _set_tour_properties()
19
-    {
20
-        $this->_label = __('Contact List Tour', 'event_espresso');
21
-        $this->_slug = 'contact-list-overview-joyride';
22
-    }
23
-
24
-
25
-    protected function _set_tour_stops()
26
-    {
27
-        $this->_stops = array(
28
-            10  => array(
29
-                'content' => $this->_start(),
30
-            ),
31
-            15  => array(
32
-                'id'      => 'ATT_ID',
33
-                'content' => $this->_attendee_id_stop(),
34
-                'options' => array(
35
-                    'tipLocation'    => 'top',
36
-                    'tipAdjustmentX' => -20,
37
-                    'tipAdjustmentY' => -30,
38
-                ),
39
-            ),
40
-            20  => array(
41
-                'id'      => 'ATT_fname',
42
-                'content' => $this->_attendee_name_stop(),
43
-                'options' => array(
44
-                    'tipLocation'    => 'top',
45
-                    'tipAdjustmentX' => 5,
46
-                    'tipAdjustmentY' => -30,
47
-                ),
48
-            ),
49
-            30  => array(
50
-                'id'      => 'ATT_lname',
51
-                'content' => $this->_att_lname_stop(),
52
-                'options' => array(
53
-                    'tipLocation'    => 'top',
54
-                    'tipAdjustmentX' => 5,
55
-                    'tipAdjustmentY' => -30,
56
-                ),
57
-            ),
58
-            40  => array(
59
-                'id'      => 'ATT_email',
60
-                'content' => $this->_att_email_stop(),
61
-                'options' => array(
62
-                    'tipLocation'    => 'top',
63
-                    'tipAdjustmentX' => 10,
64
-                    'tipAdjustmentY' => -30,
65
-                ),
66
-            ),
67
-            50  => array(
68
-                'id'      => 'ATT_phone',
69
-                'content' => $this->_att_phone_stop(),
70
-                'options' => array(
71
-                    'tipLocation'    => 'top',
72
-                    'tipAdjustmentX' => -5,
73
-                    'tipAdjustmentY' => -30,
74
-                ),
75
-            ),
76
-            60  => array(
77
-                'id'      => 'ATT_address',
78
-                'content' => $this->_att_address_stop(),
79
-                'options' => array(
80
-                    'tipLocation'    => 'top',
81
-                    'tipAdjustmentX' => 0,
82
-                    'tipAdjustmentY' => -30,
83
-                ),
84
-            ),
85
-            70  => array(
86
-                'id'      => 'ATT_city',
87
-                'content' => $this->_att_city_stop(),
88
-                'options' => array(
89
-                    'tipLocation'    => 'left',
90
-                    'tipAdjustmentX' => 0,
91
-                    'tipAdjustmentY' => -50,
92
-                ),
93
-            ),
94
-            80  => array(
95
-                'id'      => 'STA_ID',
96
-                'content' => $this->_sta_id_stop(),
97
-                'options' => array(
98
-                    'tipLocation'    => 'left',
99
-                    'tipAdjustmentX' => 0,
100
-                    'tipAdjustmentY' => -50,
101
-                ),
102
-            ),
103
-            90  => array(
104
-                'id'      => 'CNT_ISO',
105
-                'content' => $this->_cnt_iso_stop(),
106
-                'options' => array(
107
-                    'tipLocation'    => 'left',
108
-                    'tipAdjustmentX' => 0,
109
-                    'tipAdjustmentY' => -50,
110
-                ),
111
-            ),
112
-            100 => array(
113
-                'class'   => 'bulkactions',
114
-                'content' => $this->_bulkactions_stop(),
115
-                'options' => array(
116
-                    'tipLocation'    => 'bottom',
117
-                    'tipAdjustmentY' => -30,
118
-                    'tipAdjustmentX' => 15,
119
-                ),
120
-            ),
121
-            110 => array(
122
-                'id'      => 'event-espresso_page_espresso_registrations-search-input',
123
-                'content' => $this->_search_stop(),
124
-                'options' => array(
125
-                    'tipLocation'    => 'left',
126
-                    'tipAdjustmentY' => -50,
127
-                    'tipAdjustmentX' => -15,
128
-                ),
129
-            ),
130
-            120 => array(
131
-                'id'      => 'contact-list-csv-export',
132
-                'content' => $this->_contact_list_csv_export_stop(),
133
-                'options' => array(
134
-                    'tipLocation'    => 'right',
135
-                    'tipAdjustmentY' => -50,
136
-                    'tipAdjustmentX' => 25,
137
-                ),
138
-            ),
139
-        );
140
-    }
141
-
142
-
143
-    protected function _start()
144
-    {
145
-        $content = '<h3>' . __('Contact List', 'event_espresso') . '</h3>';
146
-        $content .= '<p>'
147
-                    . __(
148
-                        'This tour of the Contact List page will go over different areas of the screen to help you understand what they are used for.',
149
-                        'event_espresso'
150
-                    ) . '</p>';
151
-        return $content;
152
-    }
153
-
154
-    protected function _attendee_id_stop()
155
-    {
156
-        return '<p>'
157
-               . __(
158
-                   'View ID for registrants. Can be sorted in ascending or descending order.',
159
-                   'event_espresso'
160
-               ) . '</p>';
161
-    }
162
-
163
-    protected function _attendee_name_stop()
164
-    {
165
-        return '<p>'
166
-               . __(
167
-                   'View first name for registrants. Can be sorted in ascending or descending order.',
168
-                   'event_espresso'
169
-               ) . '</p>';
170
-    }
171
-
172
-    protected function _att_lname_stop()
173
-    {
174
-        return '<p>'
175
-               . __(
176
-                   'View last name for registrants. Can be sorted in ascending or descending order.',
177
-                   'event_espresso'
178
-               ) . '</p>';
179
-    }
180
-
181
-    protected function _att_email_stop()
182
-    {
183
-        return '<p>'
184
-               . __(
185
-                   'View email address for registrants. Can be sorted in ascending or descending order.',
186
-                   'event_espresso'
187
-               ) . '</p>';
188
-    }
189
-
190
-    protected function _att_phone_stop()
191
-    {
192
-        return '<p>' . __('View phone number for registrants.', 'event_espresso') . '</p>';
193
-    }
194
-
195
-    protected function _att_address_stop()
196
-    {
197
-        return '<p>' . __('View address for registrants.', 'event_espresso') . '</p>';
198
-    }
199
-
200
-    protected function _att_city_stop()
201
-    {
202
-        return '<p>' . __('View city for registrants.', 'event_espresso') . '</p>';
203
-    }
204
-
205
-    protected function _sta_id_stop()
206
-    {
207
-        return '<p>'
208
-               . __(
209
-                   'View state/province for registrants. Can be sorted in ascending or descending order.',
210
-                   'event_espresso'
211
-               ) . '</p>';
212
-    }
213
-
214
-    protected function _cnt_iso_stop()
215
-    {
216
-        return '<p>'
217
-               . __(
218
-                   'View country for registrants. Can be sorted in ascending or descending order.',
219
-                   'event_espresso'
220
-               ) . '</p>';
221
-    }
222
-
223
-    protected function _bulkactions_stop()
224
-    {
225
-        return '<p>' . __('Perform a bulk action to multiple registrants.', 'event_espresso') . '</p>';
226
-    }
227
-
228
-    protected function _search_stop()
229
-    {
230
-        return '<p>'
231
-               . __(
232
-                   'Search through contacts. The following sources will be searched: Event Name, Event Description, First Name, Last Name, Biography, Email Address, Address, Comments, Notes, Registration Final Price, and Registration Code.',
233
-                   'event_espresso'
234
-               ) . '</p>';
235
-    }
236
-
237
-    protected function _contact_list_csv_export_stop()
238
-    {
239
-        return '<p>' . __('Export your contact list to a CSV file.', 'event_espresso') . '</p>';
240
-    }
18
+	protected function _set_tour_properties()
19
+	{
20
+		$this->_label = __('Contact List Tour', 'event_espresso');
21
+		$this->_slug = 'contact-list-overview-joyride';
22
+	}
23
+
24
+
25
+	protected function _set_tour_stops()
26
+	{
27
+		$this->_stops = array(
28
+			10  => array(
29
+				'content' => $this->_start(),
30
+			),
31
+			15  => array(
32
+				'id'      => 'ATT_ID',
33
+				'content' => $this->_attendee_id_stop(),
34
+				'options' => array(
35
+					'tipLocation'    => 'top',
36
+					'tipAdjustmentX' => -20,
37
+					'tipAdjustmentY' => -30,
38
+				),
39
+			),
40
+			20  => array(
41
+				'id'      => 'ATT_fname',
42
+				'content' => $this->_attendee_name_stop(),
43
+				'options' => array(
44
+					'tipLocation'    => 'top',
45
+					'tipAdjustmentX' => 5,
46
+					'tipAdjustmentY' => -30,
47
+				),
48
+			),
49
+			30  => array(
50
+				'id'      => 'ATT_lname',
51
+				'content' => $this->_att_lname_stop(),
52
+				'options' => array(
53
+					'tipLocation'    => 'top',
54
+					'tipAdjustmentX' => 5,
55
+					'tipAdjustmentY' => -30,
56
+				),
57
+			),
58
+			40  => array(
59
+				'id'      => 'ATT_email',
60
+				'content' => $this->_att_email_stop(),
61
+				'options' => array(
62
+					'tipLocation'    => 'top',
63
+					'tipAdjustmentX' => 10,
64
+					'tipAdjustmentY' => -30,
65
+				),
66
+			),
67
+			50  => array(
68
+				'id'      => 'ATT_phone',
69
+				'content' => $this->_att_phone_stop(),
70
+				'options' => array(
71
+					'tipLocation'    => 'top',
72
+					'tipAdjustmentX' => -5,
73
+					'tipAdjustmentY' => -30,
74
+				),
75
+			),
76
+			60  => array(
77
+				'id'      => 'ATT_address',
78
+				'content' => $this->_att_address_stop(),
79
+				'options' => array(
80
+					'tipLocation'    => 'top',
81
+					'tipAdjustmentX' => 0,
82
+					'tipAdjustmentY' => -30,
83
+				),
84
+			),
85
+			70  => array(
86
+				'id'      => 'ATT_city',
87
+				'content' => $this->_att_city_stop(),
88
+				'options' => array(
89
+					'tipLocation'    => 'left',
90
+					'tipAdjustmentX' => 0,
91
+					'tipAdjustmentY' => -50,
92
+				),
93
+			),
94
+			80  => array(
95
+				'id'      => 'STA_ID',
96
+				'content' => $this->_sta_id_stop(),
97
+				'options' => array(
98
+					'tipLocation'    => 'left',
99
+					'tipAdjustmentX' => 0,
100
+					'tipAdjustmentY' => -50,
101
+				),
102
+			),
103
+			90  => array(
104
+				'id'      => 'CNT_ISO',
105
+				'content' => $this->_cnt_iso_stop(),
106
+				'options' => array(
107
+					'tipLocation'    => 'left',
108
+					'tipAdjustmentX' => 0,
109
+					'tipAdjustmentY' => -50,
110
+				),
111
+			),
112
+			100 => array(
113
+				'class'   => 'bulkactions',
114
+				'content' => $this->_bulkactions_stop(),
115
+				'options' => array(
116
+					'tipLocation'    => 'bottom',
117
+					'tipAdjustmentY' => -30,
118
+					'tipAdjustmentX' => 15,
119
+				),
120
+			),
121
+			110 => array(
122
+				'id'      => 'event-espresso_page_espresso_registrations-search-input',
123
+				'content' => $this->_search_stop(),
124
+				'options' => array(
125
+					'tipLocation'    => 'left',
126
+					'tipAdjustmentY' => -50,
127
+					'tipAdjustmentX' => -15,
128
+				),
129
+			),
130
+			120 => array(
131
+				'id'      => 'contact-list-csv-export',
132
+				'content' => $this->_contact_list_csv_export_stop(),
133
+				'options' => array(
134
+					'tipLocation'    => 'right',
135
+					'tipAdjustmentY' => -50,
136
+					'tipAdjustmentX' => 25,
137
+				),
138
+			),
139
+		);
140
+	}
141
+
142
+
143
+	protected function _start()
144
+	{
145
+		$content = '<h3>' . __('Contact List', 'event_espresso') . '</h3>';
146
+		$content .= '<p>'
147
+					. __(
148
+						'This tour of the Contact List page will go over different areas of the screen to help you understand what they are used for.',
149
+						'event_espresso'
150
+					) . '</p>';
151
+		return $content;
152
+	}
153
+
154
+	protected function _attendee_id_stop()
155
+	{
156
+		return '<p>'
157
+			   . __(
158
+				   'View ID for registrants. Can be sorted in ascending or descending order.',
159
+				   'event_espresso'
160
+			   ) . '</p>';
161
+	}
162
+
163
+	protected function _attendee_name_stop()
164
+	{
165
+		return '<p>'
166
+			   . __(
167
+				   'View first name for registrants. Can be sorted in ascending or descending order.',
168
+				   'event_espresso'
169
+			   ) . '</p>';
170
+	}
171
+
172
+	protected function _att_lname_stop()
173
+	{
174
+		return '<p>'
175
+			   . __(
176
+				   'View last name for registrants. Can be sorted in ascending or descending order.',
177
+				   'event_espresso'
178
+			   ) . '</p>';
179
+	}
180
+
181
+	protected function _att_email_stop()
182
+	{
183
+		return '<p>'
184
+			   . __(
185
+				   'View email address for registrants. Can be sorted in ascending or descending order.',
186
+				   'event_espresso'
187
+			   ) . '</p>';
188
+	}
189
+
190
+	protected function _att_phone_stop()
191
+	{
192
+		return '<p>' . __('View phone number for registrants.', 'event_espresso') . '</p>';
193
+	}
194
+
195
+	protected function _att_address_stop()
196
+	{
197
+		return '<p>' . __('View address for registrants.', 'event_espresso') . '</p>';
198
+	}
199
+
200
+	protected function _att_city_stop()
201
+	{
202
+		return '<p>' . __('View city for registrants.', 'event_espresso') . '</p>';
203
+	}
204
+
205
+	protected function _sta_id_stop()
206
+	{
207
+		return '<p>'
208
+			   . __(
209
+				   'View state/province for registrants. Can be sorted in ascending or descending order.',
210
+				   'event_espresso'
211
+			   ) . '</p>';
212
+	}
213
+
214
+	protected function _cnt_iso_stop()
215
+	{
216
+		return '<p>'
217
+			   . __(
218
+				   'View country for registrants. Can be sorted in ascending or descending order.',
219
+				   'event_espresso'
220
+			   ) . '</p>';
221
+	}
222
+
223
+	protected function _bulkactions_stop()
224
+	{
225
+		return '<p>' . __('Perform a bulk action to multiple registrants.', 'event_espresso') . '</p>';
226
+	}
227
+
228
+	protected function _search_stop()
229
+	{
230
+		return '<p>'
231
+			   . __(
232
+				   'Search through contacts. The following sources will be searched: Event Name, Event Description, First Name, Last Name, Biography, Email Address, Address, Comments, Notes, Registration Final Price, and Registration Code.',
233
+				   'event_espresso'
234
+			   ) . '</p>';
235
+	}
236
+
237
+	protected function _contact_list_csv_export_stop()
238
+	{
239
+		return '<p>' . __('Export your contact list to a CSV file.', 'event_espresso') . '</p>';
240
+	}
241 241
 }
Please login to merge, or discard this patch.
Spacing   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -142,12 +142,12 @@  discard block
 block discarded – undo
142 142
 
143 143
     protected function _start()
144 144
     {
145
-        $content = '<h3>' . __('Contact List', 'event_espresso') . '</h3>';
145
+        $content = '<h3>'.__('Contact List', 'event_espresso').'</h3>';
146 146
         $content .= '<p>'
147 147
                     . __(
148 148
                         'This tour of the Contact List page will go over different areas of the screen to help you understand what they are used for.',
149 149
                         'event_espresso'
150
-                    ) . '</p>';
150
+                    ).'</p>';
151 151
         return $content;
152 152
     }
153 153
 
@@ -157,7 +157,7 @@  discard block
 block discarded – undo
157 157
                . __(
158 158
                    'View ID for registrants. Can be sorted in ascending or descending order.',
159 159
                    'event_espresso'
160
-               ) . '</p>';
160
+               ).'</p>';
161 161
     }
162 162
 
163 163
     protected function _attendee_name_stop()
@@ -166,7 +166,7 @@  discard block
 block discarded – undo
166 166
                . __(
167 167
                    'View first name for registrants. Can be sorted in ascending or descending order.',
168 168
                    'event_espresso'
169
-               ) . '</p>';
169
+               ).'</p>';
170 170
     }
171 171
 
172 172
     protected function _att_lname_stop()
@@ -175,7 +175,7 @@  discard block
 block discarded – undo
175 175
                . __(
176 176
                    'View last name for registrants. Can be sorted in ascending or descending order.',
177 177
                    'event_espresso'
178
-               ) . '</p>';
178
+               ).'</p>';
179 179
     }
180 180
 
181 181
     protected function _att_email_stop()
@@ -184,22 +184,22 @@  discard block
 block discarded – undo
184 184
                . __(
185 185
                    'View email address for registrants. Can be sorted in ascending or descending order.',
186 186
                    'event_espresso'
187
-               ) . '</p>';
187
+               ).'</p>';
188 188
     }
189 189
 
190 190
     protected function _att_phone_stop()
191 191
     {
192
-        return '<p>' . __('View phone number for registrants.', 'event_espresso') . '</p>';
192
+        return '<p>'.__('View phone number for registrants.', 'event_espresso').'</p>';
193 193
     }
194 194
 
195 195
     protected function _att_address_stop()
196 196
     {
197
-        return '<p>' . __('View address for registrants.', 'event_espresso') . '</p>';
197
+        return '<p>'.__('View address for registrants.', 'event_espresso').'</p>';
198 198
     }
199 199
 
200 200
     protected function _att_city_stop()
201 201
     {
202
-        return '<p>' . __('View city for registrants.', 'event_espresso') . '</p>';
202
+        return '<p>'.__('View city for registrants.', 'event_espresso').'</p>';
203 203
     }
204 204
 
205 205
     protected function _sta_id_stop()
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
                . __(
209 209
                    'View state/province for registrants. Can be sorted in ascending or descending order.',
210 210
                    'event_espresso'
211
-               ) . '</p>';
211
+               ).'</p>';
212 212
     }
213 213
 
214 214
     protected function _cnt_iso_stop()
@@ -217,12 +217,12 @@  discard block
 block discarded – undo
217 217
                . __(
218 218
                    'View country for registrants. Can be sorted in ascending or descending order.',
219 219
                    'event_espresso'
220
-               ) . '</p>';
220
+               ).'</p>';
221 221
     }
222 222
 
223 223
     protected function _bulkactions_stop()
224 224
     {
225
-        return '<p>' . __('Perform a bulk action to multiple registrants.', 'event_espresso') . '</p>';
225
+        return '<p>'.__('Perform a bulk action to multiple registrants.', 'event_espresso').'</p>';
226 226
     }
227 227
 
228 228
     protected function _search_stop()
@@ -231,11 +231,11 @@  discard block
 block discarded – undo
231 231
                . __(
232 232
                    'Search through contacts. The following sources will be searched: Event Name, Event Description, First Name, Last Name, Biography, Email Address, Address, Comments, Notes, Registration Final Price, and Registration Code.',
233 233
                    'event_espresso'
234
-               ) . '</p>';
234
+               ).'</p>';
235 235
     }
236 236
 
237 237
     protected function _contact_list_csv_export_stop()
238 238
     {
239
-        return '<p>' . __('Export your contact list to a CSV file.', 'event_espresso') . '</p>';
239
+        return '<p>'.__('Export your contact list to a CSV file.', 'event_espresso').'</p>';
240 240
     }
241 241
 }
Please login to merge, or discard this patch.