Passed
Pull Request — master (#442)
by Brian
04:21
created
admin/meta-boxes/class-getpaid-meta-box-invoice-shipping-address.php 1 patch
Indentation   +34 added lines, -34 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  */
8 8
 
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit; // Exit if accessed directly
10
+    exit; // Exit if accessed directly
11 11
 }
12 12
 
13 13
 /**
@@ -15,22 +15,22 @@  discard block
 block discarded – undo
15 15
  */
16 16
 class GetPaid_Meta_Box_Invoice_Shipping_Address {
17 17
 
18
-	/**
19
-	 * Output the metabox.
20
-	 *
21
-	 * @param WP_Post $post
22
-	 */
23
-	public static function output( $post ) {
18
+    /**
19
+     * Output the metabox.
20
+     *
21
+     * @param WP_Post $post
22
+     */
23
+    public static function output( $post ) {
24 24
 
25
-		// Retrieve shipping address.
26
-		$shipping_address = get_post_meta( $post->ID, 'shipping_address', true );
25
+        // Retrieve shipping address.
26
+        $shipping_address = get_post_meta( $post->ID, 'shipping_address', true );
27 27
 
28
-		// Abort if it is invalid.
29
-		if ( ! is_array( $shipping_address ) ) {
30
-			return;
31
-		}
28
+        // Abort if it is invalid.
29
+        if ( ! is_array( $shipping_address ) ) {
30
+            return;
31
+        }
32 32
 
33
-		?>
33
+        ?>
34 34
 
35 35
 		<div class="bsui">
36 36
 
@@ -55,31 +55,31 @@  discard block
 block discarded – undo
55 55
 
56 56
 		<?php
57 57
 
58
-	}
58
+    }
59 59
 
60
-	/**
61
-	 * Prepares a value.
62
-	 *
63
-	 * @param array $address
64
-	 * @param string $key
65
-	 * @return string
66
-	 */
67
-	public static function prepare_for_display( $address, $key ) {
60
+    /**
61
+     * Prepares a value.
62
+     *
63
+     * @param array $address
64
+     * @param string $key
65
+     * @return string
66
+     */
67
+    public static function prepare_for_display( $address, $key ) {
68 68
 
69
-		// Prepare the value.
70
-		$value = $address[ $key ];
69
+        // Prepare the value.
70
+        $value = $address[ $key ];
71 71
 
72
-		if ( $key == 'country' ) {
73
-			$value = wpinv_country_name( $value );
74
-		}
72
+        if ( $key == 'country' ) {
73
+            $value = wpinv_country_name( $value );
74
+        }
75 75
 
76
-		if ( $key == 'state' ) {
77
-			$country = isset( $address[ 'country' ] ) ? $address[ 'country' ] : wpinv_get_default_country();
78
-			$value = wpinv_state_name( $value, $country );
79
-		}
76
+        if ( $key == 'state' ) {
77
+            $country = isset( $address[ 'country' ] ) ? $address[ 'country' ] : wpinv_get_default_country();
78
+            $value = wpinv_state_name( $value, $country );
79
+        }
80 80
 
81
-		return sanitize_text_field( $value );
81
+        return sanitize_text_field( $value );
82 82
 
83
-	}
83
+    }
84 84
 
85 85
 }
Please login to merge, or discard this patch.
includes/admin/class-getpaid-metaboxes.php 1 patch
Indentation   +224 added lines, -224 removed lines patch added patch discarded remove patch
@@ -12,240 +12,240 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Metaboxes {
14 14
 
15
-	/**
16
-	 * Only save metaboxes once.
17
-	 *
18
-	 * @var boolean
19
-	 */
20
-	private static $saved_meta_boxes = false;
15
+    /**
16
+     * Only save metaboxes once.
17
+     *
18
+     * @var boolean
19
+     */
20
+    private static $saved_meta_boxes = false;
21 21
 
22 22
     /**
23
-	 * Hook in methods.
24
-	 */
25
-	public static function init() {
26
-
27
-		// Register metaboxes.
28
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::add_meta_boxes', 5, 2 );
29
-
30
-		// Remove metaboxes.
31
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::remove_meta_boxes', 30 );
32
-
33
-		// Rename metaboxes.
34
-		add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::rename_meta_boxes', 45 );
35
-
36
-		// Save metaboxes.
37
-		add_action( 'save_post', 'GetPaid_Metaboxes::save_meta_boxes', 1, 2 );
38
-	}
39
-
40
-	/**
41
-	 * Register core metaboxes.
42
-	 */
43
-	public static function add_meta_boxes( $post_type, $post ) {
44
-		global $wpinv_euvat;
45
-
46
-		// For invoices...
47
-		if ( getpaid_is_invoice_post_type( $post_type ) ) {
48
-			$invoice = new WPInv_Invoice( $post );
49
-
50
-			// Resend invoice.
51
-			if ( ! $invoice->is_draft() && ! $invoice->is_paid() ) {
52
-
53
-				add_meta_box(
54
-					'wpinv-mb-resend-invoice',
55
-					sprintf(
56
-						__( 'Resend %s', 'invoicing' ),
57
-						ucfirst( $invoice->get_type() )
58
-					),
59
-					'GetPaid_Meta_Box_Resend_Invoice::output',
60
-					$post_type,
61
-					'side',
62
-					'low'
63
-				);
64
-
65
-			}
66
-
67
-			// Subscriptions.
68
-			$subscription = getpaid_get_invoice_subscription( $invoice );
69
-			if ( ! empty( $subscription ) ) {
70
-				add_meta_box( 'wpinv-mb-subscriptions', __( 'Subscription Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output', $post_type, 'advanced' );
71
-				add_meta_box( 'wpinv-mb-subscription-invoices', __( 'Related Payments', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_invoices', $post_type, 'advanced' );
72
-			}
73
-
74
-			// Invoice details.
75
-			add_meta_box(
76
-				'wpinv-details',
77
-				sprintf(
78
-					__( '%s Details', 'invoicing' ),
79
-					ucfirst( $invoice->get_type() )
80
-				),
81
-				'GetPaid_Meta_Box_Invoice_Details::output',
82
-				$post_type,
83
-				'side'
84
-			);
85
-
86
-			// Payment details.
87
-			if ( ! $invoice->is_draft() ) {
88
-				add_meta_box( 'wpinv-payment-meta', __( 'Payment Meta', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Payment_Meta::output', $post_type, 'side', 'default' );
89
-			}
90
-
91
-			// Billing details.
92
-			add_meta_box( 'wpinv-address', __( 'Billing Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Address::output', $post_type, 'normal', 'high' );
23
+     * Hook in methods.
24
+     */
25
+    public static function init() {
26
+
27
+        // Register metaboxes.
28
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::add_meta_boxes', 5, 2 );
29
+
30
+        // Remove metaboxes.
31
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::remove_meta_boxes', 30 );
32
+
33
+        // Rename metaboxes.
34
+        add_action( 'add_meta_boxes', 'GetPaid_Metaboxes::rename_meta_boxes', 45 );
35
+
36
+        // Save metaboxes.
37
+        add_action( 'save_post', 'GetPaid_Metaboxes::save_meta_boxes', 1, 2 );
38
+    }
39
+
40
+    /**
41
+     * Register core metaboxes.
42
+     */
43
+    public static function add_meta_boxes( $post_type, $post ) {
44
+        global $wpinv_euvat;
45
+
46
+        // For invoices...
47
+        if ( getpaid_is_invoice_post_type( $post_type ) ) {
48
+            $invoice = new WPInv_Invoice( $post );
49
+
50
+            // Resend invoice.
51
+            if ( ! $invoice->is_draft() && ! $invoice->is_paid() ) {
52
+
53
+                add_meta_box(
54
+                    'wpinv-mb-resend-invoice',
55
+                    sprintf(
56
+                        __( 'Resend %s', 'invoicing' ),
57
+                        ucfirst( $invoice->get_type() )
58
+                    ),
59
+                    'GetPaid_Meta_Box_Resend_Invoice::output',
60
+                    $post_type,
61
+                    'side',
62
+                    'low'
63
+                );
64
+
65
+            }
66
+
67
+            // Subscriptions.
68
+            $subscription = getpaid_get_invoice_subscription( $invoice );
69
+            if ( ! empty( $subscription ) ) {
70
+                add_meta_box( 'wpinv-mb-subscriptions', __( 'Subscription Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output', $post_type, 'advanced' );
71
+                add_meta_box( 'wpinv-mb-subscription-invoices', __( 'Related Payments', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Subscription::output_invoices', $post_type, 'advanced' );
72
+            }
73
+
74
+            // Invoice details.
75
+            add_meta_box(
76
+                'wpinv-details',
77
+                sprintf(
78
+                    __( '%s Details', 'invoicing' ),
79
+                    ucfirst( $invoice->get_type() )
80
+                ),
81
+                'GetPaid_Meta_Box_Invoice_Details::output',
82
+                $post_type,
83
+                'side'
84
+            );
85
+
86
+            // Payment details.
87
+            if ( ! $invoice->is_draft() ) {
88
+                add_meta_box( 'wpinv-payment-meta', __( 'Payment Meta', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Payment_Meta::output', $post_type, 'side', 'default' );
89
+            }
90
+
91
+            // Billing details.
92
+            add_meta_box( 'wpinv-address', __( 'Billing Details', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Address::output', $post_type, 'normal', 'high' );
93 93
 			
94
-			// Invoice items.
95
-			add_meta_box(
96
-				'wpinv-items',
97
-				sprintf(
98
-					__( '%s Items', 'invoicing' ),
99
-					ucfirst( $invoice->get_type() )
100
-				),
101
-				'GetPaid_Meta_Box_Invoice_Items::output',
102
-				$post_type,
103
-				'normal',
104
-				'high'
105
-			);
94
+            // Invoice items.
95
+            add_meta_box(
96
+                'wpinv-items',
97
+                sprintf(
98
+                    __( '%s Items', 'invoicing' ),
99
+                    ucfirst( $invoice->get_type() )
100
+                ),
101
+                'GetPaid_Meta_Box_Invoice_Items::output',
102
+                $post_type,
103
+                'normal',
104
+                'high'
105
+            );
106 106
 			
107
-			// Invoice notes.
108
-			add_meta_box(
109
-				'wpinv-notes',
110
-				sprintf(
111
-					__( '%s Notes', 'invoicing' ),
112
-					ucfirst( $invoice->get_type() )
113
-				),
114
-				'WPInv_Meta_Box_Notes::output',
115
-				$post_type,
116
-				'side',
117
-				'low'
118
-			);
119
-
120
-			// Shipping Address.
121
-			if ( ! empty( $post->ID ) && get_post_meta( $post->ID, 'shipping_address', true ) ) {
122
-				add_meta_box( 'wpinv-invoice-shipping-details', __( 'Shipping Address', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Shipping_Address::output', $post_type, 'side', 'high' );
123
-			}
124
-
125
-			// Payment form information.
126
-			if ( ! empty( $post->ID ) && get_post_meta( $post->ID, 'payment_form_data', true ) ) {
127
-				add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', $post_type, 'side', 'high' );
128
-			}
129
-
130
-		}
131
-
132
-		// For payment forms.
133
-		if ( $post_type == 'wpi_payment_form' ) {
134
-
135
-			// Design payment form.
136
-			add_meta_box( 'wpinv-payment-form-design', __( 'Payment Form', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form::output', 'wpi_payment_form', 'normal' );
137
-
138
-			// Payment form information.
139
-			add_meta_box( 'wpinv-payment-form-info', __( 'Details', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form_Info::output', 'wpi_payment_form', 'side' );
140
-
141
-		}
142
-
143
-		// For invoice items.
144
-		if ( $post_type == 'wpi_item' ) {
145
-
146
-			// Item details.
147
-			add_meta_box( 'wpinv_item_details', __( 'Item Details', 'invoicing' ), 'GetPaid_Meta_Box_Item_Details::output', 'wpi_item', 'normal', 'high' );
148
-
149
-			// If taxes are enabled, register the tax metabox.
150
-			if ( $wpinv_euvat->allow_vat_rules() || $wpinv_euvat->allow_vat_classes() ) {
151
-				add_meta_box( 'wpinv_item_vat', __( 'VAT / Tax', 'invoicing' ), 'GetPaid_Meta_Box_Item_VAT::output', 'wpi_item', 'normal', 'high' );
152
-			}
153
-
154
-			// Item info.
155
-			add_meta_box( 'wpinv_field_item_info', __( 'Item info', 'invoicing' ), 'GetPaid_Meta_Box_Item_Info::output', 'wpi_item', 'side', 'core' );
156
-
157
-		}
158
-
159
-		// For invoice discounts.
160
-		if ( $post_type == 'wpi_discount' ) {
161
-			add_meta_box( 'wpinv_discount_details', __( 'Discount Details', 'invoicing' ), 'GetPaid_Meta_Box_Discount_Details::output', 'wpi_discount', 'normal', 'high' );
162
-		}
107
+            // Invoice notes.
108
+            add_meta_box(
109
+                'wpinv-notes',
110
+                sprintf(
111
+                    __( '%s Notes', 'invoicing' ),
112
+                    ucfirst( $invoice->get_type() )
113
+                ),
114
+                'WPInv_Meta_Box_Notes::output',
115
+                $post_type,
116
+                'side',
117
+                'low'
118
+            );
119
+
120
+            // Shipping Address.
121
+            if ( ! empty( $post->ID ) && get_post_meta( $post->ID, 'shipping_address', true ) ) {
122
+                add_meta_box( 'wpinv-invoice-shipping-details', __( 'Shipping Address', 'invoicing' ), 'GetPaid_Meta_Box_Invoice_Shipping_Address::output', $post_type, 'side', 'high' );
123
+            }
124
+
125
+            // Payment form information.
126
+            if ( ! empty( $post->ID ) && get_post_meta( $post->ID, 'payment_form_data', true ) ) {
127
+                add_meta_box( 'wpinv-invoice-payment-form-details', __( 'Payment Form Details', 'invoicing' ), 'WPInv_Meta_Box_Payment_Form::output_details', $post_type, 'side', 'high' );
128
+            }
129
+
130
+        }
131
+
132
+        // For payment forms.
133
+        if ( $post_type == 'wpi_payment_form' ) {
134
+
135
+            // Design payment form.
136
+            add_meta_box( 'wpinv-payment-form-design', __( 'Payment Form', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form::output', 'wpi_payment_form', 'normal' );
137
+
138
+            // Payment form information.
139
+            add_meta_box( 'wpinv-payment-form-info', __( 'Details', 'invoicing' ), 'GetPaid_Meta_Box_Payment_Form_Info::output', 'wpi_payment_form', 'side' );
140
+
141
+        }
142
+
143
+        // For invoice items.
144
+        if ( $post_type == 'wpi_item' ) {
145
+
146
+            // Item details.
147
+            add_meta_box( 'wpinv_item_details', __( 'Item Details', 'invoicing' ), 'GetPaid_Meta_Box_Item_Details::output', 'wpi_item', 'normal', 'high' );
148
+
149
+            // If taxes are enabled, register the tax metabox.
150
+            if ( $wpinv_euvat->allow_vat_rules() || $wpinv_euvat->allow_vat_classes() ) {
151
+                add_meta_box( 'wpinv_item_vat', __( 'VAT / Tax', 'invoicing' ), 'GetPaid_Meta_Box_Item_VAT::output', 'wpi_item', 'normal', 'high' );
152
+            }
153
+
154
+            // Item info.
155
+            add_meta_box( 'wpinv_field_item_info', __( 'Item info', 'invoicing' ), 'GetPaid_Meta_Box_Item_Info::output', 'wpi_item', 'side', 'core' );
156
+
157
+        }
158
+
159
+        // For invoice discounts.
160
+        if ( $post_type == 'wpi_discount' ) {
161
+            add_meta_box( 'wpinv_discount_details', __( 'Discount Details', 'invoicing' ), 'GetPaid_Meta_Box_Discount_Details::output', 'wpi_discount', 'normal', 'high' );
162
+        }
163 163
 		
164 164
 
165
-	}
165
+    }
166 166
 
167
-	/**
168
-	 * Remove some metaboxes.
169
-	 */
170
-	public static function remove_meta_boxes() {
171
-		remove_meta_box( 'wpseo_meta', 'wpi_invoice', 'normal' );
172
-	}
167
+    /**
168
+     * Remove some metaboxes.
169
+     */
170
+    public static function remove_meta_boxes() {
171
+        remove_meta_box( 'wpseo_meta', 'wpi_invoice', 'normal' );
172
+    }
173 173
 
174
-	/**
175
-	 * Rename other metaboxes.
176
-	 */
177
-	public static function rename_meta_boxes() {
174
+    /**
175
+     * Rename other metaboxes.
176
+     */
177
+    public static function rename_meta_boxes() {
178 178
 		
179
-	}
180
-
181
-	/**
182
-	 * Check if we're saving, then trigger an action based on the post type.
183
-	 *
184
-	 * @param  int    $post_id Post ID.
185
-	 * @param  object $post Post object.
186
-	 */
187
-	public static function save_meta_boxes( $post_id, $post ) {
188
-		$post_id = absint( $post_id );
189
-		$data    = wp_unslash( $_POST );
190
-
191
-		// Do not save for ajax requests.
192
-		if ( ( defined( 'DOING_AJAX') && DOING_AJAX ) || isset( $_REQUEST['bulk_edit'] ) ) {
193
-			return;
194
-		}
195
-
196
-		// $post_id and $post are required
197
-		if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) {
198
-			return;
199
-		}
200
-
201
-		// Dont' save meta boxes for revisions or autosaves.
202
-		if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
203
-			return;
204
-		}
205
-
206
-		// Check the nonce.
207
-		if ( empty( $data['getpaid_meta_nonce'] ) || ! wp_verify_nonce( $data['getpaid_meta_nonce'], 'getpaid_meta_nonce' ) ) {
208
-			return;
209
-		}
210
-
211
-		// Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
212
-		if ( empty( $data['post_ID'] ) || absint( $data['post_ID'] ) !== $post_id ) {
213
-			return;
214
-		}
215
-
216
-		// Check user has permission to edit.
217
-		if ( ! current_user_can( 'edit_post', $post_id ) ) {
218
-			return;
219
-		}
220
-
221
-		if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
222
-
223
-			// We need this save event to run once to avoid potential endless loops.
224
-			self::$saved_meta_boxes = true;
225
-
226
-			return GetPaid_Meta_Box_Invoice_Address::save( $post_id );
227
-
228
-		}
229
-
230
-		// Ensure this is our post type.
231
-		$post_types_map = array(
232
-			'wpi_item'         => 'GetPaid_Meta_Box_Item_Details',
233
-			'wpi_payment_form' => 'GetPaid_Meta_Box_Payment_Form',
234
-			'wpi_discount'     => 'GetPaid_Meta_Box_Discount_Details',
235
-		);
236
-
237
-		// Is this our post type?
238
-		if ( ! isset( $post_types_map[ $post->post_type ] ) ) {
239
-			return;
240
-		}
241
-
242
-		// We need this save event to run once to avoid potential endless loops.
243
-		self::$saved_meta_boxes = true;
179
+    }
180
+
181
+    /**
182
+     * Check if we're saving, then trigger an action based on the post type.
183
+     *
184
+     * @param  int    $post_id Post ID.
185
+     * @param  object $post Post object.
186
+     */
187
+    public static function save_meta_boxes( $post_id, $post ) {
188
+        $post_id = absint( $post_id );
189
+        $data    = wp_unslash( $_POST );
190
+
191
+        // Do not save for ajax requests.
192
+        if ( ( defined( 'DOING_AJAX') && DOING_AJAX ) || isset( $_REQUEST['bulk_edit'] ) ) {
193
+            return;
194
+        }
195
+
196
+        // $post_id and $post are required
197
+        if ( empty( $post_id ) || empty( $post ) || self::$saved_meta_boxes ) {
198
+            return;
199
+        }
200
+
201
+        // Dont' save meta boxes for revisions or autosaves.
202
+        if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || is_int( wp_is_post_revision( $post ) ) || is_int( wp_is_post_autosave( $post ) ) ) {
203
+            return;
204
+        }
205
+
206
+        // Check the nonce.
207
+        if ( empty( $data['getpaid_meta_nonce'] ) || ! wp_verify_nonce( $data['getpaid_meta_nonce'], 'getpaid_meta_nonce' ) ) {
208
+            return;
209
+        }
210
+
211
+        // Check the post being saved == the $post_id to prevent triggering this call for other save_post events.
212
+        if ( empty( $data['post_ID'] ) || absint( $data['post_ID'] ) !== $post_id ) {
213
+            return;
214
+        }
215
+
216
+        // Check user has permission to edit.
217
+        if ( ! current_user_can( 'edit_post', $post_id ) ) {
218
+            return;
219
+        }
220
+
221
+        if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
222
+
223
+            // We need this save event to run once to avoid potential endless loops.
224
+            self::$saved_meta_boxes = true;
225
+
226
+            return GetPaid_Meta_Box_Invoice_Address::save( $post_id );
227
+
228
+        }
229
+
230
+        // Ensure this is our post type.
231
+        $post_types_map = array(
232
+            'wpi_item'         => 'GetPaid_Meta_Box_Item_Details',
233
+            'wpi_payment_form' => 'GetPaid_Meta_Box_Payment_Form',
234
+            'wpi_discount'     => 'GetPaid_Meta_Box_Discount_Details',
235
+        );
236
+
237
+        // Is this our post type?
238
+        if ( ! isset( $post_types_map[ $post->post_type ] ) ) {
239
+            return;
240
+        }
241
+
242
+        // We need this save event to run once to avoid potential endless loops.
243
+        self::$saved_meta_boxes = true;
244 244
 		
245
-		// Save the post.
246
-		$class = $post_types_map[ $post->post_type ];
247
-		$class::save( $post_id, $_POST, $post );
245
+        // Save the post.
246
+        $class = $post_types_map[ $post->post_type ];
247
+        $class::save( $post_id, $_POST, $post );
248 248
 
249
-	}
249
+    }
250 250
 
251 251
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-taxes.php 1 patch
Indentation   +212 added lines, -212 removed lines patch added patch discarded remove patch
@@ -12,231 +12,231 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Payment_Form_Submission_Taxes {
14 14
 
15
-	/**
16
-	 * Submission taxes.
17
-	 * @var array
18
-	 */
19
-	public $taxes = array();
20
-
21
-	/**
22
-	 * Initial tax.
23
-	 * @var float
24
-	 */
25
-	protected $initial_tax = 0;
26
-
27
-	/**
28
-	 * Recurring tax.
29
-	 * @var float
30
-	 */
31
-	protected $recurring_tax = 0;
15
+    /**
16
+     * Submission taxes.
17
+     * @var array
18
+     */
19
+    public $taxes = array();
20
+
21
+    /**
22
+     * Initial tax.
23
+     * @var float
24
+     */
25
+    protected $initial_tax = 0;
26
+
27
+    /**
28
+     * Recurring tax.
29
+     * @var float
30
+     */
31
+    protected $recurring_tax = 0;
32
+
33
+    /**
34
+     * Class constructor
35
+     *
36
+     * @param GetPaid_Payment_Form_Submission $submission
37
+     */
38
+    public function __construct( $submission ) {
39
+
40
+        // Validate VAT number.
41
+        $this->validate_vat( $submission );
42
+
43
+        foreach ( $submission->get_items() as $item ) {
44
+            $this->process_item_tax( $item, $submission );
45
+        }
46
+
47
+        // Process any existing invoice taxes.
48
+        if ( $submission->has_invoice() ) {
49
+            $this->taxes = $submission->get_invoice()->get_taxes();
50
+        }
51
+
52
+        // Add VAT.
53
+        $this->taxes['vat'] = array(
54
+            'name'          => 'vat',
55
+            'initial_tax'   => $this->initial_tax,
56
+            'recurring_tax' => $this->recurring_tax,
57
+        );
58
+
59
+    }
60
+
61
+    /**
62
+     * Maybe process tax.
63
+     *
64
+     * @since 1.0.19
65
+     * @param GetPaid_Form_Item $item
66
+     * @param GetPaid_Payment_Form_Submission $submission
67
+     */
68
+    public function process_item_tax( $item, $submission ) {
69
+
70
+        $rate     = wpinv_get_tax_rate( $submission->country, $submission->state, $item->get_id() );
71
+        $price    = $item->get_sub_total();
72
+        $item_tax = $price * $rate * 0.01;
73
+
74
+        if ( wpinv_prices_include_tax() ) {
75
+            $item_tax = $price - ( $price - $price * $rate * 0.01 );
76
+        }
77
+
78
+        $this->initial_tax += $item_tax;
79
+
80
+        if ( $item->is_recurring() ) {
81
+            $this->recurring_tax += $item_tax;
82
+        }
83
+
84
+    }
85
+
86
+    /**
87
+     * Checks if the submission has a digital item.
88
+     *
89
+     * @param GetPaid_Payment_Form_Submission $submission
90
+     * @since 1.0.19
91
+     * @return bool
92
+     */
93
+    public function has_digital_item( $submission ) {
94
+
95
+        foreach ( $submission->get_items() as $item ) {
96
+
97
+            if ( 'digital' == $item->get_vat_rule() ) {
98
+                return true;
99
+            }
100
+
101
+        }
102
+
103
+        return false;
104
+    }
105
+
106
+    /**
107
+     * Checks if this is an eu store.
108
+     *
109
+     * @since 1.0.19
110
+     * @return bool
111
+     */
112
+    public function is_eu_store() {
113
+        return $this->is_eu_country( wpinv_get_default_country() );
114
+    }
115
+
116
+    /**
117
+     * Checks if this is an eu country.
118
+     *
119
+     * @param string $country
120
+     * @since 1.0.19
121
+     * @return bool
122
+     */
123
+    public function is_eu_country( $country ) {
124
+        return getpaid_is_eu_state( $country ) || getpaid_is_gst_country( $country );
125
+    }
126
+
127
+    /**
128
+     * Checks if this is an eu purchase.
129
+     *
130
+     * @param string $customer_country
131
+     * @since 1.0.19
132
+     * @return bool
133
+     */
134
+    public function is_eu_transaction( $customer_country ) {
135
+        return $this->is_eu_country( $customer_country ) && $this->is_eu_store();
136
+    }
137
+
138
+    /**
139
+     * Retrieves the vat number.
140
+     *
141
+     * @param GetPaid_Payment_Form_Submission $submission
142
+     * @since 1.0.19
143
+     * @return string
144
+     */
145
+    public function get_vat_number( $submission ) {
146
+
147
+        // Retrieve from the posted number.
148
+        $vat_number = $submission->get_field( 'wpinv_vat_number', 'billing' );
149
+        if ( ! empty( $vat_number ) ) {
150
+            return wpinv_clean( $vat_number );
151
+        }
152
+
153
+        // Retrieve from the invoice.
154
+        return $submission->has_invoice() ? $submission->get_invoice()->get_vat_number() : '';
155
+    }
156
+
157
+    /**
158
+     * Retrieves the company.
159
+     *
160
+     * @param GetPaid_Payment_Form_Submission $submission
161
+     * @since 1.0.19
162
+     * @return string
163
+     */
164
+    public function get_company( $submission ) {
165
+
166
+        // Retrieve from the posted data.
167
+        $company = $submission->get_field( 'wpinv_company', 'billing' );
168
+        if ( ! empty( $company ) ) {
169
+            return wpinv_clean( $company );
170
+        }
171
+
172
+        // Retrieve from the invoice.
173
+        return $submission->has_invoice() ? $submission->get_invoice()->get_company() : '';
174
+    }
175
+
176
+    /**
177
+     * Checks if we requires a VAT number.
178
+     *
179
+     * @param bool $ip_in_eu Whether the customer IP is from the EU
180
+     * @param bool $country_in_eu Whether the customer country is from the EU
181
+     * @since 1.0.19
182
+     * @return string
183
+     */
184
+    public function requires_vat( $ip_in_eu, $country_in_eu ) {
185
+
186
+        $prevent_b2c = wpinv_get_option( 'vat_prevent_b2c_purchase' );
187
+        $prevent_b2c = ! empty( $prevent_b2c );
188
+        $is_eu       = $ip_in_eu || $country_in_eu;
189
+
190
+        return $prevent_b2c && $is_eu;
191
+    }
32 192
 
33 193
     /**
34
-	 * Class constructor
35
-	 *
36
-	 * @param GetPaid_Payment_Form_Submission $submission
37
-	 */
38
-	public function __construct( $submission ) {
39
-
40
-		// Validate VAT number.
41
-		$this->validate_vat( $submission );
42
-
43
-		foreach ( $submission->get_items() as $item ) {
44
-			$this->process_item_tax( $item, $submission );
45
-		}
46
-
47
-		// Process any existing invoice taxes.
48
-		if ( $submission->has_invoice() ) {
49
-			$this->taxes = $submission->get_invoice()->get_taxes();
50
-		}
51
-
52
-		// Add VAT.
53
-		$this->taxes['vat'] = array(
54
-			'name'          => 'vat',
55
-			'initial_tax'   => $this->initial_tax,
56
-			'recurring_tax' => $this->recurring_tax,
57
-		);
58
-
59
-	}
60
-
61
-	/**
62
-	 * Maybe process tax.
63
-	 *
64
-	 * @since 1.0.19
65
-	 * @param GetPaid_Form_Item $item
66
-	 * @param GetPaid_Payment_Form_Submission $submission
67
-	 */
68
-	public function process_item_tax( $item, $submission ) {
69
-
70
-		$rate     = wpinv_get_tax_rate( $submission->country, $submission->state, $item->get_id() );
71
-		$price    = $item->get_sub_total();
72
-		$item_tax = $price * $rate * 0.01;
73
-
74
-		if ( wpinv_prices_include_tax() ) {
75
-			$item_tax = $price - ( $price - $price * $rate * 0.01 );
76
-		}
77
-
78
-		$this->initial_tax += $item_tax;
79
-
80
-		if ( $item->is_recurring() ) {
81
-			$this->recurring_tax += $item_tax;
82
-		}
83
-
84
-	}
85
-
86
-	/**
87
-	 * Checks if the submission has a digital item.
88
-	 *
89
-	 * @param GetPaid_Payment_Form_Submission $submission
90
-	 * @since 1.0.19
91
-	 * @return bool
92
-	 */
93
-	public function has_digital_item( $submission ) {
94
-
95
-		foreach ( $submission->get_items() as $item ) {
96
-
97
-			if ( 'digital' == $item->get_vat_rule() ) {
98
-				return true;
99
-			}
100
-
101
-		}
102
-
103
-		return false;
104
-	}
105
-
106
-	/**
107
-	 * Checks if this is an eu store.
108
-	 *
109
-	 * @since 1.0.19
110
-	 * @return bool
111
-	 */
112
-	public function is_eu_store() {
113
-		return $this->is_eu_country( wpinv_get_default_country() );
114
-	}
115
-
116
-	/**
117
-	 * Checks if this is an eu country.
118
-	 *
119
-	 * @param string $country
120
-	 * @since 1.0.19
121
-	 * @return bool
122
-	 */
123
-	public function is_eu_country( $country ) {
124
-		return getpaid_is_eu_state( $country ) || getpaid_is_gst_country( $country );
125
-	}
126
-
127
-	/**
128
-	 * Checks if this is an eu purchase.
129
-	 *
130
-	 * @param string $customer_country
131
-	 * @since 1.0.19
132
-	 * @return bool
133
-	 */
134
-	public function is_eu_transaction( $customer_country ) {
135
-		return $this->is_eu_country( $customer_country ) && $this->is_eu_store();
136
-	}
137
-
138
-	/**
139
-	 * Retrieves the vat number.
140
-	 *
141
-	 * @param GetPaid_Payment_Form_Submission $submission
142
-	 * @since 1.0.19
143
-	 * @return string
144
-	 */
145
-	public function get_vat_number( $submission ) {
146
-
147
-		// Retrieve from the posted number.
148
-		$vat_number = $submission->get_field( 'wpinv_vat_number', 'billing' );
149
-		if ( ! empty( $vat_number ) ) {
150
-			return wpinv_clean( $vat_number );
151
-		}
152
-
153
-		// Retrieve from the invoice.
154
-		return $submission->has_invoice() ? $submission->get_invoice()->get_vat_number() : '';
155
-	}
156
-
157
-	/**
158
-	 * Retrieves the company.
159
-	 *
160
-	 * @param GetPaid_Payment_Form_Submission $submission
161
-	 * @since 1.0.19
162
-	 * @return string
163
-	 */
164
-	public function get_company( $submission ) {
165
-
166
-		// Retrieve from the posted data.
167
-		$company = $submission->get_field( 'wpinv_company', 'billing' );
168
-		if ( ! empty( $company ) ) {
169
-			return wpinv_clean( $company );
170
-		}
171
-
172
-		// Retrieve from the invoice.
173
-		return $submission->has_invoice() ? $submission->get_invoice()->get_company() : '';
174
-	}
175
-
176
-	/**
177
-	 * Checks if we requires a VAT number.
178
-	 *
179
-	 * @param bool $ip_in_eu Whether the customer IP is from the EU
180
-	 * @param bool $country_in_eu Whether the customer country is from the EU
181
-	 * @since 1.0.19
182
-	 * @return string
183
-	 */
184
-	public function requires_vat( $ip_in_eu, $country_in_eu ) {
185
-
186
-		$prevent_b2c = wpinv_get_option( 'vat_prevent_b2c_purchase' );
187
-		$prevent_b2c = ! empty( $prevent_b2c );
188
-		$is_eu       = $ip_in_eu || $country_in_eu;
189
-
190
-		return $prevent_b2c && $is_eu;
191
-	}
192
-
193
-	/**
194
-	 * Validate VAT data.
195
-	 *
196
-	 * @param GetPaid_Payment_Form_Submission $submission
197
-	 * @since 1.0.19
198
-	 */
199
-	public function validate_vat( $submission ) {
200
-
201
-		$has_digital = $this->has_digital_item( $submission );
202
-		$in_eu       = $this->is_eu_transaction( $submission->country );
203
-
204
-		// Abort if we are not validating vat numbers.
205
-		if ( ! $has_digital && ! $in_eu ) {
194
+     * Validate VAT data.
195
+     *
196
+     * @param GetPaid_Payment_Form_Submission $submission
197
+     * @since 1.0.19
198
+     */
199
+    public function validate_vat( $submission ) {
200
+
201
+        $has_digital = $this->has_digital_item( $submission );
202
+        $in_eu       = $this->is_eu_transaction( $submission->country );
203
+
204
+        // Abort if we are not validating vat numbers.
205
+        if ( ! $has_digital && ! $in_eu ) {
206 206
             return;
207
-		}
207
+        }
208 208
 
209
-		// Prepare variables.
210
-		$vat_number  = $this->get_vat_number( $submission );
211
-		$company     = $this->get_company( $submission );
212
-		$ip_country  = getpaid_get_ip_country();
209
+        // Prepare variables.
210
+        $vat_number  = $this->get_vat_number( $submission );
211
+        $company     = $this->get_company( $submission );
212
+        $ip_country  = getpaid_get_ip_country();
213 213
         $is_eu       = $this->is_eu_country( $submission->country );
214 214
         $is_ip_eu    = $this->is_eu_country( $ip_country );
215 215
 
216
-		// If we're preventing business to consumer purchases, ensure
217
-		if ( $this->requires_vat( $is_ip_eu, $is_eu ) && empty( $vat_number ) ) {
216
+        // If we're preventing business to consumer purchases, ensure
217
+        if ( $this->requires_vat( $is_ip_eu, $is_eu ) && empty( $vat_number ) ) {
218 218
 
219
-			// Ensure that a vat number has been specified.
220
-			throw new Exception(
221
-				wp_sprintf(
222
-					__( 'Please enter your %s number to verify your purchase is by an EU business.', 'invoicing' ),
223
-					getpaid_vat_name()
224
-				)
225
-			);
219
+            // Ensure that a vat number has been specified.
220
+            throw new Exception(
221
+                wp_sprintf(
222
+                    __( 'Please enter your %s number to verify your purchase is by an EU business.', 'invoicing' ),
223
+                    getpaid_vat_name()
224
+                )
225
+            );
226 226
 
227
-		}
227
+        }
228 228
 
229
-		// Abort if we are not validating vat (vat number should exist, user should be in eu and business too).
230
-		if ( ! $is_eu || ! $in_eu || empty( $vat_number ) ) {
229
+        // Abort if we are not validating vat (vat number should exist, user should be in eu and business too).
230
+        if ( ! $is_eu || ! $in_eu || empty( $vat_number ) ) {
231 231
             return;
232
-		}
232
+        }
233 233
 
234
-		$is_valid = WPInv_EUVat::validate_vat_number( $vat_number, $company, $submission->country );
234
+        $is_valid = WPInv_EUVat::validate_vat_number( $vat_number, $company, $submission->country );
235 235
 
236
-		if ( is_string( $is_valid ) ) {
237
-			throw new Exception( $is_valid );
238
-		}
236
+        if ( is_string( $is_valid ) ) {
237
+            throw new Exception( $is_valid );
238
+        }
239 239
 
240
-	}
240
+    }
241 241
 
242 242
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission.php 1 patch
Indentation   +738 added lines, -738 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 /**
@@ -10,187 +10,187 @@  discard block
 block discarded – undo
10 10
 class GetPaid_Payment_Form_Submission {
11 11
 
12 12
     /**
13
-	 * Submission ID
14
-	 *
15
-	 * @var string
16
-	 */
17
-	public $id = null;
18
-
19
-	/**
20
-	 * The raw submission data.
21
-	 *
22
-	 * @var array
23
-	 */
24
-	protected $data = null;
25
-
26
-	/**
27
-	 * Submission totals
28
-	 *
29
-	 * @var array
30
-	 */
31
-	protected $totals = array(
32
-
33
-		'subtotal'      => array(
34
-			'initial'   => 0,
35
-			'recurring' => 0,
36
-		),
37
-
38
-		'discount'      => array(
39
-			'initial'   => 0,
40
-			'recurring' => 0,
41
-		),
42
-
43
-		'fees'          => array(
44
-			'initial'   => 0,
45
-			'recurring' => 0,
46
-		),
47
-
48
-		'taxes'         => array(
49
-			'initial'   => 0,
50
-			'recurring' => 0,
51
-		),
52
-
53
-	);
54
-
55
-	/**
56
-	 * Sets the associated payment form.
57
-	 *
58
-	 * @var GetPaid_Payment_Form
59
-	 */
13
+     * Submission ID
14
+     *
15
+     * @var string
16
+     */
17
+    public $id = null;
18
+
19
+    /**
20
+     * The raw submission data.
21
+     *
22
+     * @var array
23
+     */
24
+    protected $data = null;
25
+
26
+    /**
27
+     * Submission totals
28
+     *
29
+     * @var array
30
+     */
31
+    protected $totals = array(
32
+
33
+        'subtotal'      => array(
34
+            'initial'   => 0,
35
+            'recurring' => 0,
36
+        ),
37
+
38
+        'discount'      => array(
39
+            'initial'   => 0,
40
+            'recurring' => 0,
41
+        ),
42
+
43
+        'fees'          => array(
44
+            'initial'   => 0,
45
+            'recurring' => 0,
46
+        ),
47
+
48
+        'taxes'         => array(
49
+            'initial'   => 0,
50
+            'recurring' => 0,
51
+        ),
52
+
53
+    );
54
+
55
+    /**
56
+     * Sets the associated payment form.
57
+     *
58
+     * @var GetPaid_Payment_Form
59
+     */
60 60
     protected $payment_form = null;
61 61
 
62 62
     /**
63
-	 * The country for the submission.
64
-	 *
65
-	 * @var string
66
-	 */
67
-	public $country = null;
68
-
69
-    /**
70
-	 * The state for the submission.
71
-	 *
72
-	 * @since 1.0.19
73
-	 * @var string
74
-	 */
75
-	public $state = null;
76
-
77
-	/**
78
-	 * The invoice associated with the submission.
79
-	 *
80
-	 * @var WPInv_Invoice
81
-	 */
82
-	protected $invoice = null;
83
-
84
-	/**
85
-	 * The recurring item for the submission.
86
-	 *
87
-	 * @var int
88
-	 */
89
-	public $has_recurring = 0;
90
-
91
-	/**
92
-	 * An array of fees for the submission.
93
-	 *
94
-	 * @var array
95
-	 */
96
-	protected $fees = array();
97
-
98
-	/**
99
-	 * An array of discounts for the submission.
100
-	 *
101
-	 * @var array
102
-	 */
103
-	protected $discounts = array();
104
-
105
-	/**
106
-	 * An array of taxes for the submission.
107
-	 *
108
-	 * @var array
109
-	 */
110
-	protected $taxes = array();
111
-
112
-	/**
113
-	 * An array of items for the submission.
114
-	 *
115
-	 * @var GetPaid_Form_Item[]
116
-	 */
117
-	protected $items = array();
118
-
119
-	/**
120
-	 * The last error.
121
-	 *
122
-	 * @var string
123
-	 */
124
-	public $last_error = null;
125
-
126
-    /**
127
-	 * Class constructor.
128
-	 *
129
-	 */
130
-	public function __construct() {
131
-
132
-		// Set the state and country to the default state and country.
133
-		$this->country = wpinv_default_billing_country();
134
-		$this->state   = wpinv_get_default_state();
135
-
136
-		// Do we have an actual submission?
137
-		if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
138
-			$this->load_data( $_POST );
139
-		}
140
-
141
-	}
142
-
143
-	/**
144
-	 * Loads submission data.
145
-	 *
146
-	 * @param array $data
147
-	 */
148
-	public function load_data( $data ) {
149
-
150
-		// Remove slashes from the submitted data...
151
-		$data       = wp_unslash( $data );
152
-
153
-		// Allow plugins to filter the data.
154
-		$data       = apply_filters( 'getpaid_submission_data', $data, $this );
155
-
156
-		// Cache it...
157
-		$this->data = $data;
158
-
159
-		// Then generate a unique id from the data.
160
-		$this->id   = md5( wp_json_encode( $data ) );
161
-
162
-		// Finally, process the submission.
163
-		try {
164
-
165
-			// Each process is passed an instance of the class (with reference)
166
-			// and should throw an Exception whenever it encounters one.
167
-			$processors = apply_filters(
168
-				'getpaid_payment_form_submission_processors',
169
-				array(
170
-					array( $this, 'process_payment_form' ),
171
-					array( $this, 'process_invoice' ),
172
-					array( $this, 'process_fees' ),
173
-					array( $this, 'process_items' ),
174
-					array( $this, 'process_taxes' ),
175
-					array( $this, 'process_discount' ),
176
-				),
177
-				$this		
178
-			);
179
-
180
-			foreach ( $processors as $processor ) {
181
-				call_user_func_array( $processor, array( &$this ) );
182
-			}
183
-
184
-		} catch ( Exception $e ) {
185
-			$this->last_error = $e->getMessage();
186
-		}
187
-
188
-		// Fired when we are done processing a submission.
189
-		do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
190
-
191
-	}
192
-
193
-	/*
63
+     * The country for the submission.
64
+     *
65
+     * @var string
66
+     */
67
+    public $country = null;
68
+
69
+    /**
70
+     * The state for the submission.
71
+     *
72
+     * @since 1.0.19
73
+     * @var string
74
+     */
75
+    public $state = null;
76
+
77
+    /**
78
+     * The invoice associated with the submission.
79
+     *
80
+     * @var WPInv_Invoice
81
+     */
82
+    protected $invoice = null;
83
+
84
+    /**
85
+     * The recurring item for the submission.
86
+     *
87
+     * @var int
88
+     */
89
+    public $has_recurring = 0;
90
+
91
+    /**
92
+     * An array of fees for the submission.
93
+     *
94
+     * @var array
95
+     */
96
+    protected $fees = array();
97
+
98
+    /**
99
+     * An array of discounts for the submission.
100
+     *
101
+     * @var array
102
+     */
103
+    protected $discounts = array();
104
+
105
+    /**
106
+     * An array of taxes for the submission.
107
+     *
108
+     * @var array
109
+     */
110
+    protected $taxes = array();
111
+
112
+    /**
113
+     * An array of items for the submission.
114
+     *
115
+     * @var GetPaid_Form_Item[]
116
+     */
117
+    protected $items = array();
118
+
119
+    /**
120
+     * The last error.
121
+     *
122
+     * @var string
123
+     */
124
+    public $last_error = null;
125
+
126
+    /**
127
+     * Class constructor.
128
+     *
129
+     */
130
+    public function __construct() {
131
+
132
+        // Set the state and country to the default state and country.
133
+        $this->country = wpinv_default_billing_country();
134
+        $this->state   = wpinv_get_default_state();
135
+
136
+        // Do we have an actual submission?
137
+        if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
138
+            $this->load_data( $_POST );
139
+        }
140
+
141
+    }
142
+
143
+    /**
144
+     * Loads submission data.
145
+     *
146
+     * @param array $data
147
+     */
148
+    public function load_data( $data ) {
149
+
150
+        // Remove slashes from the submitted data...
151
+        $data       = wp_unslash( $data );
152
+
153
+        // Allow plugins to filter the data.
154
+        $data       = apply_filters( 'getpaid_submission_data', $data, $this );
155
+
156
+        // Cache it...
157
+        $this->data = $data;
158
+
159
+        // Then generate a unique id from the data.
160
+        $this->id   = md5( wp_json_encode( $data ) );
161
+
162
+        // Finally, process the submission.
163
+        try {
164
+
165
+            // Each process is passed an instance of the class (with reference)
166
+            // and should throw an Exception whenever it encounters one.
167
+            $processors = apply_filters(
168
+                'getpaid_payment_form_submission_processors',
169
+                array(
170
+                    array( $this, 'process_payment_form' ),
171
+                    array( $this, 'process_invoice' ),
172
+                    array( $this, 'process_fees' ),
173
+                    array( $this, 'process_items' ),
174
+                    array( $this, 'process_taxes' ),
175
+                    array( $this, 'process_discount' ),
176
+                ),
177
+                $this		
178
+            );
179
+
180
+            foreach ( $processors as $processor ) {
181
+                call_user_func_array( $processor, array( &$this ) );
182
+            }
183
+
184
+        } catch ( Exception $e ) {
185
+            $this->last_error = $e->getMessage();
186
+        }
187
+
188
+        // Fired when we are done processing a submission.
189
+        do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
190
+
191
+    }
192
+
193
+    /*
194 194
 	|--------------------------------------------------------------------------
195 195
 	| Payment Forms.
196 196
 	|--------------------------------------------------------------------------
@@ -199,39 +199,39 @@  discard block
 block discarded – undo
199 199
 	| submission has an active payment form etc.
200 200
     */
201 201
 
202
-	/**
203
-	 * Prepares the submission's payment form.
204
-	 *
205
-	 * @since 1.0.19
206
-	 */
207
-	public function process_payment_form() {
202
+    /**
203
+     * Prepares the submission's payment form.
204
+     *
205
+     * @since 1.0.19
206
+     */
207
+    public function process_payment_form() {
208 208
 
209
-		// Every submission needs an active payment form.
210
-		if ( empty( $this->data['form_id'] ) ) {
211
-			throw new Exception( __( 'Missing payment form', 'invoicing' ) );
212
-		}
209
+        // Every submission needs an active payment form.
210
+        if ( empty( $this->data['form_id'] ) ) {
211
+            throw new Exception( __( 'Missing payment form', 'invoicing' ) );
212
+        }
213 213
 
214
-		// Fetch the payment form.
215
-		$this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
214
+        // Fetch the payment form.
215
+        $this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
216 216
 
217
-		if ( ! $this->payment_form->is_active() ) {
218
-			throw new Exception( __( 'Payment form not active', 'invoicing' ) );
219
-		}
217
+        if ( ! $this->payment_form->is_active() ) {
218
+            throw new Exception( __( 'Payment form not active', 'invoicing' ) );
219
+        }
220 220
 
221
-		do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
222
-	}
221
+        do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
222
+    }
223 223
 
224 224
     /**
225
-	 * Returns the payment form.
226
-	 *
227
-	 * @since 1.0.19
228
-	 * @return GetPaid_Payment_Form
229
-	 */
230
-	public function get_payment_form() {
231
-		return $this->payment_form;
232
-	}
225
+     * Returns the payment form.
226
+     *
227
+     * @since 1.0.19
228
+     * @return GetPaid_Payment_Form
229
+     */
230
+    public function get_payment_form() {
231
+        return $this->payment_form;
232
+    }
233 233
 
234
-	/*
234
+    /*
235 235
 	|--------------------------------------------------------------------------
236 236
 	| Invoices.
237 237
 	|--------------------------------------------------------------------------
@@ -240,61 +240,61 @@  discard block
 block discarded – undo
240 240
 	| might be for an existing invoice.
241 241
 	*/
242 242
 
243
-	/**
244
-	 * Prepares the submission's invoice.
245
-	 *
246
-	 * @since 1.0.19
247
-	 */
248
-	public function process_invoice() {
243
+    /**
244
+     * Prepares the submission's invoice.
245
+     *
246
+     * @since 1.0.19
247
+     */
248
+    public function process_invoice() {
249 249
 
250
-		// Abort if there is no invoice.
251
-		if ( empty( $this->data['invoice_id'] ) ) {
252
-			return;
253
-		}
250
+        // Abort if there is no invoice.
251
+        if ( empty( $this->data['invoice_id'] ) ) {
252
+            return;
253
+        }
254 254
 
255
-		// If the submission is for an existing invoice, ensure that it exists
256
-		// and that it is not paid for.
257
-		$invoice = wpinv_get_invoice( $this->data['invoice_id'] );
255
+        // If the submission is for an existing invoice, ensure that it exists
256
+        // and that it is not paid for.
257
+        $invoice = wpinv_get_invoice( $this->data['invoice_id'] );
258 258
 
259 259
         if ( empty( $invoice ) ) {
260
-			throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
261
-		}
262
-
263
-		if ( $invoice->is_paid() ) {
264
-			throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
265
-		}
266
-
267
-		$this->payment_form->set_items( $invoice->get_items() );
268
-		$this->payment_form->invoice = $invoice;
269
-
270
-		$this->country = $invoice->get_country();
271
-		$this->state   = $invoice->get_state();
272
-		$this->invoice = $invoice;
273
-
274
-		do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
275
-	}
276
-
277
-	/**
278
-	 * Returns the associated invoice.
279
-	 *
280
-	 * @since 1.0.19
281
-	 * @return WPInv_Invoice
282
-	 */
283
-	public function get_invoice() {
284
-		return $this->invoice;
285
-	}
286
-
287
-	/**
288
-	 * Checks whether there is an invoice associated with this submission.
289
-	 *
290
-	 * @since 1.0.19
291
-	 * @return bool
292
-	 */
293
-	public function has_invoice() {
294
-		return ! empty( $this->invoice );
295
-	}
296
-
297
-	/*
260
+            throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
261
+        }
262
+
263
+        if ( $invoice->is_paid() ) {
264
+            throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
265
+        }
266
+
267
+        $this->payment_form->set_items( $invoice->get_items() );
268
+        $this->payment_form->invoice = $invoice;
269
+
270
+        $this->country = $invoice->get_country();
271
+        $this->state   = $invoice->get_state();
272
+        $this->invoice = $invoice;
273
+
274
+        do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
275
+    }
276
+
277
+    /**
278
+     * Returns the associated invoice.
279
+     *
280
+     * @since 1.0.19
281
+     * @return WPInv_Invoice
282
+     */
283
+    public function get_invoice() {
284
+        return $this->invoice;
285
+    }
286
+
287
+    /**
288
+     * Checks whether there is an invoice associated with this submission.
289
+     *
290
+     * @since 1.0.19
291
+     * @return bool
292
+     */
293
+    public function has_invoice() {
294
+        return ! empty( $this->invoice );
295
+    }
296
+
297
+    /*
298 298
 	|--------------------------------------------------------------------------
299 299
 	| Items.
300 300
 	|--------------------------------------------------------------------------
@@ -303,105 +303,105 @@  discard block
 block discarded – undo
303 303
 	| recurring item. But can have an unlimited number of non-recurring items.
304 304
 	*/
305 305
 
306
-	/**
307
-	 * Prepares the submission's items.
308
-	 *
309
-	 * @since 1.0.19
310
-	 */
311
-	public function process_items() {
312
-
313
-		$processor = new GetPaid_Payment_Form_Submission_Items( $this );
314
-
315
-		foreach ( $processor->items as $item ) {
316
-			$this->add_item( $item );
317
-		}
318
-
319
-		do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
320
-	}
321
-
322
-	/**
323
-	 * Adds an item to the submission.
324
-	 *
325
-	 * @since 1.0.19
326
-	 * @param GetPaid_Form_Item $item
327
-	 */
328
-	public function add_item( $item ) {
329
-
330
-		// Make sure that it is available for purchase.
331
-		if ( ! $item->can_purchase() ) {
332
-			return;
333
-		}
334
-
335
-		// Each submission can only contain one recurring item.
336
-		if ( $item->is_recurring() ) {
337
-
338
-			if ( $this->has_recurring != 0 ) {
339
-				throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
340
-			}
341
-
342
-			$this->has_recurring = $item->get_id();
343
-
344
-		}
345
-
346
-		// Update the items and totals.
347
-		$this->items[ $item->get_id() ]         = $item;
348
-		$this->totals['subtotal']['initial']   += $item->get_sub_total();
349
-		$this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
350
-
351
-	}
352
-
353
-	/**
354
-	 * Removes a specific item.
355
-	 * 
356
-	 * You should not call this method after the discounts and taxes
357
-	 * have been calculated.
358
-	 *
359
-	 * @since 1.0.19
360
-	 */
361
-	public function remove_item( $item_id ) {
362
-
363
-		if ( isset( $this->items[ $item_id ] ) ) {
364
-			$this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
365
-			$this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
366
-
367
-			if ( $this->items[ $item_id ]->is_recurring() ) {
368
-				$this->has_recurring = 0;
369
-			}
370
-
371
-			unset( $this->items[ $item_id ] );
372
-		}
306
+    /**
307
+     * Prepares the submission's items.
308
+     *
309
+     * @since 1.0.19
310
+     */
311
+    public function process_items() {
312
+
313
+        $processor = new GetPaid_Payment_Form_Submission_Items( $this );
314
+
315
+        foreach ( $processor->items as $item ) {
316
+            $this->add_item( $item );
317
+        }
318
+
319
+        do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
320
+    }
321
+
322
+    /**
323
+     * Adds an item to the submission.
324
+     *
325
+     * @since 1.0.19
326
+     * @param GetPaid_Form_Item $item
327
+     */
328
+    public function add_item( $item ) {
329
+
330
+        // Make sure that it is available for purchase.
331
+        if ( ! $item->can_purchase() ) {
332
+            return;
333
+        }
334
+
335
+        // Each submission can only contain one recurring item.
336
+        if ( $item->is_recurring() ) {
337
+
338
+            if ( $this->has_recurring != 0 ) {
339
+                throw new Exception( __( 'You can only buy one recurring item at a time.', 'invoicing' ) );
340
+            }
341
+
342
+            $this->has_recurring = $item->get_id();
343
+
344
+        }
345
+
346
+        // Update the items and totals.
347
+        $this->items[ $item->get_id() ]         = $item;
348
+        $this->totals['subtotal']['initial']   += $item->get_sub_total();
349
+        $this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
350
+
351
+    }
352
+
353
+    /**
354
+     * Removes a specific item.
355
+     * 
356
+     * You should not call this method after the discounts and taxes
357
+     * have been calculated.
358
+     *
359
+     * @since 1.0.19
360
+     */
361
+    public function remove_item( $item_id ) {
362
+
363
+        if ( isset( $this->items[ $item_id ] ) ) {
364
+            $this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
365
+            $this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
366
+
367
+            if ( $this->items[ $item_id ]->is_recurring() ) {
368
+                $this->has_recurring = 0;
369
+            }
370
+
371
+            unset( $this->items[ $item_id ] );
372
+        }
373 373
 		
374
-	}
375
-
376
-	/**
377
-	 * Returns the subtotal.
378
-	 *
379
-	 * @since 1.0.19
380
-	 */
381
-	public function get_subtotal() {
382
-		return $this->totals['subtotal']['initial'];
383
-	}
384
-
385
-	/**
386
-	 * Returns the recurring subtotal.
387
-	 *
388
-	 * @since 1.0.19
389
-	 */
390
-	public function get_recurring_subtotal() {
391
-		return $this->totals['subtotal']['recurring'];
392
-	}
393
-
394
-	/**
395
-	 * Returns all items.
396
-	 *
397
-	 * @since 1.0.19
398
-	 * @return GetPaid_Form_Item[]
399
-	 */
400
-	public function get_items() {
401
-		return $this->items;
402
-	}
403
-
404
-	/*
374
+    }
375
+
376
+    /**
377
+     * Returns the subtotal.
378
+     *
379
+     * @since 1.0.19
380
+     */
381
+    public function get_subtotal() {
382
+        return $this->totals['subtotal']['initial'];
383
+    }
384
+
385
+    /**
386
+     * Returns the recurring subtotal.
387
+     *
388
+     * @since 1.0.19
389
+     */
390
+    public function get_recurring_subtotal() {
391
+        return $this->totals['subtotal']['recurring'];
392
+    }
393
+
394
+    /**
395
+     * Returns all items.
396
+     *
397
+     * @since 1.0.19
398
+     * @return GetPaid_Form_Item[]
399
+     */
400
+    public function get_items() {
401
+        return $this->items;
402
+    }
403
+
404
+    /*
405 405
 	|--------------------------------------------------------------------------
406 406
 	| Taxes
407 407
 	|--------------------------------------------------------------------------
@@ -410,110 +410,110 @@  discard block
 block discarded – undo
410 410
 	| or only one-time.
411 411
     */
412 412
 
413
-	/**
414
-	 * Prepares the submission's taxes.
415
-	 *
416
-	 * @since 1.0.19
417
-	 */
418
-	public function process_taxes() {
419
-
420
-		// Abort if we're not using taxes.
421
-		if ( ! $this->use_taxes() ) {
422
-			return;
423
-		}
424
-
425
-		// If a custom country && state has been passed in, use it to calculate taxes.
426
-		$country = $this->get_field( 'wpinv_country', 'billing' );
427
-		if ( ! empty( $country ) ) {
428
-			$this->country = $country;
429
-		}
430
-
431
-		$state = $this->get_field( 'wpinv_state', 'billing' );
432
-		if ( ! empty( $state ) ) {
433
-			$this->state = $state;
434
-		}
435
-
436
-		$processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
437
-
438
-		foreach ( $processor->taxes as $tax ) {
439
-			$this->add_tax( $tax );
440
-		}
441
-
442
-		do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
443
-	}
444
-
445
-	/**
446
-	 * Adds a tax to the submission.
447
-	 *
448
-	 * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
449
-	 * @since 1.0.19
450
-	 */
451
-	public function add_tax( $tax ) {
452
-		$this->taxes[ $tax['name'] ]         = $tax;
453
-		$this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
454
-		$this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
455
-	}
456
-
457
-	/**
458
-	 * Removes a specific tax.
459
-	 *
460
-	 * @since 1.0.19
461
-	 */
462
-	public function remove_tax( $tax_name ) {
463
-
464
-		if ( isset( $this->taxes[ $tax_name ] ) ) {
465
-			$this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
466
-			$this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
467
-			unset( $this->taxes[ $tax_name ] );
468
-		}
469
-
470
-	}
471
-
472
-	/**
473
-	 * Whether or not we'll use taxes for the submission.
474
-	 *
475
-	 * @since 1.0.19
476
-	 */
477
-	public function use_taxes() {
478
-
479
-		$use_taxes = wpinv_use_taxes();
480
-
481
-		if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
482
-			$use_taxes = false;
483
-		}
484
-
485
-		return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
486
-
487
-	}
488
-
489
-	/**
490
-	 * Returns the tax.
491
-	 *
492
-	 * @since 1.0.19
493
-	 */
494
-	public function get_tax() {
495
-		return $this->totals['taxes']['initial'];
496
-	}
497
-
498
-	/**
499
-	 * Returns the recurring tax.
500
-	 *
501
-	 * @since 1.0.19
502
-	 */
503
-	public function get_recurring_tax() {
504
-		return $this->totals['taxes']['recurring'];
505
-	}
506
-
507
-	/**
508
-	 * Returns all taxes.
509
-	 *
510
-	 * @since 1.0.19
511
-	 */
512
-	public function get_taxes() {
513
-		return $this->taxes;
514
-	}
515
-
516
-	/*
413
+    /**
414
+     * Prepares the submission's taxes.
415
+     *
416
+     * @since 1.0.19
417
+     */
418
+    public function process_taxes() {
419
+
420
+        // Abort if we're not using taxes.
421
+        if ( ! $this->use_taxes() ) {
422
+            return;
423
+        }
424
+
425
+        // If a custom country && state has been passed in, use it to calculate taxes.
426
+        $country = $this->get_field( 'wpinv_country', 'billing' );
427
+        if ( ! empty( $country ) ) {
428
+            $this->country = $country;
429
+        }
430
+
431
+        $state = $this->get_field( 'wpinv_state', 'billing' );
432
+        if ( ! empty( $state ) ) {
433
+            $this->state = $state;
434
+        }
435
+
436
+        $processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
437
+
438
+        foreach ( $processor->taxes as $tax ) {
439
+            $this->add_tax( $tax );
440
+        }
441
+
442
+        do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
443
+    }
444
+
445
+    /**
446
+     * Adds a tax to the submission.
447
+     *
448
+     * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
449
+     * @since 1.0.19
450
+     */
451
+    public function add_tax( $tax ) {
452
+        $this->taxes[ $tax['name'] ]         = $tax;
453
+        $this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
454
+        $this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
455
+    }
456
+
457
+    /**
458
+     * Removes a specific tax.
459
+     *
460
+     * @since 1.0.19
461
+     */
462
+    public function remove_tax( $tax_name ) {
463
+
464
+        if ( isset( $this->taxes[ $tax_name ] ) ) {
465
+            $this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
466
+            $this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
467
+            unset( $this->taxes[ $tax_name ] );
468
+        }
469
+
470
+    }
471
+
472
+    /**
473
+     * Whether or not we'll use taxes for the submission.
474
+     *
475
+     * @since 1.0.19
476
+     */
477
+    public function use_taxes() {
478
+
479
+        $use_taxes = wpinv_use_taxes();
480
+
481
+        if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
482
+            $use_taxes = false;
483
+        }
484
+
485
+        return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
486
+
487
+    }
488
+
489
+    /**
490
+     * Returns the tax.
491
+     *
492
+     * @since 1.0.19
493
+     */
494
+    public function get_tax() {
495
+        return $this->totals['taxes']['initial'];
496
+    }
497
+
498
+    /**
499
+     * Returns the recurring tax.
500
+     *
501
+     * @since 1.0.19
502
+     */
503
+    public function get_recurring_tax() {
504
+        return $this->totals['taxes']['recurring'];
505
+    }
506
+
507
+    /**
508
+     * Returns all taxes.
509
+     *
510
+     * @since 1.0.19
511
+     */
512
+    public function get_taxes() {
513
+        return $this->taxes;
514
+    }
515
+
516
+    /*
517 517
 	|--------------------------------------------------------------------------
518 518
 	| Discounts
519 519
 	|--------------------------------------------------------------------------
@@ -522,99 +522,99 @@  discard block
 block discarded – undo
522 522
 	| or only one-time. They also do not have to come from a discount code.
523 523
     */
524 524
 
525
-	/**
526
-	 * Prepares the submission's discount.
527
-	 *
528
-	 * @since 1.0.19
529
-	 */
530
-	public function process_discount() {
531
-
532
-		$initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
533
-		$recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
534
-		$processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
535
-
536
-		foreach ( $processor->discounts as $discount ) {
537
-			$this->add_discount( $discount );
538
-		}
539
-
540
-		do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
541
-	}
542
-
543
-	/**
544
-	 * Adds a discount to the submission.
545
-	 *
546
-	 * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
547
-	 * @since 1.0.19
548
-	 */
549
-	public function add_discount( $discount ) {
550
-		$this->discounts[ $discount['name'] ]   = $discount;
551
-		$this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
552
-		$this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
553
-	}
554
-
555
-	/**
556
-	 * Removes a discount from the submission.
557
-	 *
558
-	 * @since 1.0.19
559
-	 */
560
-	public function remove_discount( $name ) {
561
-
562
-		if ( isset( $this->discounts[ $name ] ) ) {
563
-			$this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
564
-			$this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
565
-			unset( $this->discounts[ $name ] );
566
-		}
567
-
568
-	}
569
-
570
-	/**
571
-	 * Checks whether there is a discount code associated with this submission.
572
-	 *
573
-	 * @since 1.0.19
574
-	 * @return bool
575
-	 */
576
-	public function has_discount_code() {
577
-		return ! empty( $this->discounts['discount_code'] );
578
-	}
579
-
580
-	/**
581
-	 * Returns the discount code.
582
-	 *
583
-	 * @since 1.0.19
584
-	 * @return string
585
-	 */
586
-	public function get_discount_code() {
587
-		return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
588
-	}
589
-
590
-	/**
591
-	 * Returns the discount.
592
-	 *
593
-	 * @since 1.0.19
594
-	 */
595
-	public function get_discount() {
596
-		return $this->totals['discount']['initial'];
597
-	}
598
-
599
-	/**
600
-	 * Returns the recurring discount.
601
-	 *
602
-	 * @since 1.0.19
603
-	 */
604
-	public function get_recurring_discount() {
605
-		return $this->totals['discount']['recurring'];
606
-	}
607
-
608
-	/**
609
-	 * Returns all discounts.
610
-	 *
611
-	 * @since 1.0.19
612
-	 */
613
-	public function get_discounts() {
614
-		return $this->discounts;
615
-	}
616
-
617
-	/*
525
+    /**
526
+     * Prepares the submission's discount.
527
+     *
528
+     * @since 1.0.19
529
+     */
530
+    public function process_discount() {
531
+
532
+        $initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
533
+        $recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
534
+        $processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
535
+
536
+        foreach ( $processor->discounts as $discount ) {
537
+            $this->add_discount( $discount );
538
+        }
539
+
540
+        do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
541
+    }
542
+
543
+    /**
544
+     * Adds a discount to the submission.
545
+     *
546
+     * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
547
+     * @since 1.0.19
548
+     */
549
+    public function add_discount( $discount ) {
550
+        $this->discounts[ $discount['name'] ]   = $discount;
551
+        $this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
552
+        $this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
553
+    }
554
+
555
+    /**
556
+     * Removes a discount from the submission.
557
+     *
558
+     * @since 1.0.19
559
+     */
560
+    public function remove_discount( $name ) {
561
+
562
+        if ( isset( $this->discounts[ $name ] ) ) {
563
+            $this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
564
+            $this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
565
+            unset( $this->discounts[ $name ] );
566
+        }
567
+
568
+    }
569
+
570
+    /**
571
+     * Checks whether there is a discount code associated with this submission.
572
+     *
573
+     * @since 1.0.19
574
+     * @return bool
575
+     */
576
+    public function has_discount_code() {
577
+        return ! empty( $this->discounts['discount_code'] );
578
+    }
579
+
580
+    /**
581
+     * Returns the discount code.
582
+     *
583
+     * @since 1.0.19
584
+     * @return string
585
+     */
586
+    public function get_discount_code() {
587
+        return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
588
+    }
589
+
590
+    /**
591
+     * Returns the discount.
592
+     *
593
+     * @since 1.0.19
594
+     */
595
+    public function get_discount() {
596
+        return $this->totals['discount']['initial'];
597
+    }
598
+
599
+    /**
600
+     * Returns the recurring discount.
601
+     *
602
+     * @since 1.0.19
603
+     */
604
+    public function get_recurring_discount() {
605
+        return $this->totals['discount']['recurring'];
606
+    }
607
+
608
+    /**
609
+     * Returns all discounts.
610
+     *
611
+     * @since 1.0.19
612
+     */
613
+    public function get_discounts() {
614
+        return $this->discounts;
615
+    }
616
+
617
+    /*
618 618
 	|--------------------------------------------------------------------------
619 619
 	| Fees
620 620
 	|--------------------------------------------------------------------------
@@ -624,89 +624,89 @@  discard block
 block discarded – undo
624 624
 	| fees.
625 625
     */
626 626
 
627
-	/**
628
-	 * Prepares the submission's fees.
629
-	 *
630
-	 * @since 1.0.19
631
-	 */
632
-	public function process_fees() {
633
-
634
-		$fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
635
-
636
-		foreach ( $fees_processor->fees as $fee ) {
637
-			$this->add_fee( $fee );
638
-		}
639
-
640
-		do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
641
-	}
642
-
643
-	/**
644
-	 * Adds a fee to the submission.
645
-	 *
646
-	 * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
647
-	 * @since 1.0.19
648
-	 */
649
-	public function add_fee( $fee ) {
650
-
651
-		$this->fees[ $fee['name'] ]         = $fee;
652
-		$this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
653
-		$this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
654
-
655
-	}
656
-
657
-	/**
658
-	 * Removes a fee from the submission.
659
-	 *
660
-	 * @since 1.0.19
661
-	 */
662
-	public function remove_fee( $name ) {
663
-
664
-		if ( isset( $this->fees[ $name ] ) ) {
665
-			$this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
666
-			$this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
667
-			unset( $this->fees[ $name ] );
668
-		}
669
-
670
-	}
671
-
672
-	/**
673
-	 * Returns the fees.
674
-	 *
675
-	 * @since 1.0.19
676
-	 */
677
-	public function get_fee() {
678
-		return $this->totals['fees']['initial'];
679
-	}
680
-
681
-	/**
682
-	 * Returns the recurring fees.
683
-	 *
684
-	 * @since 1.0.19
685
-	 */
686
-	public function get_recurring_fee() {
687
-		return $this->totals['fees']['recurring'];
688
-	}
689
-
690
-	/**
691
-	 * Returns all fees.
692
-	 *
693
-	 * @since 1.0.19
694
-	 */
695
-	public function get_fees() {
696
-		return $this->fees;
697
-	}
698
-
699
-	/**
700
-	 * Checks if there are any fees for the form.
701
-	 *
702
-	 * @return bool
703
-	 * @since 1.0.19
704
-	 */
705
-	public function has_fees() {
706
-		return count( $this->fees ) !== 0;
707
-	}
708
-
709
-	/*
627
+    /**
628
+     * Prepares the submission's fees.
629
+     *
630
+     * @since 1.0.19
631
+     */
632
+    public function process_fees() {
633
+
634
+        $fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
635
+
636
+        foreach ( $fees_processor->fees as $fee ) {
637
+            $this->add_fee( $fee );
638
+        }
639
+
640
+        do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
641
+    }
642
+
643
+    /**
644
+     * Adds a fee to the submission.
645
+     *
646
+     * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
647
+     * @since 1.0.19
648
+     */
649
+    public function add_fee( $fee ) {
650
+
651
+        $this->fees[ $fee['name'] ]         = $fee;
652
+        $this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
653
+        $this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
654
+
655
+    }
656
+
657
+    /**
658
+     * Removes a fee from the submission.
659
+     *
660
+     * @since 1.0.19
661
+     */
662
+    public function remove_fee( $name ) {
663
+
664
+        if ( isset( $this->fees[ $name ] ) ) {
665
+            $this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
666
+            $this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
667
+            unset( $this->fees[ $name ] );
668
+        }
669
+
670
+    }
671
+
672
+    /**
673
+     * Returns the fees.
674
+     *
675
+     * @since 1.0.19
676
+     */
677
+    public function get_fee() {
678
+        return $this->totals['fees']['initial'];
679
+    }
680
+
681
+    /**
682
+     * Returns the recurring fees.
683
+     *
684
+     * @since 1.0.19
685
+     */
686
+    public function get_recurring_fee() {
687
+        return $this->totals['fees']['recurring'];
688
+    }
689
+
690
+    /**
691
+     * Returns all fees.
692
+     *
693
+     * @since 1.0.19
694
+     */
695
+    public function get_fees() {
696
+        return $this->fees;
697
+    }
698
+
699
+    /**
700
+     * Checks if there are any fees for the form.
701
+     *
702
+     * @return bool
703
+     * @since 1.0.19
704
+     */
705
+    public function has_fees() {
706
+        return count( $this->fees ) !== 0;
707
+    }
708
+
709
+    /*
710 710
 	|--------------------------------------------------------------------------
711 711
 	| MISC
712 712
 	|--------------------------------------------------------------------------
@@ -714,109 +714,109 @@  discard block
 block discarded – undo
714 714
 	| Extra submission functions.
715 715
     */
716 716
 
717
-	/**
718
-	 * Returns the total amount to collect for this submission.
719
-	 *
720
-	 * @since 1.0.19
721
-	 */
722
-	public function get_total() {
723
-		$total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
724
-		return max( $total, 0 );
725
-	}
726
-
727
-	/**
728
-	 * Returns the recurring total amount to collect for this submission.
729
-	 *
730
-	 * @since 1.0.19
731
-	 */
732
-	public function get_recurring_total() {
733
-		$total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
734
-		return max( $total, 0 );
735
-	}
736
-
737
-	/**
738
-	 * Whether payment details should be collected for this submission.
739
-	 *
740
-	 * @since 1.0.19
741
-	 */
742
-	public function should_collect_payment_details() {
743
-		$initial   = $this->get_total();
744
-		$recurring = $this->get_recurring_total();
745
-
746
-		if ( $this->has_recurring == 0 ) {
747
-			$recurring = 0;
748
-		}
749
-
750
-		$collect = $initial > 0 || $recurring > 0;
751
-		return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
752
-	}
753
-
754
-	/**
755
-	 * Returns the billing email of the user.
756
-	 *
757
-	 * @since 1.0.19
758
-	 */
759
-	public function get_billing_email() {
760
-		return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
761
-	}
762
-
763
-	/**
764
-	 * Checks if the submitter has a billing email.
765
-	 *
766
-	 * @since 1.0.19
767
-	 */
768
-	public function has_billing_email() {
769
-		$billing_email = $this->get_billing_email();
770
-		return ! empty( $billing_email ) && is_email( $billing_email );
771
-	}
772
-
773
-	/**
774
-	 * Returns the appropriate currency for the submission.
775
-	 *
776
-	 * @since 1.0.19
777
-	 * @return string
778
-	 */
779
-	public function get_currency() {
780
-		return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
781
-    }
782
-
783
-    /**
784
-	 * Returns the raw submission data.
785
-	 *
786
-	 * @since 1.0.19
787
-	 * @return array
788
-	 */
789
-	public function get_data() {
790
-		return $this->data;
791
-	}
792
-
793
-	/**
794
-	 * Returns a field from the submission data
795
-	 *
796
-	 * @param string $field
797
-	 * @since 1.0.19
798
-	 * @return mixed|null
799
-	 */
800
-	public function get_field( $field, $sub_array_key = null ) {
801
-		return getpaid_get_array_field( $this->data, $field, $sub_array_key );
802
-	}
803
-
804
-	/**
805
-	 * Checks if a required field is set.
806
-	 *
807
-	 * @since 1.0.19
808
-	 */
809
-	public function is_required_field_set( $field ) {
810
-		return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
811
-	}
812
-
813
-	/**
814
-	 * Formats an amount
815
-	 *
816
-	 * @since 1.0.19
817
-	 */
818
-	public function format_amount( $amount ) {
819
-		return wpinv_price( $amount, $this->get_currency() );
820
-	}
717
+    /**
718
+     * Returns the total amount to collect for this submission.
719
+     *
720
+     * @since 1.0.19
721
+     */
722
+    public function get_total() {
723
+        $total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
724
+        return max( $total, 0 );
725
+    }
726
+
727
+    /**
728
+     * Returns the recurring total amount to collect for this submission.
729
+     *
730
+     * @since 1.0.19
731
+     */
732
+    public function get_recurring_total() {
733
+        $total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
734
+        return max( $total, 0 );
735
+    }
736
+
737
+    /**
738
+     * Whether payment details should be collected for this submission.
739
+     *
740
+     * @since 1.0.19
741
+     */
742
+    public function should_collect_payment_details() {
743
+        $initial   = $this->get_total();
744
+        $recurring = $this->get_recurring_total();
745
+
746
+        if ( $this->has_recurring == 0 ) {
747
+            $recurring = 0;
748
+        }
749
+
750
+        $collect = $initial > 0 || $recurring > 0;
751
+        return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
752
+    }
753
+
754
+    /**
755
+     * Returns the billing email of the user.
756
+     *
757
+     * @since 1.0.19
758
+     */
759
+    public function get_billing_email() {
760
+        return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
761
+    }
762
+
763
+    /**
764
+     * Checks if the submitter has a billing email.
765
+     *
766
+     * @since 1.0.19
767
+     */
768
+    public function has_billing_email() {
769
+        $billing_email = $this->get_billing_email();
770
+        return ! empty( $billing_email ) && is_email( $billing_email );
771
+    }
772
+
773
+    /**
774
+     * Returns the appropriate currency for the submission.
775
+     *
776
+     * @since 1.0.19
777
+     * @return string
778
+     */
779
+    public function get_currency() {
780
+        return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
781
+    }
782
+
783
+    /**
784
+     * Returns the raw submission data.
785
+     *
786
+     * @since 1.0.19
787
+     * @return array
788
+     */
789
+    public function get_data() {
790
+        return $this->data;
791
+    }
792
+
793
+    /**
794
+     * Returns a field from the submission data
795
+     *
796
+     * @param string $field
797
+     * @since 1.0.19
798
+     * @return mixed|null
799
+     */
800
+    public function get_field( $field, $sub_array_key = null ) {
801
+        return getpaid_get_array_field( $this->data, $field, $sub_array_key );
802
+    }
803
+
804
+    /**
805
+     * Checks if a required field is set.
806
+     *
807
+     * @since 1.0.19
808
+     */
809
+    public function is_required_field_set( $field ) {
810
+        return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
811
+    }
812
+
813
+    /**
814
+     * Formats an amount
815
+     *
816
+     * @since 1.0.19
817
+     */
818
+    public function format_amount( $amount ) {
819
+        return wpinv_price( $amount, $this->get_currency() );
820
+    }
821 821
 
822 822
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-checkout.php 1 patch
Indentation   +245 added lines, -245 removed lines patch added patch discarded remove patch
@@ -12,174 +12,174 @@  discard block
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Checkout {
14 14
 
15
-	/**
16
-	 * @var GetPaid_Payment_Form_Submission
17
-	 */
18
-	protected $payment_form_submission;
19
-
20
-	/**
21
-	 * Class constructor.
22
-	 * 
23
-	 * @param GetPaid_Payment_Form_Submission $submission
24
-	 */
25
-	public function __construct( $submission ) {
26
-		$this->payment_form_submission = $submission;
27
-	}
28
-
29
-	/**
30
-	 * Processes the checkout.
31
-	 *
32
-	 */
33
-	public function process_checkout() {
34
-
35
-		// Validate the submission.
36
-		$this->validate_submission();
37
-
38
-		// Prepare the invoice.
39
-		$items      = $this->get_submission_items();
40
-		$invoice    = $this->get_submission_invoice();
41
-		$invoice    = $this->process_submission_invoice( $invoice, $items );
42
-		$prepared   = $this->prepare_submission_data_for_saving();
43
-
44
-		$this->prepare_billing_info( $invoice );
45
-
46
-		$shipping   = $this->prepare_shipping_info( $invoice );
47
-
48
-		// Save the invoice.
49
-		$invoice->recalculate_total();
15
+    /**
16
+     * @var GetPaid_Payment_Form_Submission
17
+     */
18
+    protected $payment_form_submission;
19
+
20
+    /**
21
+     * Class constructor.
22
+     * 
23
+     * @param GetPaid_Payment_Form_Submission $submission
24
+     */
25
+    public function __construct( $submission ) {
26
+        $this->payment_form_submission = $submission;
27
+    }
28
+
29
+    /**
30
+     * Processes the checkout.
31
+     *
32
+     */
33
+    public function process_checkout() {
34
+
35
+        // Validate the submission.
36
+        $this->validate_submission();
37
+
38
+        // Prepare the invoice.
39
+        $items      = $this->get_submission_items();
40
+        $invoice    = $this->get_submission_invoice();
41
+        $invoice    = $this->process_submission_invoice( $invoice, $items );
42
+        $prepared   = $this->prepare_submission_data_for_saving();
43
+
44
+        $this->prepare_billing_info( $invoice );
45
+
46
+        $shipping   = $this->prepare_shipping_info( $invoice );
47
+
48
+        // Save the invoice.
49
+        $invoice->recalculate_total();
50 50
         $invoice->save();
51 51
 
52
-		// Send to the gateway.
53
-		$this->post_process_submission( $invoice, $prepared, $shipping );
54
-	}
52
+        // Send to the gateway.
53
+        $this->post_process_submission( $invoice, $prepared, $shipping );
54
+    }
55 55
 
56
-	/**
57
-	 * Validates the submission.
58
-	 *
59
-	 */
60
-	protected function validate_submission() {
56
+    /**
57
+     * Validates the submission.
58
+     *
59
+     */
60
+    protected function validate_submission() {
61 61
 
62
-		$submission = $this->payment_form_submission;
63
-		$data       = $submission->get_data();
62
+        $submission = $this->payment_form_submission;
63
+        $data       = $submission->get_data();
64 64
 
65
-		// Do we have an error?
65
+        // Do we have an error?
66 66
         if ( ! empty( $submission->last_error ) ) {
67
-			wp_send_json_error( $submission->last_error );
67
+            wp_send_json_error( $submission->last_error );
68 68
         }
69 69
 
70
-		// We need a billing email.
70
+        // We need a billing email.
71 71
         if ( ! $submission->has_billing_email() ) {
72 72
             wp_send_json_error( __( 'Provide a valid billing email.', 'invoicing' ) );
73
-		}
73
+        }
74 74
 
75
-		// Non-recurring gateways should not be allowed to process recurring invoices.
76
-		if ( $submission->should_collect_payment_details() && $submission->has_recurring && ! wpinv_gateway_support_subscription( $data['wpi-gateway'] ) ) {
77
-			wp_send_json_error( __( 'The selected payment gateway does not support subscription payments.', 'invoicing' ) );
78
-		}
75
+        // Non-recurring gateways should not be allowed to process recurring invoices.
76
+        if ( $submission->should_collect_payment_details() && $submission->has_recurring && ! wpinv_gateway_support_subscription( $data['wpi-gateway'] ) ) {
77
+            wp_send_json_error( __( 'The selected payment gateway does not support subscription payments.', 'invoicing' ) );
78
+        }
79 79
 
80
-		// Ensure the gateway is active.
81
-		if ( $submission->should_collect_payment_details() && ! wpinv_is_gateway_active( $data['wpi-gateway'] ) ) {
82
-			wpinv_set_error( 'invalid_gateway', __( 'The selected payment gateway is not active', 'invoicing' ) );
83
-		}
80
+        // Ensure the gateway is active.
81
+        if ( $submission->should_collect_payment_details() && ! wpinv_is_gateway_active( $data['wpi-gateway'] ) ) {
82
+            wpinv_set_error( 'invalid_gateway', __( 'The selected payment gateway is not active', 'invoicing' ) );
83
+        }
84 84
 
85
-		// Clear any existing errors.
86
-		wpinv_clear_errors();
85
+        // Clear any existing errors.
86
+        wpinv_clear_errors();
87 87
 
88
-		// Allow themes and plugins to hook to errors
89
-		do_action( 'getpaid_checkout_error_checks', $submission );
88
+        // Allow themes and plugins to hook to errors
89
+        do_action( 'getpaid_checkout_error_checks', $submission );
90 90
 
91
-		// Do we have any errors?
91
+        // Do we have any errors?
92 92
         if ( wpinv_get_errors() ) {
93 93
             wp_send_json_error( getpaid_get_errors_html() );
94
-		}
94
+        }
95 95
 
96
-	}
96
+    }
97 97
 
98
-	/**
99
-	 * Retrieves submission items.
100
-	 *
101
-	 * @return GetPaid_Form_Item[]
102
-	 */
103
-	protected function get_submission_items() {
98
+    /**
99
+     * Retrieves submission items.
100
+     *
101
+     * @return GetPaid_Form_Item[]
102
+     */
103
+    protected function get_submission_items() {
104 104
 
105
-		$items = $this->payment_form_submission->get_items();
105
+        $items = $this->payment_form_submission->get_items();
106 106
 
107 107
         // Ensure that we have items.
108 108
         if ( empty( $items ) && ! $this->payment_form_submission->has_fees() ) {
109 109
             wp_send_json_error( __( 'Please provide at least one item or amount.', 'invoicing' ) );
110
-		}
111
-
112
-		return $items;
113
-	}
114
-
115
-	/**
116
-	 * Retrieves submission invoice.
117
-	 *
118
-	 * @return WPInv_Invoice
119
-	 */
120
-	protected function get_submission_invoice() {
121
-		$submission = $this->payment_form_submission;
122
-
123
-		if ( ! $submission->has_invoice() ) {
124
-			$invoice = new WPInv_Invoice();
125
-			$invoice->created_via( 'payment_form' );
126
-			return $invoice;
127 110
         }
128 111
 
129
-		$invoice = $submission->get_invoice();
112
+        return $items;
113
+    }
130 114
 
131
-		// Make sure that it is neither paid or refunded.
132
-		if ( $invoice->is_paid() || $invoice->is_refunded() ) {
133
-			wp_send_json_error( __( 'This invoice has already been paid for.', 'invoicing' ) );
134
-		}
115
+    /**
116
+     * Retrieves submission invoice.
117
+     *
118
+     * @return WPInv_Invoice
119
+     */
120
+    protected function get_submission_invoice() {
121
+        $submission = $this->payment_form_submission;
135 122
 
136
-		return $invoice;
137
-	}
123
+        if ( ! $submission->has_invoice() ) {
124
+            $invoice = new WPInv_Invoice();
125
+            $invoice->created_via( 'payment_form' );
126
+            return $invoice;
127
+        }
138 128
 
139
-	/**
140
-	 * Processes the submission invoice.
141
-	 *
142
-	 * @param WPInv_Invoice $invoice
143
-	 * @param GetPaid_Form_Item[] $items
144
-	 * @return WPInv_Invoice
145
-	 */
146
-	protected function process_submission_invoice( $invoice, $items ) {
129
+        $invoice = $submission->get_invoice();
147 130
 
148
-		$submission = $this->payment_form_submission;
149
-		$data       = $submission->get_data();
131
+        // Make sure that it is neither paid or refunded.
132
+        if ( $invoice->is_paid() || $invoice->is_refunded() ) {
133
+            wp_send_json_error( __( 'This invoice has already been paid for.', 'invoicing' ) );
134
+        }
150 135
 
151
-		// Set-up the invoice details.
152
-		$invoice->set_email( sanitize_email( $submission->get_billing_email() ) );
153
-		$invoice->set_user_id( $this->get_submission_customer() );
154
-		$invoice->set_payment_form( absint( $submission->get_payment_form()->get_id() ) );
136
+        return $invoice;
137
+    }
138
+
139
+    /**
140
+     * Processes the submission invoice.
141
+     *
142
+     * @param WPInv_Invoice $invoice
143
+     * @param GetPaid_Form_Item[] $items
144
+     * @return WPInv_Invoice
145
+     */
146
+    protected function process_submission_invoice( $invoice, $items ) {
147
+
148
+        $submission = $this->payment_form_submission;
149
+        $data       = $submission->get_data();
150
+
151
+        // Set-up the invoice details.
152
+        $invoice->set_email( sanitize_email( $submission->get_billing_email() ) );
153
+        $invoice->set_user_id( $this->get_submission_customer() );
154
+        $invoice->set_payment_form( absint( $submission->get_payment_form()->get_id() ) );
155 155
         $invoice->set_items( $items );
156 156
         $invoice->set_fees( $submission->get_fees() );
157 157
         $invoice->set_taxes( $submission->get_taxes() );
158
-		$invoice->set_discounts( $submission->get_discounts() );
159
-		$invoice->set_gateway( $data['wpi-gateway'] );
158
+        $invoice->set_discounts( $submission->get_discounts() );
159
+        $invoice->set_gateway( $data['wpi-gateway'] );
160 160
 
161
-		if ( $submission->has_discount_code() ) {
161
+        if ( $submission->has_discount_code() ) {
162 162
             $invoice->set_discount_code( $submission->get_discount_code() );
163
-		}
164
-
165
-		getpaid_maybe_add_default_address( $invoice );
166
-		return $invoice;
167
-	}
168
-
169
-	/**
170
-	 * Retrieves the submission's customer.
171
-	 *
172
-	 * @return int The customer id.
173
-	 */
174
-	protected function get_submission_customer() {
175
-		$submission = $this->payment_form_submission;
176
-
177
-		// If this is an existing invoice...
178
-		if ( $submission->has_invoice() ) {
179
-			return $submission->get_invoice()->get_user_id();
180
-		}
181
-
182
-		// (Maybe) create the user.
163
+        }
164
+
165
+        getpaid_maybe_add_default_address( $invoice );
166
+        return $invoice;
167
+    }
168
+
169
+    /**
170
+     * Retrieves the submission's customer.
171
+     *
172
+     * @return int The customer id.
173
+     */
174
+    protected function get_submission_customer() {
175
+        $submission = $this->payment_form_submission;
176
+
177
+        // If this is an existing invoice...
178
+        if ( $submission->has_invoice() ) {
179
+            return $submission->get_invoice()->get_user_id();
180
+        }
181
+
182
+        // (Maybe) create the user.
183 183
         $user = get_current_user_id();
184 184
 
185 185
         if ( empty( $user ) ) {
@@ -196,31 +196,31 @@  discard block
 block discarded – undo
196 196
 
197 197
         if ( is_numeric( $user ) ) {
198 198
             return $user;
199
-		}
199
+        }
200 200
 
201
-		return $user->ID;
201
+        return $user->ID;
202 202
 
203
-	}
203
+    }
204 204
 
205
-	/**
205
+    /**
206 206
      * Prepares submission data for saving to the database.
207 207
      *
208
-	 * @return array
208
+     * @return array
209 209
      */
210 210
     public function prepare_submission_data_for_saving() {
211 211
 
212
-		$submission = $this->payment_form_submission;
212
+        $submission = $this->payment_form_submission;
213 213
 
214
-		// Prepared submission details.
214
+        // Prepared submission details.
215 215
         $prepared = array();
216 216
 
217 217
         // Raw submission details.
218
-		$data     = $submission->get_data();
218
+        $data     = $submission->get_data();
219 219
 
220
-		// Loop through the submitted details.
220
+        // Loop through the submitted details.
221 221
         foreach ( $submission->get_payment_form()->get_elements() as $field ) {
222 222
 
223
-			// Skip premade fields.
223
+            // Skip premade fields.
224 224
             if ( ! empty( $field['premade'] ) || $field['type'] == 'address' ) {
225 225
                 continue;
226 226
             }
@@ -238,93 +238,93 @@  discard block
 block discarded – undo
238 238
                     $label = $field['label'];
239 239
                 }
240 240
 
241
-				$prepared[ wpinv_clean( $label ) ] = wp_kses_post( $data[ $field['id'] ] );
241
+                $prepared[ wpinv_clean( $label ) ] = wp_kses_post( $data[ $field['id'] ] );
242 242
 
243 243
             }
244 244
 
245
-		}
245
+        }
246 246
 
247
-		return $prepared;
247
+        return $prepared;
248 248
 
249
-	}
249
+    }
250 250
 
251
-	/**
251
+    /**
252 252
      * Retrieves address details.
253 253
      *
254
-	 * @return array
255
-	 * @param WPInv_Invoice $invoice
256
-	 * @param string $type
254
+     * @return array
255
+     * @param WPInv_Invoice $invoice
256
+     * @param string $type
257 257
      */
258 258
     public function prepare_address_details( $invoice, $type = 'billing' ) {
259 259
 
260
-		$data     = $this->payment_form_submission->get_data();
261
-		$type     = sanitize_key( $type );
262
-		$address  = array();
263
-		$prepared = array();
260
+        $data     = $this->payment_form_submission->get_data();
261
+        $type     = sanitize_key( $type );
262
+        $address  = array();
263
+        $prepared = array();
264 264
 
265
-		if ( ! empty( $data[ $type ] ) ) {
266
-			$address = $data[ $type ];
267
-		}
265
+        if ( ! empty( $data[ $type ] ) ) {
266
+            $address = $data[ $type ];
267
+        }
268 268
 
269
-		// Clean address details.
270
-		foreach ( $address as $key => $value ) {
271
-			$key             = sanitize_key( $key );
272
-			$key             = str_replace( 'wpinv_', '', $key );
273
-			$value           = wpinv_clean( $value );
274
-			$prepared[ $key] = apply_filters( "getpaid_checkout_{$type}_address_$key", $value, $this->payment_form_submission, $invoice );
275
-		}
269
+        // Clean address details.
270
+        foreach ( $address as $key => $value ) {
271
+            $key             = sanitize_key( $key );
272
+            $key             = str_replace( 'wpinv_', '', $key );
273
+            $value           = wpinv_clean( $value );
274
+            $prepared[ $key] = apply_filters( "getpaid_checkout_{$type}_address_$key", $value, $this->payment_form_submission, $invoice );
275
+        }
276 276
 
277
-		// Filter address details.
278
-		$prepared = apply_filters( "getpaid_checkout_{$type}_address", $prepared, $this->payment_form_submission, $invoice );
277
+        // Filter address details.
278
+        $prepared = apply_filters( "getpaid_checkout_{$type}_address", $prepared, $this->payment_form_submission, $invoice );
279 279
 
280
-		// Remove non-whitelisted values.
281
-		return array_filter( $prepared, 'getpaid_is_address_field_whitelisted', ARRAY_FILTER_USE_KEY );
280
+        // Remove non-whitelisted values.
281
+        return array_filter( $prepared, 'getpaid_is_address_field_whitelisted', ARRAY_FILTER_USE_KEY );
282 282
 
283
-	}
283
+    }
284 284
 
285
-	/**
285
+    /**
286 286
      * Prepares the billing details.
287 287
      *
288
-	 * @return array
289
-	 * @param WPInv_Invoice $invoice
288
+     * @return array
289
+     * @param WPInv_Invoice $invoice
290 290
      */
291 291
     protected function prepare_billing_info( &$invoice ) {
292 292
 
293
-		$billing_address = $this->prepare_address_details( $invoice, 'billing' );
293
+        $billing_address = $this->prepare_address_details( $invoice, 'billing' );
294 294
 
295
-		// Update the invoice with the billing details.
296
-		$invoice->set_props( $billing_address );
295
+        // Update the invoice with the billing details.
296
+        $invoice->set_props( $billing_address );
297 297
 
298
-	}
298
+    }
299 299
 
300
-	/**
300
+    /**
301 301
      * Prepares the shipping details.
302 302
      *
303
-	 * @return array
304
-	 * @param WPInv_Invoice $invoice
303
+     * @return array
304
+     * @param WPInv_Invoice $invoice
305 305
      */
306 306
     protected function prepare_shipping_info( $invoice ) {
307 307
 
308
-		$data = $this->payment_form_submission->get_data();
308
+        $data = $this->payment_form_submission->get_data();
309 309
 
310
-		if ( empty( $data['same-shipping-address'] ) ) {
311
-			return $this->prepare_address_details( $invoice, 'shipping' );
312
-		}
310
+        if ( empty( $data['same-shipping-address'] ) ) {
311
+            return $this->prepare_address_details( $invoice, 'shipping' );
312
+        }
313 313
 
314
-		return $this->prepare_address_details( $invoice, 'billing' );
314
+        return $this->prepare_address_details( $invoice, 'billing' );
315 315
 
316
-	}
316
+    }
317 317
 
318
-	/**
319
-	 * Confirms the submission is valid and send users to the gateway.
320
-	 *
321
-	 * @param WPInv_Invoice $invoice
322
-	 * @param array $prepared_payment_form_data
323
-	 * @param array $shipping
324
-	 */
325
-	protected function post_process_submission( $invoice, $prepared_payment_form_data, $shipping ) {
318
+    /**
319
+     * Confirms the submission is valid and send users to the gateway.
320
+     *
321
+     * @param WPInv_Invoice $invoice
322
+     * @param array $prepared_payment_form_data
323
+     * @param array $shipping
324
+     */
325
+    protected function post_process_submission( $invoice, $prepared_payment_form_data, $shipping ) {
326 326
 
327
-		// Ensure the invoice exists.
327
+        // Ensure the invoice exists.
328 328
         if ( ! $invoice->exists() ) {
329 329
             wp_send_json_error( __( 'An error occured while saving your invoice. Please try again.', 'invoicing' ) );
330 330
         }
@@ -332,81 +332,81 @@  discard block
 block discarded – undo
332 332
         // Save payment form data.
333 333
         if ( ! empty( $prepared_payment_form_data ) ) {
334 334
             update_post_meta( $invoice->get_id(), 'payment_form_data', $prepared_payment_form_data );
335
-		}
335
+        }
336 336
 
337
-		// Save payment form data.
337
+        // Save payment form data.
338 338
         if ( ! empty( $shipping ) ) {
339 339
             update_post_meta( $invoice->get_id(), 'shipping_address', $shipping );
340
-		}
340
+        }
341 341
 
342
-		// Backwards compatibility.
342
+        // Backwards compatibility.
343 343
         add_filter( 'wp_redirect', array( $this, 'send_redirect_response' ) );
344 344
 
345
-		$this->process_payment( $invoice );
345
+        $this->process_payment( $invoice );
346 346
 
347 347
         // If we are here, there was an error.
348
-		wpinv_send_back_to_checkout();
348
+        wpinv_send_back_to_checkout();
349 349
 
350
-	}
350
+    }
351 351
 
352
-	/**
353
-	 * Processes the actual payment.
354
-	 *
355
-	 * @param WPInv_Invoice $invoice
356
-	 */
357
-	protected function process_payment( $invoice ) {
352
+    /**
353
+     * Processes the actual payment.
354
+     *
355
+     * @param WPInv_Invoice $invoice
356
+     */
357
+    protected function process_payment( $invoice ) {
358 358
 
359
-		// Clear any checkout errors.
360
-		wpinv_clear_errors();
359
+        // Clear any checkout errors.
360
+        wpinv_clear_errors();
361 361
 
362
-		// No need to send free invoices to the gateway.
363
-		if ( $invoice->is_free() ) {
364
-			$this->process_free_payment( $invoice );
365
-		}
362
+        // No need to send free invoices to the gateway.
363
+        if ( $invoice->is_free() ) {
364
+            $this->process_free_payment( $invoice );
365
+        }
366 366
 
367
-		$submission = $this->payment_form_submission;
367
+        $submission = $this->payment_form_submission;
368 368
 
369
-		// Fires before sending to the gateway.
370
-		do_action( 'getpaid_checkout_before_gateway', $invoice, $submission );
369
+        // Fires before sending to the gateway.
370
+        do_action( 'getpaid_checkout_before_gateway', $invoice, $submission );
371 371
 
372
-		// Allow the sumission data to be modified before it is sent to the gateway.
373
-		$submission_data    = $submission->get_data();
374
-		$submission_gateway = apply_filters( 'getpaid_gateway_submission_gateway', $invoice->get_gateway(), $submission, $invoice );
375
-		$submission_data    = apply_filters( 'getpaid_gateway_submission_data', $submission_data, $submission, $invoice );
372
+        // Allow the sumission data to be modified before it is sent to the gateway.
373
+        $submission_data    = $submission->get_data();
374
+        $submission_gateway = apply_filters( 'getpaid_gateway_submission_gateway', $invoice->get_gateway(), $submission, $invoice );
375
+        $submission_data    = apply_filters( 'getpaid_gateway_submission_data', $submission_data, $submission, $invoice );
376 376
 
377
-		// Validate the currency.
378
-		if ( ! apply_filters( "getpaid_gateway_{$submission_gateway}_is_valid_for_currency", true, $invoice->get_currency() ) ) {
379
-			wpinv_set_error( 'invalid_currency', __( 'The chosen payment gateway does not support this currency', 'invoicing' ) );
380
-		}
377
+        // Validate the currency.
378
+        if ( ! apply_filters( "getpaid_gateway_{$submission_gateway}_is_valid_for_currency", true, $invoice->get_currency() ) ) {
379
+            wpinv_set_error( 'invalid_currency', __( 'The chosen payment gateway does not support this currency', 'invoicing' ) );
380
+        }
381 381
 
382
-		// Check to see if we have any errors.
383
-		if ( wpinv_get_errors() ) {
384
-			wpinv_send_back_to_checkout();
385
-		}
382
+        // Check to see if we have any errors.
383
+        if ( wpinv_get_errors() ) {
384
+            wpinv_send_back_to_checkout();
385
+        }
386 386
 
387
-		// Send info to the gateway for payment processing
388
-		do_action( "getpaid_gateway_$submission_gateway", $invoice, $submission_data, $submission );
387
+        // Send info to the gateway for payment processing
388
+        do_action( "getpaid_gateway_$submission_gateway", $invoice, $submission_data, $submission );
389 389
 
390
-		// Backwards compatibility.
391
-		wpinv_send_to_gateway( $submission_gateway, $invoice );
390
+        // Backwards compatibility.
391
+        wpinv_send_to_gateway( $submission_gateway, $invoice );
392 392
 
393
-	}
393
+    }
394 394
 
395
-	/**
396
-	 * Marks the invoice as paid in case the checkout is free.
397
-	 *
398
-	 * @param WPInv_Invoice $invoice
399
-	 */
400
-	protected function process_free_payment( $invoice ) {
395
+    /**
396
+     * Marks the invoice as paid in case the checkout is free.
397
+     *
398
+     * @param WPInv_Invoice $invoice
399
+     */
400
+    protected function process_free_payment( $invoice ) {
401 401
 
402
-		$invoice->set_gateway( 'none' );
403
-		$invoice->add_note( __( "This is a free invoice and won't be sent to the payment gateway", 'invoicing' ), false, false, true );
404
-		$invoice->mark_paid();
405
-		wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
402
+        $invoice->set_gateway( 'none' );
403
+        $invoice->add_note( __( "This is a free invoice and won't be sent to the payment gateway", 'invoicing' ), false, false, true );
404
+        $invoice->mark_paid();
405
+        wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
406 406
 
407
-	}
407
+    }
408 408
 
409
-	/**
409
+    /**
410 410
      * Sends a redrect response to payment details.
411 411
      *
412 412
      */
Please login to merge, or discard this patch.
templates/payment-forms/elements/address.php 1 patch
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -10,7 +10,7 @@  discard block
 block discarded – undo
10 10
 defined( 'ABSPATH' ) || exit;
11 11
 
12 12
 if ( empty( $fields ) ) {
13
-	return;
13
+    return;
14 14
 }
15 15
 
16 16
 // A prefix for all ids (so that a form can be included in the same page multiple times).
@@ -50,9 +50,9 @@  discard block
 block discarded – undo
50 50
 	<!-- Start Billing Address -->
51 51
 	<div class="getpaid-billing-address-wrapper">
52 52
 		<?php
53
-			$field_type = 'billing';
54
-			include plugin_dir_path( __FILE__ ) . 'address-fields.php';
55
-		?>
53
+            $field_type = 'billing';
54
+            include plugin_dir_path( __FILE__ ) . 'address-fields.php';
55
+        ?>
56 56
 	</div>
57 57
 	<!-- End Billing Address -->
58 58
 
@@ -64,19 +64,19 @@  discard block
 block discarded – undo
64 64
 
65 65
 	<?php
66 66
 		
67
-		echo aui()->input(
68
-		    array(
69
-			    'type'       => 'checkbox',
70
-			    'name'       => 'same-shipping-address',
71
-			    'id'         => "shipping-toggle$uniqid",
72
-			    'required'   => false,
73
-			    'label'      => wp_kses_post( $shipping_address_toggle ),
74
-			    'value'      => 1,
75
-			    'checked'    => true,
76
-		    )
77
-		);
67
+        echo aui()->input(
68
+            array(
69
+                'type'       => 'checkbox',
70
+                'name'       => 'same-shipping-address',
71
+                'id'         => "shipping-toggle$uniqid",
72
+                'required'   => false,
73
+                'label'      => wp_kses_post( $shipping_address_toggle ),
74
+                'value'      => 1,
75
+                'checked'    => true,
76
+            )
77
+        );
78 78
 
79
-	?>
79
+    ?>
80 80
 
81 81
 
82 82
 	<!-- Start Shipping Address Title -->
@@ -95,9 +95,9 @@  discard block
 block discarded – undo
95 95
 	<!-- Start Shipping Address -->
96 96
 	<div class="getpaid-shipping-address-wrapper">
97 97
 		<?php
98
-			$field_type = 'shipping';
99
-			include plugin_dir_path( __FILE__ ) . 'address-fields.php';
100
-		?>
98
+            $field_type = 'shipping';
99
+            include plugin_dir_path( __FILE__ ) . 'address-fields.php';
100
+        ?>
101 101
 	</div>
102 102
 	<!-- End Shipping Address -->
103 103
 
Please login to merge, or discard this patch.