Passed
Push — master ( 47b6fc...99ae46 )
by Brian
05:46 queued 20s
created
includes/payments/class-getpaid-payment-form.php 1 patch
Indentation   +565 added lines, -565 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,55 +10,55 @@  discard block
 block discarded – undo
10 10
 class GetPaid_Payment_Form extends GetPaid_Data {
11 11
 
12 12
     /**
13
-	 * Which data store to load.
14
-	 *
15
-	 * @var string
16
-	 */
13
+     * Which data store to load.
14
+     *
15
+     * @var string
16
+     */
17 17
     protected $data_store_name = 'payment_form';
18 18
 
19 19
     /**
20
-	 * This is the name of this object type.
21
-	 *
22
-	 * @var string
23
-	 */
24
-	protected $object_type = 'payment_form';
20
+     * This is the name of this object type.
21
+     *
22
+     * @var string
23
+     */
24
+    protected $object_type = 'payment_form';
25 25
 
26 26
     /**
27
-	 * Form Data array. This is the core form data exposed in APIs.
28
-	 *
29
-	 * @since 1.0.19
30
-	 * @var array
31
-	 */
32
-	protected $data = array(
33
-		'status'        => 'draft',
34
-		'version'       => '',
35
-		'date_created'  => null,
27
+     * Form Data array. This is the core form data exposed in APIs.
28
+     *
29
+     * @since 1.0.19
30
+     * @var array
31
+     */
32
+    protected $data = array(
33
+        'status'        => 'draft',
34
+        'version'       => '',
35
+        'date_created'  => null,
36 36
         'date_modified' => null,
37 37
         'name'          => '',
38 38
         'author'        => 1,
39 39
         'elements'      => null,
40
-		'items'         => null,
41
-		'earned'        => 0,
42
-		'refunded'      => 0,
43
-		'cancelled'     => 0,
44
-		'failed'        => 0,
45
-	);
46
-
47
-    /**
48
-	 * Stores meta in cache for future reads.
49
-	 *
50
-	 * A group must be set to to enable caching.
51
-	 *
52
-	 * @var string
53
-	 */
54
-	protected $cache_group = 'getpaid_forms';
55
-
56
-	/**
57
-	 * Stores a reference to the invoice if the form is for an invoice..
58
-	 *
59
-	 * @var WPInv_Invoice
60
-	 */
61
-	public $invoice = 0;
40
+        'items'         => null,
41
+        'earned'        => 0,
42
+        'refunded'      => 0,
43
+        'cancelled'     => 0,
44
+        'failed'        => 0,
45
+    );
46
+
47
+    /**
48
+     * Stores meta in cache for future reads.
49
+     *
50
+     * A group must be set to to enable caching.
51
+     *
52
+     * @var string
53
+     */
54
+    protected $cache_group = 'getpaid_forms';
55
+
56
+    /**
57
+     * Stores a reference to the invoice if the form is for an invoice..
58
+     *
59
+     * @var WPInv_Invoice
60
+     */
61
+    public $invoice = 0;
62 62
 
63 63
     /**
64 64
      * Stores a reference to the original WP_Post object
@@ -68,35 +68,35 @@  discard block
 block discarded – undo
68 68
     protected $post = null;
69 69
 
70 70
     /**
71
-	 * Get the form if ID is passed, otherwise the form is new and empty.
72
-	 *
73
-	 * @param  int|object|GetPaid_Payment_Form|WP_Post $form Form to read.
74
-	 */
75
-	public function __construct( $form = 0 ) {
76
-		parent::__construct( $form );
71
+     * Get the form if ID is passed, otherwise the form is new and empty.
72
+     *
73
+     * @param  int|object|GetPaid_Payment_Form|WP_Post $form Form to read.
74
+     */
75
+    public function __construct( $form = 0 ) {
76
+        parent::__construct( $form );
77 77
 
78
-		if ( is_numeric( $form ) && $form > 0 ) {
79
-			$this->set_id( $form );
80
-		} elseif ( $form instanceof self ) {
78
+        if ( is_numeric( $form ) && $form > 0 ) {
79
+            $this->set_id( $form );
80
+        } elseif ( $form instanceof self ) {
81 81
 
82
-			$this->set_id( $form->get_id() );
83
-			$this->invoice = $form->invoice;
82
+            $this->set_id( $form->get_id() );
83
+            $this->invoice = $form->invoice;
84 84
 
85
-		} elseif ( ! empty( $form->ID ) ) {
86
-			$this->set_id( $form->ID );
87
-		} else {
88
-			$this->set_object_read( true );
89
-		}
85
+        } elseif ( ! empty( $form->ID ) ) {
86
+            $this->set_id( $form->ID );
87
+        } else {
88
+            $this->set_object_read( true );
89
+        }
90 90
 
91 91
         // Load the datastore.
92
-		$this->data_store = GetPaid_Data_Store::load( $this->data_store_name );
92
+        $this->data_store = GetPaid_Data_Store::load( $this->data_store_name );
93 93
 
94
-		if ( $this->get_id() > 0 ) {
94
+        if ( $this->get_id() > 0 ) {
95 95
             $this->post = get_post( $this->get_id() );
96
-			$this->data_store->read( $this );
96
+            $this->data_store->read( $this );
97 97
         }
98 98
 
99
-	}
99
+    }
100 100
 
101 101
     /*
102 102
 	|--------------------------------------------------------------------------
@@ -114,356 +114,356 @@  discard block
 block discarded – undo
114 114
     */
115 115
 
116 116
     /**
117
-	 * Get plugin version when the form was created.
118
-	 *
119
-	 * @since 1.0.19
120
-	 * @param  string $context View or edit context.
121
-	 * @return string
122
-	 */
123
-	public function get_version( $context = 'view' ) {
124
-		return $this->get_prop( 'version', $context );
117
+     * Get plugin version when the form was created.
118
+     *
119
+     * @since 1.0.19
120
+     * @param  string $context View or edit context.
121
+     * @return string
122
+     */
123
+    public function get_version( $context = 'view' ) {
124
+        return $this->get_prop( 'version', $context );
125 125
     }
126 126
 
127 127
     /**
128
-	 * Get date when the form was created.
129
-	 *
130
-	 * @since 1.0.19
131
-	 * @param  string $context View or edit context.
132
-	 * @return string
133
-	 */
134
-	public function get_date_created( $context = 'view' ) {
135
-		return $this->get_prop( 'date_created', $context );
128
+     * Get date when the form was created.
129
+     *
130
+     * @since 1.0.19
131
+     * @param  string $context View or edit context.
132
+     * @return string
133
+     */
134
+    public function get_date_created( $context = 'view' ) {
135
+        return $this->get_prop( 'date_created', $context );
136 136
     }
137 137
 
138 138
     /**
139
-	 * Get GMT date when the form was created.
140
-	 *
141
-	 * @since 1.0.19
142
-	 * @param  string $context View or edit context.
143
-	 * @return string
144
-	 */
145
-	public function get_date_created_gmt( $context = 'view' ) {
139
+     * Get GMT date when the form was created.
140
+     *
141
+     * @since 1.0.19
142
+     * @param  string $context View or edit context.
143
+     * @return string
144
+     */
145
+    public function get_date_created_gmt( $context = 'view' ) {
146 146
         $date = $this->get_date_created( $context );
147 147
 
148 148
         if ( $date ) {
149 149
             $date = get_gmt_from_date( $date );
150 150
         }
151
-		return $date;
151
+        return $date;
152 152
     }
153 153
 
154 154
     /**
155
-	 * Get date when the form was last modified.
156
-	 *
157
-	 * @since 1.0.19
158
-	 * @param  string $context View or edit context.
159
-	 * @return string
160
-	 */
161
-	public function get_date_modified( $context = 'view' ) {
162
-		return $this->get_prop( 'date_modified', $context );
155
+     * Get date when the form was last modified.
156
+     *
157
+     * @since 1.0.19
158
+     * @param  string $context View or edit context.
159
+     * @return string
160
+     */
161
+    public function get_date_modified( $context = 'view' ) {
162
+        return $this->get_prop( 'date_modified', $context );
163 163
     }
164 164
 
165 165
     /**
166
-	 * Get GMT date when the form was last modified.
167
-	 *
168
-	 * @since 1.0.19
169
-	 * @param  string $context View or edit context.
170
-	 * @return string
171
-	 */
172
-	public function get_date_modified_gmt( $context = 'view' ) {
166
+     * Get GMT date when the form was last modified.
167
+     *
168
+     * @since 1.0.19
169
+     * @param  string $context View or edit context.
170
+     * @return string
171
+     */
172
+    public function get_date_modified_gmt( $context = 'view' ) {
173 173
         $date = $this->get_date_modified( $context );
174 174
 
175 175
         if ( $date ) {
176 176
             $date = get_gmt_from_date( $date );
177 177
         }
178
-		return $date;
178
+        return $date;
179 179
     }
180 180
 
181 181
     /**
182
-	 * Get the form name.
183
-	 *
184
-	 * @since 1.0.19
185
-	 * @param  string $context View or edit context.
186
-	 * @return string
187
-	 */
188
-	public function get_name( $context = 'view' ) {
189
-		return $this->get_prop( 'name', $context );
182
+     * Get the form name.
183
+     *
184
+     * @since 1.0.19
185
+     * @param  string $context View or edit context.
186
+     * @return string
187
+     */
188
+    public function get_name( $context = 'view' ) {
189
+        return $this->get_prop( 'name', $context );
190 190
     }
191 191
 
192 192
     /**
193
-	 * Alias of self::get_name().
194
-	 *
195
-	 * @since 1.0.19
196
-	 * @param  string $context View or edit context.
197
-	 * @return string
198
-	 */
199
-	public function get_title( $context = 'view' ) {
200
-		return $this->get_name( $context );
201
-	}
193
+     * Alias of self::get_name().
194
+     *
195
+     * @since 1.0.19
196
+     * @param  string $context View or edit context.
197
+     * @return string
198
+     */
199
+    public function get_title( $context = 'view' ) {
200
+        return $this->get_name( $context );
201
+    }
202 202
 
203 203
     /**
204
-	 * Get the owner of the form.
205
-	 *
206
-	 * @since 1.0.19
207
-	 * @param  string $context View or edit context.
208
-	 * @return int
209
-	 */
210
-	public function get_author( $context = 'view' ) {
211
-		return (int) $this->get_prop( 'author', $context );
204
+     * Get the owner of the form.
205
+     *
206
+     * @since 1.0.19
207
+     * @param  string $context View or edit context.
208
+     * @return int
209
+     */
210
+    public function get_author( $context = 'view' ) {
211
+        return (int) $this->get_prop( 'author', $context );
212 212
     }
213 213
 
214 214
     /**
215
-	 * Get the elements that make up the form.
216
-	 *
217
-	 * @since 1.0.19
218
-	 * @param  string $context View or edit context.
219
-	 * @return array
220
-	 */
221
-	public function get_elements( $context = 'view' ) {
222
-		$elements = $this->get_prop( 'elements', $context );
215
+     * Get the elements that make up the form.
216
+     *
217
+     * @since 1.0.19
218
+     * @param  string $context View or edit context.
219
+     * @return array
220
+     */
221
+    public function get_elements( $context = 'view' ) {
222
+        $elements = $this->get_prop( 'elements', $context );
223 223
 
224
-		if ( empty( $elements ) || ! is_array( $elements ) ) {
224
+        if ( empty( $elements ) || ! is_array( $elements ) ) {
225 225
             return wpinv_get_data( 'sample-payment-form' );
226
-		}
226
+        }
227 227
 
228
-		// Ensure that all required elements exist.
229
-		$_elements = array();
230
-		foreach ( $elements as $element ) {
228
+        // Ensure that all required elements exist.
229
+        $_elements = array();
230
+        foreach ( $elements as $element ) {
231 231
 
232
-			if ( $element['type'] == 'pay_button' && ! $this->has_element_type( 'gateway_select' ) ) {
232
+            if ( $element['type'] == 'pay_button' && ! $this->has_element_type( 'gateway_select' ) ) {
233 233
 
234
-				$_elements[] = array(
235
-					'text'    => __( 'Select Payment Method', 'invoicing' ),
236
-					'id'      => 'gtscicd',
237
-					'name'    => 'gtscicd',
238
-					'type'    => 'gateway_select',
239
-					'premade' => true,
234
+                $_elements[] = array(
235
+                    'text'    => __( 'Select Payment Method', 'invoicing' ),
236
+                    'id'      => 'gtscicd',
237
+                    'name'    => 'gtscicd',
238
+                    'type'    => 'gateway_select',
239
+                    'premade' => true,
240 240
 
241
-				);
241
+                );
242 242
 
243
-			}
243
+            }
244 244
 
245
-			$_elements[] = $element;
245
+            $_elements[] = $element;
246 246
 
247
-		}
247
+        }
248 248
 
249 249
         return $_elements;
250
-	}
251
-
252
-	/**
253
-	 * Get the items sold via the form.
254
-	 *
255
-	 * @since 1.0.19
256
-	 * @param  string $context View or edit context.
257
-	 * @param  string $return objects or arrays.
258
-	 * @return GetPaid_Form_Item[]
259
-	 */
260
-	public function get_items( $context = 'view', $return = 'objects' ) {
261
-		$items = $this->get_prop( 'items', $context );
262
-
263
-		if ( empty( $items ) || ! is_array( $items ) ) {
250
+    }
251
+
252
+    /**
253
+     * Get the items sold via the form.
254
+     *
255
+     * @since 1.0.19
256
+     * @param  string $context View or edit context.
257
+     * @param  string $return objects or arrays.
258
+     * @return GetPaid_Form_Item[]
259
+     */
260
+    public function get_items( $context = 'view', $return = 'objects' ) {
261
+        $items = $this->get_prop( 'items', $context );
262
+
263
+        if ( empty( $items ) || ! is_array( $items ) ) {
264 264
             $items = wpinv_get_data( 'sample-payment-form-items' );
265
-		}
265
+        }
266 266
 
267
-		// Convert the items.
268
-		$prepared = array();
267
+        // Convert the items.
268
+        $prepared = array();
269 269
 
270
-		foreach ( $items as $key => $value ) {
270
+        foreach ( $items as $key => $value ) {
271 271
 
272
-			// Form items.
273
-			if ( $value instanceof GetPaid_Form_Item ) {
272
+            // Form items.
273
+            if ( $value instanceof GetPaid_Form_Item ) {
274 274
 
275
-				if ( $value->can_purchase() ) {
276
-					$prepared[] = $value;
277
-				}
275
+                if ( $value->can_purchase() ) {
276
+                    $prepared[] = $value;
277
+                }
278 278
 
279
-				continue;
279
+                continue;
280 280
 
281
-			}
281
+            }
282 282
 
283
-			// $item_id => $quantity (buy buttons)
284
-			if ( is_numeric( $key ) && is_numeric( $value ) ) {
285
-				$item = new GetPaid_Form_Item( $key );
283
+            // $item_id => $quantity (buy buttons)
284
+            if ( is_numeric( $key ) && is_numeric( $value ) ) {
285
+                $item = new GetPaid_Form_Item( $key );
286 286
 
287
-				if ( $item->can_purchase() ) {
287
+                if ( $item->can_purchase() ) {
288 288
 
289
-					$value = (float) $value;
290
-					$item->set_quantity( $value );
291
-					if ( 0 == $value ) {
292
-						$item->set_quantity( 1 );
293
-						$item->set_allow_quantities( true );
294
-					}
289
+                    $value = (float) $value;
290
+                    $item->set_quantity( $value );
291
+                    if ( 0 == $value ) {
292
+                        $item->set_quantity( 1 );
293
+                        $item->set_allow_quantities( true );
294
+                    }
295 295
 
296
-					$prepared[] = $item;
297
-				}
296
+                    $prepared[] = $item;
297
+                }
298 298
 
299
-				continue;
300
-			}
299
+                continue;
300
+            }
301 301
 
302
-			// Items saved via payment forms editor.
303
-			if ( is_array( $value ) && isset( $value['id'] ) ) {
302
+            // Items saved via payment forms editor.
303
+            if ( is_array( $value ) && isset( $value['id'] ) ) {
304 304
 
305
-				$item = new GetPaid_Form_Item( $value['id'] );
305
+                $item = new GetPaid_Form_Item( $value['id'] );
306 306
 
307
-				if ( ! $item->can_purchase() ) {
308
-					continue;
309
-				}
307
+                if ( ! $item->can_purchase() ) {
308
+                    continue;
309
+                }
310 310
 
311
-				// Sub-total (Cart items).
312
-				if ( isset( $value['subtotal'] ) ) {
313
-					$item->set_price( $value['subtotal'] );
314
-				}
311
+                // Sub-total (Cart items).
312
+                if ( isset( $value['subtotal'] ) ) {
313
+                    $item->set_price( $value['subtotal'] );
314
+                }
315 315
 
316
-				if ( isset( $value['quantity'] ) ) {
317
-					$item->set_quantity( $value['quantity'] );
318
-				}
316
+                if ( isset( $value['quantity'] ) ) {
317
+                    $item->set_quantity( $value['quantity'] );
318
+                }
319 319
 
320
-				if ( isset( $value['allow_quantities'] ) ) {
321
-					$item->set_allow_quantities( $value['allow_quantities'] );
322
-				}
320
+                if ( isset( $value['allow_quantities'] ) ) {
321
+                    $item->set_allow_quantities( $value['allow_quantities'] );
322
+                }
323 323
 
324
-				if ( isset( $value['required'] ) ) {
325
-					$item->set_is_required( $value['required'] );
326
-				}
324
+                if ( isset( $value['required'] ) ) {
325
+                    $item->set_is_required( $value['required'] );
326
+                }
327 327
 
328
-				if ( isset( $value['description'] ) ) {
329
-					$item->set_custom_description( $value['description'] );
330
-				}
328
+                if ( isset( $value['description'] ) ) {
329
+                    $item->set_custom_description( $value['description'] );
330
+                }
331 331
 
332
-				$prepared[] = $item;
333
-				continue;
332
+                $prepared[] = $item;
333
+                continue;
334 334
 
335
-			}
335
+            }
336 336
 
337
-			// $item_id => array( 'price' => 10 ) (item variations)
338
-			if ( is_numeric( $key ) && is_array( $value ) ) {
339
-				$item = new GetPaid_Form_Item( $key );
337
+            // $item_id => array( 'price' => 10 ) (item variations)
338
+            if ( is_numeric( $key ) && is_array( $value ) ) {
339
+                $item = new GetPaid_Form_Item( $key );
340 340
 
341
-				if ( isset( $value['price'] ) && $item->user_can_set_their_price() ) {
342
-					$item->set_price( $value['price'] );
343
-				}
341
+                if ( isset( $value['price'] ) && $item->user_can_set_their_price() ) {
342
+                    $item->set_price( $value['price'] );
343
+                }
344 344
 
345
-				if ( $item->can_purchase() ) {
346
-					$prepared[] = $item;
347
-				}
345
+                if ( $item->can_purchase() ) {
346
+                    $prepared[] = $item;
347
+                }
348 348
 
349
-				continue;
350
-			}
349
+                continue;
350
+            }
351 351
 }
352 352
 
353
-		if ( 'objects' == $return && 'view' == $context ) {
354
-			return $prepared;
355
-		}
356
-
357
-		$items = array();
358
-		foreach ( $prepared as $item ) {
359
-			$items[] = $item->prepare_data_for_use();
360
-		}
361
-
362
-		return $items;
363
-	}
364
-
365
-	/**
366
-	 * Get a single item belonging to the form.
367
-	 *
368
-	 * @since 1.0.19
369
-	 * @param  int $item_id The item id to return.
370
-	 * @return GetPaid_Form_Item|bool
371
-	 */
372
-	public function get_item( $item_id ) {
373
-
374
-		if ( empty( $item_id ) || ! is_numeric( $item_id ) ) {
375
-			return false;
376
-		}
377
-
378
-		foreach ( $this->get_items() as $item ) {
379
-			if ( $item->get_id() == (int) $item_id ) {
380
-				return $item;
381
-			}
382
-		}
383
-
384
-		return false;
385
-
386
-	}
387
-
388
-	/**
389
-	 * Gets a single element.
390
-	 *
391
-	 * @since 1.0.19
392
-	 * @param  string $element_type The element type to return.
393
-	 * @return array|bool
394
-	 */
395
-	public function get_element_type( $element_type ) {
396
-
397
-		if ( empty( $element_type ) || ! is_scalar( $element_type ) ) {
398
-			return false;
399
-		}
400
-
401
-		foreach ( $this->get_prop( 'elements' ) as $element ) {
402
-
403
-			if ( $element['type'] == $element_type ) {
404
-				return $element;
405
-			}
353
+        if ( 'objects' == $return && 'view' == $context ) {
354
+            return $prepared;
355
+        }
356
+
357
+        $items = array();
358
+        foreach ( $prepared as $item ) {
359
+            $items[] = $item->prepare_data_for_use();
360
+        }
361
+
362
+        return $items;
363
+    }
364
+
365
+    /**
366
+     * Get a single item belonging to the form.
367
+     *
368
+     * @since 1.0.19
369
+     * @param  int $item_id The item id to return.
370
+     * @return GetPaid_Form_Item|bool
371
+     */
372
+    public function get_item( $item_id ) {
373
+
374
+        if ( empty( $item_id ) || ! is_numeric( $item_id ) ) {
375
+            return false;
376
+        }
377
+
378
+        foreach ( $this->get_items() as $item ) {
379
+            if ( $item->get_id() == (int) $item_id ) {
380
+                return $item;
381
+            }
382
+        }
383
+
384
+        return false;
385
+
386
+    }
387
+
388
+    /**
389
+     * Gets a single element.
390
+     *
391
+     * @since 1.0.19
392
+     * @param  string $element_type The element type to return.
393
+     * @return array|bool
394
+     */
395
+    public function get_element_type( $element_type ) {
396
+
397
+        if ( empty( $element_type ) || ! is_scalar( $element_type ) ) {
398
+            return false;
399
+        }
400
+
401
+        foreach ( $this->get_prop( 'elements' ) as $element ) {
402
+
403
+            if ( $element['type'] == $element_type ) {
404
+                return $element;
405
+            }
406 406
 }
407 407
 
408
-		return false;
409
-
410
-	}
411
-
412
-	/**
413
-	 * Get the total amount earned via this form.
414
-	 *
415
-	 * @since 1.0.19
416
-	 * @param  string $context View or edit context.
417
-	 * @return float
418
-	 */
419
-	public function get_earned( $context = 'view' ) {
420
-		return $this->get_prop( 'earned', $context );
421
-	}
422
-
423
-	/**
424
-	 * Get the total amount refunded via this form.
425
-	 *
426
-	 * @since 1.0.19
427
-	 * @param  string $context View or edit context.
428
-	 * @return float
429
-	 */
430
-	public function get_refunded( $context = 'view' ) {
431
-		return $this->get_prop( 'refunded', $context );
432
-	}
433
-
434
-	/**
435
-	 * Get the total amount cancelled via this form.
436
-	 *
437
-	 * @since 1.0.19
438
-	 * @param  string $context View or edit context.
439
-	 * @return float
440
-	 */
441
-	public function get_cancelled( $context = 'view' ) {
442
-		return $this->get_prop( 'cancelled', $context );
443
-	}
444
-
445
-	/**
446
-	 * Get the total amount failed via this form.
447
-	 *
448
-	 * @since 1.0.19
449
-	 * @param  string $context View or edit context.
450
-	 * @return float
451
-	 */
452
-	public function get_failed( $context = 'view' ) {
453
-		return $this->get_prop( 'failed', $context );
454
-	}
455
-
456
-	/**
457
-	 * Get the currency.
458
-	 *
459
-	 * @since 1.0.19
460
-	 * @param  string $context View or edit context.
461
-	 * @return string
462
-	 */
463
-	public function get_currency() {
464
-		$currency = empty( $this->invoice ) ? wpinv_get_currency() : $this->invoice->get_currency();
465
-		return apply_filters( 'getpaid-payment-form-currency', $currency, $this );
466
-	}
408
+        return false;
409
+
410
+    }
411
+
412
+    /**
413
+     * Get the total amount earned via this form.
414
+     *
415
+     * @since 1.0.19
416
+     * @param  string $context View or edit context.
417
+     * @return float
418
+     */
419
+    public function get_earned( $context = 'view' ) {
420
+        return $this->get_prop( 'earned', $context );
421
+    }
422
+
423
+    /**
424
+     * Get the total amount refunded via this form.
425
+     *
426
+     * @since 1.0.19
427
+     * @param  string $context View or edit context.
428
+     * @return float
429
+     */
430
+    public function get_refunded( $context = 'view' ) {
431
+        return $this->get_prop( 'refunded', $context );
432
+    }
433
+
434
+    /**
435
+     * Get the total amount cancelled via this form.
436
+     *
437
+     * @since 1.0.19
438
+     * @param  string $context View or edit context.
439
+     * @return float
440
+     */
441
+    public function get_cancelled( $context = 'view' ) {
442
+        return $this->get_prop( 'cancelled', $context );
443
+    }
444
+
445
+    /**
446
+     * Get the total amount failed via this form.
447
+     *
448
+     * @since 1.0.19
449
+     * @param  string $context View or edit context.
450
+     * @return float
451
+     */
452
+    public function get_failed( $context = 'view' ) {
453
+        return $this->get_prop( 'failed', $context );
454
+    }
455
+
456
+    /**
457
+     * Get the currency.
458
+     *
459
+     * @since 1.0.19
460
+     * @param  string $context View or edit context.
461
+     * @return string
462
+     */
463
+    public function get_currency() {
464
+        $currency = empty( $this->invoice ) ? wpinv_get_currency() : $this->invoice->get_currency();
465
+        return apply_filters( 'getpaid-payment-form-currency', $currency, $this );
466
+    }
467 467
 
468 468
     /*
469 469
 	|--------------------------------------------------------------------------
@@ -476,22 +476,22 @@  discard block
 block discarded – undo
476 476
     */
477 477
 
478 478
     /**
479
-	 * Set plugin version when the item was created.
480
-	 *
481
-	 * @since 1.0.19
482
-	 */
483
-	public function set_version( $value ) {
484
-		$this->set_prop( 'version', $value );
479
+     * Set plugin version when the item was created.
480
+     *
481
+     * @since 1.0.19
482
+     */
483
+    public function set_version( $value ) {
484
+        $this->set_prop( 'version', $value );
485 485
     }
486 486
 
487 487
     /**
488
-	 * Set date when the item was created.
489
-	 *
490
-	 * @since 1.0.19
491
-	 * @param string $value Value to set.
488
+     * Set date when the item was created.
489
+     *
490
+     * @since 1.0.19
491
+     * @param string $value Value to set.
492 492
      * @return bool Whether or not the date was set.
493
-	 */
494
-	public function set_date_created( $value ) {
493
+     */
494
+    public function set_date_created( $value ) {
495 495
         $date = strtotime( $value );
496 496
 
497 497
         if ( $date ) {
@@ -504,13 +504,13 @@  discard block
 block discarded – undo
504 504
     }
505 505
 
506 506
     /**
507
-	 * Set date when the item was last modified.
508
-	 *
509
-	 * @since 1.0.19
510
-	 * @param string $value Value to set.
507
+     * Set date when the item was last modified.
508
+     *
509
+     * @since 1.0.19
510
+     * @param string $value Value to set.
511 511
      * @return bool Whether or not the date was set.
512
-	 */
513
-	public function set_date_modified( $value ) {
512
+     */
513
+    public function set_date_modified( $value ) {
514 514
         $date = strtotime( $value );
515 515
 
516 516
         if ( $date ) {
@@ -523,164 +523,164 @@  discard block
 block discarded – undo
523 523
     }
524 524
 
525 525
     /**
526
-	 * Set the item name.
527
-	 *
528
-	 * @since 1.0.19
529
-	 * @param  string $value New name.
530
-	 */
531
-	public function set_name( $value ) {
532
-		$this->set_prop( 'name', sanitize_text_field( $value ) );
533
-    }
534
-
535
-    /**
536
-	 * Alias of self::set_name().
537
-	 *
538
-	 * @since 1.0.19
539
-	 * @param  string $value New name.
540
-	 */
541
-	public function set_title( $value ) {
542
-		$this->set_name( $value );
543
-    }
544
-
545
-    /**
546
-	 * Set the owner of the item.
547
-	 *
548
-	 * @since 1.0.19
549
-	 * @param  int $value New author.
550
-	 */
551
-	public function set_author( $value ) {
552
-		$this->set_prop( 'author', (int) $value );
553
-	}
554
-
555
-	/**
556
-	 * Set the form elements.
557
-	 *
558
-	 * @since 1.0.19
559
-	 * @sinve 2.3.4 Array values sanitized.
560
-	 * @param  array $value Form elements.
561
-	 */
562
-	public function set_elements( $value ) {
563
-		if ( is_array( $value ) ) {
564
-			$this->set_prop( 'elements', wp_kses_post_deep( $value ) );
565
-		}
566
-	}
567
-
568
-	/**
569
-	 * Sanitize array values.
570
-	 *
571
-	 * @param $value
572
-	 *
573
-	 * @return mixed
574
-	 */
575
-	public function sanitize_array_values( $value ) {
576
-
577
-		// sanitize
578
-		if ( ! empty( $value ) ) {
579
-
580
-			foreach ( $value as $key => $val_arr ) {
581
-
582
-				if ( is_array( $val_arr ) ) {
583
-					// check if we have sub array items.
584
-					$sub_arr = array();
585
-					foreach ( $val_arr as $key2 => $val2 ) {
586
-						if ( is_array( $val2 ) ) {
587
-							$sub_arr[ $key2 ] = $this->sanitize_array_values( $val2 );
588
-							unset( $val_arr[ $key ][ $key2 ] );
589
-						}
590
-					}
591
-
592
-					// we allow some html in description so we sanitize it separately.
593
-					$help_text = ! empty( $val_arr['description'] ) ? wp_kses_post( $val_arr['description'] ) : '';
594
-
595
-					// sanitize array elements
596
-					$value[ $key ] = array_map( 'sanitize_text_field', $val_arr );
597
-
598
-					// add back the description if set
599
-					if ( isset( $val_arr['description'] ) ) {
526
+     * Set the item name.
527
+     *
528
+     * @since 1.0.19
529
+     * @param  string $value New name.
530
+     */
531
+    public function set_name( $value ) {
532
+        $this->set_prop( 'name', sanitize_text_field( $value ) );
533
+    }
534
+
535
+    /**
536
+     * Alias of self::set_name().
537
+     *
538
+     * @since 1.0.19
539
+     * @param  string $value New name.
540
+     */
541
+    public function set_title( $value ) {
542
+        $this->set_name( $value );
543
+    }
544
+
545
+    /**
546
+     * Set the owner of the item.
547
+     *
548
+     * @since 1.0.19
549
+     * @param  int $value New author.
550
+     */
551
+    public function set_author( $value ) {
552
+        $this->set_prop( 'author', (int) $value );
553
+    }
554
+
555
+    /**
556
+     * Set the form elements.
557
+     *
558
+     * @since 1.0.19
559
+     * @sinve 2.3.4 Array values sanitized.
560
+     * @param  array $value Form elements.
561
+     */
562
+    public function set_elements( $value ) {
563
+        if ( is_array( $value ) ) {
564
+            $this->set_prop( 'elements', wp_kses_post_deep( $value ) );
565
+        }
566
+    }
567
+
568
+    /**
569
+     * Sanitize array values.
570
+     *
571
+     * @param $value
572
+     *
573
+     * @return mixed
574
+     */
575
+    public function sanitize_array_values( $value ) {
576
+
577
+        // sanitize
578
+        if ( ! empty( $value ) ) {
579
+
580
+            foreach ( $value as $key => $val_arr ) {
581
+
582
+                if ( is_array( $val_arr ) ) {
583
+                    // check if we have sub array items.
584
+                    $sub_arr = array();
585
+                    foreach ( $val_arr as $key2 => $val2 ) {
586
+                        if ( is_array( $val2 ) ) {
587
+                            $sub_arr[ $key2 ] = $this->sanitize_array_values( $val2 );
588
+                            unset( $val_arr[ $key ][ $key2 ] );
589
+                        }
590
+                    }
591
+
592
+                    // we allow some html in description so we sanitize it separately.
593
+                    $help_text = ! empty( $val_arr['description'] ) ? wp_kses_post( $val_arr['description'] ) : '';
594
+
595
+                    // sanitize array elements
596
+                    $value[ $key ] = array_map( 'sanitize_text_field', $val_arr );
597
+
598
+                    // add back the description if set
599
+                    if ( isset( $val_arr['description'] ) ) {
600 600
 $value[ $key ]['description'] = $help_text;}
601 601
 
602
-					// add back sub array items after its been sanitized.
603
-					if ( ! empty( $sub_arr ) ) {
604
-						$value[ $key ] = array_merge( $value[ $key ], $sub_arr );
605
-					}
606
-				}
602
+                    // add back sub array items after its been sanitized.
603
+                    if ( ! empty( $sub_arr ) ) {
604
+                        $value[ $key ] = array_merge( $value[ $key ], $sub_arr );
605
+                    }
606
+                }
607 607
 }
608 608
 }
609 609
 
610
-		return $value;
611
-	}
612
-
613
-	/**
614
-	 * Set the form items.
615
-	 *
616
-	 * @since 1.0.19
617
-	 * @param  array $value Form elements.
618
-	 */
619
-	public function set_items( $value ) {
620
-		if ( is_array( $value ) ) {
621
-			$this->set_prop( 'items', $value );
622
-		}
623
-	}
624
-
625
-	/**
626
-	 * Set the total amount earned via this form.
627
-	 *
628
-	 * @since 1.0.19
629
-	 * @param  float $value Amount earned.
630
-	 */
631
-	public function set_earned( $value ) {
632
-		$value = max( (float) $value, 0 );
633
-		$this->set_prop( 'earned', $value );
634
-	}
635
-
636
-	/**
637
-	 * Set the total amount refunded via this form.
638
-	 *
639
-	 * @since 1.0.19
640
-	 * @param  float $value Amount refunded.
641
-	 */
642
-	public function set_refunded( $value ) {
643
-		$value = max( (float) $value, 0 );
644
-		$this->set_prop( 'refunded', $value );
645
-	}
646
-
647
-	/**
648
-	 * Set the total amount cancelled via this form.
649
-	 *
650
-	 * @since 1.0.19
651
-	 * @param  float $value Amount cancelled.
652
-	 */
653
-	public function set_cancelled( $value ) {
654
-		$value = max( (float) $value, 0 );
655
-		$this->set_prop( 'cancelled', $value );
656
-	}
657
-
658
-	/**
659
-	 * Set the total amount failed via this form.
660
-	 *
661
-	 * @since 1.0.19
662
-	 * @param  float $value Amount cancelled.
663
-	 */
664
-	public function set_failed( $value ) {
665
-		$value = max( (float) $value, 0 );
666
-		$this->set_prop( 'failed', $value );
667
-	}
610
+        return $value;
611
+    }
612
+
613
+    /**
614
+     * Set the form items.
615
+     *
616
+     * @since 1.0.19
617
+     * @param  array $value Form elements.
618
+     */
619
+    public function set_items( $value ) {
620
+        if ( is_array( $value ) ) {
621
+            $this->set_prop( 'items', $value );
622
+        }
623
+    }
624
+
625
+    /**
626
+     * Set the total amount earned via this form.
627
+     *
628
+     * @since 1.0.19
629
+     * @param  float $value Amount earned.
630
+     */
631
+    public function set_earned( $value ) {
632
+        $value = max( (float) $value, 0 );
633
+        $this->set_prop( 'earned', $value );
634
+    }
635
+
636
+    /**
637
+     * Set the total amount refunded via this form.
638
+     *
639
+     * @since 1.0.19
640
+     * @param  float $value Amount refunded.
641
+     */
642
+    public function set_refunded( $value ) {
643
+        $value = max( (float) $value, 0 );
644
+        $this->set_prop( 'refunded', $value );
645
+    }
646
+
647
+    /**
648
+     * Set the total amount cancelled via this form.
649
+     *
650
+     * @since 1.0.19
651
+     * @param  float $value Amount cancelled.
652
+     */
653
+    public function set_cancelled( $value ) {
654
+        $value = max( (float) $value, 0 );
655
+        $this->set_prop( 'cancelled', $value );
656
+    }
657
+
658
+    /**
659
+     * Set the total amount failed via this form.
660
+     *
661
+     * @since 1.0.19
662
+     * @param  float $value Amount cancelled.
663
+     */
664
+    public function set_failed( $value ) {
665
+        $value = max( (float) $value, 0 );
666
+        $this->set_prop( 'failed', $value );
667
+    }
668 668
 
669 669
     /**
670 670
      * Create an item. For backwards compatibilty.
671 671
      *
672 672
      * @deprecated
673
-	 * @return int item id
673
+     * @return int item id
674 674
      */
675 675
     public function create( $data = array() ) {
676 676
 
677
-		// Set the properties.
678
-		if ( is_array( $data ) ) {
679
-			$this->set_props( $data );
680
-		}
677
+        // Set the properties.
678
+        if ( is_array( $data ) ) {
679
+            $this->set_props( $data );
680
+        }
681 681
 
682
-		// Save the item.
683
-		return $this->save();
682
+        // Save the item.
683
+        return $this->save();
684 684
 
685 685
     }
686 686
 
@@ -688,7 +688,7 @@  discard block
 block discarded – undo
688 688
      * Updates an item. For backwards compatibilty.
689 689
      *
690 690
      * @deprecated
691
-	 * @return int item id
691
+     * @return int item id
692 692
      */
693 693
     public function update( $data = array() ) {
694 694
         return $this->create( $data );
@@ -704,22 +704,22 @@  discard block
 block discarded – undo
704 704
 	*/
705 705
 
706 706
     /**
707
-	 * Checks whether this is the default payment form.
708
-	 *
709
-	 * @since 1.0.19
710
-	 * @return bool
711
-	 */
707
+     * Checks whether this is the default payment form.
708
+     *
709
+     * @since 1.0.19
710
+     * @return bool
711
+     */
712 712
     public function is_default() {
713 713
         $is_default = $this->get_id() == wpinv_get_default_payment_form();
714 714
         return (bool) apply_filters( 'wpinv_is_default_payment_form', $is_default, $this->get_id(), $this );
715
-	}
715
+    }
716 716
 
717 717
     /**
718
-	 * Checks whether the form is active.
719
-	 *
720
-	 * @since 1.0.19
721
-	 * @return bool
722
-	 */
718
+     * Checks whether the form is active.
719
+     *
720
+     * @since 1.0.19
721
+     * @return bool
722
+     */
723 723
     public function is_active() {
724 724
         $is_active = 0 !== (int) $this->get_id();
725 725
 
@@ -728,75 +728,75 @@  discard block
 block discarded – undo
728 728
         }
729 729
 
730 730
         return (bool) apply_filters( 'wpinv_is_payment_form_active', $is_active, $this );
731
-	}
732
-
733
-	/**
734
-	 * Checks whether the form has a given item.
735
-	 *
736
-	 * @since 1.0.19
737
-	 * @return bool
738
-	 */
731
+    }
732
+
733
+    /**
734
+     * Checks whether the form has a given item.
735
+     *
736
+     * @since 1.0.19
737
+     * @return bool
738
+     */
739 739
     public function has_item( $item_id ) {
740 740
         return false !== $this->get_item( $item_id );
741
-	}
742
-
743
-	/**
744
-	 * Checks whether the form has a given element.
745
-	 *
746
-	 * @since 1.0.19
747
-	 * @return bool
748
-	 */
741
+    }
742
+
743
+    /**
744
+     * Checks whether the form has a given element.
745
+     *
746
+     * @since 1.0.19
747
+     * @return bool
748
+     */
749 749
     public function has_element_type( $element_type ) {
750 750
         return false !== $this->get_element_type( $element_type );
751
-	}
752
-
753
-	/**
754
-	 * Checks whether this form is recurring or not.
755
-	 *
756
-	 * @since 1.0.19
757
-	 * @return bool
758
-	 */
751
+    }
752
+
753
+    /**
754
+     * Checks whether this form is recurring or not.
755
+     *
756
+     * @since 1.0.19
757
+     * @return bool
758
+     */
759 759
     public function is_recurring() {
760 760
 
761
-		if ( ! empty( $this->invoice ) ) {
762
-			return $this->invoice->is_recurring();
763
-		}
761
+        if ( ! empty( $this->invoice ) ) {
762
+            return $this->invoice->is_recurring();
763
+        }
764 764
 
765
-		foreach ( $this->get_items() as $item ) {
765
+        foreach ( $this->get_items() as $item ) {
766 766
 
767
-			if ( $item->is_recurring() ) {
768
-				return true;
769
-			}
767
+            if ( $item->is_recurring() ) {
768
+                return true;
769
+            }
770 770
 }
771 771
 
772 772
         return false;
773
-	}
773
+    }
774 774
 
775
-	/**
776
-	 * Retrieves the form's html.
777
-	 *
778
-	 * @since 1.0.19
779
-	 */
775
+    /**
776
+     * Retrieves the form's html.
777
+     *
778
+     * @since 1.0.19
779
+     */
780 780
     public function get_html( $extra_markup = '' ) {
781 781
 
782
-		// Return the HTML.
783
-		return wpinv_get_template_html(
784
-			'payment-forms/form.php',
785
-			array(
786
-				'form'         => $this,
787
-				'extra_markup' => $extra_markup,
788
-			)
789
-		);
790
-
791
-	}
792
-
793
-	/**
794
-	 * Displays the payment form.
795
-	 *
796
-	 * @since 1.0.19
797
-	 */
782
+        // Return the HTML.
783
+        return wpinv_get_template_html(
784
+            'payment-forms/form.php',
785
+            array(
786
+                'form'         => $this,
787
+                'extra_markup' => $extra_markup,
788
+            )
789
+        );
790
+
791
+    }
792
+
793
+    /**
794
+     * Displays the payment form.
795
+     *
796
+     * @since 1.0.19
797
+     */
798 798
     public function display( $extra_markup = '' ) {
799
-		echo $this->get_html( $extra_markup );
799
+        echo $this->get_html( $extra_markup );
800 800
     }
801 801
 
802 802
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-form-item.php 1 patch
Indentation   +359 added lines, -359 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,67 +10,67 @@  discard block
 block discarded – undo
10 10
 class GetPaid_Form_Item  extends WPInv_Item {
11 11
 
12 12
     /**
13
-	 * Stores a custom description for the item.
14
-	 *
15
-	 * @var string
16
-	 */
17
-	protected $custom_description = null;
18
-
19
-	/**
20
-	 * Stores the item quantity.
21
-	 *
22
-	 * @var float
23
-	 */
24
-	protected $quantity = 1;
25
-
26
-	/**
27
-	 * Stores the item meta.
28
-	 *
29
-	 * @var array
30
-	 */
31
-	protected $meta = array();
32
-
33
-	/**
34
-	 * Is this item required?
35
-	 *
36
-	 * @var int
37
-	 */
38
-	protected $is_required = true;
39
-
40
-	/**
41
-	 * Are quantities allowed?
42
-	 *
43
-	 * @var int
44
-	 */
45
-	protected $allow_quantities = false;
46
-
47
-	/**
48
-	 * Associated invoice.
49
-	 *
50
-	 * @var int
51
-	 */
52
-	public $invoice_id = 0;
53
-
54
-	/**
55
-	 * Item discount.
56
-	 *
57
-	 * @var float
58
-	 */
59
-	public $item_discount = 0;
60
-
61
-	/**
62
-	 * Recurring item discount.
63
-	 *
64
-	 * @var float
65
-	 */
66
-	public $recurring_item_discount = 0;
67
-
68
-	/**
69
-	 * Item tax.
70
-	 *
71
-	 * @var float
72
-	 */
73
-	public $item_tax = 0;
13
+     * Stores a custom description for the item.
14
+     *
15
+     * @var string
16
+     */
17
+    protected $custom_description = null;
18
+
19
+    /**
20
+     * Stores the item quantity.
21
+     *
22
+     * @var float
23
+     */
24
+    protected $quantity = 1;
25
+
26
+    /**
27
+     * Stores the item meta.
28
+     *
29
+     * @var array
30
+     */
31
+    protected $meta = array();
32
+
33
+    /**
34
+     * Is this item required?
35
+     *
36
+     * @var int
37
+     */
38
+    protected $is_required = true;
39
+
40
+    /**
41
+     * Are quantities allowed?
42
+     *
43
+     * @var int
44
+     */
45
+    protected $allow_quantities = false;
46
+
47
+    /**
48
+     * Associated invoice.
49
+     *
50
+     * @var int
51
+     */
52
+    public $invoice_id = 0;
53
+
54
+    /**
55
+     * Item discount.
56
+     *
57
+     * @var float
58
+     */
59
+    public $item_discount = 0;
60
+
61
+    /**
62
+     * Recurring item discount.
63
+     *
64
+     * @var float
65
+     */
66
+    public $recurring_item_discount = 0;
67
+
68
+    /**
69
+     * Item tax.
70
+     *
71
+     * @var float
72
+     */
73
+    public $item_tax = 0;
74 74
 
75 75
     /*
76 76
 	|--------------------------------------------------------------------------
@@ -88,230 +88,230 @@  discard block
 block discarded – undo
88 88
     */
89 89
 
90 90
     /**
91
-	 * Get the item name.
92
-	 *
93
-	 * @since 1.0.19
94
-	 * @param  string $context View or edit context.
95
-	 * @return string
96
-	 */
97
-	public function get_name( $context = 'view' ) {
98
-		$name = parent::get_name( $context );
99
-		return $name . wpinv_get_item_suffix( $this );
100
-	}
101
-
102
-	/**
103
-	 * Get the item name without a suffix.
104
-	 *
105
-	 * @since 1.0.19
106
-	 * @param  string $context View or edit context.
107
-	 * @return string
108
-	 */
109
-	public function get_raw_name( $context = 'view' ) {
110
-		return parent::get_name( $context );
111
-	}
112
-
113
-	/**
114
-	 * Get the item description.
115
-	 *
116
-	 * @since 1.0.19
117
-	 * @param  string $context View or edit context.
118
-	 * @return string
119
-	 */
120
-	public function get_description( $context = 'view' ) {
121
-
122
-		if ( isset( $this->custom_description ) ) {
123
-			return $this->custom_description;
124
-		}
125
-
126
-		return parent::get_description( $context );
127
-	}
128
-
129
-	/**
130
-	 * Returns the sub total.
131
-	 *
132
-	 * @since 1.0.19
133
-	 * @param  string $context View or edit context.
134
-	 * @return float
135
-	 */
136
-	public function get_sub_total( $context = 'view' ) {
137
-		return $this->get_quantity( $context ) * $this->get_initial_price( $context );
138
-	}
139
-
140
-	/**
141
-	 * Returns the recurring sub total.
142
-	 *
143
-	 * @since 1.0.19
144
-	 * @param  string $context View or edit context.
145
-	 * @return float
146
-	 */
147
-	public function get_recurring_sub_total( $context = 'view' ) {
148
-
149
-		if ( $this->is_recurring() ) {
150
-			return $this->get_quantity( $context ) * $this->get_price( $context );
151
-		}
152
-
153
-		return 0;
154
-	}
155
-
156
-	/**
157
-	 * @deprecated
158
-	 */
159
-	public function get_qantity( $context = 'view' ) {
160
-		return $this->get_quantity( $context );
161
-	}
162
-
163
-	/**
164
-	 * Get the item quantity.
165
-	 *
166
-	 * @since 1.0.19
167
-	 * @param  string $context View or edit context.
168
-	 * @return float
169
-	 */
170
-	public function get_quantity( $context = 'view' ) {
171
-		$quantity = (float) $this->quantity;
172
-
173
-		if ( 'view' == $context ) {
174
-			return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this );
175
-		}
176
-
177
-		return $quantity;
178
-
179
-	}
180
-
181
-	/**
182
-	 * Get the item meta data.
183
-	 *
184
-	 * @since 1.0.19
185
-	 * @param  string $context View or edit context.
186
-	 * @return meta
187
-	 */
188
-	public function get_item_meta( $context = 'view' ) {
189
-		$meta = $this->meta;
190
-
191
-		if ( 'view' == $context ) {
192
-			return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this );
193
-		}
194
-
195
-		return $meta;
196
-
197
-	}
198
-
199
-	/**
200
-	 * Returns whether or not customers can update the item quantity.
201
-	 *
202
-	 * @since 1.0.19
203
-	 * @param  string $context View or edit context.
204
-	 * @return bool
205
-	 */
206
-	public function get_allow_quantities( $context = 'view' ) {
207
-		$allow_quantities = (bool) $this->allow_quantities;
208
-
209
-		if ( 'view' == $context ) {
210
-			return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this );
211
-		}
212
-
213
-		return $allow_quantities;
214
-
215
-	}
216
-
217
-	/**
218
-	 * Returns whether or not the item is required.
219
-	 *
220
-	 * @since 1.0.19
221
-	 * @param  string $context View or edit context.
222
-	 * @return bool
223
-	 */
224
-	public function get_is_required( $context = 'view' ) {
225
-		$is_required = (bool) $this->is_required;
226
-
227
-		if ( 'view' == $context ) {
228
-			return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this );
229
-		}
230
-
231
-		return $is_required;
232
-
233
-	}
234
-
235
-	/**
236
-	 * Prepares form data for use.
237
-	 *
238
-	 * @since 1.0.19
239
-	 * @return array
240
-	 */
241
-	public function prepare_data_for_use( $required = null ) {
242
-
243
-		$required = is_null( $required ) ? $this->is_required() : $required;
244
-		return array(
245
-			'title'            => strip_tags( $this->get_name() ),
246
-			'id'               => $this->get_id(),
247
-			'price'            => $this->get_price(),
248
-			'recurring'        => $this->is_recurring(),
249
-			'description'      => $this->get_description(),
250
-			'allow_quantities' => $this->allows_quantities(),
251
-			'required'         => $required,
252
-		);
253
-
254
-	}
255
-
256
-	/**
257
-	 * Prepares form data for ajax use.
258
-	 *
259
-	 * @since 1.0.19
260
-	 * @return array
261
-	 */
262
-	public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) {
263
-
264
-		$description = getpaid_item_recurring_price_help_text( $this, $currency );
265
-
266
-		if ( $description ) {
267
-			$description = "<div class='getpaid-subscription-help-text'>$description</div>";
268
-		}
269
-
270
-		$price    = ! $is_renewal ? $this->get_price() : $this->get_recurring_price();
271
-		$subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total();
272
-		return array(
273
-			'id'     => $this->get_id(),
274
-			'texts'  => array(
275
-				'item-name'        => sanitize_text_field( $this->get_name() ),
276
-				'item-description' => wp_kses_post( $this->get_description() ) . $description,
277
-				'item-quantity'    => floatval( $this->get_quantity() ),
278
-				'item-price'       => wpinv_price( $price, $currency ),
279
-				'item-total'       => wpinv_price( $subtotal, $currency ),
280
-			),
281
-			'inputs' => array(
282
-				'item-id'          => $this->get_id(),
283
-				'item-name'        => sanitize_text_field( $this->get_name() ),
284
-				'item-description' => wp_kses_post( $this->get_description() ),
285
-				'item-quantity'    => floatval( $this->get_quantity() ),
286
-				'item-price'       => $price,
287
-			),
288
-		);
289
-
290
-	}
291
-
292
-	/**
293
-	 * Prepares form data for saving (cart_details).
294
-	 *
295
-	 * @since 1.0.19
296
-	 * @return array
297
-	 */
298
-	public function prepare_data_for_saving() {
299
-
300
-		return array(
301
-			'post_id'          => $this->invoice_id,
302
-			'item_id'          => $this->get_id(),
303
-			'item_name'        => sanitize_text_field( $this->get_raw_name( 'edit' ) ),
304
-			'item_description' => $this->get_description( 'edit' ),
305
-			'tax'              => $this->item_tax,
306
-			'item_price'       => $this->get_price( 'edit' ),
307
-			'quantity'         => (float) $this->get_quantity( 'edit' ),
308
-			'discount'         => $this->item_discount,
309
-			'subtotal'         => $this->get_sub_total( 'edit' ),
310
-			'price'            => $this->get_sub_total( 'edit' ) + $this->item_tax - $this->item_discount,
311
-			'meta'             => $this->get_item_meta( 'edit' ),
312
-		);
313
-
314
-	}
91
+     * Get the item name.
92
+     *
93
+     * @since 1.0.19
94
+     * @param  string $context View or edit context.
95
+     * @return string
96
+     */
97
+    public function get_name( $context = 'view' ) {
98
+        $name = parent::get_name( $context );
99
+        return $name . wpinv_get_item_suffix( $this );
100
+    }
101
+
102
+    /**
103
+     * Get the item name without a suffix.
104
+     *
105
+     * @since 1.0.19
106
+     * @param  string $context View or edit context.
107
+     * @return string
108
+     */
109
+    public function get_raw_name( $context = 'view' ) {
110
+        return parent::get_name( $context );
111
+    }
112
+
113
+    /**
114
+     * Get the item description.
115
+     *
116
+     * @since 1.0.19
117
+     * @param  string $context View or edit context.
118
+     * @return string
119
+     */
120
+    public function get_description( $context = 'view' ) {
121
+
122
+        if ( isset( $this->custom_description ) ) {
123
+            return $this->custom_description;
124
+        }
125
+
126
+        return parent::get_description( $context );
127
+    }
128
+
129
+    /**
130
+     * Returns the sub total.
131
+     *
132
+     * @since 1.0.19
133
+     * @param  string $context View or edit context.
134
+     * @return float
135
+     */
136
+    public function get_sub_total( $context = 'view' ) {
137
+        return $this->get_quantity( $context ) * $this->get_initial_price( $context );
138
+    }
139
+
140
+    /**
141
+     * Returns the recurring sub total.
142
+     *
143
+     * @since 1.0.19
144
+     * @param  string $context View or edit context.
145
+     * @return float
146
+     */
147
+    public function get_recurring_sub_total( $context = 'view' ) {
148
+
149
+        if ( $this->is_recurring() ) {
150
+            return $this->get_quantity( $context ) * $this->get_price( $context );
151
+        }
152
+
153
+        return 0;
154
+    }
155
+
156
+    /**
157
+     * @deprecated
158
+     */
159
+    public function get_qantity( $context = 'view' ) {
160
+        return $this->get_quantity( $context );
161
+    }
162
+
163
+    /**
164
+     * Get the item quantity.
165
+     *
166
+     * @since 1.0.19
167
+     * @param  string $context View or edit context.
168
+     * @return float
169
+     */
170
+    public function get_quantity( $context = 'view' ) {
171
+        $quantity = (float) $this->quantity;
172
+
173
+        if ( 'view' == $context ) {
174
+            return apply_filters( 'getpaid_payment_form_item_quantity', $quantity, $this );
175
+        }
176
+
177
+        return $quantity;
178
+
179
+    }
180
+
181
+    /**
182
+     * Get the item meta data.
183
+     *
184
+     * @since 1.0.19
185
+     * @param  string $context View or edit context.
186
+     * @return meta
187
+     */
188
+    public function get_item_meta( $context = 'view' ) {
189
+        $meta = $this->meta;
190
+
191
+        if ( 'view' == $context ) {
192
+            return apply_filters( 'getpaid_payment_form_item_meta', $meta, $this );
193
+        }
194
+
195
+        return $meta;
196
+
197
+    }
198
+
199
+    /**
200
+     * Returns whether or not customers can update the item quantity.
201
+     *
202
+     * @since 1.0.19
203
+     * @param  string $context View or edit context.
204
+     * @return bool
205
+     */
206
+    public function get_allow_quantities( $context = 'view' ) {
207
+        $allow_quantities = (bool) $this->allow_quantities;
208
+
209
+        if ( 'view' == $context ) {
210
+            return apply_filters( 'getpaid_payment_form_item_allow_quantities', $allow_quantities, $this );
211
+        }
212
+
213
+        return $allow_quantities;
214
+
215
+    }
216
+
217
+    /**
218
+     * Returns whether or not the item is required.
219
+     *
220
+     * @since 1.0.19
221
+     * @param  string $context View or edit context.
222
+     * @return bool
223
+     */
224
+    public function get_is_required( $context = 'view' ) {
225
+        $is_required = (bool) $this->is_required;
226
+
227
+        if ( 'view' == $context ) {
228
+            return apply_filters( 'getpaid_payment_form_item_is_required', $is_required, $this );
229
+        }
230
+
231
+        return $is_required;
232
+
233
+    }
234
+
235
+    /**
236
+     * Prepares form data for use.
237
+     *
238
+     * @since 1.0.19
239
+     * @return array
240
+     */
241
+    public function prepare_data_for_use( $required = null ) {
242
+
243
+        $required = is_null( $required ) ? $this->is_required() : $required;
244
+        return array(
245
+            'title'            => strip_tags( $this->get_name() ),
246
+            'id'               => $this->get_id(),
247
+            'price'            => $this->get_price(),
248
+            'recurring'        => $this->is_recurring(),
249
+            'description'      => $this->get_description(),
250
+            'allow_quantities' => $this->allows_quantities(),
251
+            'required'         => $required,
252
+        );
253
+
254
+    }
255
+
256
+    /**
257
+     * Prepares form data for ajax use.
258
+     *
259
+     * @since 1.0.19
260
+     * @return array
261
+     */
262
+    public function prepare_data_for_invoice_edit_ajax( $currency = '', $is_renewal = false ) {
263
+
264
+        $description = getpaid_item_recurring_price_help_text( $this, $currency );
265
+
266
+        if ( $description ) {
267
+            $description = "<div class='getpaid-subscription-help-text'>$description</div>";
268
+        }
269
+
270
+        $price    = ! $is_renewal ? $this->get_price() : $this->get_recurring_price();
271
+        $subtotal = ! $is_renewal ? $this->get_sub_total() : $this->get_recurring_sub_total();
272
+        return array(
273
+            'id'     => $this->get_id(),
274
+            'texts'  => array(
275
+                'item-name'        => sanitize_text_field( $this->get_name() ),
276
+                'item-description' => wp_kses_post( $this->get_description() ) . $description,
277
+                'item-quantity'    => floatval( $this->get_quantity() ),
278
+                'item-price'       => wpinv_price( $price, $currency ),
279
+                'item-total'       => wpinv_price( $subtotal, $currency ),
280
+            ),
281
+            'inputs' => array(
282
+                'item-id'          => $this->get_id(),
283
+                'item-name'        => sanitize_text_field( $this->get_name() ),
284
+                'item-description' => wp_kses_post( $this->get_description() ),
285
+                'item-quantity'    => floatval( $this->get_quantity() ),
286
+                'item-price'       => $price,
287
+            ),
288
+        );
289
+
290
+    }
291
+
292
+    /**
293
+     * Prepares form data for saving (cart_details).
294
+     *
295
+     * @since 1.0.19
296
+     * @return array
297
+     */
298
+    public function prepare_data_for_saving() {
299
+
300
+        return array(
301
+            'post_id'          => $this->invoice_id,
302
+            'item_id'          => $this->get_id(),
303
+            'item_name'        => sanitize_text_field( $this->get_raw_name( 'edit' ) ),
304
+            'item_description' => $this->get_description( 'edit' ),
305
+            'tax'              => $this->item_tax,
306
+            'item_price'       => $this->get_price( 'edit' ),
307
+            'quantity'         => (float) $this->get_quantity( 'edit' ),
308
+            'discount'         => $this->item_discount,
309
+            'subtotal'         => $this->get_sub_total( 'edit' ),
310
+            'price'            => $this->get_sub_total( 'edit' ) + $this->item_tax - $this->item_discount,
311
+            'meta'             => $this->get_item_meta( 'edit' ),
312
+        );
313
+
314
+    }
315 315
 
316 316
     /*
317 317
 	|--------------------------------------------------------------------------
@@ -323,70 +323,70 @@  discard block
 block discarded – undo
323 323
 	| object.
324 324
     */
325 325
 
326
-	/**
327
-	 * Set the item qantity.
328
-	 *
329
-	 * @since 1.0.19
330
-	 * @param  float $quantity The item quantity.
331
-	 */
332
-	public function set_quantity( $quantity ) {
333
-
334
-		if ( ! is_numeric( $quantity ) ) {
335
-			$quantity = 1;
336
-		}
337
-
338
-		$this->quantity = (float) $quantity;
339
-
340
-	}
341
-
342
-	/**
343
-	 * Set the item meta data.
344
-	 *
345
-	 * @since 1.0.19
346
-	 * @param  array $meta The item meta data.
347
-	 */
348
-	public function set_item_meta( $meta ) {
349
-		$this->meta = maybe_unserialize( $meta );
350
-	}
351
-
352
-	/**
353
-	 * Set whether or not the quantities are allowed.
354
-	 *
355
-	 * @since 1.0.19
356
-	 * @param  bool $allow_quantities
357
-	 */
358
-	public function set_allow_quantities( $allow_quantities ) {
359
-		$this->allow_quantities = (bool) $allow_quantities;
360
-	}
361
-
362
-	/**
363
-	 * Set whether or not the item is required.
364
-	 *
365
-	 * @since 1.0.19
366
-	 * @param  bool $is_required
367
-	 */
368
-	public function set_is_required( $is_required ) {
369
-		$this->is_required = (bool) $is_required;
370
-	}
371
-
372
-	/**
373
-	 * Sets the custom item description.
374
-	 *
375
-	 * @since 1.0.19
376
-	 * @param  string $description
377
-	 */
378
-	public function set_custom_description( $description ) {
379
-		$this->custom_description = $description;
380
-	}
326
+    /**
327
+     * Set the item qantity.
328
+     *
329
+     * @since 1.0.19
330
+     * @param  float $quantity The item quantity.
331
+     */
332
+    public function set_quantity( $quantity ) {
333
+
334
+        if ( ! is_numeric( $quantity ) ) {
335
+            $quantity = 1;
336
+        }
337
+
338
+        $this->quantity = (float) $quantity;
339
+
340
+    }
341
+
342
+    /**
343
+     * Set the item meta data.
344
+     *
345
+     * @since 1.0.19
346
+     * @param  array $meta The item meta data.
347
+     */
348
+    public function set_item_meta( $meta ) {
349
+        $this->meta = maybe_unserialize( $meta );
350
+    }
351
+
352
+    /**
353
+     * Set whether or not the quantities are allowed.
354
+     *
355
+     * @since 1.0.19
356
+     * @param  bool $allow_quantities
357
+     */
358
+    public function set_allow_quantities( $allow_quantities ) {
359
+        $this->allow_quantities = (bool) $allow_quantities;
360
+    }
361
+
362
+    /**
363
+     * Set whether or not the item is required.
364
+     *
365
+     * @since 1.0.19
366
+     * @param  bool $is_required
367
+     */
368
+    public function set_is_required( $is_required ) {
369
+        $this->is_required = (bool) $is_required;
370
+    }
371
+
372
+    /**
373
+     * Sets the custom item description.
374
+     *
375
+     * @since 1.0.19
376
+     * @param  string $description
377
+     */
378
+    public function set_custom_description( $description ) {
379
+        $this->custom_description = $description;
380
+    }
381 381
 
382 382
     /**
383 383
      * We do not want to save items to the database.
384 384
      *
385
-	 * @return int item id
385
+     * @return int item id
386 386
      */
387 387
     public function save( $data = array() ) {
388 388
         return $this->get_id();
389
-	}
389
+    }
390 390
 
391 391
     /*
392 392
 	|--------------------------------------------------------------------------
@@ -398,23 +398,23 @@  discard block
 block discarded – undo
398 398
 	*/
399 399
 
400 400
     /**
401
-	 * Checks whether the item has enabled dynamic pricing.
402
-	 *
403
-	 * @since 1.0.19
404
-	 * @return bool
405
-	 */
406
-	public function is_required() {
401
+     * Checks whether the item has enabled dynamic pricing.
402
+     *
403
+     * @since 1.0.19
404
+     * @return bool
405
+     */
406
+    public function is_required() {
407 407
         return (bool) $this->get_is_required();
408
-	}
409
-
410
-	/**
411
-	 * Checks whether users can edit the quantities.
412
-	 *
413
-	 * @since 1.0.19
414
-	 * @return bool
415
-	 */
416
-	public function allows_quantities() {
408
+    }
409
+
410
+    /**
411
+     * Checks whether users can edit the quantities.
412
+     *
413
+     * @since 1.0.19
414
+     * @return bool
415
+     */
416
+    public function allows_quantities() {
417 417
         return (bool) $this->get_allow_quantities();
418
-	}
418
+    }
419 419
 
420 420
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-discount.php 1 patch
Indentation   +159 added lines, -159 removed lines patch added patch discarded remove patch
@@ -12,167 +12,167 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Payment_Form_Submission_Discount {
14 14
 
15
-	/**
16
-	 * Submission discounts.
17
-	 * @var array
18
-	 */
19
-	public $discounts = array();
15
+    /**
16
+     * Submission discounts.
17
+     * @var array
18
+     */
19
+    public $discounts = array();
20
+
21
+    /**
22
+     * Class constructor
23
+     *
24
+     * @param GetPaid_Payment_Form_Submission $submission
25
+     * @param float                           $initial_total
26
+     * @param float                           $recurring_total
27
+     */
28
+    public function __construct( $submission, $initial_total, $recurring_total ) {
29
+
30
+        // Process any existing invoice discounts.
31
+        if ( $submission->has_invoice() ) {
32
+            $this->discounts = $submission->get_invoice()->get_discounts();
33
+        }
34
+
35
+        // Do we have a discount?
36
+        $discount = $submission->get_field( 'discount' );
37
+
38
+        if ( empty( $discount ) ) {
39
+
40
+            if ( isset( $this->discounts['discount_code'] ) ) {
41
+                unset( $this->discounts['discount_code'] );
42
+            }
43
+
44
+            return;
45
+        }
46
+
47
+        // Processes the discount code.
48
+        $amount = max( $initial_total, $recurring_total );
49
+        $this->process_discount( $submission, $discount, $amount );
50
+
51
+    }
20 52
 
21 53
     /**
22
-	 * Class constructor
23
-	 *
24
-	 * @param GetPaid_Payment_Form_Submission $submission
25
-	 * @param float                           $initial_total
26
-	 * @param float                           $recurring_total
27
-	 */
28
-	public function __construct( $submission, $initial_total, $recurring_total ) {
29
-
30
-		// Process any existing invoice discounts.
31
-		if ( $submission->has_invoice() ) {
32
-			$this->discounts = $submission->get_invoice()->get_discounts();
33
-		}
34
-
35
-		// Do we have a discount?
36
-		$discount = $submission->get_field( 'discount' );
37
-
38
-		if ( empty( $discount ) ) {
39
-
40
-			if ( isset( $this->discounts['discount_code'] ) ) {
41
-				unset( $this->discounts['discount_code'] );
42
-			}
43
-
44
-			return;
45
-		}
46
-
47
-		// Processes the discount code.
48
-		$amount = max( $initial_total, $recurring_total );
49
-		$this->process_discount( $submission, $discount, $amount );
50
-
51
-	}
52
-
53
-	/**
54
-	 * Processes a submission discount.
55
-	 *
56
-	 * @param GetPaid_Payment_Form_Submission $submission
57
-	 * @param string                          $discount
58
-	 * @param float                           $amount
59
-	 */
60
-	public function process_discount( $submission, $discount, $amount ) {
61
-
62
-		// Fetch the discount.
63
-		$discount = new WPInv_Discount( $discount );
64
-
65
-		// Ensure it is active.
54
+     * Processes a submission discount.
55
+     *
56
+     * @param GetPaid_Payment_Form_Submission $submission
57
+     * @param string                          $discount
58
+     * @param float                           $amount
59
+     */
60
+    public function process_discount( $submission, $discount, $amount ) {
61
+
62
+        // Fetch the discount.
63
+        $discount = new WPInv_Discount( $discount );
64
+
65
+        // Ensure it is active.
66 66
         if ( ! $this->is_discount_active( $discount ) ) {
67
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'Invalid or expired discount code', 'invoicing' ) );
68
-		}
69
-
70
-		// Required items.
71
-		if ( ! $discount->is_required_items_met( array_keys( $submission->get_items() ) ) ) {
72
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'You are not allowed to use this discount code.', 'invoicing' ) );
73
-		}
74
-
75
-		// Exceeded limit.
76
-		if ( $discount->has_exceeded_limit() ) {
77
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'This discount code has been used up', 'invoicing' ) );
78
-		}
79
-
80
-		// Validate usages.
81
-		$this->validate_single_use_discount( $submission, $discount );
82
-
83
-		// Validate amount.
84
-		$this->validate_discount_amount( $submission, $discount, $amount );
85
-
86
-		// Save the discount.
87
-		$this->discounts['discount_code'] = $this->calculate_discount( $submission, $discount );
88
-	}
89
-
90
-	/**
91
-	 * Validates a single use discount.
92
-	 *
93
-	 * @param WPInv_Discount                  $discount
94
-	 * @return bool
95
-	 */
96
-	public function is_discount_active( $discount ) {
97
-		return $discount->exists() && $discount->is_active() && $discount->has_started() && ! $discount->is_expired();
98
-	}
99
-
100
-	/**
101
-	 * Returns a user's id or email.
102
-	 *
103
-	 * @param string $email
104
-	 * @return int|string|false
105
-	 */
106
-	public function get_user_id_or_email( $email ) {
107
-
108
-		if ( is_user_logged_in() ) {
109
-			return get_current_user_id();
110
-		}
111
-
112
-		return empty( $email ) ? false : sanitize_email( $email );
113
-	}
114
-
115
-	/**
116
-	 * Validates a single use discount.
117
-	 *
118
-	 * @param GetPaid_Payment_Form_Submission $submission
119
-	 * @param WPInv_Discount                  $discount
120
-	 */
121
-	public function validate_single_use_discount( $submission, $discount ) {
122
-
123
-		// Abort if it is not a single use discount.
124
-		if ( ! $discount->is_single_use() ) {
125
-			return;
126
-		}
127
-
128
-		// Ensure there is a valid billing email.
129
-		$user = $this->get_user_id_or_email( $submission->get_billing_email() );
130
-
131
-		if ( empty( $user ) ) {
132
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'You need to either log in or enter your billing email before applying this discount', 'invoicing' ) );
133
-		}
134
-
135
-		// Has the user used this discount code before?
136
-		if ( ! $discount->is_valid_for_user( $user ) ) {
137
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'You have already used this discount', 'invoicing' ) );
138
-		}
139
-
140
-	}
141
-
142
-	/**
143
-	 * Validates the discount's amount.
144
-	 *
145
-	 * @param GetPaid_Payment_Form_Submission $submission
146
-	 * @param WPInv_Discount         $discount
147
-	 * @param float                  $amount
148
-	 */
149
-	public function validate_discount_amount( $submission, $discount, $amount ) {
150
-
151
-		// Validate minimum amount.
152
-		if ( ! $discount->is_minimum_amount_met( $amount ) ) {
153
-			$min = wpinv_price( $discount->get_minimum_total(), $submission->get_currency() );
154
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', sprintf( __( 'The minimum total for using this discount is %s', 'invoicing' ), $min ) );
155
-		}
156
-
157
-		// Validate the maximum amount.
158
-		if ( ! $discount->is_maximum_amount_met( $amount ) ) {
159
-			$max = wpinv_price( $discount->get_maximum_total(), $submission->get_currency() );
160
-			throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', sprintf( __( 'The maximum total for using this discount is %s', 'invoicing' ), $max ) );
161
-		}
162
-
163
-	}
164
-
165
-	/**
166
-	 * Calculates the discount code's amount.
167
-	 *
168
-	 * Ensure that the discount exists and has been validated before calling this method.
169
-	 *
170
-	 * @param GetPaid_Payment_Form_Submission $submission
171
-	 * @param WPInv_Discount                  $discount
172
-	 * @return array
173
-	 */
174
-	public function calculate_discount( $submission, $discount ) {
175
-		return getpaid_calculate_invoice_discount( $submission, $discount );
176
-	}
67
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'Invalid or expired discount code', 'invoicing' ) );
68
+        }
69
+
70
+        // Required items.
71
+        if ( ! $discount->is_required_items_met( array_keys( $submission->get_items() ) ) ) {
72
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'You are not allowed to use this discount code.', 'invoicing' ) );
73
+        }
74
+
75
+        // Exceeded limit.
76
+        if ( $discount->has_exceeded_limit() ) {
77
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'This discount code has been used up', 'invoicing' ) );
78
+        }
79
+
80
+        // Validate usages.
81
+        $this->validate_single_use_discount( $submission, $discount );
82
+
83
+        // Validate amount.
84
+        $this->validate_discount_amount( $submission, $discount, $amount );
85
+
86
+        // Save the discount.
87
+        $this->discounts['discount_code'] = $this->calculate_discount( $submission, $discount );
88
+    }
89
+
90
+    /**
91
+     * Validates a single use discount.
92
+     *
93
+     * @param WPInv_Discount                  $discount
94
+     * @return bool
95
+     */
96
+    public function is_discount_active( $discount ) {
97
+        return $discount->exists() && $discount->is_active() && $discount->has_started() && ! $discount->is_expired();
98
+    }
99
+
100
+    /**
101
+     * Returns a user's id or email.
102
+     *
103
+     * @param string $email
104
+     * @return int|string|false
105
+     */
106
+    public function get_user_id_or_email( $email ) {
107
+
108
+        if ( is_user_logged_in() ) {
109
+            return get_current_user_id();
110
+        }
111
+
112
+        return empty( $email ) ? false : sanitize_email( $email );
113
+    }
114
+
115
+    /**
116
+     * Validates a single use discount.
117
+     *
118
+     * @param GetPaid_Payment_Form_Submission $submission
119
+     * @param WPInv_Discount                  $discount
120
+     */
121
+    public function validate_single_use_discount( $submission, $discount ) {
122
+
123
+        // Abort if it is not a single use discount.
124
+        if ( ! $discount->is_single_use() ) {
125
+            return;
126
+        }
127
+
128
+        // Ensure there is a valid billing email.
129
+        $user = $this->get_user_id_or_email( $submission->get_billing_email() );
130
+
131
+        if ( empty( $user ) ) {
132
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'You need to either log in or enter your billing email before applying this discount', 'invoicing' ) );
133
+        }
134
+
135
+        // Has the user used this discount code before?
136
+        if ( ! $discount->is_valid_for_user( $user ) ) {
137
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', __( 'You have already used this discount', 'invoicing' ) );
138
+        }
139
+
140
+    }
141
+
142
+    /**
143
+     * Validates the discount's amount.
144
+     *
145
+     * @param GetPaid_Payment_Form_Submission $submission
146
+     * @param WPInv_Discount         $discount
147
+     * @param float                  $amount
148
+     */
149
+    public function validate_discount_amount( $submission, $discount, $amount ) {
150
+
151
+        // Validate minimum amount.
152
+        if ( ! $discount->is_minimum_amount_met( $amount ) ) {
153
+            $min = wpinv_price( $discount->get_minimum_total(), $submission->get_currency() );
154
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', sprintf( __( 'The minimum total for using this discount is %s', 'invoicing' ), $min ) );
155
+        }
156
+
157
+        // Validate the maximum amount.
158
+        if ( ! $discount->is_maximum_amount_met( $amount ) ) {
159
+            $max = wpinv_price( $discount->get_maximum_total(), $submission->get_currency() );
160
+            throw new GetPaid_Payment_Exception( '.getpaid-discount-field .getpaid-custom-payment-form-errors', sprintf( __( 'The maximum total for using this discount is %s', 'invoicing' ), $max ) );
161
+        }
162
+
163
+    }
164
+
165
+    /**
166
+     * Calculates the discount code's amount.
167
+     *
168
+     * Ensure that the discount exists and has been validated before calling this method.
169
+     *
170
+     * @param GetPaid_Payment_Form_Submission $submission
171
+     * @param WPInv_Discount                  $discount
172
+     * @return array
173
+     */
174
+    public function calculate_discount( $submission, $discount ) {
175
+        return getpaid_calculate_invoice_discount( $submission, $discount );
176
+    }
177 177
 
178 178
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-fees.php 1 patch
Indentation   +104 added lines, -104 removed lines patch added patch discarded remove patch
@@ -12,113 +12,113 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Payment_Form_Submission_Fees {
14 14
 
15
-	/**
16
-	 * The fee validation error.
17
-	 * @var string
18
-	 */
19
-	public $fee_error;
20
-
21
-	/**
22
-	 * Submission fees.
23
-	 * @var array
24
-	 */
25
-	public $fees = array();
15
+    /**
16
+     * The fee validation error.
17
+     * @var string
18
+     */
19
+    public $fee_error;
20
+
21
+    /**
22
+     * Submission fees.
23
+     * @var array
24
+     */
25
+    public $fees = array();
26 26
 
27 27
     /**
28
-	 * Class constructor
29
-	 *
30
-	 * @param GetPaid_Payment_Form_Submission $submission
31
-	 */
32
-	public function __construct( $submission ) {
33
-
34
-		// Process any existing invoice fees.
35
-		if ( $submission->has_invoice() ) {
36
-			$this->fees = $submission->get_invoice()->get_fees();
37
-		}
38
-
39
-		// Process price fields.
40
-		$data         = $submission->get_data();
41
-		$payment_form = $submission->get_payment_form();
42
-
43
-		foreach ( $payment_form->get_elements() as $element ) {
44
-
45
-			if ( 'price_input' == $element['type'] ) {
46
-				$this->process_price_input( $element, $data, $submission );
47
-			}
48
-
49
-			if ( 'price_select' == $element['type'] ) {
50
-				$this->process_price_select( $element, $data );
51
-			}
28
+     * Class constructor
29
+     *
30
+     * @param GetPaid_Payment_Form_Submission $submission
31
+     */
32
+    public function __construct( $submission ) {
33
+
34
+        // Process any existing invoice fees.
35
+        if ( $submission->has_invoice() ) {
36
+            $this->fees = $submission->get_invoice()->get_fees();
37
+        }
38
+
39
+        // Process price fields.
40
+        $data         = $submission->get_data();
41
+        $payment_form = $submission->get_payment_form();
42
+
43
+        foreach ( $payment_form->get_elements() as $element ) {
44
+
45
+            if ( 'price_input' == $element['type'] ) {
46
+                $this->process_price_input( $element, $data, $submission );
47
+            }
48
+
49
+            if ( 'price_select' == $element['type'] ) {
50
+                $this->process_price_select( $element, $data );
51
+            }
52 52
 }
53 53
 
54
-	}
55
-
56
-	/**
57
-	 * Process a price input field.
58
-	 *
59
-	 * @param array $element
60
-	 * @param array $data
61
-	 * @param GetPaid_Payment_Form_Submission $submission
62
-	 */
63
-	public function process_price_input( $element, $data, $submission ) {
64
-
65
-		// Abort if not passed.
66
-		if ( empty( $data[ $element['id'] ] ) ) {
67
-			return;
68
-		}
69
-
70
-		$amount  = (float) wpinv_sanitize_amount( $data[ $element['id'] ] );
71
-		$minimum = empty( $element['minimum'] ) ? 0 : (float) wpinv_sanitize_amount( $element['minimum'] );
72
-
73
-		if ( $amount < $minimum ) {
74
-			throw new Exception( sprintf( __( 'The minimum allowed amount is %s', 'invoicing' ), getpaid_unstandardize_amount( $minimum, $submission->get_currency() ) ) );
75
-		}
76
-
77
-		$this->fees[ $element['label'] ] = array(
78
-			'name'          => $element['label'],
79
-			'initial_fee'   => $amount,
80
-			'recurring_fee' => 0,
81
-		);
82
-
83
-	}
84
-
85
-	/**
86
-	 * Process a price select field.
87
-	 *
88
-	 * @param array $element
89
-	 * @param array $data
90
-	 */
91
-	public function process_price_select( $element, $data ) {
92
-
93
-		// Abort if not passed.
94
-		if ( empty( $data[ $element['id'] ] ) ) {
95
-			return;
96
-		}
97
-
98
-		$options    = getpaid_convert_price_string_to_options( $element['options'] );
99
-		$selected   = array_filter( array_map( 'trim', explode( ',', $data[ $element['id'] ] ) ) );
100
-		$total      = 0;
101
-		$sub_labels = array();
102
-
103
-		foreach ( $selected as $price ) {
104
-
105
-			if ( ! isset( $options[ $price ] ) ) {
106
-				throw new Exception( __( 'You have selected an invalid amount', 'invoicing' ) );
107
-			}
108
-
109
-			$price = explode( '|', $price );
110
-
111
-			$sub_labels[] = $price[0];
112
-			$total += (float) wpinv_sanitize_amount( $price[1] );
113
-		}
114
-
115
-		$this->fees[ $element['label'] ] = array(
116
-			'name'          => $element['label'],
117
-			'initial_fee'   => $total,
118
-			'recurring_fee' => 0,
119
-			'description'   => implode( ', ', $sub_labels ),
120
-		);
121
-
122
-	}
54
+    }
55
+
56
+    /**
57
+     * Process a price input field.
58
+     *
59
+     * @param array $element
60
+     * @param array $data
61
+     * @param GetPaid_Payment_Form_Submission $submission
62
+     */
63
+    public function process_price_input( $element, $data, $submission ) {
64
+
65
+        // Abort if not passed.
66
+        if ( empty( $data[ $element['id'] ] ) ) {
67
+            return;
68
+        }
69
+
70
+        $amount  = (float) wpinv_sanitize_amount( $data[ $element['id'] ] );
71
+        $minimum = empty( $element['minimum'] ) ? 0 : (float) wpinv_sanitize_amount( $element['minimum'] );
72
+
73
+        if ( $amount < $minimum ) {
74
+            throw new Exception( sprintf( __( 'The minimum allowed amount is %s', 'invoicing' ), getpaid_unstandardize_amount( $minimum, $submission->get_currency() ) ) );
75
+        }
76
+
77
+        $this->fees[ $element['label'] ] = array(
78
+            'name'          => $element['label'],
79
+            'initial_fee'   => $amount,
80
+            'recurring_fee' => 0,
81
+        );
82
+
83
+    }
84
+
85
+    /**
86
+     * Process a price select field.
87
+     *
88
+     * @param array $element
89
+     * @param array $data
90
+     */
91
+    public function process_price_select( $element, $data ) {
92
+
93
+        // Abort if not passed.
94
+        if ( empty( $data[ $element['id'] ] ) ) {
95
+            return;
96
+        }
97
+
98
+        $options    = getpaid_convert_price_string_to_options( $element['options'] );
99
+        $selected   = array_filter( array_map( 'trim', explode( ',', $data[ $element['id'] ] ) ) );
100
+        $total      = 0;
101
+        $sub_labels = array();
102
+
103
+        foreach ( $selected as $price ) {
104
+
105
+            if ( ! isset( $options[ $price ] ) ) {
106
+                throw new Exception( __( 'You have selected an invalid amount', 'invoicing' ) );
107
+            }
108
+
109
+            $price = explode( '|', $price );
110
+
111
+            $sub_labels[] = $price[0];
112
+            $total += (float) wpinv_sanitize_amount( $price[1] );
113
+        }
114
+
115
+        $this->fees[ $element['label'] ] = array(
116
+            'name'          => $element['label'],
117
+            'initial_fee'   => $total,
118
+            'recurring_fee' => 0,
119
+            'description'   => implode( ', ', $sub_labels ),
120
+        );
121
+
122
+    }
123 123
 
124 124
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-refresh-prices.php 1 patch
Indentation   +252 added lines, -252 removed lines patch added patch discarded remove patch
@@ -12,290 +12,290 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Payment_Form_Submission_Refresh_Prices {
14 14
 
15
-	/**
16
-	 * Contains the response for refreshing prices.
17
-	 * @var array
18
-	 */
19
-	public $response = array();
15
+    /**
16
+     * Contains the response for refreshing prices.
17
+     * @var array
18
+     */
19
+    public $response = array();
20 20
 
21 21
     /**
22
-	 * Class constructor
23
-	 *
24
-	 * @param GetPaid_Payment_Form_Submission $submission
25
-	 */
26
-	public function __construct( $submission ) {
27
-
28
-		$this->response = array(
29
-			'submission_id'                    => $submission->id,
22
+     * Class constructor
23
+     *
24
+     * @param GetPaid_Payment_Form_Submission $submission
25
+     */
26
+    public function __construct( $submission ) {
27
+
28
+        $this->response = array(
29
+            'submission_id'                    => $submission->id,
30 30
             'has_recurring'                    => $submission->has_recurring,
31
-			'has_subscription_group'           => $submission->has_subscription_group(),
32
-			'has_multiple_subscription_groups' => $submission->has_multiple_subscription_groups(),
31
+            'has_subscription_group'           => $submission->has_subscription_group(),
32
+            'has_multiple_subscription_groups' => $submission->has_multiple_subscription_groups(),
33 33
             'is_free'                          => ! $submission->should_collect_payment_details(),
34
-		);
35
-
36
-		$this->add_totals( $submission );
37
-		$this->add_texts( $submission );
38
-		$this->add_items( $submission );
39
-		$this->add_fees( $submission );
40
-		$this->add_discounts( $submission );
41
-		$this->add_taxes( $submission );
42
-		$this->add_gateways( $submission );
43
-		$this->add_data( $submission );
44
-
45
-	}
46
-
47
-	/**
48
-	 * Adds totals to a response for submission refresh prices.
49
-	 *
50
-	 * @param GetPaid_Payment_Form_Submission $submission
51
-	 */
52
-	public function add_totals( $submission ) {
53
-
54
-		$this->response = array_merge(
55
-			$this->response,
56
-			array(
57
-
58
-				'totals'      => array(
59
-					'subtotal'  => $submission->format_amount( $submission->get_subtotal() ),
60
-					'discount'  => $submission->format_amount( $submission->get_discount() ),
61
-					'fees'      => $submission->format_amount( $submission->get_fee() ),
62
-					'tax'       => $submission->format_amount( $submission->get_tax() ),
63
-					'total'     => $submission->format_amount( $submission->get_total() ),
64
-					'raw_total' => html_entity_decode( sanitize_text_field( $submission->format_amount( $submission->get_total() ) ), ENT_QUOTES ),
65
-				),
66
-
67
-				'recurring'   => array(
68
-					'subtotal' => $submission->format_amount( $submission->get_recurring_subtotal() ),
69
-					'discount' => $submission->format_amount( $submission->get_recurring_discount() ),
70
-					'fees'     => $submission->format_amount( $submission->get_recurring_fee() ),
71
-					'tax'      => $submission->format_amount( $submission->get_recurring_tax() ),
72
-					'total'    => $submission->format_amount( $submission->get_recurring_total() ),
73
-				),
74
-
75
-				'initial_amt' => wpinv_round_amount( $submission->get_total(), null, true ),
76
-				'currency'    => $submission->get_currency(),
77
-
78
-			)
79
-		);
80
-
81
-	}
82
-
83
-	/**
84
-	 * Adds texts to a response for submission refresh prices.
85
-	 *
86
-	 * @param GetPaid_Payment_Form_Submission $submission
87
-	 */
88
-	public function add_texts( $submission ) {
89
-
90
-		$payable = $submission->format_amount( $submission->get_total() );
91
-		$groups  = getpaid_get_subscription_groups( $submission );
92
-
93
-		if ( $submission->has_recurring && 2 > count( $groups ) ) {
94
-
95
-			$recurring = new WPInv_Item( $submission->has_recurring );
96
-			$period    = getpaid_get_subscription_period_label( $recurring->get_recurring_period( true ), $recurring->get_recurring_interval(), '' );
97
-			$main_item = reset( $groups );
98
-
99
-			if ( $submission->get_total() == $submission->get_recurring_total() ) {
100
-				$payable = "$payable / $period";
101
-			} elseif ( $main_item ) {
102
-
103
-				$main_item = reset( $main_item );
104
-
105
-				// Calculate the next renewal date.
106
-				$_period      = $main_item->get_recurring_period( true );
107
-				$_interval    = $main_item->get_recurring_interval();
108
-
109
-				// If the subscription item has a trial period...
110
-				if ( $main_item->has_free_trial() ) {
111
-					$_period   = $main_item->get_trial_period( true );
112
-					$_interval = $main_item->get_trial_interval();
113
-				}
114
-
115
-				$payable = sprintf(
116
-					__( '%1$s (renews at %2$s / %3$s)', 'invoicing' ),
117
-					$submission->format_amount( $submission->get_total() ),
118
-					$submission->format_amount( $submission->get_recurring_total() ),
119
-					$period
120
-				);
121
-
122
-				$payable .= sprintf(
123
-					'<small class="text-muted form-text">%s</small>',
124
-					sprintf(
125
-						__( 'First renewal on %s', 'invoicing' ),
126
-						getpaid_format_date( date( 'Y-m-d H:i:s', strtotime( "+$_interval $_period", current_time( 'timestamp' ) ) ) )
127
-					)
128
-				);
129
-
130
-			} else {
131
-				$payable = sprintf(
132
-					__( '%1$s (renews at %2$s / %3$s)', 'invoicing' ),
133
-					$submission->format_amount( $submission->get_total() ),
134
-					$submission->format_amount( $submission->get_recurring_total() ),
135
-					$period
136
-				);
137
-			}
138
-}
34
+        );
139 35
 
140
-		$texts = array(
141
-			'.getpaid-checkout-total-payable' => $payable,
142
-		);
36
+        $this->add_totals( $submission );
37
+        $this->add_texts( $submission );
38
+        $this->add_items( $submission );
39
+        $this->add_fees( $submission );
40
+        $this->add_discounts( $submission );
41
+        $this->add_taxes( $submission );
42
+        $this->add_gateways( $submission );
43
+        $this->add_data( $submission );
143 44
 
144
-		foreach ( $submission->get_items() as $item ) {
145
-			$item_id                                               = $item->get_id();
146
-			$initial_price                                         = $submission->format_amount( $item->get_sub_total() - $item->item_discount );
147
-			$recurring_price                                       = $submission->format_amount( $item->get_recurring_sub_total() - $item->recurring_item_discount );
148
-			$texts[ ".item-$item_id .getpaid-form-item-price-desc" ] = getpaid_item_recurring_price_help_text( $item, $submission->get_currency(), $initial_price, $recurring_price );
149
-			$texts[ ".item-$item_id .getpaid-mobile-item-subtotal" ] = sprintf( __( 'Subtotal: %s', 'invoicing' ), $submission->format_amount( $item->get_sub_total() ) );
45
+    }
46
+
47
+    /**
48
+     * Adds totals to a response for submission refresh prices.
49
+     *
50
+     * @param GetPaid_Payment_Form_Submission $submission
51
+     */
52
+    public function add_totals( $submission ) {
53
+
54
+        $this->response = array_merge(
55
+            $this->response,
56
+            array(
57
+
58
+                'totals'      => array(
59
+                    'subtotal'  => $submission->format_amount( $submission->get_subtotal() ),
60
+                    'discount'  => $submission->format_amount( $submission->get_discount() ),
61
+                    'fees'      => $submission->format_amount( $submission->get_fee() ),
62
+                    'tax'       => $submission->format_amount( $submission->get_tax() ),
63
+                    'total'     => $submission->format_amount( $submission->get_total() ),
64
+                    'raw_total' => html_entity_decode( sanitize_text_field( $submission->format_amount( $submission->get_total() ) ), ENT_QUOTES ),
65
+                ),
66
+
67
+                'recurring'   => array(
68
+                    'subtotal' => $submission->format_amount( $submission->get_recurring_subtotal() ),
69
+                    'discount' => $submission->format_amount( $submission->get_recurring_discount() ),
70
+                    'fees'     => $submission->format_amount( $submission->get_recurring_fee() ),
71
+                    'tax'      => $submission->format_amount( $submission->get_recurring_tax() ),
72
+                    'total'    => $submission->format_amount( $submission->get_recurring_total() ),
73
+                ),
74
+
75
+                'initial_amt' => wpinv_round_amount( $submission->get_total(), null, true ),
76
+                'currency'    => $submission->get_currency(),
77
+
78
+            )
79
+        );
80
+
81
+    }
150 82
 
151
-			if ( $item->get_quantity() == 1 ) {
152
-				$texts[ ".item-$item_id .getpaid-mobile-item-subtotal" ] = '';
153
-			}
83
+    /**
84
+     * Adds texts to a response for submission refresh prices.
85
+     *
86
+     * @param GetPaid_Payment_Form_Submission $submission
87
+     */
88
+    public function add_texts( $submission ) {
89
+
90
+        $payable = $submission->format_amount( $submission->get_total() );
91
+        $groups  = getpaid_get_subscription_groups( $submission );
92
+
93
+        if ( $submission->has_recurring && 2 > count( $groups ) ) {
94
+
95
+            $recurring = new WPInv_Item( $submission->has_recurring );
96
+            $period    = getpaid_get_subscription_period_label( $recurring->get_recurring_period( true ), $recurring->get_recurring_interval(), '' );
97
+            $main_item = reset( $groups );
98
+
99
+            if ( $submission->get_total() == $submission->get_recurring_total() ) {
100
+                $payable = "$payable / $period";
101
+            } elseif ( $main_item ) {
102
+
103
+                $main_item = reset( $main_item );
104
+
105
+                // Calculate the next renewal date.
106
+                $_period      = $main_item->get_recurring_period( true );
107
+                $_interval    = $main_item->get_recurring_interval();
108
+
109
+                // If the subscription item has a trial period...
110
+                if ( $main_item->has_free_trial() ) {
111
+                    $_period   = $main_item->get_trial_period( true );
112
+                    $_interval = $main_item->get_trial_interval();
113
+                }
114
+
115
+                $payable = sprintf(
116
+                    __( '%1$s (renews at %2$s / %3$s)', 'invoicing' ),
117
+                    $submission->format_amount( $submission->get_total() ),
118
+                    $submission->format_amount( $submission->get_recurring_total() ),
119
+                    $period
120
+                );
121
+
122
+                $payable .= sprintf(
123
+                    '<small class="text-muted form-text">%s</small>',
124
+                    sprintf(
125
+                        __( 'First renewal on %s', 'invoicing' ),
126
+                        getpaid_format_date( date( 'Y-m-d H:i:s', strtotime( "+$_interval $_period", current_time( 'timestamp' ) ) ) )
127
+                    )
128
+                );
129
+
130
+            } else {
131
+                $payable = sprintf(
132
+                    __( '%1$s (renews at %2$s / %3$s)', 'invoicing' ),
133
+                    $submission->format_amount( $submission->get_total() ),
134
+                    $submission->format_amount( $submission->get_recurring_total() ),
135
+                    $period
136
+                );
137
+            }
154 138
 }
155 139
 
156
-		$this->response = array_merge( $this->response, array( 'texts' => $texts ) );
140
+        $texts = array(
141
+            '.getpaid-checkout-total-payable' => $payable,
142
+        );
157 143
 
158
-	}
144
+        foreach ( $submission->get_items() as $item ) {
145
+            $item_id                                               = $item->get_id();
146
+            $initial_price                                         = $submission->format_amount( $item->get_sub_total() - $item->item_discount );
147
+            $recurring_price                                       = $submission->format_amount( $item->get_recurring_sub_total() - $item->recurring_item_discount );
148
+            $texts[ ".item-$item_id .getpaid-form-item-price-desc" ] = getpaid_item_recurring_price_help_text( $item, $submission->get_currency(), $initial_price, $recurring_price );
149
+            $texts[ ".item-$item_id .getpaid-mobile-item-subtotal" ] = sprintf( __( 'Subtotal: %s', 'invoicing' ), $submission->format_amount( $item->get_sub_total() ) );
150
+
151
+            if ( $item->get_quantity() == 1 ) {
152
+                $texts[ ".item-$item_id .getpaid-mobile-item-subtotal" ] = '';
153
+            }
154
+}
159 155
 
160
-	/**
161
-	 * Adds items to a response for submission refresh prices.
162
-	 *
163
-	 * @param GetPaid_Payment_Form_Submission $submission
164
-	 */
165
-	public function add_items( $submission ) {
156
+        $this->response = array_merge( $this->response, array( 'texts' => $texts ) );
166 157
 
167
-		// Add items.
168
-		$items = array();
158
+    }
159
+
160
+    /**
161
+     * Adds items to a response for submission refresh prices.
162
+     *
163
+     * @param GetPaid_Payment_Form_Submission $submission
164
+     */
165
+    public function add_items( $submission ) {
166
+
167
+        // Add items.
168
+        $items = array();
169 169
 
170 170
         foreach ( $submission->get_items() as $item ) {
171
-			$item_id           = $item->get_id();
172
-			$items[ "$item_id" ] = $submission->format_amount( $item->get_sub_total() );
173
-		}
171
+            $item_id           = $item->get_id();
172
+            $items[ "$item_id" ] = $submission->format_amount( $item->get_sub_total() );
173
+        }
174 174
 
175
-		$this->response = array_merge(
176
-			$this->response,
177
-			array( 'items' => $items )
178
-		);
175
+        $this->response = array_merge(
176
+            $this->response,
177
+            array( 'items' => $items )
178
+        );
179 179
 
180
-	}
180
+    }
181 181
 
182
-	/**
183
-	 * Adds fees to a response for submission refresh prices.
184
-	 *
185
-	 * @param GetPaid_Payment_Form_Submission $submission
186
-	 */
187
-	public function add_fees( $submission ) {
182
+    /**
183
+     * Adds fees to a response for submission refresh prices.
184
+     *
185
+     * @param GetPaid_Payment_Form_Submission $submission
186
+     */
187
+    public function add_fees( $submission ) {
188 188
 
189
-		$fees = array();
189
+        $fees = array();
190 190
 
191 191
         foreach ( $submission->get_fees() as $name => $data ) {
192
-			$fees[ $name ] = $submission->format_amount( $data['initial_fee'] );
193
-		}
192
+            $fees[ $name ] = $submission->format_amount( $data['initial_fee'] );
193
+        }
194 194
 
195
-		$this->response = array_merge(
196
-			$this->response,
197
-			array( 'fees' => $fees )
198
-		);
195
+        $this->response = array_merge(
196
+            $this->response,
197
+            array( 'fees' => $fees )
198
+        );
199 199
 
200
-	}
200
+    }
201 201
 
202
-	/**
203
-	 * Adds discounts to a response for submission refresh prices.
204
-	 *
205
-	 * @param GetPaid_Payment_Form_Submission $submission
206
-	 */
207
-	public function add_discounts( $submission ) {
202
+    /**
203
+     * Adds discounts to a response for submission refresh prices.
204
+     *
205
+     * @param GetPaid_Payment_Form_Submission $submission
206
+     */
207
+    public function add_discounts( $submission ) {
208 208
 
209
-		$discounts = array();
209
+        $discounts = array();
210 210
 
211 211
         foreach ( $submission->get_discounts() as $name => $data ) {
212
-			$discounts[ $name ] = $submission->format_amount( $data['initial_discount'] );
213
-		}
214
-
215
-		$this->response = array_merge(
216
-			$this->response,
217
-			array( 'discounts' => $discounts )
218
-		);
212
+            $discounts[ $name ] = $submission->format_amount( $data['initial_discount'] );
213
+        }
219 214
 
220
-	}
215
+        $this->response = array_merge(
216
+            $this->response,
217
+            array( 'discounts' => $discounts )
218
+        );
221 219
 
222
-	/**
223
-	 * Adds taxes to a response for submission refresh prices.
224
-	 *
225
-	 * @param GetPaid_Payment_Form_Submission $submission
226
-	 */
227
-	public function add_taxes( $submission ) {
220
+    }
228 221
 
229
-		$taxes  = array();
230
-		$markup = '';
222
+    /**
223
+     * Adds taxes to a response for submission refresh prices.
224
+     *
225
+     * @param GetPaid_Payment_Form_Submission $submission
226
+     */
227
+    public function add_taxes( $submission ) {
228
+
229
+        $taxes  = array();
230
+        $markup = '';
231 231
         foreach ( $submission->get_taxes() as $name => $data ) {
232
-			$name          = sanitize_text_field( $name );
233
-			$amount        = $submission->format_amount( $data['initial_tax'] );
234
-			$taxes[ $name ]  = $amount;
235
-			$markup       .= "<small class='form-text'>$name : $amount</small>";
236
-		}
237
-
238
-		if ( wpinv_display_individual_tax_rates() && ! empty( $taxes ) ) {
239
-			$this->response['texts']['.getpaid-form-cart-totals-total-tax'] = $markup;
240
-		}
241
-
242
-		$this->response = array_merge(
243
-			$this->response,
244
-			array( 'taxes' => $taxes )
245
-		);
246
-
247
-	}
248
-
249
-	/**
250
-	 * Adds gateways to a response for submission refresh prices.
251
-	 *
252
-	 * @param GetPaid_Payment_Form_Submission $submission
253
-	 */
254
-	public function add_gateways( $submission ) {
255
-
256
-		$gateways = array_keys( wpinv_get_enabled_payment_gateways() );
257
-
258
-		if ( $this->response['has_recurring'] ) {
259
-
260
-			foreach ( $gateways as $i => $gateway ) {
261
-
262
-				if (
263
-					! getpaid_payment_gateway_supports( $gateway, 'subscription' )
264
-					|| ( $this->response['has_subscription_group'] && ! getpaid_payment_gateway_supports( $gateway, 'single_subscription_group' ) )
265
-					|| ( $this->response['has_multiple_subscription_groups'] && ! getpaid_payment_gateway_supports( $gateway, 'multiple_subscription_groups' ) ) ) {
266
-					unset( $gateways[ $i ] );
267
-				}
232
+            $name          = sanitize_text_field( $name );
233
+            $amount        = $submission->format_amount( $data['initial_tax'] );
234
+            $taxes[ $name ]  = $amount;
235
+            $markup       .= "<small class='form-text'>$name : $amount</small>";
236
+        }
237
+
238
+        if ( wpinv_display_individual_tax_rates() && ! empty( $taxes ) ) {
239
+            $this->response['texts']['.getpaid-form-cart-totals-total-tax'] = $markup;
240
+        }
241
+
242
+        $this->response = array_merge(
243
+            $this->response,
244
+            array( 'taxes' => $taxes )
245
+        );
246
+
247
+    }
248
+
249
+    /**
250
+     * Adds gateways to a response for submission refresh prices.
251
+     *
252
+     * @param GetPaid_Payment_Form_Submission $submission
253
+     */
254
+    public function add_gateways( $submission ) {
255
+
256
+        $gateways = array_keys( wpinv_get_enabled_payment_gateways() );
257
+
258
+        if ( $this->response['has_recurring'] ) {
259
+
260
+            foreach ( $gateways as $i => $gateway ) {
261
+
262
+                if (
263
+                    ! getpaid_payment_gateway_supports( $gateway, 'subscription' )
264
+                    || ( $this->response['has_subscription_group'] && ! getpaid_payment_gateway_supports( $gateway, 'single_subscription_group' ) )
265
+                    || ( $this->response['has_multiple_subscription_groups'] && ! getpaid_payment_gateway_supports( $gateway, 'multiple_subscription_groups' ) ) ) {
266
+                    unset( $gateways[ $i ] );
267
+                }
268 268
 }
269 269
 }
270 270
 
271
-		$gateways = apply_filters( 'getpaid_submission_gateways', $gateways, $submission );
272
-		$this->response = array_merge(
273
-			$this->response,
274
-			array( 'gateways' => $gateways )
275
-		);
276
-
277
-	}
278
-
279
-	/**
280
-	 * Adds data to a response for submission refresh prices.
281
-	 *
282
-	 * @param GetPaid_Payment_Form_Submission $submission
283
-	 */
284
-	public function add_data( $submission ) {
285
-
286
-		$this->response = array_merge(
287
-			$this->response,
288
-			array(
289
-				'js_data' => apply_filters(
290
-					'getpaid_submission_js_data',
291
-					array(
292
-						'is_recurring' => $this->response['has_recurring'],
293
-					),
294
-					$submission
295
-				),
296
-			)
297
-		);
298
-
299
-	}
271
+        $gateways = apply_filters( 'getpaid_submission_gateways', $gateways, $submission );
272
+        $this->response = array_merge(
273
+            $this->response,
274
+            array( 'gateways' => $gateways )
275
+        );
276
+
277
+    }
278
+
279
+    /**
280
+     * Adds data to a response for submission refresh prices.
281
+     *
282
+     * @param GetPaid_Payment_Form_Submission $submission
283
+     */
284
+    public function add_data( $submission ) {
285
+
286
+        $this->response = array_merge(
287
+            $this->response,
288
+            array(
289
+                'js_data' => apply_filters(
290
+                    'getpaid_submission_js_data',
291
+                    array(
292
+                        'is_recurring' => $this->response['has_recurring'],
293
+                    ),
294
+                    $submission
295
+                ),
296
+            )
297
+        );
298
+
299
+    }
300 300
 
301 301
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-checkout.php 1 patch
Indentation   +298 added lines, -298 removed lines patch added patch discarded remove patch
@@ -12,184 +12,184 @@  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->set_is_viewed( true );
50
-		$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->set_is_viewed( true );
50
+        $invoice->recalculate_total();
51 51
         $invoice->save();
52 52
 
53
-		do_action( 'getpaid_checkout_invoice_updated', $invoice );
53
+        do_action( 'getpaid_checkout_invoice_updated', $invoice );
54 54
 
55
-		// Send to the gateway.
56
-		$this->post_process_submission( $invoice, $prepared, $shipping );
57
-	}
55
+        // Send to the gateway.
56
+        $this->post_process_submission( $invoice, $prepared, $shipping );
57
+    }
58 58
 
59
-	/**
60
-	 * Validates the submission.
61
-	 *
62
-	 */
63
-	protected function validate_submission() {
59
+    /**
60
+     * Validates the submission.
61
+     *
62
+     */
63
+    protected function validate_submission() {
64 64
 
65
-		$submission = $this->payment_form_submission;
66
-		$data       = $submission->get_data();
65
+        $submission = $this->payment_form_submission;
66
+        $data       = $submission->get_data();
67 67
 
68
-		// Do we have an error?
68
+        // Do we have an error?
69 69
         if ( ! empty( $submission->last_error ) ) {
70
-			wp_send_json_error( $submission->last_error );
70
+            wp_send_json_error( $submission->last_error );
71 71
         }
72 72
 
73
-		// We need a billing email.
73
+        // We need a billing email.
74 74
         if ( ! $submission->has_billing_email() ) {
75 75
             wp_send_json_error( __( 'Provide a valid billing email.', 'invoicing' ) );
76
-		}
76
+        }
77 77
 
78
-		// Non-recurring gateways should not be allowed to process recurring invoices.
79
-		if ( $submission->should_collect_payment_details() && $submission->has_recurring && ! wpinv_gateway_support_subscription( $data['wpi-gateway'] ) ) {
80
-			wp_send_json_error( __( 'The selected payment gateway does not support subscription payments.', 'invoicing' ) );
81
-		}
78
+        // Non-recurring gateways should not be allowed to process recurring invoices.
79
+        if ( $submission->should_collect_payment_details() && $submission->has_recurring && ! wpinv_gateway_support_subscription( $data['wpi-gateway'] ) ) {
80
+            wp_send_json_error( __( 'The selected payment gateway does not support subscription payments.', 'invoicing' ) );
81
+        }
82 82
 
83
-		// Ensure the gateway is active.
84
-		if ( $submission->should_collect_payment_details() && ! wpinv_is_gateway_active( $data['wpi-gateway'] ) ) {
85
-			wp_send_json_error( __( 'The selected payment gateway is not active', 'invoicing' ) );
86
-		}
83
+        // Ensure the gateway is active.
84
+        if ( $submission->should_collect_payment_details() && ! wpinv_is_gateway_active( $data['wpi-gateway'] ) ) {
85
+            wp_send_json_error( __( 'The selected payment gateway is not active', 'invoicing' ) );
86
+        }
87 87
 
88
-		// Clear any existing errors.
89
-		wpinv_clear_errors();
88
+        // Clear any existing errors.
89
+        wpinv_clear_errors();
90 90
 
91
-		// Allow themes and plugins to hook to errors
92
-		do_action( 'getpaid_checkout_error_checks', $submission );
91
+        // Allow themes and plugins to hook to errors
92
+        do_action( 'getpaid_checkout_error_checks', $submission );
93 93
 
94
-		// Do we have any errors?
94
+        // Do we have any errors?
95 95
         if ( wpinv_get_errors() ) {
96 96
             wp_send_json_error( getpaid_get_errors_html() );
97
-		}
97
+        }
98 98
 
99
-	}
99
+    }
100 100
 
101
-	/**
102
-	 * Retrieves submission items.
103
-	 *
104
-	 * @return GetPaid_Form_Item[]
105
-	 */
106
-	protected function get_submission_items() {
101
+    /**
102
+     * Retrieves submission items.
103
+     *
104
+     * @return GetPaid_Form_Item[]
105
+     */
106
+    protected function get_submission_items() {
107 107
 
108
-		$items = $this->payment_form_submission->get_items();
108
+        $items = $this->payment_form_submission->get_items();
109 109
 
110 110
         // Ensure that we have items.
111 111
         if ( empty( $items ) && ! $this->payment_form_submission->has_fees() ) {
112 112
             wp_send_json_error( __( 'Please provide at least one item or amount.', 'invoicing' ) );
113
-		}
114
-
115
-		return $items;
116
-	}
117
-
118
-	/**
119
-	 * Retrieves submission invoice.
120
-	 *
121
-	 * @return WPInv_Invoice
122
-	 */
123
-	protected function get_submission_invoice() {
124
-		$submission = $this->payment_form_submission;
125
-
126
-		if ( ! $submission->has_invoice() ) {
127
-			$invoice = new WPInv_Invoice();
128
-			$invoice->set_created_via( 'payment_form' );
129
-			return $invoice;
130 113
         }
131 114
 
132
-		$invoice = $submission->get_invoice();
115
+        return $items;
116
+    }
117
+
118
+    /**
119
+     * Retrieves submission invoice.
120
+     *
121
+     * @return WPInv_Invoice
122
+     */
123
+    protected function get_submission_invoice() {
124
+        $submission = $this->payment_form_submission;
125
+
126
+        if ( ! $submission->has_invoice() ) {
127
+            $invoice = new WPInv_Invoice();
128
+            $invoice->set_created_via( 'payment_form' );
129
+            return $invoice;
130
+        }
131
+
132
+        $invoice = $submission->get_invoice();
133 133
 
134
-		// Make sure that it is neither paid or refunded.
135
-		if ( $invoice->is_paid() || $invoice->is_refunded() ) {
136
-			wp_send_json_error( __( 'This invoice has already been paid for.', 'invoicing' ) );
137
-		}
134
+        // Make sure that it is neither paid or refunded.
135
+        if ( $invoice->is_paid() || $invoice->is_refunded() ) {
136
+            wp_send_json_error( __( 'This invoice has already been paid for.', 'invoicing' ) );
137
+        }
138 138
 
139
-		return $invoice;
140
-	}
139
+        return $invoice;
140
+    }
141 141
 
142
-	/**
143
-	 * Processes the submission invoice.
144
-	 *
145
-	 * @param WPInv_Invoice $invoice
146
-	 * @param GetPaid_Form_Item[] $items
147
-	 * @return WPInv_Invoice
148
-	 */
149
-	protected function process_submission_invoice( $invoice, $items ) {
142
+    /**
143
+     * Processes the submission invoice.
144
+     *
145
+     * @param WPInv_Invoice $invoice
146
+     * @param GetPaid_Form_Item[] $items
147
+     * @return WPInv_Invoice
148
+     */
149
+    protected function process_submission_invoice( $invoice, $items ) {
150 150
 
151
-		$submission = $this->payment_form_submission;
151
+        $submission = $this->payment_form_submission;
152 152
 
153
-		// Set-up the invoice details.
154
-		$invoice->set_email( sanitize_email( $submission->get_billing_email() ) );
155
-		$invoice->set_user_id( $this->get_submission_customer() );
156
-		$invoice->set_payment_form( absint( $submission->get_payment_form()->get_id() ) );
153
+        // Set-up the invoice details.
154
+        $invoice->set_email( sanitize_email( $submission->get_billing_email() ) );
155
+        $invoice->set_user_id( $this->get_submission_customer() );
156
+        $invoice->set_payment_form( absint( $submission->get_payment_form()->get_id() ) );
157 157
         $invoice->set_items( $items );
158 158
         $invoice->set_fees( $submission->get_fees() );
159 159
         $invoice->set_taxes( $submission->get_taxes() );
160
-		$invoice->set_discounts( $submission->get_discounts() );
161
-		$invoice->set_gateway( $submission->get_field( 'wpi-gateway' ) );
162
-		$invoice->set_currency( $submission->get_currency() );
160
+        $invoice->set_discounts( $submission->get_discounts() );
161
+        $invoice->set_gateway( $submission->get_field( 'wpi-gateway' ) );
162
+        $invoice->set_currency( $submission->get_currency() );
163 163
 
164
-		if ( $submission->has_shipping() ) {
165
-			$invoice->set_shipping( $submission->get_shipping() );
166
-		}
164
+        if ( $submission->has_shipping() ) {
165
+            $invoice->set_shipping( $submission->get_shipping() );
166
+        }
167 167
 
168
-		$address_confirmed = $submission->get_field( 'confirm-address' );
169
-		$invoice->set_address_confirmed( ! empty( $address_confirmed ) );
168
+        $address_confirmed = $submission->get_field( 'confirm-address' );
169
+        $invoice->set_address_confirmed( ! empty( $address_confirmed ) );
170 170
 
171
-		if ( $submission->has_discount_code() ) {
171
+        if ( $submission->has_discount_code() ) {
172 172
             $invoice->set_discount_code( $submission->get_discount_code() );
173
-		}
174
-
175
-		getpaid_maybe_add_default_address( $invoice );
176
-		return $invoice;
177
-	}
178
-
179
-	/**
180
-	 * Retrieves the submission's customer.
181
-	 *
182
-	 * @return int The customer id.
183
-	 */
184
-	protected function get_submission_customer() {
185
-		$submission = $this->payment_form_submission;
186
-
187
-		// If this is an existing invoice...
188
-		if ( $submission->has_invoice() ) {
189
-			return $submission->get_invoice()->get_user_id();
190
-		}
191
-
192
-		// (Maybe) create the user.
173
+        }
174
+
175
+        getpaid_maybe_add_default_address( $invoice );
176
+        return $invoice;
177
+    }
178
+
179
+    /**
180
+     * Retrieves the submission's customer.
181
+     *
182
+     * @return int The customer id.
183
+     */
184
+    protected function get_submission_customer() {
185
+        $submission = $this->payment_form_submission;
186
+
187
+        // If this is an existing invoice...
188
+        if ( $submission->has_invoice() ) {
189
+            return $submission->get_invoice()->get_user_id();
190
+        }
191
+
192
+        // (Maybe) create the user.
193 193
         $user = get_current_user_id();
194 194
 
195 195
         if ( empty( $user ) ) {
@@ -199,11 +199,11 @@  discard block
 block discarded – undo
199 199
         if ( empty( $user ) ) {
200 200
             $user = wpinv_create_user( $submission->get_billing_email() );
201 201
 
202
-			// (Maybe) send new user notification.
203
-			$should_send_notification = wpinv_get_option( 'disable_new_user_emails' );
204
-			if ( ! empty( $user ) && is_numeric( $user ) && apply_filters( 'getpaid_send_new_user_notification', empty( $should_send_notification ), $user ) ) {
205
-				wp_send_new_user_notifications( $user, 'user' );
206
-			}
202
+            // (Maybe) send new user notification.
203
+            $should_send_notification = wpinv_get_option( 'disable_new_user_emails' );
204
+            if ( ! empty( $user ) && is_numeric( $user ) && apply_filters( 'getpaid_send_new_user_notification', empty( $should_send_notification ), $user ) ) {
205
+                wp_send_new_user_notifications( $user, 'user' );
206
+            }
207 207
 }
208 208
 
209 209
         if ( is_wp_error( $user ) ) {
@@ -212,47 +212,47 @@  discard block
 block discarded – undo
212 212
 
213 213
         if ( is_numeric( $user ) ) {
214 214
             return $user;
215
-		}
215
+        }
216 216
 
217
-		return $user->ID;
217
+        return $user->ID;
218 218
 
219
-	}
219
+    }
220 220
 
221
-	/**
221
+    /**
222 222
      * Prepares submission data for saving to the database.
223 223
      *
224
-	 * @return array
224
+     * @return array
225 225
      */
226 226
     public function prepare_submission_data_for_saving() {
227 227
 
228
-		$submission = $this->payment_form_submission;
228
+        $submission = $this->payment_form_submission;
229 229
 
230
-		// Prepared submission details.
230
+        // Prepared submission details.
231 231
         $prepared = array(
232
-			'all'  => array(),
233
-			'meta' => array(),
234
-		);
232
+            'all'  => array(),
233
+            'meta' => array(),
234
+        );
235 235
 
236 236
         // Raw submission details.
237
-		$data     = $submission->get_data();
237
+        $data     = $submission->get_data();
238 238
 
239
-		// Loop through the submitted details.
239
+        // Loop through the submitted details.
240 240
         foreach ( $submission->get_payment_form()->get_elements() as $field ) {
241 241
 
242
-			// Skip premade fields.
242
+            // Skip premade fields.
243 243
             if ( ! empty( $field['premade'] ) ) {
244 244
                 continue;
245 245
             }
246 246
 
247
-			// Ensure address is provided.
248
-			if ( $field['type'] == 'address' ) {
247
+            // Ensure address is provided.
248
+            if ( $field['type'] == 'address' ) {
249 249
                 $address_type = isset( $field['address_type'] ) && 'shipping' === $field['address_type'] ? 'shipping' : 'billing';
250 250
 
251
-				foreach ( $field['fields'] as $address_field ) {
251
+                foreach ( $field['fields'] as $address_field ) {
252 252
 
253
-					if ( ! empty( $address_field['visible'] ) && ! empty( $address_field['required'] ) && '' === trim( $_POST[ $address_type ][ $address_field['name'] ] ) ) {
254
-						wp_send_json_error( __( 'Please fill all required fields.', 'invoicing' ) );
255
-					}
253
+                    if ( ! empty( $address_field['visible'] ) && ! empty( $address_field['required'] ) && '' === trim( $_POST[ $address_type ][ $address_field['name'] ] ) ) {
254
+                        wp_send_json_error( __( 'Please fill all required fields.', 'invoicing' ) );
255
+                    }
256 256
 }
257 257
 }
258 258
 
@@ -264,31 +264,31 @@  discard block
 block discarded – undo
264 264
             // Handle misc fields.
265 265
             if ( isset( $data[ $field['id'] ] ) ) {
266 266
 
267
-				// Uploads.
268
-				if ( $field['type'] == 'file_upload' ) {
269
-					$max_file_num = empty( $field['max_file_num'] ) ? 1 : absint( $field['max_file_num'] );
267
+                // Uploads.
268
+                if ( $field['type'] == 'file_upload' ) {
269
+                    $max_file_num = empty( $field['max_file_num'] ) ? 1 : absint( $field['max_file_num'] );
270 270
 
271
-					if ( count( $data[ $field['id'] ] ) > $max_file_num ) {
272
-						wp_send_json_error( __( 'Maximum number of allowed files exceeded.', 'invoicing' ) );
273
-					}
271
+                    if ( count( $data[ $field['id'] ] ) > $max_file_num ) {
272
+                        wp_send_json_error( __( 'Maximum number of allowed files exceeded.', 'invoicing' ) );
273
+                    }
274 274
 
275
-					$value = array();
275
+                    $value = array();
276 276
 
277
-					foreach ( $data[ $field['id'] ] as $url => $name ) {
278
-						$value[] = sprintf(
279
-							'<a href="%s" target="_blank">%s</a>',
280
-							esc_url_raw( $url ),
281
-							esc_html( $name )
282
-						);
283
-					}
277
+                    foreach ( $data[ $field['id'] ] as $url => $name ) {
278
+                        $value[] = sprintf(
279
+                            '<a href="%s" target="_blank">%s</a>',
280
+                            esc_url_raw( $url ),
281
+                            esc_html( $name )
282
+                        );
283
+                    }
284 284
 
285
-					$value = implode( ' | ', $value );
285
+                    $value = implode( ' | ', $value );
286 286
 
287
-				} elseif ( $field['type'] == 'checkbox' ) {
288
-					$value = isset( $data[ $field['id'] ] ) ? __( 'Yes', 'invoicing' ) : __( 'No', 'invoicing' );
289
-				} else {
290
-					$value = wp_kses_post( $data[ $field['id'] ] );
291
-				}
287
+                } elseif ( $field['type'] == 'checkbox' ) {
288
+                    $value = isset( $data[ $field['id'] ] ) ? __( 'Yes', 'invoicing' ) : __( 'No', 'invoicing' );
289
+                } else {
290
+                    $value = wp_kses_post( $data[ $field['id'] ] );
291
+                }
292 292
 
293 293
                 $label = $field['id'];
294 294
 
@@ -296,188 +296,188 @@  discard block
 block discarded – undo
296 296
                     $label = $field['label'];
297 297
                 }
298 298
 
299
-				if ( ! empty( $field['add_meta'] ) ) {
300
-					$prepared['meta'][ wpinv_clean( $label ) ] = wp_kses_post_deep( $value );
301
-				}
302
-				$prepared['all'][ wpinv_clean( $label ) ] = wp_kses_post_deep( $value );
299
+                if ( ! empty( $field['add_meta'] ) ) {
300
+                    $prepared['meta'][ wpinv_clean( $label ) ] = wp_kses_post_deep( $value );
301
+                }
302
+                $prepared['all'][ wpinv_clean( $label ) ] = wp_kses_post_deep( $value );
303 303
 
304 304
             }
305 305
 }
306 306
 
307
-		return $prepared;
307
+        return $prepared;
308 308
 
309
-	}
309
+    }
310 310
 
311
-	/**
311
+    /**
312 312
      * Retrieves address details.
313 313
      *
314
-	 * @return array
315
-	 * @param WPInv_Invoice $invoice
316
-	 * @param string $type
314
+     * @return array
315
+     * @param WPInv_Invoice $invoice
316
+     * @param string $type
317 317
      */
318 318
     public function prepare_address_details( $invoice, $type = 'billing' ) {
319 319
 
320
-		$data     = $this->payment_form_submission->get_data();
321
-		$type     = sanitize_key( $type );
322
-		$address  = array();
323
-		$prepared = array();
320
+        $data     = $this->payment_form_submission->get_data();
321
+        $type     = sanitize_key( $type );
322
+        $address  = array();
323
+        $prepared = array();
324 324
 
325
-		if ( ! empty( $data[ $type ] ) ) {
326
-			$address = $data[ $type ];
327
-		}
325
+        if ( ! empty( $data[ $type ] ) ) {
326
+            $address = $data[ $type ];
327
+        }
328 328
 
329
-		// Clean address details.
330
-		foreach ( $address as $key => $value ) {
331
-			$key             = sanitize_key( $key );
332
-			$key             = str_replace( 'wpinv_', '', $key );
333
-			$value           = wpinv_clean( $value );
334
-			$prepared[ $key ] = apply_filters( "getpaid_checkout_{$type}_address_$key", $value, $this->payment_form_submission, $invoice );
335
-		}
329
+        // Clean address details.
330
+        foreach ( $address as $key => $value ) {
331
+            $key             = sanitize_key( $key );
332
+            $key             = str_replace( 'wpinv_', '', $key );
333
+            $value           = wpinv_clean( $value );
334
+            $prepared[ $key ] = apply_filters( "getpaid_checkout_{$type}_address_$key", $value, $this->payment_form_submission, $invoice );
335
+        }
336 336
 
337
-		// Filter address details.
338
-		$prepared = apply_filters( "getpaid_checkout_{$type}_address", $prepared, $this->payment_form_submission, $invoice );
337
+        // Filter address details.
338
+        $prepared = apply_filters( "getpaid_checkout_{$type}_address", $prepared, $this->payment_form_submission, $invoice );
339 339
 
340
-		// Remove non-whitelisted values.
341
-		return array_filter( $prepared, 'getpaid_is_address_field_whitelisted', ARRAY_FILTER_USE_KEY );
340
+        // Remove non-whitelisted values.
341
+        return array_filter( $prepared, 'getpaid_is_address_field_whitelisted', ARRAY_FILTER_USE_KEY );
342 342
 
343
-	}
343
+    }
344 344
 
345
-	/**
345
+    /**
346 346
      * Prepares the billing details.
347 347
      *
348
-	 * @return array
349
-	 * @param WPInv_Invoice $invoice
348
+     * @return array
349
+     * @param WPInv_Invoice $invoice
350 350
      */
351 351
     protected function prepare_billing_info( &$invoice ) {
352 352
 
353
-		$billing_address = $this->prepare_address_details( $invoice, 'billing' );
353
+        $billing_address = $this->prepare_address_details( $invoice, 'billing' );
354 354
 
355
-		// Update the invoice with the billing details.
356
-		$invoice->set_props( $billing_address );
355
+        // Update the invoice with the billing details.
356
+        $invoice->set_props( $billing_address );
357 357
 
358
-	}
358
+    }
359 359
 
360
-	/**
360
+    /**
361 361
      * Prepares the shipping details.
362 362
      *
363
-	 * @return array
364
-	 * @param WPInv_Invoice $invoice
363
+     * @return array
364
+     * @param WPInv_Invoice $invoice
365 365
      */
366 366
     protected function prepare_shipping_info( $invoice ) {
367 367
 
368
-		$data = $this->payment_form_submission->get_data();
368
+        $data = $this->payment_form_submission->get_data();
369 369
 
370
-		if ( empty( $data['same-shipping-address'] ) ) {
371
-			return $this->prepare_address_details( $invoice, 'shipping' );
372
-		}
370
+        if ( empty( $data['same-shipping-address'] ) ) {
371
+            return $this->prepare_address_details( $invoice, 'shipping' );
372
+        }
373 373
 
374
-		return $this->prepare_address_details( $invoice, 'billing' );
374
+        return $this->prepare_address_details( $invoice, 'billing' );
375 375
 
376
-	}
376
+    }
377 377
 
378
-	/**
379
-	 * Confirms the submission is valid and send users to the gateway.
380
-	 *
381
-	 * @param WPInv_Invoice $invoice
382
-	 * @param array $prepared_payment_form_data
383
-	 * @param array $shipping
384
-	 */
385
-	protected function post_process_submission( $invoice, $prepared_payment_form_data, $shipping ) {
378
+    /**
379
+     * Confirms the submission is valid and send users to the gateway.
380
+     *
381
+     * @param WPInv_Invoice $invoice
382
+     * @param array $prepared_payment_form_data
383
+     * @param array $shipping
384
+     */
385
+    protected function post_process_submission( $invoice, $prepared_payment_form_data, $shipping ) {
386 386
 
387
-		// Ensure the invoice exists.
387
+        // Ensure the invoice exists.
388 388
         if ( ! $invoice->exists() ) {
389 389
             wp_send_json_error( __( 'An error occured while saving your invoice. Please try again.', 'invoicing' ) );
390 390
         }
391 391
 
392
-		// Save payment form data.
393
-		$prepared_payment_form_data = apply_filters( 'getpaid_prepared_payment_form_data', $prepared_payment_form_data, $invoice );
392
+        // Save payment form data.
393
+        $prepared_payment_form_data = apply_filters( 'getpaid_prepared_payment_form_data', $prepared_payment_form_data, $invoice );
394 394
         delete_post_meta( $invoice->get_id(), 'payment_form_data' );
395
-		delete_post_meta( $invoice->get_id(), 'additional_meta_data' );
396
-		if ( ! empty( $prepared_payment_form_data ) ) {
395
+        delete_post_meta( $invoice->get_id(), 'additional_meta_data' );
396
+        if ( ! empty( $prepared_payment_form_data ) ) {
397 397
 
398
-			if ( ! empty( $prepared_payment_form_data['all'] ) ) {
399
-				update_post_meta( $invoice->get_id(), 'payment_form_data', $prepared_payment_form_data['all'] );
400
-			}
398
+            if ( ! empty( $prepared_payment_form_data['all'] ) ) {
399
+                update_post_meta( $invoice->get_id(), 'payment_form_data', $prepared_payment_form_data['all'] );
400
+            }
401 401
 
402
-			if ( ! empty( $prepared_payment_form_data['meta'] ) ) {
403
-				update_post_meta( $invoice->get_id(), 'additional_meta_data', $prepared_payment_form_data['meta'] );
404
-			}
402
+            if ( ! empty( $prepared_payment_form_data['meta'] ) ) {
403
+                update_post_meta( $invoice->get_id(), 'additional_meta_data', $prepared_payment_form_data['meta'] );
404
+            }
405 405
 }
406 406
 
407
-		// Save payment form data.
408
-		$shipping = apply_filters( 'getpaid_checkout_shipping_details', $shipping, $this->payment_form_submission );
407
+        // Save payment form data.
408
+        $shipping = apply_filters( 'getpaid_checkout_shipping_details', $shipping, $this->payment_form_submission );
409 409
         if ( ! empty( $shipping ) ) {
410 410
             update_post_meta( $invoice->get_id(), 'shipping_address', $shipping );
411
-		}
411
+        }
412 412
 
413
-		// Backwards compatibility.
413
+        // Backwards compatibility.
414 414
         add_filter( 'wp_redirect', array( $this, 'send_redirect_response' ) );
415 415
 
416
-		$this->process_payment( $invoice );
416
+        $this->process_payment( $invoice );
417 417
 
418 418
         // If we are here, there was an error.
419
-		wpinv_send_back_to_checkout( $invoice );
419
+        wpinv_send_back_to_checkout( $invoice );
420 420
 
421
-	}
421
+    }
422 422
 
423
-	/**
424
-	 * Processes the actual payment.
425
-	 *
426
-	 * @param WPInv_Invoice $invoice
427
-	 */
428
-	protected function process_payment( $invoice ) {
423
+    /**
424
+     * Processes the actual payment.
425
+     *
426
+     * @param WPInv_Invoice $invoice
427
+     */
428
+    protected function process_payment( $invoice ) {
429 429
 
430
-		// Clear any checkout errors.
431
-		wpinv_clear_errors();
430
+        // Clear any checkout errors.
431
+        wpinv_clear_errors();
432 432
 
433
-		// No need to send free invoices to the gateway.
434
-		if ( $invoice->is_free() ) {
435
-			$this->process_free_payment( $invoice );
436
-		}
433
+        // No need to send free invoices to the gateway.
434
+        if ( $invoice->is_free() ) {
435
+            $this->process_free_payment( $invoice );
436
+        }
437 437
 
438
-		$submission = $this->payment_form_submission;
438
+        $submission = $this->payment_form_submission;
439 439
 
440
-		// Fires before sending to the gateway.
441
-		do_action( 'getpaid_checkout_before_gateway', $invoice, $submission );
440
+        // Fires before sending to the gateway.
441
+        do_action( 'getpaid_checkout_before_gateway', $invoice, $submission );
442 442
 
443
-		// Allow the sumission data to be modified before it is sent to the gateway.
444
-		$submission_data    = $submission->get_data();
445
-		$submission_gateway = apply_filters( 'getpaid_gateway_submission_gateway', $invoice->get_gateway(), $submission, $invoice );
446
-		$submission_data    = apply_filters( 'getpaid_gateway_submission_data', $submission_data, $submission, $invoice );
443
+        // Allow the sumission data to be modified before it is sent to the gateway.
444
+        $submission_data    = $submission->get_data();
445
+        $submission_gateway = apply_filters( 'getpaid_gateway_submission_gateway', $invoice->get_gateway(), $submission, $invoice );
446
+        $submission_data    = apply_filters( 'getpaid_gateway_submission_data', $submission_data, $submission, $invoice );
447 447
 
448
-		// Validate the currency.
449
-		if ( ! apply_filters( "getpaid_gateway_{$submission_gateway}_is_valid_for_currency", true, $invoice->get_currency() ) ) {
450
-			wpinv_set_error( 'invalid_currency', __( 'The chosen payment gateway does not support this currency', 'invoicing' ) );
451
-		}
448
+        // Validate the currency.
449
+        if ( ! apply_filters( "getpaid_gateway_{$submission_gateway}_is_valid_for_currency", true, $invoice->get_currency() ) ) {
450
+            wpinv_set_error( 'invalid_currency', __( 'The chosen payment gateway does not support this currency', 'invoicing' ) );
451
+        }
452 452
 
453
-		// Check to see if we have any errors.
454
-		if ( wpinv_get_errors() ) {
455
-			wpinv_send_back_to_checkout( $invoice );
456
-		}
453
+        // Check to see if we have any errors.
454
+        if ( wpinv_get_errors() ) {
455
+            wpinv_send_back_to_checkout( $invoice );
456
+        }
457 457
 
458
-		// Send info to the gateway for payment processing
459
-		do_action( "getpaid_gateway_$submission_gateway", $invoice, $submission_data, $submission );
458
+        // Send info to the gateway for payment processing
459
+        do_action( "getpaid_gateway_$submission_gateway", $invoice, $submission_data, $submission );
460 460
 
461
-		// Backwards compatibility.
462
-		wpinv_send_to_gateway( $submission_gateway, $invoice );
461
+        // Backwards compatibility.
462
+        wpinv_send_to_gateway( $submission_gateway, $invoice );
463 463
 
464
-	}
464
+    }
465 465
 
466
-	/**
467
-	 * Marks the invoice as paid in case the checkout is free.
468
-	 *
469
-	 * @param WPInv_Invoice $invoice
470
-	 */
471
-	protected function process_free_payment( $invoice ) {
466
+    /**
467
+     * Marks the invoice as paid in case the checkout is free.
468
+     *
469
+     * @param WPInv_Invoice $invoice
470
+     */
471
+    protected function process_free_payment( $invoice ) {
472 472
 
473
-		$invoice->set_gateway( 'none' );
474
-		$invoice->add_note( __( "This is a free invoice and won't be sent to the payment gateway", 'invoicing' ), false, false, true );
475
-		$invoice->mark_paid();
476
-		wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
473
+        $invoice->set_gateway( 'none' );
474
+        $invoice->add_note( __( "This is a free invoice and won't be sent to the payment gateway", 'invoicing' ), false, false, true );
475
+        $invoice->mark_paid();
476
+        wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
477 477
 
478
-	}
478
+    }
479 479
 
480
-	/**
480
+    /**
481 481
      * Sends a redrect response to payment details.
482 482
      *
483 483
      */
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-items.php 1 patch
Indentation   +71 added lines, -71 removed lines patch added patch discarded remove patch
@@ -12,38 +12,38 @@  discard block
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Payment_Form_Submission_Items {
14 14
 
15
-	/**
16
-	 * Submission items.
17
-	 * @var GetPaid_Form_Item[]
18
-	 */
19
-	public $items = array();
15
+    /**
16
+     * Submission items.
17
+     * @var GetPaid_Form_Item[]
18
+     */
19
+    public $items = array();
20 20
 
21 21
     /**
22
-	 * Class constructor
23
-	 *
24
-	 * @param GetPaid_Payment_Form_Submission $submission
25
-	 */
26
-	public function __construct( $submission ) {
27
-
28
-		$data         = $submission->get_data();
29
-		$payment_form = $submission->get_payment_form();
30
-
31
-		// Prepare the selected items.
32
-		$selected_items = array();
33
-		if ( ! empty( $data['getpaid-items'] ) ) {
34
-			$selected_items = wpinv_clean( $data['getpaid-items'] );
35
-		}
36
-
37
-		// (Maybe) set form items.
38
-		if ( isset( $data['getpaid-form-items'] ) ) {
39
-
40
-			// Confirm items key.
41
-			$form_items = wpinv_clean( $data['getpaid-form-items'] );
42
-			if ( ! isset( $data['getpaid-form-items-key'] ) || $data['getpaid-form-items-key'] !== md5( NONCE_KEY . AUTH_KEY . $form_items ) ) {
43
-				throw new Exception( __( 'We could not validate the form items. Please reload the page and try again.', 'invoicing' ) );
44
-			}
45
-
46
-			$items    = array();
22
+     * Class constructor
23
+     *
24
+     * @param GetPaid_Payment_Form_Submission $submission
25
+     */
26
+    public function __construct( $submission ) {
27
+
28
+        $data         = $submission->get_data();
29
+        $payment_form = $submission->get_payment_form();
30
+
31
+        // Prepare the selected items.
32
+        $selected_items = array();
33
+        if ( ! empty( $data['getpaid-items'] ) ) {
34
+            $selected_items = wpinv_clean( $data['getpaid-items'] );
35
+        }
36
+
37
+        // (Maybe) set form items.
38
+        if ( isset( $data['getpaid-form-items'] ) ) {
39
+
40
+            // Confirm items key.
41
+            $form_items = wpinv_clean( $data['getpaid-form-items'] );
42
+            if ( ! isset( $data['getpaid-form-items-key'] ) || $data['getpaid-form-items-key'] !== md5( NONCE_KEY . AUTH_KEY . $form_items ) ) {
43
+                throw new Exception( __( 'We could not validate the form items. Please reload the page and try again.', 'invoicing' ) );
44
+            }
45
+
46
+            $items    = array();
47 47
             $item_ids = array();
48 48
 
49 49
             foreach ( getpaid_convert_items_to_array( $form_items ) as $item_id => $qty ) {
@@ -73,57 +73,57 @@  discard block
 block discarded – undo
73 73
 
74 74
             $payment_form->set_items( $items );
75 75
 
76
-		}
77
-
78
-		// Process each individual item.
79
-		foreach ( $payment_form->get_items() as $item ) {
80
-			$this->process_item( $item, $selected_items, $submission );
81
-		}
82
-
83
-	}
76
+        }
84 77
 
85
-	/**
86
-	 * Process a single item.
87
-	 *
88
-	 * @param GetPaid_Form_Item $item
89
-	 * @param array $selected_items
90
-	 * @param GetPaid_Payment_Form_Submission $submission
91
-	 */
92
-	public function process_item( $item, $selected_items, $submission ) {
78
+        // Process each individual item.
79
+        foreach ( $payment_form->get_items() as $item ) {
80
+            $this->process_item( $item, $selected_items, $submission );
81
+        }
93 82
 
94
-		// Abort if this is an optional item and it has not been selected.
95
-		if ( ! $item->is_required() && ! isset( $selected_items[ $item->get_id() ] ) ) {
96
-			return;
97
-		}
83
+    }
98 84
 
99
-		// (maybe) let customers change the quantities and prices.
100
-		if ( isset( $selected_items[ $item->get_id() ] ) ) {
101
-
102
-			// Maybe change the quantities.
103
-			if ( $item->allows_quantities() ) {
104
-				$item->set_quantity( (float) $selected_items[ $item->get_id() ]['quantity'] );
105
-			}
85
+    /**
86
+     * Process a single item.
87
+     *
88
+     * @param GetPaid_Form_Item $item
89
+     * @param array $selected_items
90
+     * @param GetPaid_Payment_Form_Submission $submission
91
+     */
92
+    public function process_item( $item, $selected_items, $submission ) {
93
+
94
+        // Abort if this is an optional item and it has not been selected.
95
+        if ( ! $item->is_required() && ! isset( $selected_items[ $item->get_id() ] ) ) {
96
+            return;
97
+        }
98
+
99
+        // (maybe) let customers change the quantities and prices.
100
+        if ( isset( $selected_items[ $item->get_id() ] ) ) {
101
+
102
+            // Maybe change the quantities.
103
+            if ( $item->allows_quantities() ) {
104
+                $item->set_quantity( (float) $selected_items[ $item->get_id() ]['quantity'] );
105
+            }
106 106
 
107
-			// Maybe change the price.
108
-			if ( $item->user_can_set_their_price() ) {
109
-				$price = (float) wpinv_sanitize_amount( $selected_items[ $item->get_id() ]['price'] );
107
+            // Maybe change the price.
108
+            if ( $item->user_can_set_their_price() ) {
109
+                $price = (float) wpinv_sanitize_amount( $selected_items[ $item->get_id() ]['price'] );
110 110
 
111
-				if ( $item->get_minimum_price() > $price ) {
112
-					throw new Exception( sprintf( __( 'The minimum allowed amount is %s', 'invoicing' ), getpaid_unstandardize_amount( $item->get_minimum_price() ) ) );
113
-				}
111
+                if ( $item->get_minimum_price() > $price ) {
112
+                    throw new Exception( sprintf( __( 'The minimum allowed amount is %s', 'invoicing' ), getpaid_unstandardize_amount( $item->get_minimum_price() ) ) );
113
+                }
114 114
 
115
-				$item->set_price( $price );
115
+                $item->set_price( $price );
116 116
 
117
-			}
117
+            }
118 118
 }
119 119
 
120
-		if ( 0 == $item->get_quantity() ) {
121
-			return;
122
-		}
120
+        if ( 0 == $item->get_quantity() ) {
121
+            return;
122
+        }
123 123
 
124
-		// Save the item.
125
-		$this->items[] = apply_filters( 'getpaid_payment_form_submission_processed_item', $item, $submission );
124
+        // Save the item.
125
+        $this->items[] = apply_filters( 'getpaid_payment_form_submission_processed_item', $item, $submission );
126 126
 
127
-	}
127
+    }
128 128
 
129 129
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-taxes.php 1 patch
Indentation   +206 added lines, -206 removed lines patch added patch discarded remove patch
@@ -12,227 +12,227 @@
 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
-	 * Whether or not we should skip the taxes.
23
-	 * @var bool
24
-	 */
25
-	protected $skip_taxes = false;
15
+    /**
16
+     * Submission taxes.
17
+     * @var array
18
+     */
19
+    public $taxes = array();
20
+
21
+    /**
22
+     * Whether or not we should skip the taxes.
23
+     * @var bool
24
+     */
25
+    protected $skip_taxes = false;
26
+
27
+    /**
28
+     * Class constructor
29
+     *
30
+     * @param GetPaid_Payment_Form_Submission $submission
31
+     */
32
+    public function __construct( $submission ) {
33
+
34
+        // Validate VAT number.
35
+        $this->validate_vat( $submission );
36
+
37
+        if ( $this->skip_taxes ) {
38
+            return;
39
+        }
40
+
41
+        foreach ( $submission->get_items() as $item ) {
42
+            $this->process_item_tax( $item, $submission );
43
+        }
44
+
45
+        // Process any existing invoice taxes.
46
+        if ( $submission->has_invoice() ) {
47
+            $this->taxes = array_replace( $submission->get_invoice()->get_taxes(), $this->taxes );
48
+        }
49
+
50
+    }
51
+
52
+    /**
53
+     * Maybe process tax.
54
+     *
55
+     * @since 1.0.19
56
+     * @param GetPaid_Form_Item $item
57
+     * @param GetPaid_Payment_Form_Submission $submission
58
+     */
59
+    public function process_item_tax( $item, $submission ) {
60
+
61
+        $rates    = getpaid_get_item_tax_rates( $item, $submission->country, $submission->state );
62
+        $rates    = getpaid_filter_item_tax_rates( $item, $rates );
63
+        $taxes    = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, false ), $rates );
64
+        $r_taxes  = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, true ), $rates );
65
+
66
+        foreach ( $taxes as $name => $amount ) {
67
+            $recurring = isset( $r_taxes[ $name ] ) ? $r_taxes[ $name ] : 0;
68
+            $tax       = getpaid_prepare_item_tax( $item, $name, $amount, $recurring );
69
+
70
+            $item->item_tax += wpinv_sanitize_amount( $tax['initial_tax'] );
71
+
72
+            if ( ! isset( $this->taxes[ $name ] ) ) {
73
+                $this->taxes[ $name ] = $tax;
74
+                continue;
75
+            }
76
+
77
+            $this->taxes[ $name ]['initial_tax']   += $tax['initial_tax'];
78
+            $this->taxes[ $name ]['recurring_tax'] += $tax['recurring_tax'];
79
+
80
+        }
81
+
82
+    }
26 83
 
27 84
     /**
28
-	 * Class constructor
29
-	 *
30
-	 * @param GetPaid_Payment_Form_Submission $submission
31
-	 */
32
-	public function __construct( $submission ) {
33
-
34
-		// Validate VAT number.
35
-		$this->validate_vat( $submission );
36
-
37
-		if ( $this->skip_taxes ) {
38
-			return;
39
-		}
40
-
41
-		foreach ( $submission->get_items() as $item ) {
42
-			$this->process_item_tax( $item, $submission );
43
-		}
44
-
45
-		// Process any existing invoice taxes.
46
-		if ( $submission->has_invoice() ) {
47
-			$this->taxes = array_replace( $submission->get_invoice()->get_taxes(), $this->taxes );
48
-		}
49
-
50
-	}
51
-
52
-	/**
53
-	 * Maybe process tax.
54
-	 *
55
-	 * @since 1.0.19
56
-	 * @param GetPaid_Form_Item $item
57
-	 * @param GetPaid_Payment_Form_Submission $submission
58
-	 */
59
-	public function process_item_tax( $item, $submission ) {
60
-
61
-		$rates    = getpaid_get_item_tax_rates( $item, $submission->country, $submission->state );
62
-		$rates    = getpaid_filter_item_tax_rates( $item, $rates );
63
-		$taxes    = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, false ), $rates );
64
-		$r_taxes  = getpaid_calculate_item_taxes( getpaid_get_taxable_amount( $item, true ), $rates );
65
-
66
-		foreach ( $taxes as $name => $amount ) {
67
-			$recurring = isset( $r_taxes[ $name ] ) ? $r_taxes[ $name ] : 0;
68
-			$tax       = getpaid_prepare_item_tax( $item, $name, $amount, $recurring );
69
-
70
-			$item->item_tax += wpinv_sanitize_amount( $tax['initial_tax'] );
71
-
72
-			if ( ! isset( $this->taxes[ $name ] ) ) {
73
-				$this->taxes[ $name ] = $tax;
74
-				continue;
75
-			}
76
-
77
-			$this->taxes[ $name ]['initial_tax']   += $tax['initial_tax'];
78
-			$this->taxes[ $name ]['recurring_tax'] += $tax['recurring_tax'];
79
-
80
-		}
81
-
82
-	}
83
-
84
-	/**
85
-	 * Checks if the submission has a digital item.
86
-	 *
87
-	 * @param GetPaid_Payment_Form_Submission $submission
88
-	 * @since 1.0.19
89
-	 * @return bool
90
-	 */
91
-	public function has_digital_item( $submission ) {
92
-
93
-		foreach ( $submission->get_items() as $item ) {
94
-
95
-			if ( 'digital' == $item->get_vat_rule() ) {
96
-				return true;
97
-			}
85
+     * Checks if the submission has a digital item.
86
+     *
87
+     * @param GetPaid_Payment_Form_Submission $submission
88
+     * @since 1.0.19
89
+     * @return bool
90
+     */
91
+    public function has_digital_item( $submission ) {
92
+
93
+        foreach ( $submission->get_items() as $item ) {
94
+
95
+            if ( 'digital' == $item->get_vat_rule() ) {
96
+                return true;
97
+            }
98 98
 }
99 99
 
100
-		return false;
101
-	}
102
-
103
-	/**
104
-	 * Checks if this is an eu store.
105
-	 *
106
-	 * @since 1.0.19
107
-	 * @return bool
108
-	 */
109
-	public static function is_eu_store() {
110
-		return self::is_eu_country( wpinv_get_default_country() );
111
-	}
112
-
113
-	/**
114
-	 * Checks if this is an eu country.
115
-	 *
116
-	 * @param string $country
117
-	 * @since 1.0.19
118
-	 * @return bool
119
-	 */
120
-	public static function is_eu_country( $country ) {
121
-		return getpaid_is_eu_state( $country );
122
-	}
123
-
124
-	/**
125
-	 * Checks if this is an eu purchase.
126
-	 *
127
-	 * @param string $customer_country
128
-	 * @since 1.0.19
129
-	 * @return bool
130
-	 */
131
-	public static function is_eu_transaction( $customer_country ) {
132
-		return self::is_eu_country( $customer_country ) && self::is_eu_store();
133
-	}
134
-
135
-	/**
136
-	 * Retrieves the vat number.
137
-	 *
138
-	 * @param GetPaid_Payment_Form_Submission $submission
139
-	 * @since 1.0.19
140
-	 * @return string
141
-	 */
142
-	public function get_vat_number( $submission ) {
143
-
144
-		// Retrieve from the posted number.
145
-		$vat_number = $submission->get_field( 'wpinv_vat_number', 'billing' );
146
-		if ( ! is_null( $vat_number ) ) {
147
-			return wpinv_clean( $vat_number );
148
-		}
149
-
150
-		return $submission->has_invoice() ? $submission->get_invoice()->get_vat_number() : '';
151
-	}
152
-
153
-	/**
154
-	 * Retrieves the company.
155
-	 *
156
-	 * @param GetPaid_Payment_Form_Submission $submission
157
-	 * @since 1.0.19
158
-	 * @return string
159
-	 */
160
-	public function get_company( $submission ) {
161
-
162
-		// Retrieve from the posted data.
163
-		$company = $submission->get_field( 'wpinv_company', 'billing' );
164
-		if ( ! empty( $company ) ) {
165
-			return wpinv_clean( $company );
166
-		}
167
-
168
-		// Retrieve from the invoice.
169
-		return $submission->has_invoice() ? $submission->get_invoice()->get_company() : '';
170
-	}
171
-
172
-	/**
173
-	 * Checks if we require a VAT number.
174
-	 *
175
-	 * @param bool $ip_in_eu Whether the customer IP is from the EU
176
-	 * @param bool $country_in_eu Whether the customer country is from the EU
177
-	 * @since 1.0.19
178
-	 * @return string
179
-	 */
180
-	public function requires_vat( $ip_in_eu, $country_in_eu ) {
181
-
182
-		$prevent_b2c = wpinv_get_option( 'vat_prevent_b2c_purchase' );
183
-		$prevent_b2c = ! empty( $prevent_b2c );
184
-		$is_eu       = $ip_in_eu || $country_in_eu;
185
-
186
-		return $prevent_b2c && $is_eu;
187
-	}
188
-
189
-	/**
190
-	 * Validate VAT data.
191
-	 *
192
-	 * @param GetPaid_Payment_Form_Submission $submission
193
-	 * @since 1.0.19
194
-	 */
195
-	public function validate_vat( $submission ) {
196
-
197
-		$in_eu = $this->is_eu_transaction( $submission->country );
198
-
199
-		// Abort if we are not validating vat numbers.
200
-		if ( ! $in_eu ) {
100
+        return false;
101
+    }
102
+
103
+    /**
104
+     * Checks if this is an eu store.
105
+     *
106
+     * @since 1.0.19
107
+     * @return bool
108
+     */
109
+    public static function is_eu_store() {
110
+        return self::is_eu_country( wpinv_get_default_country() );
111
+    }
112
+
113
+    /**
114
+     * Checks if this is an eu country.
115
+     *
116
+     * @param string $country
117
+     * @since 1.0.19
118
+     * @return bool
119
+     */
120
+    public static function is_eu_country( $country ) {
121
+        return getpaid_is_eu_state( $country );
122
+    }
123
+
124
+    /**
125
+     * Checks if this is an eu purchase.
126
+     *
127
+     * @param string $customer_country
128
+     * @since 1.0.19
129
+     * @return bool
130
+     */
131
+    public static function is_eu_transaction( $customer_country ) {
132
+        return self::is_eu_country( $customer_country ) && self::is_eu_store();
133
+    }
134
+
135
+    /**
136
+     * Retrieves the vat number.
137
+     *
138
+     * @param GetPaid_Payment_Form_Submission $submission
139
+     * @since 1.0.19
140
+     * @return string
141
+     */
142
+    public function get_vat_number( $submission ) {
143
+
144
+        // Retrieve from the posted number.
145
+        $vat_number = $submission->get_field( 'wpinv_vat_number', 'billing' );
146
+        if ( ! is_null( $vat_number ) ) {
147
+            return wpinv_clean( $vat_number );
148
+        }
149
+
150
+        return $submission->has_invoice() ? $submission->get_invoice()->get_vat_number() : '';
151
+    }
152
+
153
+    /**
154
+     * Retrieves the company.
155
+     *
156
+     * @param GetPaid_Payment_Form_Submission $submission
157
+     * @since 1.0.19
158
+     * @return string
159
+     */
160
+    public function get_company( $submission ) {
161
+
162
+        // Retrieve from the posted data.
163
+        $company = $submission->get_field( 'wpinv_company', 'billing' );
164
+        if ( ! empty( $company ) ) {
165
+            return wpinv_clean( $company );
166
+        }
167
+
168
+        // Retrieve from the invoice.
169
+        return $submission->has_invoice() ? $submission->get_invoice()->get_company() : '';
170
+    }
171
+
172
+    /**
173
+     * Checks if we require a VAT number.
174
+     *
175
+     * @param bool $ip_in_eu Whether the customer IP is from the EU
176
+     * @param bool $country_in_eu Whether the customer country is from the EU
177
+     * @since 1.0.19
178
+     * @return string
179
+     */
180
+    public function requires_vat( $ip_in_eu, $country_in_eu ) {
181
+
182
+        $prevent_b2c = wpinv_get_option( 'vat_prevent_b2c_purchase' );
183
+        $prevent_b2c = ! empty( $prevent_b2c );
184
+        $is_eu       = $ip_in_eu || $country_in_eu;
185
+
186
+        return $prevent_b2c && $is_eu;
187
+    }
188
+
189
+    /**
190
+     * Validate VAT data.
191
+     *
192
+     * @param GetPaid_Payment_Form_Submission $submission
193
+     * @since 1.0.19
194
+     */
195
+    public function validate_vat( $submission ) {
196
+
197
+        $in_eu = $this->is_eu_transaction( $submission->country );
198
+
199
+        // Abort if we are not validating vat numbers.
200
+        if ( ! $in_eu ) {
201 201
             return;
202
-		}
202
+        }
203 203
 
204
-		// Prepare variables.
205
-		$vat_number  = $this->get_vat_number( $submission );
206
-		$ip_country  = getpaid_get_ip_country();
204
+        // Prepare variables.
205
+        $vat_number  = $this->get_vat_number( $submission );
206
+        $ip_country  = getpaid_get_ip_country();
207 207
         $is_eu       = $this->is_eu_country( $submission->country );
208 208
         $is_ip_eu    = $this->is_eu_country( $ip_country );
209 209
 
210
-		// Maybe abort early for initial fetches.
211
-		if ( $submission->is_initial_fetch() && empty( $vat_number ) ) {
212
-			return;
213
-		}
210
+        // Maybe abort early for initial fetches.
211
+        if ( $submission->is_initial_fetch() && empty( $vat_number ) ) {
212
+            return;
213
+        }
214 214
 
215
-		// If we're preventing business to consumer purchases,
216
-		if ( $this->requires_vat( $is_ip_eu, $is_eu ) && empty( $vat_number ) ) {
215
+        // If we're preventing business to consumer purchases,
216
+        if ( $this->requires_vat( $is_ip_eu, $is_eu ) && empty( $vat_number ) ) {
217 217
 
218
-			// Ensure that a vat number has been specified.
219
-			throw new GetPaid_Payment_Exception( '.getpaid-error-billingwpinv_vat_number.getpaid-custom-payment-form-errors', __( 'Please enter your VAT number to verify your purchase is by an EU business.', 'invoicing' ) );
218
+            // Ensure that a vat number has been specified.
219
+            throw new GetPaid_Payment_Exception( '.getpaid-error-billingwpinv_vat_number.getpaid-custom-payment-form-errors', __( 'Please enter your VAT number to verify your purchase is by an EU business.', 'invoicing' ) );
220 220
 
221
-		}
221
+        }
222 222
 
223
-		if ( empty( $vat_number ) ) {
224
-			return;
225
-		}
223
+        if ( empty( $vat_number ) ) {
224
+            return;
225
+        }
226 226
 
227
-		if ( wpinv_should_validate_vat_number() && ! wpinv_validate_vat_number( $vat_number, $submission->country ) ) {
228
-			throw new GetPaid_Payment_Exception( '.getpaid-error-billingwpinv_vat_number.getpaid-custom-payment-form-errors', __( 'Your VAT number is invalid', 'invoicing' ) );
229
-		}
227
+        if ( wpinv_should_validate_vat_number() && ! wpinv_validate_vat_number( $vat_number, $submission->country ) ) {
228
+            throw new GetPaid_Payment_Exception( '.getpaid-error-billingwpinv_vat_number.getpaid-custom-payment-form-errors', __( 'Your VAT number is invalid', 'invoicing' ) );
229
+        }
230 230
 
231
-		if ( wpinv_default_billing_country() == $submission->country && 'vat_too' == wpinv_get_option( 'vat_same_country_rule', 'vat_too' ) ) {
232
-			return;
233
-		}
231
+        if ( wpinv_default_billing_country() == $submission->country && 'vat_too' == wpinv_get_option( 'vat_same_country_rule', 'vat_too' ) ) {
232
+            return;
233
+        }
234 234
 
235
-		$this->skip_taxes = true;
236
-	}
235
+        $this->skip_taxes = true;
236
+    }
237 237
 
238 238
 }
Please login to merge, or discard this patch.
includes/reports/class-getpaid-reports-abstract-report.php 1 patch
Indentation   +177 added lines, -177 removed lines patch added patch discarded remove patch
@@ -12,69 +12,69 @@  discard block
 block discarded – undo
12 12
  */
13 13
 abstract class GetPaid_Reports_Abstract_Report {
14 14
 
15
-	/**
16
-	 * @var array
17
-	 */
18
-	public $stats;
19
-
20
-	/**
21
-	 * Class constructor.
22
-	 *
23
-	 */
24
-	public function __construct() {
25
-		$this->prepare_stats();
26
-	}
27
-
28
-	/**
29
-	 * Retrieves the current range.
30
-	 *
31
-	 */
32
-	public function get_range() {
33
-		$valid_ranges = $this->get_periods();
34
-
35
-		if ( isset( $_GET['date_range'] ) && array_key_exists( $_GET['date_range'], $valid_ranges ) ) {
36
-			return sanitize_key( $_GET['date_range'] );
37
-		}
38
-
39
-		return '7_days';
40
-	}
41
-
42
-	/**
43
-	 * Returns an array of date ranges.
44
-	 *
45
-	 * @return array
46
-	 */
47
-	public function get_periods() {
48
-
49
-		$periods = array(
15
+    /**
16
+     * @var array
17
+     */
18
+    public $stats;
19
+
20
+    /**
21
+     * Class constructor.
22
+     *
23
+     */
24
+    public function __construct() {
25
+        $this->prepare_stats();
26
+    }
27
+
28
+    /**
29
+     * Retrieves the current range.
30
+     *
31
+     */
32
+    public function get_range() {
33
+        $valid_ranges = $this->get_periods();
34
+
35
+        if ( isset( $_GET['date_range'] ) && array_key_exists( $_GET['date_range'], $valid_ranges ) ) {
36
+            return sanitize_key( $_GET['date_range'] );
37
+        }
38
+
39
+        return '7_days';
40
+    }
41
+
42
+    /**
43
+     * Returns an array of date ranges.
44
+     *
45
+     * @return array
46
+     */
47
+    public function get_periods() {
48
+
49
+        $periods = array(
50 50
             'today'     => __( 'Today', 'invoicing' ),
51 51
             'yesterday' => __( 'Yesterday', 'invoicing' ),
52 52
             '7_days'    => __( 'Last 7 days', 'invoicing' ),
53
-			'30_days'   => __( 'Last 30 days', 'invoicing' ),
54
-			'60_days'   => __( 'Last 60 days', 'invoicing' ),
55
-			'90_days'   => __( 'Last 90 days', 'invoicing' ),
56
-			'180_days'  => __( 'Last 180 days', 'invoicing' ),
57
-			'360_days'  => __( 'Last 360 days', 'invoicing' ),
58
-		);
59
-
60
-		return apply_filters( 'getpaid_earning_periods', $periods );
61
-	}
62
-
63
-	/**
64
-	 * Retrieves the current range's sql.
65
-	 *
66
-	 */
67
-	public function get_range_sql( $range, $date = 'CAST(meta.completed_date AS DATE)', $datetime = 'meta.comlpeted_date' ) {
53
+            '30_days'   => __( 'Last 30 days', 'invoicing' ),
54
+            '60_days'   => __( 'Last 60 days', 'invoicing' ),
55
+            '90_days'   => __( 'Last 90 days', 'invoicing' ),
56
+            '180_days'  => __( 'Last 180 days', 'invoicing' ),
57
+            '360_days'  => __( 'Last 360 days', 'invoicing' ),
58
+        );
59
+
60
+        return apply_filters( 'getpaid_earning_periods', $periods );
61
+    }
62
+
63
+    /**
64
+     * Retrieves the current range's sql.
65
+     *
66
+     */
67
+    public function get_range_sql( $range, $date = 'CAST(meta.completed_date AS DATE)', $datetime = 'meta.comlpeted_date' ) {
68 68
 
69 69
         // Prepare durations.
70 70
         $today                = current_time( 'Y-m-d' );
71
-		$yesterday            = date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) );
72
-		$seven_days_ago       = date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) );
73
-		$thirty_days_ago      = date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) );
74
-		$ninety_days_ago      = date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) );
75
-		$sixty_days_ago       = date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) );
76
-		$one_eighty_days_ago  = date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) );
77
-		$three_sixty_days_ago = date( 'Y-m-d', strtotime( '-360 days', current_time( 'timestamp' ) ) );
71
+        $yesterday            = date( 'Y-m-d', strtotime( '-1 day', current_time( 'timestamp' ) ) );
72
+        $seven_days_ago       = date( 'Y-m-d', strtotime( '-7 days', current_time( 'timestamp' ) ) );
73
+        $thirty_days_ago      = date( 'Y-m-d', strtotime( '-30 days', current_time( 'timestamp' ) ) );
74
+        $ninety_days_ago      = date( 'Y-m-d', strtotime( '-90 days', current_time( 'timestamp' ) ) );
75
+        $sixty_days_ago       = date( 'Y-m-d', strtotime( '-60 days', current_time( 'timestamp' ) ) );
76
+        $one_eighty_days_ago  = date( 'Y-m-d', strtotime( '-180 days', current_time( 'timestamp' ) ) );
77
+        $three_sixty_days_ago = date( 'Y-m-d', strtotime( '-360 days', current_time( 'timestamp' ) ) );
78 78
 
79 79
         $ranges = array(
80 80
 
@@ -91,130 +91,130 @@  discard block
 block discarded – undo
91 91
             '7_days'    => array(
92 92
                 "DATE($datetime)",
93 93
                 "$date BETWEEN '$seven_days_ago' AND '$today'",
94
-			),
94
+            ),
95 95
 
96
-			'30_days'   => array(
96
+            '30_days'   => array(
97 97
                 "DATE($datetime)",
98 98
                 "$date BETWEEN '$thirty_days_ago' AND '$today'",
99
-			),
99
+            ),
100 100
 
101
-			'60_days'   => array(
101
+            '60_days'   => array(
102 102
                 "DATE($datetime)",
103 103
                 "$date BETWEEN '$sixty_days_ago' AND '$today'",
104
-			),
104
+            ),
105 105
 
106
-			'90_days'   => array(
106
+            '90_days'   => array(
107 107
                 "WEEK($datetime)",
108 108
                 "$date BETWEEN '$ninety_days_ago' AND '$today'",
109
-			),
109
+            ),
110 110
 
111
-			'180_days'  => array(
111
+            '180_days'  => array(
112 112
                 "WEEK($datetime)",
113 113
                 "$date BETWEEN '$one_eighty_days_ago' AND '$today'",
114
-			),
114
+            ),
115 115
 
116
-			'360_days'  => array(
116
+            '360_days'  => array(
117 117
                 "WEEK($datetime)",
118 118
                 "$date BETWEEN '$three_sixty_days_ago' AND '$today'",
119 119
             ),
120 120
 
121 121
         );
122 122
 
123
-		$sql = isset( $ranges[ $range ] ) ? $ranges[ $range ] : $ranges['7_days'];
124
-		return apply_filters( 'getpaid_earning_graphs_get_range_sql', $sql, $range );
125
-
126
-	}
127
-
128
-	/**
129
-	 * Retrieves the hours in a day
130
-	 *
131
-	 */
132
-	public function get_hours_in_a_day() {
133
-
134
-		return array(
135
-			'12AM' => __( '12 AM', 'invoicing' ),
136
-			'1AM'  => __( '1 AM', 'invoicing' ),
137
-			'2AM'  => __( '2 AM', 'invoicing' ),
138
-			'3AM'  => __( '3 AM', 'invoicing' ),
139
-			'4AM'  => __( '4 AM', 'invoicing' ),
140
-			'5AM'  => __( '5 AM', 'invoicing' ),
141
-			'6AM'  => __( '6 AM', 'invoicing' ),
142
-			'7AM'  => __( '7 AM', 'invoicing' ),
143
-			'8AM'  => __( '8 AM', 'invoicing' ),
144
-			'9AM'  => __( '9 AM', 'invoicing' ),
145
-			'10AM' => __( '10 AM', 'invoicing' ),
146
-			'11AM' => __( '11 AM', 'invoicing' ),
147
-			'12pm' => __( '12 PM', 'invoicing' ),
148
-			'1PM'  => __( '1 PM', 'invoicing' ),
149
-			'2PM'  => __( '2 PM', 'invoicing' ),
150
-			'3PM'  => __( '3 PM', 'invoicing' ),
151
-			'4PM'  => __( '4 PM', 'invoicing' ),
152
-			'5PM'  => __( '5 PM', 'invoicing' ),
153
-			'6PM'  => __( '6 PM', 'invoicing' ),
154
-			'7PM'  => __( '7 PM', 'invoicing' ),
155
-			'8PM'  => __( '8 PM', 'invoicing' ),
156
-			'9PM'  => __( '9 PM', 'invoicing' ),
157
-			'10PM' => __( '10 PM', 'invoicing' ),
158
-			'11PM' => __( '11 PM', 'invoicing' ),
159
-		);
160
-
161
-	}
162
-
163
-	/**
164
-	 * Retrieves the days in a period
165
-	 *
166
-	 */
167
-	public function get_days_in_period( $days ) {
168
-
169
-		$return = array();
170
-		$format = 'Y-m-d';
171
-
172
-		if ( $days < 8 ) {
173
-			$format = 'D';
174
-		}
175
-
176
-		if ( $days < 32 ) {
177
-			$format = 'M j';
178
-		}
179
-
180
-		while ( $days > 0 ) {
181
-
182
-			$key            = date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
183
-			$label          = date_i18n( $format, strtotime( "-$days days", current_time( 'timestamp' ) ) );
184
-			$return[ $key ] = $label;
185
-			$days--;
186
-
187
-		}
188
-
189
-		return $return;
190
-	}
191
-
192
-	/**
193
-	 * Retrieves the weeks in a period
194
-	 *
195
-	 */
196
-	public function get_weeks_in_period( $days ) {
197
-
198
-		$return = array();
199
-
200
-		while ( $days > 0 ) {
201
-
202
-			$key            = date( 'W', strtotime( "-$days days", current_time( 'timestamp' ) ) );
203
-			$label          = date_i18n( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
204
-			$return[ $key ] = $label;
205
-			$days--;
206
-
207
-		}
208
-
209
-		return $return;
210
-	}
211
-
212
-	/**
213
-	 * Displays the report card.
214
-	 *
215
-	 */
216
-	public function display() {
217
-		?>
123
+        $sql = isset( $ranges[ $range ] ) ? $ranges[ $range ] : $ranges['7_days'];
124
+        return apply_filters( 'getpaid_earning_graphs_get_range_sql', $sql, $range );
125
+
126
+    }
127
+
128
+    /**
129
+     * Retrieves the hours in a day
130
+     *
131
+     */
132
+    public function get_hours_in_a_day() {
133
+
134
+        return array(
135
+            '12AM' => __( '12 AM', 'invoicing' ),
136
+            '1AM'  => __( '1 AM', 'invoicing' ),
137
+            '2AM'  => __( '2 AM', 'invoicing' ),
138
+            '3AM'  => __( '3 AM', 'invoicing' ),
139
+            '4AM'  => __( '4 AM', 'invoicing' ),
140
+            '5AM'  => __( '5 AM', 'invoicing' ),
141
+            '6AM'  => __( '6 AM', 'invoicing' ),
142
+            '7AM'  => __( '7 AM', 'invoicing' ),
143
+            '8AM'  => __( '8 AM', 'invoicing' ),
144
+            '9AM'  => __( '9 AM', 'invoicing' ),
145
+            '10AM' => __( '10 AM', 'invoicing' ),
146
+            '11AM' => __( '11 AM', 'invoicing' ),
147
+            '12pm' => __( '12 PM', 'invoicing' ),
148
+            '1PM'  => __( '1 PM', 'invoicing' ),
149
+            '2PM'  => __( '2 PM', 'invoicing' ),
150
+            '3PM'  => __( '3 PM', 'invoicing' ),
151
+            '4PM'  => __( '4 PM', 'invoicing' ),
152
+            '5PM'  => __( '5 PM', 'invoicing' ),
153
+            '6PM'  => __( '6 PM', 'invoicing' ),
154
+            '7PM'  => __( '7 PM', 'invoicing' ),
155
+            '8PM'  => __( '8 PM', 'invoicing' ),
156
+            '9PM'  => __( '9 PM', 'invoicing' ),
157
+            '10PM' => __( '10 PM', 'invoicing' ),
158
+            '11PM' => __( '11 PM', 'invoicing' ),
159
+        );
160
+
161
+    }
162
+
163
+    /**
164
+     * Retrieves the days in a period
165
+     *
166
+     */
167
+    public function get_days_in_period( $days ) {
168
+
169
+        $return = array();
170
+        $format = 'Y-m-d';
171
+
172
+        if ( $days < 8 ) {
173
+            $format = 'D';
174
+        }
175
+
176
+        if ( $days < 32 ) {
177
+            $format = 'M j';
178
+        }
179
+
180
+        while ( $days > 0 ) {
181
+
182
+            $key            = date( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
183
+            $label          = date_i18n( $format, strtotime( "-$days days", current_time( 'timestamp' ) ) );
184
+            $return[ $key ] = $label;
185
+            $days--;
186
+
187
+        }
188
+
189
+        return $return;
190
+    }
191
+
192
+    /**
193
+     * Retrieves the weeks in a period
194
+     *
195
+     */
196
+    public function get_weeks_in_period( $days ) {
197
+
198
+        $return = array();
199
+
200
+        while ( $days > 0 ) {
201
+
202
+            $key            = date( 'W', strtotime( "-$days days", current_time( 'timestamp' ) ) );
203
+            $label          = date_i18n( 'Y-m-d', strtotime( "-$days days", current_time( 'timestamp' ) ) );
204
+            $return[ $key ] = $label;
205
+            $days--;
206
+
207
+        }
208
+
209
+        return $return;
210
+    }
211
+
212
+    /**
213
+     * Displays the report card.
214
+     *
215
+     */
216
+    public function display() {
217
+        ?>
218 218
 
219 219
 			<div class="row">
220 220
 				<div class="col-12">
@@ -228,20 +228,20 @@  discard block
 block discarded – undo
228 228
 
229 229
 		<?php
230 230
 
231
-	}
232
-
233
-	/**
234
-	 * Prepares the report stats.
235
-	 *
236
-	 * Extend this in child classes.
237
-	 */
238
-	abstract public function prepare_stats();
239
-
240
-	/**
241
-	 * Displays the actual report.
242
-	 *
243
-	 * Extend this in child classes.
244
-	 */
245
-	abstract public function display_stats();
231
+    }
232
+
233
+    /**
234
+     * Prepares the report stats.
235
+     *
236
+     * Extend this in child classes.
237
+     */
238
+    abstract public function prepare_stats();
239
+
240
+    /**
241
+     * Displays the actual report.
242
+     *
243
+     * Extend this in child classes.
244
+     */
245
+    abstract public function display_stats();
246 246
 
247 247
 }
Please login to merge, or discard this patch.