Completed
Branch FET/rule-specific-exclusions-l... (334422)
by
unknown
17:10 queued 32s
created
core/libraries/line_item_filters/EE_Line_Item_Filter_Base.class.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -16,14 +16,14 @@
 block discarded – undo
16 16
 {
17 17
 
18 18
 
19
-    /**
20
-     * process
21
-     *
22
-     * @param \EEI_Line_Item $line_item
23
-     * @return \EEI_Line_Item
24
-     */
25
-    public function process(EEI_Line_Item $line_item)
26
-    {
27
-        return $line_item;
28
-    }
19
+	/**
20
+	 * process
21
+	 *
22
+	 * @param \EEI_Line_Item $line_item
23
+	 * @return \EEI_Line_Item
24
+	 */
25
+	public function process(EEI_Line_Item $line_item)
26
+	{
27
+		return $line_item;
28
+	}
29 29
 }
Please login to merge, or discard this patch.
line_item_filters/EE_Single_Registration_Line_Item_Filter.class.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -16,12 +16,12 @@
 block discarded – undo
16 16
 class EE_Single_Registration_Line_Item_Filter extends EE_Specific_Registrations_Line_Item_Filter
17 17
 {
18 18
 
19
-    /**
20
-     *
21
-     * @param EE_Registration $registration
22
-     */
23
-    public function __construct($registration)
24
-    {
25
-        parent::__construct(array($registration));
26
-    }
19
+	/**
20
+	 *
21
+	 * @param EE_Registration $registration
22
+	 */
23
+	public function __construct($registration)
24
+	{
25
+		parent::__construct(array($registration));
26
+	}
27 27
 }
Please login to merge, or discard this patch.
line_item_filters/EE_Specific_Registrations_Line_Item_Filter.class.php 2 patches
Indentation   +167 added lines, -167 removed lines patch added patch discarded remove patch
@@ -13,182 +13,182 @@
 block discarded – undo
13 13
 class EE_Specific_Registrations_Line_Item_Filter extends EE_Line_Item_Filter_Base
14 14
 {
15 15
 
16
-    /**
17
-     * array of line item codes and their corresponding quantities for registrations
18
-     *
19
-     * @type array $_line_item_registrations
20
-     */
21
-    protected $_line_item_registrations = array();
16
+	/**
17
+	 * array of line item codes and their corresponding quantities for registrations
18
+	 *
19
+	 * @type array $_line_item_registrations
20
+	 */
21
+	protected $_line_item_registrations = array();
22 22
 
23
-    /**
24
-     * Just kept in case we want it someday. Currently unused
25
-     *
26
-     * @var EE_Registration[]
27
-     */
28
-    protected $_registrations = array();
23
+	/**
24
+	 * Just kept in case we want it someday. Currently unused
25
+	 *
26
+	 * @var EE_Registration[]
27
+	 */
28
+	protected $_registrations = array();
29 29
 
30
-    /**
31
-     * @var EE_Registration
32
-     */
33
-    protected $_current_registration;
30
+	/**
31
+	 * @var EE_Registration
32
+	 */
33
+	protected $_current_registration;
34 34
 
35
-    /**
36
-     * these reg statuses should NOT increment the line item quantity
37
-     *
38
-     * @var array
39
-     */
40
-    protected $_closed_reg_statuses = array();
35
+	/**
36
+	 * these reg statuses should NOT increment the line item quantity
37
+	 *
38
+	 * @var array
39
+	 */
40
+	protected $_closed_reg_statuses = array();
41 41
 
42 42
 
43
-    /**
44
-     * EE_Billable_Line_Item_Filter constructor.
45
-     *
46
-     * @param EE_Registration[] $registrations
47
-     * @throws EE_Error
48
-     */
49
-    public function __construct($registrations)
50
-    {
51
-        $this->_registrations = $registrations;
52
-        $this->_calculate_registrations_per_line_item_code($registrations);
53
-        // these reg statuses should NOT increment the line item quantity
54
-        $this->_closed_reg_statuses = EEM_Registration::closed_reg_statuses();
55
-    }
43
+	/**
44
+	 * EE_Billable_Line_Item_Filter constructor.
45
+	 *
46
+	 * @param EE_Registration[] $registrations
47
+	 * @throws EE_Error
48
+	 */
49
+	public function __construct($registrations)
50
+	{
51
+		$this->_registrations = $registrations;
52
+		$this->_calculate_registrations_per_line_item_code($registrations);
53
+		// these reg statuses should NOT increment the line item quantity
54
+		$this->_closed_reg_statuses = EEM_Registration::closed_reg_statuses();
55
+	}
56 56
 
57 57
 
58
-    /**
59
-     * sets the _line_item_registrations from the provided registrations
60
-     *
61
-     * @param EE_Registration[] $registrations
62
-     * @return void
63
-     * @throws EE_Error
64
-     */
65
-    protected function _calculate_registrations_per_line_item_code($registrations)
66
-    {
67
-        foreach ($registrations as $registration) {
68
-            $line_item_code = EEM_Line_Item::instance()->get_var(
69
-                EEM_Line_Item::instance()->line_item_for_registration_query_params(
70
-                    $registration,
71
-                    array('limit' => 1)
72
-                ),
73
-                'LIN_code'
74
-            );
75
-            if ($line_item_code) {
76
-                if (! isset($this->_line_item_registrations[ $line_item_code ])) {
77
-                    $this->_line_item_registrations[ $line_item_code ] = array();
78
-                }
79
-                $this->_line_item_registrations[ $line_item_code ][ $registration->ID() ] = $registration;
80
-            }
81
-        }
82
-    }
58
+	/**
59
+	 * sets the _line_item_registrations from the provided registrations
60
+	 *
61
+	 * @param EE_Registration[] $registrations
62
+	 * @return void
63
+	 * @throws EE_Error
64
+	 */
65
+	protected function _calculate_registrations_per_line_item_code($registrations)
66
+	{
67
+		foreach ($registrations as $registration) {
68
+			$line_item_code = EEM_Line_Item::instance()->get_var(
69
+				EEM_Line_Item::instance()->line_item_for_registration_query_params(
70
+					$registration,
71
+					array('limit' => 1)
72
+				),
73
+				'LIN_code'
74
+			);
75
+			if ($line_item_code) {
76
+				if (! isset($this->_line_item_registrations[ $line_item_code ])) {
77
+					$this->_line_item_registrations[ $line_item_code ] = array();
78
+				}
79
+				$this->_line_item_registrations[ $line_item_code ][ $registration->ID() ] = $registration;
80
+			}
81
+		}
82
+	}
83 83
 
84 84
 
85
-    /**
86
-     * Creates a duplicate of the line item tree, except only includes billable items
87
-     * and the portion of line items attributed to billable things
88
-     *
89
-     * @param EEI_Line_Item $line_item
90
-     * @return EEI_Line_Item
91
-     * @throws EE_Error
92
-     */
93
-    public function process(EEI_Line_Item $line_item)
94
-    {
95
-        $this->_adjust_line_item_quantity($line_item);
96
-        if (! $line_item->children()) {
97
-            return $line_item;
98
-        }
99
-        // the original running total (taking ALL tickets into account)
100
-        $running_total_of_children = 0;
101
-        // the new running total (only taking the specified ticket quantities into account)
102
-        $running_total_of_children_under_consideration = 0;
103
-        // let's also track the quantity of tickets that pertain to the registrations
104
-        $total_child_ticket_quantity = 0;
105
-        foreach ($line_item->children() as $child_line_item) {
106
-            $original_li_total = $child_line_item->is_percent()
107
-                ? $running_total_of_children * $child_line_item->percent() / 100
108
-                : $child_line_item->unit_price() * $child_line_item->quantity();
109
-            $this->process($child_line_item);
110
-            // If this line item is a normal line item that isn't for a ticket,
111
-            // we want to modify its total (and unit price if not a percentage line item)
112
-            // so it reflects only that portion of the surcharge/discount shared by these registrations
113
-            if ($child_line_item->type() === EEM_Line_Item::type_line_item
114
-                && $child_line_item->OBJ_type() !== 'Ticket'
115
-            ) {
116
-                $percent_of_running_total = $running_total_of_children
117
-                    ? $original_li_total / $running_total_of_children
118
-                    : 0;
119
-                $child_line_item->set_total(
120
-                    $running_total_of_children_under_consideration * $percent_of_running_total
121
-                );
122
-                if (! $child_line_item->is_percent()) {
123
-                    $child_line_item->set_unit_price($child_line_item->total() / $child_line_item->quantity());
124
-                }
125
-            } elseif (// make sure this item's quantity and total matches its parent
126
-                $line_item->type() === EEM_Line_Item::type_line_item
127
-                && $line_item->OBJ_type() === 'Ticket'
128
-                // but not if it's a percentage modifier
129
-                && ! $child_line_item->is_percent()
130
-                && ! (
131
-                    // or a cancellation
132
-                    $child_line_item->is_cancelled()
133
-                    && ! (
134
-                        // unless it IS a cancellation and the current registration is cancelled
135
-                        $child_line_item->is_cancelled()
136
-                        && $this->_current_registration instanceof EE_Registration
137
-                        && in_array($this->_current_registration->status_ID(), $this->_closed_reg_statuses, true)
138
-                    )
139
-                )
140
-            ) {
141
-                $child_line_item->set_quantity($line_item->quantity());
142
-                $child_line_item->set_total($child_line_item->unit_price() * $child_line_item->quantity());
143
-            }
144
-            $running_total_of_children += $original_li_total;
145
-            $running_total_of_children_under_consideration += $child_line_item->total();
146
-            if ($child_line_item->OBJ_type() === 'Ticket') {
147
-                $total_child_ticket_quantity += $child_line_item->quantity();
148
-            }
149
-        }
150
-        $line_item->set_total($running_total_of_children_under_consideration);
151
-        if ($line_item->quantity()) {
152
-            $line_item->set_unit_price($running_total_of_children_under_consideration / $line_item->quantity());
153
-        } else {
154
-            $line_item->set_unit_price(0);
155
-        }
156
-        if ($line_item->OBJ_type() === 'Event') {
157
-            $line_item->set_quantity($total_child_ticket_quantity);
158
-        }
159
-        return $line_item;
160
-    }
85
+	/**
86
+	 * Creates a duplicate of the line item tree, except only includes billable items
87
+	 * and the portion of line items attributed to billable things
88
+	 *
89
+	 * @param EEI_Line_Item $line_item
90
+	 * @return EEI_Line_Item
91
+	 * @throws EE_Error
92
+	 */
93
+	public function process(EEI_Line_Item $line_item)
94
+	{
95
+		$this->_adjust_line_item_quantity($line_item);
96
+		if (! $line_item->children()) {
97
+			return $line_item;
98
+		}
99
+		// the original running total (taking ALL tickets into account)
100
+		$running_total_of_children = 0;
101
+		// the new running total (only taking the specified ticket quantities into account)
102
+		$running_total_of_children_under_consideration = 0;
103
+		// let's also track the quantity of tickets that pertain to the registrations
104
+		$total_child_ticket_quantity = 0;
105
+		foreach ($line_item->children() as $child_line_item) {
106
+			$original_li_total = $child_line_item->is_percent()
107
+				? $running_total_of_children * $child_line_item->percent() / 100
108
+				: $child_line_item->unit_price() * $child_line_item->quantity();
109
+			$this->process($child_line_item);
110
+			// If this line item is a normal line item that isn't for a ticket,
111
+			// we want to modify its total (and unit price if not a percentage line item)
112
+			// so it reflects only that portion of the surcharge/discount shared by these registrations
113
+			if ($child_line_item->type() === EEM_Line_Item::type_line_item
114
+				&& $child_line_item->OBJ_type() !== 'Ticket'
115
+			) {
116
+				$percent_of_running_total = $running_total_of_children
117
+					? $original_li_total / $running_total_of_children
118
+					: 0;
119
+				$child_line_item->set_total(
120
+					$running_total_of_children_under_consideration * $percent_of_running_total
121
+				);
122
+				if (! $child_line_item->is_percent()) {
123
+					$child_line_item->set_unit_price($child_line_item->total() / $child_line_item->quantity());
124
+				}
125
+			} elseif (// make sure this item's quantity and total matches its parent
126
+				$line_item->type() === EEM_Line_Item::type_line_item
127
+				&& $line_item->OBJ_type() === 'Ticket'
128
+				// but not if it's a percentage modifier
129
+				&& ! $child_line_item->is_percent()
130
+				&& ! (
131
+					// or a cancellation
132
+					$child_line_item->is_cancelled()
133
+					&& ! (
134
+						// unless it IS a cancellation and the current registration is cancelled
135
+						$child_line_item->is_cancelled()
136
+						&& $this->_current_registration instanceof EE_Registration
137
+						&& in_array($this->_current_registration->status_ID(), $this->_closed_reg_statuses, true)
138
+					)
139
+				)
140
+			) {
141
+				$child_line_item->set_quantity($line_item->quantity());
142
+				$child_line_item->set_total($child_line_item->unit_price() * $child_line_item->quantity());
143
+			}
144
+			$running_total_of_children += $original_li_total;
145
+			$running_total_of_children_under_consideration += $child_line_item->total();
146
+			if ($child_line_item->OBJ_type() === 'Ticket') {
147
+				$total_child_ticket_quantity += $child_line_item->quantity();
148
+			}
149
+		}
150
+		$line_item->set_total($running_total_of_children_under_consideration);
151
+		if ($line_item->quantity()) {
152
+			$line_item->set_unit_price($running_total_of_children_under_consideration / $line_item->quantity());
153
+		} else {
154
+			$line_item->set_unit_price(0);
155
+		}
156
+		if ($line_item->OBJ_type() === 'Event') {
157
+			$line_item->set_quantity($total_child_ticket_quantity);
158
+		}
159
+		return $line_item;
160
+	}
161 161
 
162 162
 
163
-    /**
164
-     * Adjusts quantities for line items for tickets according to the registrations provided
165
-     * in the constructor
166
-     *
167
-     * @param EEI_Line_Item $line_item
168
-     * @return EEI_Line_Item
169
-     */
170
-    protected function _adjust_line_item_quantity(EEI_Line_Item $line_item)
171
-    {
172
-        // is this a ticket ?
173
-        if ($line_item->type() === EEM_Line_Item::type_line_item && $line_item->OBJ_type() === 'Ticket') {
174
-            $this->_current_registration = null;
175
-            $quantity = 0;
176
-            // if this ticket is billable at this moment, then we should have a positive quantity
177
-            if (isset($this->_line_item_registrations[ $line_item->code() ])
178
-                && is_array($this->_line_item_registrations[ $line_item->code() ])
179
-            ) {
180
-                // set quantity based on number of open registrations for this ticket
181
-                foreach ($this->_line_item_registrations[ $line_item->code() ] as $registration) {
182
-                    if ($registration instanceof EE_Registration
183
-                    ) {
184
-                        $quantity++;
185
-                        $this->_current_registration = $registration;
186
-                    }
187
-                }
188
-            }
189
-            $line_item->set_quantity($quantity);
190
-            $line_item->set_total($line_item->unit_price() * $line_item->quantity());
191
-        }
192
-        return $line_item;
193
-    }
163
+	/**
164
+	 * Adjusts quantities for line items for tickets according to the registrations provided
165
+	 * in the constructor
166
+	 *
167
+	 * @param EEI_Line_Item $line_item
168
+	 * @return EEI_Line_Item
169
+	 */
170
+	protected function _adjust_line_item_quantity(EEI_Line_Item $line_item)
171
+	{
172
+		// is this a ticket ?
173
+		if ($line_item->type() === EEM_Line_Item::type_line_item && $line_item->OBJ_type() === 'Ticket') {
174
+			$this->_current_registration = null;
175
+			$quantity = 0;
176
+			// if this ticket is billable at this moment, then we should have a positive quantity
177
+			if (isset($this->_line_item_registrations[ $line_item->code() ])
178
+				&& is_array($this->_line_item_registrations[ $line_item->code() ])
179
+			) {
180
+				// set quantity based on number of open registrations for this ticket
181
+				foreach ($this->_line_item_registrations[ $line_item->code() ] as $registration) {
182
+					if ($registration instanceof EE_Registration
183
+					) {
184
+						$quantity++;
185
+						$this->_current_registration = $registration;
186
+					}
187
+				}
188
+			}
189
+			$line_item->set_quantity($quantity);
190
+			$line_item->set_total($line_item->unit_price() * $line_item->quantity());
191
+		}
192
+		return $line_item;
193
+	}
194 194
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -73,10 +73,10 @@  discard block
 block discarded – undo
73 73
                 'LIN_code'
74 74
             );
75 75
             if ($line_item_code) {
76
-                if (! isset($this->_line_item_registrations[ $line_item_code ])) {
77
-                    $this->_line_item_registrations[ $line_item_code ] = array();
76
+                if ( ! isset($this->_line_item_registrations[$line_item_code])) {
77
+                    $this->_line_item_registrations[$line_item_code] = array();
78 78
                 }
79
-                $this->_line_item_registrations[ $line_item_code ][ $registration->ID() ] = $registration;
79
+                $this->_line_item_registrations[$line_item_code][$registration->ID()] = $registration;
80 80
             }
81 81
         }
82 82
     }
@@ -93,7 +93,7 @@  discard block
 block discarded – undo
93 93
     public function process(EEI_Line_Item $line_item)
94 94
     {
95 95
         $this->_adjust_line_item_quantity($line_item);
96
-        if (! $line_item->children()) {
96
+        if ( ! $line_item->children()) {
97 97
             return $line_item;
98 98
         }
99 99
         // the original running total (taking ALL tickets into account)
@@ -119,7 +119,7 @@  discard block
 block discarded – undo
119 119
                 $child_line_item->set_total(
120 120
                     $running_total_of_children_under_consideration * $percent_of_running_total
121 121
                 );
122
-                if (! $child_line_item->is_percent()) {
122
+                if ( ! $child_line_item->is_percent()) {
123 123
                     $child_line_item->set_unit_price($child_line_item->total() / $child_line_item->quantity());
124 124
                 }
125 125
             } elseif (// make sure this item's quantity and total matches its parent
@@ -174,11 +174,11 @@  discard block
 block discarded – undo
174 174
             $this->_current_registration = null;
175 175
             $quantity = 0;
176 176
             // if this ticket is billable at this moment, then we should have a positive quantity
177
-            if (isset($this->_line_item_registrations[ $line_item->code() ])
178
-                && is_array($this->_line_item_registrations[ $line_item->code() ])
177
+            if (isset($this->_line_item_registrations[$line_item->code()])
178
+                && is_array($this->_line_item_registrations[$line_item->code()])
179 179
             ) {
180 180
                 // set quantity based on number of open registrations for this ticket
181
-                foreach ($this->_line_item_registrations[ $line_item->code() ] as $registration) {
181
+                foreach ($this->_line_item_registrations[$line_item->code()] as $registration) {
182 182
                     if ($registration instanceof EE_Registration
183 183
                     ) {
184 184
                         $quantity++;
Please login to merge, or discard this patch.
core/libraries/line_item_display/EE_Line_Item_Display.class.php 2 patches
Indentation   +51 added lines, -51 removed lines patch added patch discarded remove patch
@@ -14,62 +14,62 @@
 block discarded – undo
14 14
 class EE_Line_Item_Display
15 15
 {
16 16
 
17
-    private $strategy = null;
17
+	private $strategy = null;
18 18
 
19 19
 
20
-    /**
21
-     * @param string $context - where/how the line items are being displayed
22
-     * @param string $other_line_item_display_strategy
23
-     */
24
-    public function __construct($context = '', $other_line_item_display_strategy = '')
25
-    {
26
-        $context = strtolower($context);
27
-        switch ($context) {
28
-            case 'invoice':
29
-                $this->strategy = new EE_Invoice_Line_Item_Display_Strategy();
30
-                break;
31
-            case 'receipt':
32
-                $this->strategy = new EE_Receipt_Line_Item_Display_Strategy();
33
-                break;
34
-            case 'spco':
35
-                $this->strategy = new EE_SPCO_Line_Item_Display_Strategy();
36
-                break;
37
-            default:
38
-                if (! empty($other_line_item_display_strategy) &&
39
-                    class_exists($other_line_item_display_strategy)
40
-                ) {
41
-                    $this->strategy = new  $other_line_item_display_strategy();
42
-                } else {
43
-                    $this->strategy = new EE_Default_Line_Item_Display_Strategy();
44
-                }
45
-        }
46
-    }
20
+	/**
21
+	 * @param string $context - where/how the line items are being displayed
22
+	 * @param string $other_line_item_display_strategy
23
+	 */
24
+	public function __construct($context = '', $other_line_item_display_strategy = '')
25
+	{
26
+		$context = strtolower($context);
27
+		switch ($context) {
28
+			case 'invoice':
29
+				$this->strategy = new EE_Invoice_Line_Item_Display_Strategy();
30
+				break;
31
+			case 'receipt':
32
+				$this->strategy = new EE_Receipt_Line_Item_Display_Strategy();
33
+				break;
34
+			case 'spco':
35
+				$this->strategy = new EE_SPCO_Line_Item_Display_Strategy();
36
+				break;
37
+			default:
38
+				if (! empty($other_line_item_display_strategy) &&
39
+					class_exists($other_line_item_display_strategy)
40
+				) {
41
+					$this->strategy = new  $other_line_item_display_strategy();
42
+				} else {
43
+					$this->strategy = new EE_Default_Line_Item_Display_Strategy();
44
+				}
45
+		}
46
+	}
47 47
 
48
-    /**
49
-     * @param EE_Line_Item $line_item
50
-     * @param array        $options
51
-     * @return mixed
52
-     */
53
-    public function display_line_item(EE_Line_Item $line_item, $options = array())
54
-    {
55
-        return $this->strategy->display_line_item($line_item, $options);
56
-    }
48
+	/**
49
+	 * @param EE_Line_Item $line_item
50
+	 * @param array        $options
51
+	 * @return mixed
52
+	 */
53
+	public function display_line_item(EE_Line_Item $line_item, $options = array())
54
+	{
55
+		return $this->strategy->display_line_item($line_item, $options);
56
+	}
57 57
 
58 58
 
59
-    /**
60
-     * @return float
61
-     */
62
-    public function grand_total()
63
-    {
64
-        return $this->strategy->grand_total();
65
-    }
59
+	/**
60
+	 * @return float
61
+	 */
62
+	public function grand_total()
63
+	{
64
+		return $this->strategy->grand_total();
65
+	}
66 66
 
67 67
 
68
-    /**
69
-     * @return float
70
-     */
71
-    public function total_items()
72
-    {
73
-        return $this->strategy->total_items();
74
-    }
68
+	/**
69
+	 * @return float
70
+	 */
71
+	public function total_items()
72
+	{
73
+		return $this->strategy->total_items();
74
+	}
75 75
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -35,7 +35,7 @@
 block discarded – undo
35 35
                 $this->strategy = new EE_SPCO_Line_Item_Display_Strategy();
36 36
                 break;
37 37
             default:
38
-                if (! empty($other_line_item_display_strategy) &&
38
+                if ( ! empty($other_line_item_display_strategy) &&
39 39
                     class_exists($other_line_item_display_strategy)
40 40
                 ) {
41 41
                     $this->strategy = new  $other_line_item_display_strategy();
Please login to merge, or discard this patch.
core/libraries/template_parts/EE_Template_Part_Manager.class.php 2 patches
Indentation   +191 added lines, -191 removed lines patch added patch discarded remove patch
@@ -14,195 +14,195 @@
 block discarded – undo
14 14
 class EE_Template_Part_Manager
15 15
 {
16 16
 
17
-    /**
18
-     * @param EE_Template_Part_PriorityQueue $template_parts
19
-     */
20
-    protected $template_parts;
21
-
22
-    /**
23
-     * @param array $priorities
24
-     */
25
-    protected $priorities = array();
26
-
27
-    /**
28
-     * @param int $event_desc_priority
29
-     */
30
-    protected $event_desc_priority;
31
-
32
-    /**
33
-     * @param string $before_event_content
34
-     */
35
-    protected $before_event_content;
36
-
37
-    /**
38
-     * @param string $event_content
39
-     */
40
-    protected $event_content;
41
-
42
-    /**
43
-     * @param string $after_event_content
44
-     */
45
-    protected $after_event_content;
46
-
47
-
48
-    /**
49
-     *    class constructor
50
-     */
51
-    public function __construct()
52
-    {
53
-        $this->template_parts = new EE_Template_Part_PriorityQueue();
54
-    }
55
-
56
-
57
-    /**
58
-     *    add_template_part
59
-     *
60
-     *    used for setting the details about a particular template part
61
-     *
62
-     * @param string $name     - just a simple string identifier - do NOT use 'event'
63
-     * @param string $label    - template part label displayed in admin
64
-     * @param string $template - name or path of template to be used by EEH_Template::locate_template()
65
-     * @param int    $priority - order in which template parts should be applied
66
-     */
67
-    public function add_template_part($name, $label, $template, $priority)
68
-    {
69
-        // SplPriorityQueue doesn't play nice with multiple items having the same priority
70
-        // so if the incoming priority is already occupied, then let's increment it by one,
71
-        // and then pass everything back into this method and try again with the new priority
72
-        if (isset($this->priorities[ $priority ])) {
73
-            $priority++;
74
-            $this->add_template_part($name, $label, $template, $priority);
75
-            return;
76
-        }
77
-        // kk now we can mark this priority as being occupied
78
-        $this->priorities[ $priority ] = true;
79
-        // create the template part and add to the queue
80
-        $this->template_parts->insert(
81
-            new EE_Template_Part($name, $label, $template, $priority),
82
-            $priority
83
-        );
84
-        if ($name === 'event') {
85
-            $this->event_desc_priority = $priority;
86
-        }
87
-    }
88
-
89
-
90
-    /**
91
-     *    apply_template_part_filters
92
-     *
93
-     *    adds template parts to the supplied content
94
-     *    according to the details set when the template parts were added
95
-     *
96
-     * @access public
97
-     * @param string $content
98
-     * @return string
99
-     */
100
-    public function apply_template_part_filters($content = '')
101
-    {
102
-        $this->template_parts->rewind();
103
-        // loop through template parts and position content
104
-        while ($this->template_parts->valid()) {
105
-            $this->_position_template_part(
106
-                $content,
107
-                $this->template_parts->current()->template(),
108
-                $this->template_parts->current()->priority()
109
-            );
110
-            $this->template_parts->next();
111
-        }
112
-        // now simply add our three strings of content together
113
-        return $this->before_event_content . $this->event_content . $this->after_event_content;
114
-    }
115
-
116
-
117
-    /**
118
-     *    position_template_part
119
-     *
120
-     * based on the priority of the incoming template part
121
-     * relative to the known event description template part priority,
122
-     * this method will assign template parts to one of the following:
123
-     *        $this->before_event_content
124
-     *        $this->event_content
125
-     *        $this->after_event_content
126
-     *
127
-     * @access protected
128
-     * @param string $content
129
-     * @param string $template
130
-     * @param int    $priority
131
-     * @return void
132
-     */
133
-    protected function _position_template_part($content, $template, $priority)
134
-    {
135
-        // Event Description content is the actual incoming content itself
136
-        if ($priority === $this->event_desc_priority) {
137
-            $this->event_content = $content;
138
-        } elseif ($priority < $this->event_desc_priority) {
139
-            // everything BEFORE the Event Description
140
-            $this->before_event_content .= EEH_Template::locate_template($template);
141
-        } elseif ($priority > $this->event_desc_priority) {
142
-            // everything AFTER the Event Description
143
-            $this->after_event_content .= EEH_Template::locate_template($template);
144
-        }
145
-    }
146
-
147
-
148
-    /**
149
-     *    generate_sortable_list_of_template_parts
150
-     *
151
-     *    creates an HTML list (<ul>) with list items (<li>) for each template part,
152
-     *    in a format that can be used as a sortable list in the admin
153
-     *
154
-     * @access public
155
-     * @param string $list_css_id
156
-     * @param string $list_css_class
157
-     * @param string $list_item_css_class
158
-     * @param string $list_item_css_id_prefix
159
-     * @return string
160
-     */
161
-    public function generate_sortable_list_of_template_parts(
162
-        $list_css_id = '',
163
-        $list_css_class = '',
164
-        $list_item_css_class = '',
165
-        $list_item_css_id_prefix = ''
166
-    ) {
167
-        $event_archive_display_order = EEH_HTML::ul($list_css_id, $list_css_class);
168
-        $this->template_parts->rewind();
169
-        // loop through template parts and add template content
170
-        while ($this->template_parts->valid()) {
171
-            $event_archive_display_order .= EEH_HTML::li(
172
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2') .
173
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2') .
174
-                $this->template_parts->current()->label(),
175
-                $list_item_css_id_prefix . $this->template_parts->current()->name(),
176
-                $list_item_css_class
177
-            );
178
-            $this->template_parts->next();
179
-        }
180
-        $event_archive_display_order .= EEH_HTML::ulx();
181
-        return $event_archive_display_order;
182
-    }
183
-
184
-
185
-    /**
186
-     *    display_template_parts
187
-     *
188
-     * just for debugging purposes
189
-     *
190
-     * @access    public
191
-     * @return void
192
-     */
193
-    public function display_template_parts()
194
-    {
195
-        if (WP_DEBUG) {
196
-            $this->template_parts->rewind();
197
-            while ($this->template_parts->valid()) {
198
-                EEH_Debug_Tools::printr(
199
-                    $this->template_parts->current(),
200
-                    'template_part',
201
-                    __FILE__,
202
-                    __LINE__
203
-                );
204
-                $this->template_parts->next();
205
-            }
206
-        }
207
-    }
17
+	/**
18
+	 * @param EE_Template_Part_PriorityQueue $template_parts
19
+	 */
20
+	protected $template_parts;
21
+
22
+	/**
23
+	 * @param array $priorities
24
+	 */
25
+	protected $priorities = array();
26
+
27
+	/**
28
+	 * @param int $event_desc_priority
29
+	 */
30
+	protected $event_desc_priority;
31
+
32
+	/**
33
+	 * @param string $before_event_content
34
+	 */
35
+	protected $before_event_content;
36
+
37
+	/**
38
+	 * @param string $event_content
39
+	 */
40
+	protected $event_content;
41
+
42
+	/**
43
+	 * @param string $after_event_content
44
+	 */
45
+	protected $after_event_content;
46
+
47
+
48
+	/**
49
+	 *    class constructor
50
+	 */
51
+	public function __construct()
52
+	{
53
+		$this->template_parts = new EE_Template_Part_PriorityQueue();
54
+	}
55
+
56
+
57
+	/**
58
+	 *    add_template_part
59
+	 *
60
+	 *    used for setting the details about a particular template part
61
+	 *
62
+	 * @param string $name     - just a simple string identifier - do NOT use 'event'
63
+	 * @param string $label    - template part label displayed in admin
64
+	 * @param string $template - name or path of template to be used by EEH_Template::locate_template()
65
+	 * @param int    $priority - order in which template parts should be applied
66
+	 */
67
+	public function add_template_part($name, $label, $template, $priority)
68
+	{
69
+		// SplPriorityQueue doesn't play nice with multiple items having the same priority
70
+		// so if the incoming priority is already occupied, then let's increment it by one,
71
+		// and then pass everything back into this method and try again with the new priority
72
+		if (isset($this->priorities[ $priority ])) {
73
+			$priority++;
74
+			$this->add_template_part($name, $label, $template, $priority);
75
+			return;
76
+		}
77
+		// kk now we can mark this priority as being occupied
78
+		$this->priorities[ $priority ] = true;
79
+		// create the template part and add to the queue
80
+		$this->template_parts->insert(
81
+			new EE_Template_Part($name, $label, $template, $priority),
82
+			$priority
83
+		);
84
+		if ($name === 'event') {
85
+			$this->event_desc_priority = $priority;
86
+		}
87
+	}
88
+
89
+
90
+	/**
91
+	 *    apply_template_part_filters
92
+	 *
93
+	 *    adds template parts to the supplied content
94
+	 *    according to the details set when the template parts were added
95
+	 *
96
+	 * @access public
97
+	 * @param string $content
98
+	 * @return string
99
+	 */
100
+	public function apply_template_part_filters($content = '')
101
+	{
102
+		$this->template_parts->rewind();
103
+		// loop through template parts and position content
104
+		while ($this->template_parts->valid()) {
105
+			$this->_position_template_part(
106
+				$content,
107
+				$this->template_parts->current()->template(),
108
+				$this->template_parts->current()->priority()
109
+			);
110
+			$this->template_parts->next();
111
+		}
112
+		// now simply add our three strings of content together
113
+		return $this->before_event_content . $this->event_content . $this->after_event_content;
114
+	}
115
+
116
+
117
+	/**
118
+	 *    position_template_part
119
+	 *
120
+	 * based on the priority of the incoming template part
121
+	 * relative to the known event description template part priority,
122
+	 * this method will assign template parts to one of the following:
123
+	 *        $this->before_event_content
124
+	 *        $this->event_content
125
+	 *        $this->after_event_content
126
+	 *
127
+	 * @access protected
128
+	 * @param string $content
129
+	 * @param string $template
130
+	 * @param int    $priority
131
+	 * @return void
132
+	 */
133
+	protected function _position_template_part($content, $template, $priority)
134
+	{
135
+		// Event Description content is the actual incoming content itself
136
+		if ($priority === $this->event_desc_priority) {
137
+			$this->event_content = $content;
138
+		} elseif ($priority < $this->event_desc_priority) {
139
+			// everything BEFORE the Event Description
140
+			$this->before_event_content .= EEH_Template::locate_template($template);
141
+		} elseif ($priority > $this->event_desc_priority) {
142
+			// everything AFTER the Event Description
143
+			$this->after_event_content .= EEH_Template::locate_template($template);
144
+		}
145
+	}
146
+
147
+
148
+	/**
149
+	 *    generate_sortable_list_of_template_parts
150
+	 *
151
+	 *    creates an HTML list (<ul>) with list items (<li>) for each template part,
152
+	 *    in a format that can be used as a sortable list in the admin
153
+	 *
154
+	 * @access public
155
+	 * @param string $list_css_id
156
+	 * @param string $list_css_class
157
+	 * @param string $list_item_css_class
158
+	 * @param string $list_item_css_id_prefix
159
+	 * @return string
160
+	 */
161
+	public function generate_sortable_list_of_template_parts(
162
+		$list_css_id = '',
163
+		$list_css_class = '',
164
+		$list_item_css_class = '',
165
+		$list_item_css_id_prefix = ''
166
+	) {
167
+		$event_archive_display_order = EEH_HTML::ul($list_css_id, $list_css_class);
168
+		$this->template_parts->rewind();
169
+		// loop through template parts and add template content
170
+		while ($this->template_parts->valid()) {
171
+			$event_archive_display_order .= EEH_HTML::li(
172
+				EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2') .
173
+				EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2') .
174
+				$this->template_parts->current()->label(),
175
+				$list_item_css_id_prefix . $this->template_parts->current()->name(),
176
+				$list_item_css_class
177
+			);
178
+			$this->template_parts->next();
179
+		}
180
+		$event_archive_display_order .= EEH_HTML::ulx();
181
+		return $event_archive_display_order;
182
+	}
183
+
184
+
185
+	/**
186
+	 *    display_template_parts
187
+	 *
188
+	 * just for debugging purposes
189
+	 *
190
+	 * @access    public
191
+	 * @return void
192
+	 */
193
+	public function display_template_parts()
194
+	{
195
+		if (WP_DEBUG) {
196
+			$this->template_parts->rewind();
197
+			while ($this->template_parts->valid()) {
198
+				EEH_Debug_Tools::printr(
199
+					$this->template_parts->current(),
200
+					'template_part',
201
+					__FILE__,
202
+					__LINE__
203
+				);
204
+				$this->template_parts->next();
205
+			}
206
+		}
207
+	}
208 208
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -69,13 +69,13 @@  discard block
 block discarded – undo
69 69
         // SplPriorityQueue doesn't play nice with multiple items having the same priority
70 70
         // so if the incoming priority is already occupied, then let's increment it by one,
71 71
         // and then pass everything back into this method and try again with the new priority
72
-        if (isset($this->priorities[ $priority ])) {
72
+        if (isset($this->priorities[$priority])) {
73 73
             $priority++;
74 74
             $this->add_template_part($name, $label, $template, $priority);
75 75
             return;
76 76
         }
77 77
         // kk now we can mark this priority as being occupied
78
-        $this->priorities[ $priority ] = true;
78
+        $this->priorities[$priority] = true;
79 79
         // create the template part and add to the queue
80 80
         $this->template_parts->insert(
81 81
             new EE_Template_Part($name, $label, $template, $priority),
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
             $this->template_parts->next();
111 111
         }
112 112
         // now simply add our three strings of content together
113
-        return $this->before_event_content . $this->event_content . $this->after_event_content;
113
+        return $this->before_event_content.$this->event_content.$this->after_event_content;
114 114
     }
115 115
 
116 116
 
@@ -169,10 +169,10 @@  discard block
 block discarded – undo
169 169
         // loop through template parts and add template content
170 170
         while ($this->template_parts->valid()) {
171 171
             $event_archive_display_order .= EEH_HTML::li(
172
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2') .
173
-                EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2') .
172
+                EEH_HTML::span('', '', 'dashicons dashicons-arrow-up-alt2').
173
+                EEH_HTML::span('', '', 'dashicons dashicons-arrow-down-alt2').
174 174
                 $this->template_parts->current()->label(),
175
-                $list_item_css_id_prefix . $this->template_parts->current()->name(),
175
+                $list_item_css_id_prefix.$this->template_parts->current()->name(),
176 176
                 $list_item_css_class
177 177
             );
178 178
             $this->template_parts->next();
Please login to merge, or discard this patch.
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_Registration_Processor.class.php 2 patches
Indentation   +763 added lines, -763 removed lines patch added patch discarded remove patch
@@ -24,767 +24,767 @@
 block discarded – undo
24 24
 class EE_Registration_Processor extends EE_Processor_Base
25 25
 {
26 26
 
27
-    /**
28
-     * @var EE_Registration_Processor $_instance
29
-     * @access    private
30
-     */
31
-    private static $_instance;
32
-
33
-    /**
34
-     * initial reg status at the beginning of this request.
35
-     * indexed by registration ID
36
-     *
37
-     * @var array
38
-     */
39
-    protected $_old_reg_status = array();
40
-
41
-    /**
42
-     * reg status at the end of the request after all processing.
43
-     * indexed by registration ID
44
-     *
45
-     * @var array
46
-     */
47
-    protected $_new_reg_status = array();
48
-
49
-    /**
50
-     * amounts paid at the end of the request after all processing.
51
-     * indexed by registration ID
52
-     *
53
-     * @var array
54
-     */
55
-    protected static $_amount_paid = array();
56
-
57
-    /**
58
-     * Cache of the reg final price for registrations corresponding to a ticket line item
59
-     *
60
-     * @deprecated
61
-     * @var array @see EEH_Line_Item::calculate_reg_final_prices_per_line_item()'s return value
62
-     */
63
-    protected $_reg_final_price_per_tkt_line_item;
64
-
65
-    /**
66
-     * @var EE_Request $request
67
-     */
68
-    protected $request;
69
-
70
-
71
-    /**
72
-     * @singleton method used to instantiate class object
73
-     * @param EE_Request|null $request
74
-     * @return EE_Registration_Processor instance
75
-     * @throws \InvalidArgumentException
76
-     * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
77
-     * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
78
-     */
79
-    public static function instance(EE_Request $request = null)
80
-    {
81
-        // check if class object is instantiated
82
-        if (! self::$_instance instanceof EE_Registration_Processor) {
83
-            if (! $request instanceof EE_Request) {
84
-                $request = LoaderFactory::getLoader()->getShared('EE_Request');
85
-            }
86
-            self::$_instance = new self($request);
87
-        }
88
-        return self::$_instance;
89
-    }
90
-
91
-
92
-    /**
93
-     * EE_Registration_Processor constructor.
94
-     *
95
-     * @param EE_Request $request
96
-     */
97
-    public function __construct(EE_Request $request)
98
-    {
99
-        $this->request = $request;
100
-    }
101
-
102
-
103
-    /**
104
-     * @param int $REG_ID
105
-     * @return string
106
-     */
107
-    public function old_reg_status($REG_ID)
108
-    {
109
-        return isset($this->_old_reg_status[ $REG_ID ]) ? $this->_old_reg_status[ $REG_ID ] : null;
110
-    }
111
-
112
-
113
-    /**
114
-     * @param int    $REG_ID
115
-     * @param string $old_reg_status
116
-     */
117
-    public function set_old_reg_status($REG_ID, $old_reg_status)
118
-    {
119
-        // only set the first time
120
-        if (! isset($this->_old_reg_status[ $REG_ID ])) {
121
-            $this->_old_reg_status[ $REG_ID ] = $old_reg_status;
122
-        }
123
-    }
124
-
125
-
126
-    /**
127
-     * @param int $REG_ID
128
-     * @return string
129
-     */
130
-    public function new_reg_status($REG_ID)
131
-    {
132
-        return isset($this->_new_reg_status[ $REG_ID ]) ? $this->_new_reg_status[ $REG_ID ] : null;
133
-    }
134
-
135
-
136
-    /**
137
-     * @param int    $REG_ID
138
-     * @param string $new_reg_status
139
-     */
140
-    public function set_new_reg_status($REG_ID, $new_reg_status)
141
-    {
142
-        $this->_new_reg_status[ $REG_ID ] = $new_reg_status;
143
-    }
144
-
145
-
146
-    /**
147
-     * reg_status_updated
148
-     *
149
-     * @param int $REG_ID
150
-     * @return bool
151
-     */
152
-    public function reg_status_updated($REG_ID)
153
-    {
154
-        return $this->new_reg_status($REG_ID) !== $this->old_reg_status($REG_ID);
155
-    }
156
-
157
-
158
-    /**
159
-     * @param EE_Registration $registration
160
-     * @throws EE_Error
161
-     * @throws EntityNotFoundException
162
-     * @throws InvalidArgumentException
163
-     * @throws InvalidDataTypeException
164
-     * @throws InvalidInterfaceException
165
-     * @throws ReflectionException
166
-     * @throws RuntimeException
167
-     */
168
-    public function update_registration_status_and_trigger_notifications(EE_Registration $registration)
169
-    {
170
-        $this->toggle_incomplete_registration_status_to_default($registration, false);
171
-        $this->toggle_registration_status_for_default_approved_events($registration, false);
172
-        $this->toggle_registration_status_if_no_monies_owing($registration, false);
173
-        $registration->save();
174
-        // trigger notifications
175
-        $this->trigger_registration_update_notifications($registration);
176
-    }
177
-
178
-
179
-    /**
180
-     *    manually_update_registration_status
181
-     *
182
-     * @access public
183
-     * @param EE_Registration $registration
184
-     * @param string          $new_reg_status
185
-     * @param bool            $save TRUE will save the registration if the status is updated, FALSE will leave that up
186
-     *                              to client code
187
-     * @return bool
188
-     * @throws EE_Error
189
-     * @throws EntityNotFoundException
190
-     * @throws InvalidArgumentException
191
-     * @throws InvalidDataTypeException
192
-     * @throws InvalidInterfaceException
193
-     * @throws ReflectionException
194
-     * @throws RuntimeException
195
-     */
196
-    public function manually_update_registration_status(
197
-        EE_Registration $registration,
198
-        $new_reg_status = '',
199
-        $save = true
200
-    ) {
201
-        // set initial REG_Status
202
-        $this->set_old_reg_status($registration->ID(), $registration->status_ID());
203
-        // set incoming REG_Status
204
-        $this->set_new_reg_status($registration->ID(), $new_reg_status);
205
-        // toggle reg status but only if it has changed and the user can do so
206
-        if ($this->reg_status_updated($registration->ID())
207
-            && (
208
-                (! $this->request->isAdmin() || $this->request->isFrontAjax())
209
-                || EE_Registry::instance()->CAP->current_user_can(
210
-                    'ee_edit_registration',
211
-                    'toggle_registration_status',
212
-                    $registration->ID()
213
-                )
214
-            )
215
-        ) {
216
-            // change status to new value
217
-            $updated = $registration->set_status($this->new_reg_status($registration->ID()));
218
-            if ($updated && $save) {
219
-                $registration->save();
220
-            }
221
-            return true;
222
-        }
223
-        return false;
224
-    }
225
-
226
-
227
-    /**
228
-     *    toggle_incomplete_registration_status_to_default
229
-     *        changes any incomplete registrations to either the event or global default registration status
230
-     *
231
-     * @access public
232
-     * @param EE_Registration       $registration
233
-     * @param bool                  $save TRUE will save the registration if the status is updated, FALSE will leave
234
-     *                                    that up to client code
235
-     * @param ContextInterface|null $context
236
-     * @return void
237
-     * @throws EE_Error
238
-     * @throws InvalidArgumentException
239
-     * @throws ReflectionException
240
-     * @throws RuntimeException
241
-     * @throws EntityNotFoundException
242
-     * @throws InvalidDataTypeException
243
-     * @throws InvalidInterfaceException
244
-     */
245
-    public function toggle_incomplete_registration_status_to_default(
246
-        EE_Registration $registration,
247
-        $save = true,
248
-        ContextInterface $context = null
249
-    ) {
250
-        $existing_reg_status = $registration->status_ID();
251
-        // set initial REG_Status
252
-        $this->set_old_reg_status($registration->ID(), $existing_reg_status);
253
-        // is the registration currently incomplete ?
254
-        if ($registration->status_ID() === EEM_Registration::status_id_incomplete) {
255
-            // grab default reg status for the event, if set
256
-            $event_default_registration_status = $registration->event()->default_registration_status();
257
-            // if no default reg status is set for the event, then use the global value
258
-            $STS_ID = ! empty($event_default_registration_status)
259
-                ? $event_default_registration_status
260
-                : EE_Registry::instance()->CFG->registration->default_STS_ID;
261
-            // if the event default reg status is approved, then downgrade temporarily to payment pending to ensure that payments are triggered
262
-            $STS_ID = $STS_ID === EEM_Registration::status_id_approved ? EEM_Registration::status_id_pending_payment
263
-                : $STS_ID;
264
-            // set incoming REG_Status
265
-            $this->set_new_reg_status($registration->ID(), $STS_ID);
266
-            $registration->set_status($STS_ID, false, $context);
267
-            if ($save) {
268
-                $registration->save();
269
-            }
270
-            // don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
271
-            if (! EE_Processor_Base::$IPN) {
272
-                // otherwise, send out notifications
273
-                add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
274
-            }
275
-            // DEBUG LOG
276
-            // $this->log(
277
-            //     __CLASS__,
278
-            //     __FUNCTION__,
279
-            //     __LINE__,
280
-            //     $registration->transaction(),
281
-            //     array(
282
-            //         'IPN' => EE_Processor_Base::$IPN,
283
-            //         'deliver_notifications' => has_filter(
284
-            //             'FHEE__EED_Messages___maybe_registration__deliver_notifications'
285
-            //         ),
286
-            //     )
287
-            // );
288
-        }
289
-    }
290
-
291
-
292
-    /**
293
-     *    toggle_registration_status_for_default_approved_events
294
-     *
295
-     * @access public
296
-     * @param EE_Registration $registration
297
-     * @param bool            $save TRUE will save the registration if the status is updated, FALSE will leave that up
298
-     *                              to client code
299
-     * @return bool
300
-     * @throws EE_Error
301
-     * @throws EntityNotFoundException
302
-     * @throws InvalidArgumentException
303
-     * @throws InvalidDataTypeException
304
-     * @throws InvalidInterfaceException
305
-     * @throws ReflectionException
306
-     * @throws RuntimeException
307
-     */
308
-    public function toggle_registration_status_for_default_approved_events(EE_Registration $registration, $save = true)
309
-    {
310
-        $reg_status = $registration->status_ID();
311
-        // set initial REG_Status
312
-        $this->set_old_reg_status($registration->ID(), $reg_status);
313
-        // if not already, toggle reg status to approved IF the event default reg status is approved
314
-        // ( as long as the registration wasn't cancelled or declined at some point )
315
-        if ($reg_status !== EEM_Registration::status_id_cancelled
316
-            && $reg_status
317
-               !== EEM_Registration::status_id_declined
318
-            && $reg_status !== EEM_Registration::status_id_approved
319
-            && $registration->event()->default_registration_status() === EEM_Registration::status_id_approved
320
-        ) {
321
-            // set incoming REG_Status
322
-            $this->set_new_reg_status($registration->ID(), EEM_Registration::status_id_approved);
323
-            // toggle status to approved
324
-            $registration->set_status(EEM_Registration::status_id_approved);
325
-            if ($save) {
326
-                $registration->save();
327
-            }
328
-            // don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
329
-            if (! EE_Processor_Base::$IPN) {
330
-                // otherwise, send out notifications
331
-                add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
332
-            }
333
-            // DEBUG LOG
334
-            // $this->log(
335
-            //     __CLASS__,
336
-            //     __FUNCTION__,
337
-            //     __LINE__,
338
-            //     $registration->transaction(),
339
-            //     array(
340
-            //         'IPN' => EE_Processor_Base::$IPN,
341
-            //         'deliver_notifications' => has_filter(
342
-            //             'FHEE__EED_Messages___maybe_registration__deliver_notifications'
343
-            //         ),
344
-            //     )
345
-            // );
346
-            return true;
347
-        }
348
-        return false;
349
-    }
350
-
351
-
352
-    /**
353
-     *    toggle_registration_statuses_if_no_monies_owing
354
-     *
355
-     * @access public
356
-     * @param EE_Registration $registration
357
-     * @param bool            $save TRUE will save the registration if the status is updated, FALSE will leave that up
358
-     *                              to client code
359
-     * @param array           $additional_details
360
-     * @return bool
361
-     * @throws EE_Error
362
-     * @throws EntityNotFoundException
363
-     * @throws InvalidArgumentException
364
-     * @throws InvalidDataTypeException
365
-     * @throws InvalidInterfaceException
366
-     * @throws ReflectionException
367
-     * @throws RuntimeException
368
-     */
369
-    public function toggle_registration_status_if_no_monies_owing(
370
-        EE_Registration $registration,
371
-        $save = true,
372
-        array $additional_details = array()
373
-    ) {
374
-        // set initial REG_Status
375
-        $this->set_old_reg_status($registration->ID(), $registration->status_ID());
376
-        // was a payment just made ?
377
-        $payment = isset($additional_details['payment_updates'], $additional_details['last_payment'])
378
-                   && $additional_details['payment_updates']
379
-                   && $additional_details['last_payment'] instanceof EE_Payment
380
-            ? $additional_details['last_payment']
381
-            : null;
382
-        $total_paid = array_sum(self::$_amount_paid);
383
-        // toggle reg status to approved IF
384
-        if (// REG status is pending payment
385
-            $registration->status_ID() === EEM_Registration::status_id_pending_payment
386
-            // AND no monies are owing
387
-            && (
388
-                (
389
-                    $registration->transaction()->is_completed()
390
-                    || $registration->transaction()->is_overpaid()
391
-                    || $registration->transaction()->is_free()
392
-                    || apply_filters(
393
-                        'FHEE__EE_Registration_Processor__toggle_registration_status_if_no_monies_owing',
394
-                        false,
395
-                        $registration
396
-                    )
397
-                )
398
-                || (
399
-                    $payment instanceof EE_Payment && $payment->is_approved()
400
-                    && // this specific registration has not yet been paid for
401
-                    ! isset(self::$_amount_paid[ $registration->ID() ])
402
-                    && // payment amount, less what we have already attributed to other registrations, is greater than this reg's final price
403
-                    $payment->amount() - $total_paid >= $registration->final_price()
404
-                )
405
-            )
406
-        ) {
407
-            // mark as paid
408
-            self::$_amount_paid[ $registration->ID() ] = $registration->final_price();
409
-            // track new REG_Status
410
-            $this->set_new_reg_status($registration->ID(), EEM_Registration::status_id_approved);
411
-            // toggle status to approved
412
-            $registration->set_status(EEM_Registration::status_id_approved);
413
-            if ($save) {
414
-                $registration->save();
415
-            }
416
-            // don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
417
-            if (! EE_Processor_Base::$IPN) {
418
-                // otherwise, send out notifications
419
-                add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
420
-            }
421
-            // DEBUG LOG
422
-            // $this->log(
423
-            //     __CLASS__,
424
-            //     __FUNCTION__,
425
-            //     __LINE__,
426
-            //     $registration->transaction(),
427
-            //     array(
428
-            //         'IPN' => EE_Processor_Base::$IPN,
429
-            //         'deliver_notifications' => has_filter(
430
-            //             'FHEE__EED_Messages___maybe_registration__deliver_notifications'
431
-            //         ),
432
-            //     )
433
-            // );
434
-            return true;
435
-        }
436
-        return false;
437
-    }
438
-
439
-
440
-    /**
441
-     *    registration_status_changed
442
-     *
443
-     * @access public
444
-     * @param EE_Registration $registration
445
-     * @param array           $additional_details
446
-     * @return void
447
-     */
448
-    public function trigger_registration_update_notifications($registration, array $additional_details = array())
449
-    {
450
-        try {
451
-            if (! $registration instanceof EE_Registration) {
452
-                throw new EE_Error(
453
-                    esc_html__('An invalid registration was received.', 'event_espresso')
454
-                );
455
-            }
456
-            // EE_Registry::instance()->load_helper('Debug_Tools');
457
-            // EEH_Debug_Tools::log(
458
-            //     __CLASS__,
459
-            //     __FUNCTION__,
460
-            //     __LINE__,
461
-            //     array($registration->transaction(), $additional_details),
462
-            //     false,
463
-            //     'EE_Transaction: ' . $registration->transaction()->ID()
464
-            // );
465
-            if (! $registration->is_primary_registrant()) {
466
-                return;
467
-            }
468
-            do_action(
469
-                'AHEE__EE_Registration_Processor__trigger_registration_update_notifications',
470
-                $registration,
471
-                $additional_details
472
-            );
473
-        } catch (Exception $e) {
474
-            EE_Error::add_error($e->getMessage(), $e->getFile(), 'unknown_function_from_exception', $e->getLine());
475
-        }
476
-    }
477
-
478
-
479
-    /**
480
-     * sets reg status based either on passed param or on transaction status and event pre-approval setting
481
-     *
482
-     * @param EE_Registration $registration
483
-     * @param array           $additional_details
484
-     * @return bool
485
-     * @throws EE_Error
486
-     * @throws EntityNotFoundException
487
-     * @throws InvalidArgumentException
488
-     * @throws InvalidDataTypeException
489
-     * @throws InvalidInterfaceException
490
-     * @throws ReflectionException
491
-     * @throws RuntimeException
492
-     */
493
-    public function update_registration_after_checkout_or_payment(
494
-        EE_Registration $registration,
495
-        array $additional_details = array()
496
-    ) {
497
-        // set initial REG_Status
498
-        $this->set_old_reg_status($registration->ID(), $registration->status_ID());
499
-        // if the registration status gets updated, then save the registration
500
-        if ($this->toggle_registration_status_for_default_approved_events($registration, false)
501
-            || $this->toggle_registration_status_if_no_monies_owing(
502
-                $registration,
503
-                false,
504
-                $additional_details
505
-            )
506
-        ) {
507
-            $registration->save();
508
-        }
509
-        // set new  REG_Status
510
-        $this->set_new_reg_status($registration->ID(), $registration->status_ID());
511
-        return $this->reg_status_updated($registration->ID())
512
-               && $this->new_reg_status($registration->ID()) === EEM_Registration::status_id_approved;
513
-    }
514
-
515
-
516
-    /**
517
-     * Updates the registration' final prices based on the current line item tree (taking into account
518
-     * discounts, taxes, and other line items unrelated to tickets.)
519
-     *
520
-     * @param EE_Transaction $transaction
521
-     * @param boolean        $save_regs whether to immediately save registrations in this function or not
522
-     * @return void
523
-     * @throws EE_Error
524
-     * @throws InvalidArgumentException
525
-     * @throws InvalidDataTypeException
526
-     * @throws InvalidInterfaceException
527
-     * @throws RuntimeException
528
-     */
529
-    public function update_registration_final_prices($transaction, $save_regs = true)
530
-    {
531
-        $reg_final_price_per_ticket_line_item = EEH_Line_Item::calculate_reg_final_prices_per_line_item(
532
-            $transaction->total_line_item()
533
-        );
534
-        foreach ($transaction->registrations() as $registration) {
535
-            /** @var EE_Line_Item $line_item */
536
-            $line_item = EEM_Line_Item::instance()->get_line_item_for_registration($registration);
537
-            if (isset($reg_final_price_per_ticket_line_item[ $line_item->ID() ])) {
538
-                $registration->set_final_price($reg_final_price_per_ticket_line_item[ $line_item->ID() ]);
539
-                if ($save_regs) {
540
-                    $registration->save();
541
-                }
542
-            }
543
-        }
544
-        // and make sure there's no rounding problem
545
-        $this->fix_reg_final_price_rounding_issue($transaction);
546
-    }
547
-
548
-
549
-    /**
550
-     * Makes sure there is no rounding errors for the REG_final_prices.
551
-     * Eg, if we have 3 registrations for $1, and there is a $0.01 discount between the three of them,
552
-     * they will each be for $0.99333333, which gets rounded to $1 again.
553
-     * So the transaction total will be $2.99, but each registration will be for $1,
554
-     * so if each registrant paid individually they will have overpaid by $0.01.
555
-     * So in order to overcome this, we check for any difference, and if there is a difference
556
-     * we just grab one registrant at random and make them responsible for it.
557
-     * This should be used after setting REG_final_prices (it's done automatically as part of
558
-     * EE_Registration_Processor::update_registration_final_prices())
559
-     *
560
-     * @param EE_Transaction $transaction
561
-     * @return bool success verifying that there is NO difference after this method is done
562
-     * @throws EE_Error
563
-     * @throws InvalidArgumentException
564
-     * @throws InvalidDataTypeException
565
-     * @throws InvalidInterfaceException
566
-     */
567
-    public function fix_reg_final_price_rounding_issue($transaction)
568
-    {
569
-        $reg_final_price_sum = EEM_Registration::instance()->sum(
570
-            array(
571
-                array(
572
-                    'TXN_ID' => $transaction->ID(),
573
-                ),
574
-            ),
575
-            'REG_final_price'
576
-        );
577
-        $diff = $transaction->total() - $reg_final_price_sum;
578
-        // ok then, just grab one of the registrations
579
-        if ($diff !== 0) {
580
-            $a_reg = EEM_Registration::instance()->get_one(
581
-                array(
582
-                    array(
583
-                        'TXN_ID' => $transaction->ID(),
584
-                    ),
585
-                )
586
-            );
587
-            return $a_reg instanceof EE_Registration
588
-                ? (bool) $a_reg->save(array('REG_final_price' => $a_reg->final_price() + $diff))
589
-                : false;
590
-        }
591
-        return true;
592
-    }
593
-
594
-
595
-    /**
596
-     * update_registration_after_being_canceled_or_declined
597
-     *
598
-     * @param EE_Registration $registration
599
-     * @param array           $closed_reg_statuses
600
-     * @param bool            $update_reg
601
-     * @return bool
602
-     * @throws EE_Error
603
-     * @throws RuntimeException
604
-     */
605
-    public function update_registration_after_being_canceled_or_declined(
606
-        EE_Registration $registration,
607
-        array $closed_reg_statuses = array(),
608
-        $update_reg = true
609
-    ) {
610
-        // these reg statuses should not be considered in any calculations involving monies owing
611
-        $closed_reg_statuses = ! empty($closed_reg_statuses)
612
-            ? $closed_reg_statuses
613
-            : EEM_Registration::closed_reg_statuses();
614
-        if (! in_array($registration->status_ID(), $closed_reg_statuses, true)) {
615
-            return false;
616
-        }
617
-        // release a reserved ticket by decrementing ticket and datetime reserved values
618
-        $registration->release_reserved_ticket(true, 'RegProcessor:' . __LINE__);
619
-        $registration->set_final_price(0);
620
-        if ($update_reg) {
621
-            $registration->save();
622
-        }
623
-        return true;
624
-    }
625
-
626
-
627
-    /**
628
-     * update_canceled_or_declined_registration_after_being_reinstated
629
-     *
630
-     * @param EE_Registration $registration
631
-     * @param array           $closed_reg_statuses
632
-     * @param bool            $update_reg
633
-     * @return bool
634
-     * @throws EE_Error
635
-     * @throws RuntimeException
636
-     */
637
-    public function update_canceled_or_declined_registration_after_being_reinstated(
638
-        EE_Registration $registration,
639
-        array $closed_reg_statuses = array(),
640
-        $update_reg = true
641
-    ) {
642
-        // these reg statuses should not be considered in any calculations involving monies owing
643
-        $closed_reg_statuses = ! empty($closed_reg_statuses) ? $closed_reg_statuses
644
-            : EEM_Registration::closed_reg_statuses();
645
-        if (in_array($registration->status_ID(), $closed_reg_statuses, true)) {
646
-            return false;
647
-        }
648
-        $ticket = $registration->ticket();
649
-        if (! $ticket instanceof EE_Ticket) {
650
-            throw new EE_Error(
651
-                sprintf(
652
-                    esc_html__(
653
-                        'The Ticket for Registration %1$d was not found or is invalid.',
654
-                        'event_espresso'
655
-                    ),
656
-                    $registration->ticket_ID()
657
-                )
658
-            );
659
-        }
660
-        $registration->set_final_price($ticket->price());
661
-        if ($update_reg) {
662
-            $registration->save();
663
-        }
664
-        return true;
665
-    }
666
-
667
-
668
-    /**
669
-     * generate_ONE_registration_from_line_item
670
-     * Although a ticket line item may have a quantity greater than 1,
671
-     * this method will ONLY CREATE ONE REGISTRATION !!!
672
-     * Regardless of the ticket line item quantity.
673
-     * This means that any code calling this method is responsible for ensuring
674
-     * that the final registration count matches the ticket line item quantity.
675
-     * This was done to make it easier to match the number of registrations
676
-     * to the number of tickets in the cart, when the cart has been edited
677
-     * after SPCO has already been initialized. So if an additional ticket was added to the cart, you can simply pass
678
-     * the line item to this method to add a second ticket, and in this case, you would not want to add 2 tickets.
679
-     *
680
-     * @deprecated
681
-     * @since 4.9.1
682
-     * @param EE_Line_Item    $line_item
683
-     * @param \EE_Transaction $transaction
684
-     * @param int             $att_nmbr
685
-     * @param int             $total_ticket_count
686
-     * @return EE_Registration | null
687
-     * @throws \OutOfRangeException
688
-     * @throws \EventEspresso\core\exceptions\UnexpectedEntityException
689
-     * @throws \EE_Error
690
-     */
691
-    public function generate_ONE_registration_from_line_item(
692
-        EE_Line_Item $line_item,
693
-        EE_Transaction $transaction,
694
-        $att_nmbr = 1,
695
-        $total_ticket_count = 1
696
-    ) {
697
-        EE_Error::doing_it_wrong(
698
-            __CLASS__ . '::' . __FUNCTION__,
699
-            sprintf(
700
-                esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
701
-                '\EventEspresso\core\domain\services\registration\CreateRegistrationService::create()'
702
-            ),
703
-            '4.9.1',
704
-            '5.0.0'
705
-        );
706
-        // grab the related ticket object for this line_item
707
-        $ticket = $line_item->ticket();
708
-        if (! $ticket instanceof EE_Ticket) {
709
-            EE_Error::add_error(
710
-                sprintf(
711
-                    esc_html__('Line item %s did not contain a valid ticket', 'event_espresso'),
712
-                    $line_item->ID()
713
-                ),
714
-                __FILE__,
715
-                __FUNCTION__,
716
-                __LINE__
717
-            );
718
-            return null;
719
-        }
720
-        $registration_service = new CreateRegistrationService();
721
-        // then generate a new registration from that
722
-        return $registration_service->create(
723
-            $ticket->get_related_event(),
724
-            $transaction,
725
-            $ticket,
726
-            $line_item,
727
-            $att_nmbr,
728
-            $total_ticket_count
729
-        );
730
-    }
731
-
732
-
733
-    /**
734
-     * generates reg_url_link
735
-     *
736
-     * @deprecated
737
-     * @since 4.9.1
738
-     * @param int                   $att_nmbr
739
-     * @param EE_Line_Item | string $item
740
-     * @return string
741
-     * @throws InvalidArgumentException
742
-     */
743
-    public function generate_reg_url_link($att_nmbr, $item)
744
-    {
745
-        EE_Error::doing_it_wrong(
746
-            __CLASS__ . '::' . __FUNCTION__,
747
-            sprintf(
748
-                esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
749
-                'EventEspresso\core\domain\entities\RegUrlLink'
750
-            ),
751
-            '4.9.1',
752
-            '5.0.0'
753
-        );
754
-        return new RegUrlLink($att_nmbr, $item);
755
-    }
756
-
757
-
758
-    /**
759
-     * generates reg code
760
-     *
761
-     * @deprecated
762
-     * @since 4.9.1
763
-     * @param EE_Registration $registration
764
-     * @return string
765
-     * @throws EE_Error
766
-     * @throws EntityNotFoundException
767
-     * @throws InvalidArgumentException
768
-     */
769
-    public function generate_reg_code(EE_Registration $registration)
770
-    {
771
-        EE_Error::doing_it_wrong(
772
-            __CLASS__ . '::' . __FUNCTION__,
773
-            sprintf(
774
-                esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
775
-                'EventEspresso\core\domain\entities\RegCode'
776
-            ),
777
-            '4.9.1',
778
-            '5.0.0'
779
-        );
780
-        return apply_filters(
781
-            'FHEE__EE_Registration_Processor___generate_reg_code__new_reg_code',
782
-            new RegCode(
783
-                RegUrlLink::fromRegistration($registration),
784
-                $registration->transaction(),
785
-                $registration->ticket()
786
-            ),
787
-            $registration
788
-        );
789
-    }
27
+	/**
28
+	 * @var EE_Registration_Processor $_instance
29
+	 * @access    private
30
+	 */
31
+	private static $_instance;
32
+
33
+	/**
34
+	 * initial reg status at the beginning of this request.
35
+	 * indexed by registration ID
36
+	 *
37
+	 * @var array
38
+	 */
39
+	protected $_old_reg_status = array();
40
+
41
+	/**
42
+	 * reg status at the end of the request after all processing.
43
+	 * indexed by registration ID
44
+	 *
45
+	 * @var array
46
+	 */
47
+	protected $_new_reg_status = array();
48
+
49
+	/**
50
+	 * amounts paid at the end of the request after all processing.
51
+	 * indexed by registration ID
52
+	 *
53
+	 * @var array
54
+	 */
55
+	protected static $_amount_paid = array();
56
+
57
+	/**
58
+	 * Cache of the reg final price for registrations corresponding to a ticket line item
59
+	 *
60
+	 * @deprecated
61
+	 * @var array @see EEH_Line_Item::calculate_reg_final_prices_per_line_item()'s return value
62
+	 */
63
+	protected $_reg_final_price_per_tkt_line_item;
64
+
65
+	/**
66
+	 * @var EE_Request $request
67
+	 */
68
+	protected $request;
69
+
70
+
71
+	/**
72
+	 * @singleton method used to instantiate class object
73
+	 * @param EE_Request|null $request
74
+	 * @return EE_Registration_Processor instance
75
+	 * @throws \InvalidArgumentException
76
+	 * @throws \EventEspresso\core\exceptions\InvalidInterfaceException
77
+	 * @throws \EventEspresso\core\exceptions\InvalidDataTypeException
78
+	 */
79
+	public static function instance(EE_Request $request = null)
80
+	{
81
+		// check if class object is instantiated
82
+		if (! self::$_instance instanceof EE_Registration_Processor) {
83
+			if (! $request instanceof EE_Request) {
84
+				$request = LoaderFactory::getLoader()->getShared('EE_Request');
85
+			}
86
+			self::$_instance = new self($request);
87
+		}
88
+		return self::$_instance;
89
+	}
90
+
91
+
92
+	/**
93
+	 * EE_Registration_Processor constructor.
94
+	 *
95
+	 * @param EE_Request $request
96
+	 */
97
+	public function __construct(EE_Request $request)
98
+	{
99
+		$this->request = $request;
100
+	}
101
+
102
+
103
+	/**
104
+	 * @param int $REG_ID
105
+	 * @return string
106
+	 */
107
+	public function old_reg_status($REG_ID)
108
+	{
109
+		return isset($this->_old_reg_status[ $REG_ID ]) ? $this->_old_reg_status[ $REG_ID ] : null;
110
+	}
111
+
112
+
113
+	/**
114
+	 * @param int    $REG_ID
115
+	 * @param string $old_reg_status
116
+	 */
117
+	public function set_old_reg_status($REG_ID, $old_reg_status)
118
+	{
119
+		// only set the first time
120
+		if (! isset($this->_old_reg_status[ $REG_ID ])) {
121
+			$this->_old_reg_status[ $REG_ID ] = $old_reg_status;
122
+		}
123
+	}
124
+
125
+
126
+	/**
127
+	 * @param int $REG_ID
128
+	 * @return string
129
+	 */
130
+	public function new_reg_status($REG_ID)
131
+	{
132
+		return isset($this->_new_reg_status[ $REG_ID ]) ? $this->_new_reg_status[ $REG_ID ] : null;
133
+	}
134
+
135
+
136
+	/**
137
+	 * @param int    $REG_ID
138
+	 * @param string $new_reg_status
139
+	 */
140
+	public function set_new_reg_status($REG_ID, $new_reg_status)
141
+	{
142
+		$this->_new_reg_status[ $REG_ID ] = $new_reg_status;
143
+	}
144
+
145
+
146
+	/**
147
+	 * reg_status_updated
148
+	 *
149
+	 * @param int $REG_ID
150
+	 * @return bool
151
+	 */
152
+	public function reg_status_updated($REG_ID)
153
+	{
154
+		return $this->new_reg_status($REG_ID) !== $this->old_reg_status($REG_ID);
155
+	}
156
+
157
+
158
+	/**
159
+	 * @param EE_Registration $registration
160
+	 * @throws EE_Error
161
+	 * @throws EntityNotFoundException
162
+	 * @throws InvalidArgumentException
163
+	 * @throws InvalidDataTypeException
164
+	 * @throws InvalidInterfaceException
165
+	 * @throws ReflectionException
166
+	 * @throws RuntimeException
167
+	 */
168
+	public function update_registration_status_and_trigger_notifications(EE_Registration $registration)
169
+	{
170
+		$this->toggle_incomplete_registration_status_to_default($registration, false);
171
+		$this->toggle_registration_status_for_default_approved_events($registration, false);
172
+		$this->toggle_registration_status_if_no_monies_owing($registration, false);
173
+		$registration->save();
174
+		// trigger notifications
175
+		$this->trigger_registration_update_notifications($registration);
176
+	}
177
+
178
+
179
+	/**
180
+	 *    manually_update_registration_status
181
+	 *
182
+	 * @access public
183
+	 * @param EE_Registration $registration
184
+	 * @param string          $new_reg_status
185
+	 * @param bool            $save TRUE will save the registration if the status is updated, FALSE will leave that up
186
+	 *                              to client code
187
+	 * @return bool
188
+	 * @throws EE_Error
189
+	 * @throws EntityNotFoundException
190
+	 * @throws InvalidArgumentException
191
+	 * @throws InvalidDataTypeException
192
+	 * @throws InvalidInterfaceException
193
+	 * @throws ReflectionException
194
+	 * @throws RuntimeException
195
+	 */
196
+	public function manually_update_registration_status(
197
+		EE_Registration $registration,
198
+		$new_reg_status = '',
199
+		$save = true
200
+	) {
201
+		// set initial REG_Status
202
+		$this->set_old_reg_status($registration->ID(), $registration->status_ID());
203
+		// set incoming REG_Status
204
+		$this->set_new_reg_status($registration->ID(), $new_reg_status);
205
+		// toggle reg status but only if it has changed and the user can do so
206
+		if ($this->reg_status_updated($registration->ID())
207
+			&& (
208
+				(! $this->request->isAdmin() || $this->request->isFrontAjax())
209
+				|| EE_Registry::instance()->CAP->current_user_can(
210
+					'ee_edit_registration',
211
+					'toggle_registration_status',
212
+					$registration->ID()
213
+				)
214
+			)
215
+		) {
216
+			// change status to new value
217
+			$updated = $registration->set_status($this->new_reg_status($registration->ID()));
218
+			if ($updated && $save) {
219
+				$registration->save();
220
+			}
221
+			return true;
222
+		}
223
+		return false;
224
+	}
225
+
226
+
227
+	/**
228
+	 *    toggle_incomplete_registration_status_to_default
229
+	 *        changes any incomplete registrations to either the event or global default registration status
230
+	 *
231
+	 * @access public
232
+	 * @param EE_Registration       $registration
233
+	 * @param bool                  $save TRUE will save the registration if the status is updated, FALSE will leave
234
+	 *                                    that up to client code
235
+	 * @param ContextInterface|null $context
236
+	 * @return void
237
+	 * @throws EE_Error
238
+	 * @throws InvalidArgumentException
239
+	 * @throws ReflectionException
240
+	 * @throws RuntimeException
241
+	 * @throws EntityNotFoundException
242
+	 * @throws InvalidDataTypeException
243
+	 * @throws InvalidInterfaceException
244
+	 */
245
+	public function toggle_incomplete_registration_status_to_default(
246
+		EE_Registration $registration,
247
+		$save = true,
248
+		ContextInterface $context = null
249
+	) {
250
+		$existing_reg_status = $registration->status_ID();
251
+		// set initial REG_Status
252
+		$this->set_old_reg_status($registration->ID(), $existing_reg_status);
253
+		// is the registration currently incomplete ?
254
+		if ($registration->status_ID() === EEM_Registration::status_id_incomplete) {
255
+			// grab default reg status for the event, if set
256
+			$event_default_registration_status = $registration->event()->default_registration_status();
257
+			// if no default reg status is set for the event, then use the global value
258
+			$STS_ID = ! empty($event_default_registration_status)
259
+				? $event_default_registration_status
260
+				: EE_Registry::instance()->CFG->registration->default_STS_ID;
261
+			// if the event default reg status is approved, then downgrade temporarily to payment pending to ensure that payments are triggered
262
+			$STS_ID = $STS_ID === EEM_Registration::status_id_approved ? EEM_Registration::status_id_pending_payment
263
+				: $STS_ID;
264
+			// set incoming REG_Status
265
+			$this->set_new_reg_status($registration->ID(), $STS_ID);
266
+			$registration->set_status($STS_ID, false, $context);
267
+			if ($save) {
268
+				$registration->save();
269
+			}
270
+			// don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
271
+			if (! EE_Processor_Base::$IPN) {
272
+				// otherwise, send out notifications
273
+				add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
274
+			}
275
+			// DEBUG LOG
276
+			// $this->log(
277
+			//     __CLASS__,
278
+			//     __FUNCTION__,
279
+			//     __LINE__,
280
+			//     $registration->transaction(),
281
+			//     array(
282
+			//         'IPN' => EE_Processor_Base::$IPN,
283
+			//         'deliver_notifications' => has_filter(
284
+			//             'FHEE__EED_Messages___maybe_registration__deliver_notifications'
285
+			//         ),
286
+			//     )
287
+			// );
288
+		}
289
+	}
290
+
291
+
292
+	/**
293
+	 *    toggle_registration_status_for_default_approved_events
294
+	 *
295
+	 * @access public
296
+	 * @param EE_Registration $registration
297
+	 * @param bool            $save TRUE will save the registration if the status is updated, FALSE will leave that up
298
+	 *                              to client code
299
+	 * @return bool
300
+	 * @throws EE_Error
301
+	 * @throws EntityNotFoundException
302
+	 * @throws InvalidArgumentException
303
+	 * @throws InvalidDataTypeException
304
+	 * @throws InvalidInterfaceException
305
+	 * @throws ReflectionException
306
+	 * @throws RuntimeException
307
+	 */
308
+	public function toggle_registration_status_for_default_approved_events(EE_Registration $registration, $save = true)
309
+	{
310
+		$reg_status = $registration->status_ID();
311
+		// set initial REG_Status
312
+		$this->set_old_reg_status($registration->ID(), $reg_status);
313
+		// if not already, toggle reg status to approved IF the event default reg status is approved
314
+		// ( as long as the registration wasn't cancelled or declined at some point )
315
+		if ($reg_status !== EEM_Registration::status_id_cancelled
316
+			&& $reg_status
317
+			   !== EEM_Registration::status_id_declined
318
+			&& $reg_status !== EEM_Registration::status_id_approved
319
+			&& $registration->event()->default_registration_status() === EEM_Registration::status_id_approved
320
+		) {
321
+			// set incoming REG_Status
322
+			$this->set_new_reg_status($registration->ID(), EEM_Registration::status_id_approved);
323
+			// toggle status to approved
324
+			$registration->set_status(EEM_Registration::status_id_approved);
325
+			if ($save) {
326
+				$registration->save();
327
+			}
328
+			// don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
329
+			if (! EE_Processor_Base::$IPN) {
330
+				// otherwise, send out notifications
331
+				add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
332
+			}
333
+			// DEBUG LOG
334
+			// $this->log(
335
+			//     __CLASS__,
336
+			//     __FUNCTION__,
337
+			//     __LINE__,
338
+			//     $registration->transaction(),
339
+			//     array(
340
+			//         'IPN' => EE_Processor_Base::$IPN,
341
+			//         'deliver_notifications' => has_filter(
342
+			//             'FHEE__EED_Messages___maybe_registration__deliver_notifications'
343
+			//         ),
344
+			//     )
345
+			// );
346
+			return true;
347
+		}
348
+		return false;
349
+	}
350
+
351
+
352
+	/**
353
+	 *    toggle_registration_statuses_if_no_monies_owing
354
+	 *
355
+	 * @access public
356
+	 * @param EE_Registration $registration
357
+	 * @param bool            $save TRUE will save the registration if the status is updated, FALSE will leave that up
358
+	 *                              to client code
359
+	 * @param array           $additional_details
360
+	 * @return bool
361
+	 * @throws EE_Error
362
+	 * @throws EntityNotFoundException
363
+	 * @throws InvalidArgumentException
364
+	 * @throws InvalidDataTypeException
365
+	 * @throws InvalidInterfaceException
366
+	 * @throws ReflectionException
367
+	 * @throws RuntimeException
368
+	 */
369
+	public function toggle_registration_status_if_no_monies_owing(
370
+		EE_Registration $registration,
371
+		$save = true,
372
+		array $additional_details = array()
373
+	) {
374
+		// set initial REG_Status
375
+		$this->set_old_reg_status($registration->ID(), $registration->status_ID());
376
+		// was a payment just made ?
377
+		$payment = isset($additional_details['payment_updates'], $additional_details['last_payment'])
378
+				   && $additional_details['payment_updates']
379
+				   && $additional_details['last_payment'] instanceof EE_Payment
380
+			? $additional_details['last_payment']
381
+			: null;
382
+		$total_paid = array_sum(self::$_amount_paid);
383
+		// toggle reg status to approved IF
384
+		if (// REG status is pending payment
385
+			$registration->status_ID() === EEM_Registration::status_id_pending_payment
386
+			// AND no monies are owing
387
+			&& (
388
+				(
389
+					$registration->transaction()->is_completed()
390
+					|| $registration->transaction()->is_overpaid()
391
+					|| $registration->transaction()->is_free()
392
+					|| apply_filters(
393
+						'FHEE__EE_Registration_Processor__toggle_registration_status_if_no_monies_owing',
394
+						false,
395
+						$registration
396
+					)
397
+				)
398
+				|| (
399
+					$payment instanceof EE_Payment && $payment->is_approved()
400
+					&& // this specific registration has not yet been paid for
401
+					! isset(self::$_amount_paid[ $registration->ID() ])
402
+					&& // payment amount, less what we have already attributed to other registrations, is greater than this reg's final price
403
+					$payment->amount() - $total_paid >= $registration->final_price()
404
+				)
405
+			)
406
+		) {
407
+			// mark as paid
408
+			self::$_amount_paid[ $registration->ID() ] = $registration->final_price();
409
+			// track new REG_Status
410
+			$this->set_new_reg_status($registration->ID(), EEM_Registration::status_id_approved);
411
+			// toggle status to approved
412
+			$registration->set_status(EEM_Registration::status_id_approved);
413
+			if ($save) {
414
+				$registration->save();
415
+			}
416
+			// don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
417
+			if (! EE_Processor_Base::$IPN) {
418
+				// otherwise, send out notifications
419
+				add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
420
+			}
421
+			// DEBUG LOG
422
+			// $this->log(
423
+			//     __CLASS__,
424
+			//     __FUNCTION__,
425
+			//     __LINE__,
426
+			//     $registration->transaction(),
427
+			//     array(
428
+			//         'IPN' => EE_Processor_Base::$IPN,
429
+			//         'deliver_notifications' => has_filter(
430
+			//             'FHEE__EED_Messages___maybe_registration__deliver_notifications'
431
+			//         ),
432
+			//     )
433
+			// );
434
+			return true;
435
+		}
436
+		return false;
437
+	}
438
+
439
+
440
+	/**
441
+	 *    registration_status_changed
442
+	 *
443
+	 * @access public
444
+	 * @param EE_Registration $registration
445
+	 * @param array           $additional_details
446
+	 * @return void
447
+	 */
448
+	public function trigger_registration_update_notifications($registration, array $additional_details = array())
449
+	{
450
+		try {
451
+			if (! $registration instanceof EE_Registration) {
452
+				throw new EE_Error(
453
+					esc_html__('An invalid registration was received.', 'event_espresso')
454
+				);
455
+			}
456
+			// EE_Registry::instance()->load_helper('Debug_Tools');
457
+			// EEH_Debug_Tools::log(
458
+			//     __CLASS__,
459
+			//     __FUNCTION__,
460
+			//     __LINE__,
461
+			//     array($registration->transaction(), $additional_details),
462
+			//     false,
463
+			//     'EE_Transaction: ' . $registration->transaction()->ID()
464
+			// );
465
+			if (! $registration->is_primary_registrant()) {
466
+				return;
467
+			}
468
+			do_action(
469
+				'AHEE__EE_Registration_Processor__trigger_registration_update_notifications',
470
+				$registration,
471
+				$additional_details
472
+			);
473
+		} catch (Exception $e) {
474
+			EE_Error::add_error($e->getMessage(), $e->getFile(), 'unknown_function_from_exception', $e->getLine());
475
+		}
476
+	}
477
+
478
+
479
+	/**
480
+	 * sets reg status based either on passed param or on transaction status and event pre-approval setting
481
+	 *
482
+	 * @param EE_Registration $registration
483
+	 * @param array           $additional_details
484
+	 * @return bool
485
+	 * @throws EE_Error
486
+	 * @throws EntityNotFoundException
487
+	 * @throws InvalidArgumentException
488
+	 * @throws InvalidDataTypeException
489
+	 * @throws InvalidInterfaceException
490
+	 * @throws ReflectionException
491
+	 * @throws RuntimeException
492
+	 */
493
+	public function update_registration_after_checkout_or_payment(
494
+		EE_Registration $registration,
495
+		array $additional_details = array()
496
+	) {
497
+		// set initial REG_Status
498
+		$this->set_old_reg_status($registration->ID(), $registration->status_ID());
499
+		// if the registration status gets updated, then save the registration
500
+		if ($this->toggle_registration_status_for_default_approved_events($registration, false)
501
+			|| $this->toggle_registration_status_if_no_monies_owing(
502
+				$registration,
503
+				false,
504
+				$additional_details
505
+			)
506
+		) {
507
+			$registration->save();
508
+		}
509
+		// set new  REG_Status
510
+		$this->set_new_reg_status($registration->ID(), $registration->status_ID());
511
+		return $this->reg_status_updated($registration->ID())
512
+			   && $this->new_reg_status($registration->ID()) === EEM_Registration::status_id_approved;
513
+	}
514
+
515
+
516
+	/**
517
+	 * Updates the registration' final prices based on the current line item tree (taking into account
518
+	 * discounts, taxes, and other line items unrelated to tickets.)
519
+	 *
520
+	 * @param EE_Transaction $transaction
521
+	 * @param boolean        $save_regs whether to immediately save registrations in this function or not
522
+	 * @return void
523
+	 * @throws EE_Error
524
+	 * @throws InvalidArgumentException
525
+	 * @throws InvalidDataTypeException
526
+	 * @throws InvalidInterfaceException
527
+	 * @throws RuntimeException
528
+	 */
529
+	public function update_registration_final_prices($transaction, $save_regs = true)
530
+	{
531
+		$reg_final_price_per_ticket_line_item = EEH_Line_Item::calculate_reg_final_prices_per_line_item(
532
+			$transaction->total_line_item()
533
+		);
534
+		foreach ($transaction->registrations() as $registration) {
535
+			/** @var EE_Line_Item $line_item */
536
+			$line_item = EEM_Line_Item::instance()->get_line_item_for_registration($registration);
537
+			if (isset($reg_final_price_per_ticket_line_item[ $line_item->ID() ])) {
538
+				$registration->set_final_price($reg_final_price_per_ticket_line_item[ $line_item->ID() ]);
539
+				if ($save_regs) {
540
+					$registration->save();
541
+				}
542
+			}
543
+		}
544
+		// and make sure there's no rounding problem
545
+		$this->fix_reg_final_price_rounding_issue($transaction);
546
+	}
547
+
548
+
549
+	/**
550
+	 * Makes sure there is no rounding errors for the REG_final_prices.
551
+	 * Eg, if we have 3 registrations for $1, and there is a $0.01 discount between the three of them,
552
+	 * they will each be for $0.99333333, which gets rounded to $1 again.
553
+	 * So the transaction total will be $2.99, but each registration will be for $1,
554
+	 * so if each registrant paid individually they will have overpaid by $0.01.
555
+	 * So in order to overcome this, we check for any difference, and if there is a difference
556
+	 * we just grab one registrant at random and make them responsible for it.
557
+	 * This should be used after setting REG_final_prices (it's done automatically as part of
558
+	 * EE_Registration_Processor::update_registration_final_prices())
559
+	 *
560
+	 * @param EE_Transaction $transaction
561
+	 * @return bool success verifying that there is NO difference after this method is done
562
+	 * @throws EE_Error
563
+	 * @throws InvalidArgumentException
564
+	 * @throws InvalidDataTypeException
565
+	 * @throws InvalidInterfaceException
566
+	 */
567
+	public function fix_reg_final_price_rounding_issue($transaction)
568
+	{
569
+		$reg_final_price_sum = EEM_Registration::instance()->sum(
570
+			array(
571
+				array(
572
+					'TXN_ID' => $transaction->ID(),
573
+				),
574
+			),
575
+			'REG_final_price'
576
+		);
577
+		$diff = $transaction->total() - $reg_final_price_sum;
578
+		// ok then, just grab one of the registrations
579
+		if ($diff !== 0) {
580
+			$a_reg = EEM_Registration::instance()->get_one(
581
+				array(
582
+					array(
583
+						'TXN_ID' => $transaction->ID(),
584
+					),
585
+				)
586
+			);
587
+			return $a_reg instanceof EE_Registration
588
+				? (bool) $a_reg->save(array('REG_final_price' => $a_reg->final_price() + $diff))
589
+				: false;
590
+		}
591
+		return true;
592
+	}
593
+
594
+
595
+	/**
596
+	 * update_registration_after_being_canceled_or_declined
597
+	 *
598
+	 * @param EE_Registration $registration
599
+	 * @param array           $closed_reg_statuses
600
+	 * @param bool            $update_reg
601
+	 * @return bool
602
+	 * @throws EE_Error
603
+	 * @throws RuntimeException
604
+	 */
605
+	public function update_registration_after_being_canceled_or_declined(
606
+		EE_Registration $registration,
607
+		array $closed_reg_statuses = array(),
608
+		$update_reg = true
609
+	) {
610
+		// these reg statuses should not be considered in any calculations involving monies owing
611
+		$closed_reg_statuses = ! empty($closed_reg_statuses)
612
+			? $closed_reg_statuses
613
+			: EEM_Registration::closed_reg_statuses();
614
+		if (! in_array($registration->status_ID(), $closed_reg_statuses, true)) {
615
+			return false;
616
+		}
617
+		// release a reserved ticket by decrementing ticket and datetime reserved values
618
+		$registration->release_reserved_ticket(true, 'RegProcessor:' . __LINE__);
619
+		$registration->set_final_price(0);
620
+		if ($update_reg) {
621
+			$registration->save();
622
+		}
623
+		return true;
624
+	}
625
+
626
+
627
+	/**
628
+	 * update_canceled_or_declined_registration_after_being_reinstated
629
+	 *
630
+	 * @param EE_Registration $registration
631
+	 * @param array           $closed_reg_statuses
632
+	 * @param bool            $update_reg
633
+	 * @return bool
634
+	 * @throws EE_Error
635
+	 * @throws RuntimeException
636
+	 */
637
+	public function update_canceled_or_declined_registration_after_being_reinstated(
638
+		EE_Registration $registration,
639
+		array $closed_reg_statuses = array(),
640
+		$update_reg = true
641
+	) {
642
+		// these reg statuses should not be considered in any calculations involving monies owing
643
+		$closed_reg_statuses = ! empty($closed_reg_statuses) ? $closed_reg_statuses
644
+			: EEM_Registration::closed_reg_statuses();
645
+		if (in_array($registration->status_ID(), $closed_reg_statuses, true)) {
646
+			return false;
647
+		}
648
+		$ticket = $registration->ticket();
649
+		if (! $ticket instanceof EE_Ticket) {
650
+			throw new EE_Error(
651
+				sprintf(
652
+					esc_html__(
653
+						'The Ticket for Registration %1$d was not found or is invalid.',
654
+						'event_espresso'
655
+					),
656
+					$registration->ticket_ID()
657
+				)
658
+			);
659
+		}
660
+		$registration->set_final_price($ticket->price());
661
+		if ($update_reg) {
662
+			$registration->save();
663
+		}
664
+		return true;
665
+	}
666
+
667
+
668
+	/**
669
+	 * generate_ONE_registration_from_line_item
670
+	 * Although a ticket line item may have a quantity greater than 1,
671
+	 * this method will ONLY CREATE ONE REGISTRATION !!!
672
+	 * Regardless of the ticket line item quantity.
673
+	 * This means that any code calling this method is responsible for ensuring
674
+	 * that the final registration count matches the ticket line item quantity.
675
+	 * This was done to make it easier to match the number of registrations
676
+	 * to the number of tickets in the cart, when the cart has been edited
677
+	 * after SPCO has already been initialized. So if an additional ticket was added to the cart, you can simply pass
678
+	 * the line item to this method to add a second ticket, and in this case, you would not want to add 2 tickets.
679
+	 *
680
+	 * @deprecated
681
+	 * @since 4.9.1
682
+	 * @param EE_Line_Item    $line_item
683
+	 * @param \EE_Transaction $transaction
684
+	 * @param int             $att_nmbr
685
+	 * @param int             $total_ticket_count
686
+	 * @return EE_Registration | null
687
+	 * @throws \OutOfRangeException
688
+	 * @throws \EventEspresso\core\exceptions\UnexpectedEntityException
689
+	 * @throws \EE_Error
690
+	 */
691
+	public function generate_ONE_registration_from_line_item(
692
+		EE_Line_Item $line_item,
693
+		EE_Transaction $transaction,
694
+		$att_nmbr = 1,
695
+		$total_ticket_count = 1
696
+	) {
697
+		EE_Error::doing_it_wrong(
698
+			__CLASS__ . '::' . __FUNCTION__,
699
+			sprintf(
700
+				esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
701
+				'\EventEspresso\core\domain\services\registration\CreateRegistrationService::create()'
702
+			),
703
+			'4.9.1',
704
+			'5.0.0'
705
+		);
706
+		// grab the related ticket object for this line_item
707
+		$ticket = $line_item->ticket();
708
+		if (! $ticket instanceof EE_Ticket) {
709
+			EE_Error::add_error(
710
+				sprintf(
711
+					esc_html__('Line item %s did not contain a valid ticket', 'event_espresso'),
712
+					$line_item->ID()
713
+				),
714
+				__FILE__,
715
+				__FUNCTION__,
716
+				__LINE__
717
+			);
718
+			return null;
719
+		}
720
+		$registration_service = new CreateRegistrationService();
721
+		// then generate a new registration from that
722
+		return $registration_service->create(
723
+			$ticket->get_related_event(),
724
+			$transaction,
725
+			$ticket,
726
+			$line_item,
727
+			$att_nmbr,
728
+			$total_ticket_count
729
+		);
730
+	}
731
+
732
+
733
+	/**
734
+	 * generates reg_url_link
735
+	 *
736
+	 * @deprecated
737
+	 * @since 4.9.1
738
+	 * @param int                   $att_nmbr
739
+	 * @param EE_Line_Item | string $item
740
+	 * @return string
741
+	 * @throws InvalidArgumentException
742
+	 */
743
+	public function generate_reg_url_link($att_nmbr, $item)
744
+	{
745
+		EE_Error::doing_it_wrong(
746
+			__CLASS__ . '::' . __FUNCTION__,
747
+			sprintf(
748
+				esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
749
+				'EventEspresso\core\domain\entities\RegUrlLink'
750
+			),
751
+			'4.9.1',
752
+			'5.0.0'
753
+		);
754
+		return new RegUrlLink($att_nmbr, $item);
755
+	}
756
+
757
+
758
+	/**
759
+	 * generates reg code
760
+	 *
761
+	 * @deprecated
762
+	 * @since 4.9.1
763
+	 * @param EE_Registration $registration
764
+	 * @return string
765
+	 * @throws EE_Error
766
+	 * @throws EntityNotFoundException
767
+	 * @throws InvalidArgumentException
768
+	 */
769
+	public function generate_reg_code(EE_Registration $registration)
770
+	{
771
+		EE_Error::doing_it_wrong(
772
+			__CLASS__ . '::' . __FUNCTION__,
773
+			sprintf(
774
+				esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
775
+				'EventEspresso\core\domain\entities\RegCode'
776
+			),
777
+			'4.9.1',
778
+			'5.0.0'
779
+		);
780
+		return apply_filters(
781
+			'FHEE__EE_Registration_Processor___generate_reg_code__new_reg_code',
782
+			new RegCode(
783
+				RegUrlLink::fromRegistration($registration),
784
+				$registration->transaction(),
785
+				$registration->ticket()
786
+			),
787
+			$registration
788
+		);
789
+	}
790 790
 }
Please login to merge, or discard this patch.
Spacing   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -79,8 +79,8 @@  discard block
 block discarded – undo
79 79
     public static function instance(EE_Request $request = null)
80 80
     {
81 81
         // check if class object is instantiated
82
-        if (! self::$_instance instanceof EE_Registration_Processor) {
83
-            if (! $request instanceof EE_Request) {
82
+        if ( ! self::$_instance instanceof EE_Registration_Processor) {
83
+            if ( ! $request instanceof EE_Request) {
84 84
                 $request = LoaderFactory::getLoader()->getShared('EE_Request');
85 85
             }
86 86
             self::$_instance = new self($request);
@@ -106,7 +106,7 @@  discard block
 block discarded – undo
106 106
      */
107 107
     public function old_reg_status($REG_ID)
108 108
     {
109
-        return isset($this->_old_reg_status[ $REG_ID ]) ? $this->_old_reg_status[ $REG_ID ] : null;
109
+        return isset($this->_old_reg_status[$REG_ID]) ? $this->_old_reg_status[$REG_ID] : null;
110 110
     }
111 111
 
112 112
 
@@ -117,8 +117,8 @@  discard block
 block discarded – undo
117 117
     public function set_old_reg_status($REG_ID, $old_reg_status)
118 118
     {
119 119
         // only set the first time
120
-        if (! isset($this->_old_reg_status[ $REG_ID ])) {
121
-            $this->_old_reg_status[ $REG_ID ] = $old_reg_status;
120
+        if ( ! isset($this->_old_reg_status[$REG_ID])) {
121
+            $this->_old_reg_status[$REG_ID] = $old_reg_status;
122 122
         }
123 123
     }
124 124
 
@@ -129,7 +129,7 @@  discard block
 block discarded – undo
129 129
      */
130 130
     public function new_reg_status($REG_ID)
131 131
     {
132
-        return isset($this->_new_reg_status[ $REG_ID ]) ? $this->_new_reg_status[ $REG_ID ] : null;
132
+        return isset($this->_new_reg_status[$REG_ID]) ? $this->_new_reg_status[$REG_ID] : null;
133 133
     }
134 134
 
135 135
 
@@ -139,7 +139,7 @@  discard block
 block discarded – undo
139 139
      */
140 140
     public function set_new_reg_status($REG_ID, $new_reg_status)
141 141
     {
142
-        $this->_new_reg_status[ $REG_ID ] = $new_reg_status;
142
+        $this->_new_reg_status[$REG_ID] = $new_reg_status;
143 143
     }
144 144
 
145 145
 
@@ -205,7 +205,7 @@  discard block
 block discarded – undo
205 205
         // toggle reg status but only if it has changed and the user can do so
206 206
         if ($this->reg_status_updated($registration->ID())
207 207
             && (
208
-                (! $this->request->isAdmin() || $this->request->isFrontAjax())
208
+                ( ! $this->request->isAdmin() || $this->request->isFrontAjax())
209 209
                 || EE_Registry::instance()->CAP->current_user_can(
210 210
                     'ee_edit_registration',
211 211
                     'toggle_registration_status',
@@ -268,7 +268,7 @@  discard block
 block discarded – undo
268 268
                 $registration->save();
269 269
             }
270 270
             // don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
271
-            if (! EE_Processor_Base::$IPN) {
271
+            if ( ! EE_Processor_Base::$IPN) {
272 272
                 // otherwise, send out notifications
273 273
                 add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
274 274
             }
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
                 $registration->save();
327 327
             }
328 328
             // don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
329
-            if (! EE_Processor_Base::$IPN) {
329
+            if ( ! EE_Processor_Base::$IPN) {
330 330
                 // otherwise, send out notifications
331 331
                 add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
332 332
             }
@@ -398,14 +398,14 @@  discard block
 block discarded – undo
398 398
                 || (
399 399
                     $payment instanceof EE_Payment && $payment->is_approved()
400 400
                     && // this specific registration has not yet been paid for
401
-                    ! isset(self::$_amount_paid[ $registration->ID() ])
401
+                    ! isset(self::$_amount_paid[$registration->ID()])
402 402
                     && // payment amount, less what we have already attributed to other registrations, is greater than this reg's final price
403 403
                     $payment->amount() - $total_paid >= $registration->final_price()
404 404
                 )
405 405
             )
406 406
         ) {
407 407
             // mark as paid
408
-            self::$_amount_paid[ $registration->ID() ] = $registration->final_price();
408
+            self::$_amount_paid[$registration->ID()] = $registration->final_price();
409 409
             // track new REG_Status
410 410
             $this->set_new_reg_status($registration->ID(), EEM_Registration::status_id_approved);
411 411
             // toggle status to approved
@@ -414,7 +414,7 @@  discard block
 block discarded – undo
414 414
                 $registration->save();
415 415
             }
416 416
             // don't trigger notifications during IPNs because they will get triggered by EE_Payment_Processor
417
-            if (! EE_Processor_Base::$IPN) {
417
+            if ( ! EE_Processor_Base::$IPN) {
418 418
                 // otherwise, send out notifications
419 419
                 add_filter('FHEE__EED_Messages___maybe_registration__deliver_notifications', '__return_true', 10);
420 420
             }
@@ -448,7 +448,7 @@  discard block
 block discarded – undo
448 448
     public function trigger_registration_update_notifications($registration, array $additional_details = array())
449 449
     {
450 450
         try {
451
-            if (! $registration instanceof EE_Registration) {
451
+            if ( ! $registration instanceof EE_Registration) {
452 452
                 throw new EE_Error(
453 453
                     esc_html__('An invalid registration was received.', 'event_espresso')
454 454
                 );
@@ -462,7 +462,7 @@  discard block
 block discarded – undo
462 462
             //     false,
463 463
             //     'EE_Transaction: ' . $registration->transaction()->ID()
464 464
             // );
465
-            if (! $registration->is_primary_registrant()) {
465
+            if ( ! $registration->is_primary_registrant()) {
466 466
                 return;
467 467
             }
468 468
             do_action(
@@ -534,8 +534,8 @@  discard block
 block discarded – undo
534 534
         foreach ($transaction->registrations() as $registration) {
535 535
             /** @var EE_Line_Item $line_item */
536 536
             $line_item = EEM_Line_Item::instance()->get_line_item_for_registration($registration);
537
-            if (isset($reg_final_price_per_ticket_line_item[ $line_item->ID() ])) {
538
-                $registration->set_final_price($reg_final_price_per_ticket_line_item[ $line_item->ID() ]);
537
+            if (isset($reg_final_price_per_ticket_line_item[$line_item->ID()])) {
538
+                $registration->set_final_price($reg_final_price_per_ticket_line_item[$line_item->ID()]);
539 539
                 if ($save_regs) {
540 540
                     $registration->save();
541 541
                 }
@@ -611,11 +611,11 @@  discard block
 block discarded – undo
611 611
         $closed_reg_statuses = ! empty($closed_reg_statuses)
612 612
             ? $closed_reg_statuses
613 613
             : EEM_Registration::closed_reg_statuses();
614
-        if (! in_array($registration->status_ID(), $closed_reg_statuses, true)) {
614
+        if ( ! in_array($registration->status_ID(), $closed_reg_statuses, true)) {
615 615
             return false;
616 616
         }
617 617
         // release a reserved ticket by decrementing ticket and datetime reserved values
618
-        $registration->release_reserved_ticket(true, 'RegProcessor:' . __LINE__);
618
+        $registration->release_reserved_ticket(true, 'RegProcessor:'.__LINE__);
619 619
         $registration->set_final_price(0);
620 620
         if ($update_reg) {
621 621
             $registration->save();
@@ -646,7 +646,7 @@  discard block
 block discarded – undo
646 646
             return false;
647 647
         }
648 648
         $ticket = $registration->ticket();
649
-        if (! $ticket instanceof EE_Ticket) {
649
+        if ( ! $ticket instanceof EE_Ticket) {
650 650
             throw new EE_Error(
651 651
                 sprintf(
652 652
                     esc_html__(
@@ -695,7 +695,7 @@  discard block
 block discarded – undo
695 695
         $total_ticket_count = 1
696 696
     ) {
697 697
         EE_Error::doing_it_wrong(
698
-            __CLASS__ . '::' . __FUNCTION__,
698
+            __CLASS__.'::'.__FUNCTION__,
699 699
             sprintf(
700 700
                 esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
701 701
                 '\EventEspresso\core\domain\services\registration\CreateRegistrationService::create()'
@@ -705,7 +705,7 @@  discard block
 block discarded – undo
705 705
         );
706 706
         // grab the related ticket object for this line_item
707 707
         $ticket = $line_item->ticket();
708
-        if (! $ticket instanceof EE_Ticket) {
708
+        if ( ! $ticket instanceof EE_Ticket) {
709 709
             EE_Error::add_error(
710 710
                 sprintf(
711 711
                     esc_html__('Line item %s did not contain a valid ticket', 'event_espresso'),
@@ -743,7 +743,7 @@  discard block
 block discarded – undo
743 743
     public function generate_reg_url_link($att_nmbr, $item)
744 744
     {
745 745
         EE_Error::doing_it_wrong(
746
-            __CLASS__ . '::' . __FUNCTION__,
746
+            __CLASS__.'::'.__FUNCTION__,
747 747
             sprintf(
748 748
                 esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
749 749
                 'EventEspresso\core\domain\entities\RegUrlLink'
@@ -769,7 +769,7 @@  discard block
 block discarded – undo
769 769
     public function generate_reg_code(EE_Registration $registration)
770 770
     {
771 771
         EE_Error::doing_it_wrong(
772
-            __CLASS__ . '::' . __FUNCTION__,
772
+            __CLASS__.'::'.__FUNCTION__,
773 773
             sprintf(
774 774
                 esc_html__('This method is deprecated. Please use "%s" instead', 'event_espresso'),
775 775
                 'EventEspresso\core\domain\entities\RegCode'
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.