Passed
Push — master ( a15c21...706a80 )
by Stiofan
04:34
created
templates/emails/wpinv-email-refunded_invoice.php 1 patch
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -7,22 +7,22 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 // Print the email header.
13
-do_action( 'wpinv_email_header', $email_heading, $invoice, $email_type, $sent_to_admin );
13
+do_action('wpinv_email_header', $email_heading, $invoice, $email_type, $sent_to_admin);
14 14
 
15 15
 // Generate the custom message body.
16 16
 echo $message_body;
17 17
 
18 18
 // Print invoice details.
19
-do_action( 'wpinv_email_invoice_details', $invoice, $email_type, $sent_to_admin );
19
+do_action('wpinv_email_invoice_details', $invoice, $email_type, $sent_to_admin);
20 20
 
21 21
 // Print invoice items.
22
-do_action( 'wpinv_email_invoice_items', $invoice, $email_type, $sent_to_admin );
22
+do_action('wpinv_email_invoice_items', $invoice, $email_type, $sent_to_admin);
23 23
 
24 24
 // Print the billing details.
25
-do_action( 'wpinv_email_billing_details', $invoice, $email_type, $sent_to_admin );
25
+do_action('wpinv_email_billing_details', $invoice, $email_type, $sent_to_admin);
26 26
 
27 27
 // Print the email footer.
28
-do_action( 'wpinv_email_footer', $invoice, $email_type, $sent_to_admin );
28
+do_action('wpinv_email_footer', $invoice, $email_type, $sent_to_admin);
Please login to merge, or discard this patch.
templates/emails/wpinv-email-failed_invoice.php 1 patch
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -7,22 +7,22 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 // Print the email header.
13
-do_action( 'wpinv_email_header', $email_heading, $invoice, $email_type, $sent_to_admin );
13
+do_action('wpinv_email_header', $email_heading, $invoice, $email_type, $sent_to_admin);
14 14
 
15 15
 // Generate the custom message body.
16 16
 echo $message_body;
17 17
 
18 18
 // Print invoice details.
19
-do_action( 'wpinv_email_invoice_details', $invoice, $email_type, $sent_to_admin );
19
+do_action('wpinv_email_invoice_details', $invoice, $email_type, $sent_to_admin);
20 20
 
21 21
 // Print invoice items.
22
-do_action( 'wpinv_email_invoice_items', $invoice, $email_type, $sent_to_admin );
22
+do_action('wpinv_email_invoice_items', $invoice, $email_type, $sent_to_admin);
23 23
 
24 24
 // Print the billing details.
25
-do_action( 'wpinv_email_billing_details', $invoice, $email_type, $sent_to_admin );
25
+do_action('wpinv_email_billing_details', $invoice, $email_type, $sent_to_admin);
26 26
 
27 27
 // Print the email footer.
28
-do_action( 'wpinv_email_footer', $invoice, $email_type, $sent_to_admin );
28
+do_action('wpinv_email_footer', $invoice, $email_type, $sent_to_admin);
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-crud-controller.php 2 patches
Indentation   +471 added lines, -471 removed lines patch added patch discarded remove patch
@@ -17,476 +17,476 @@
 block discarded – undo
17 17
  */
18 18
 class GetPaid_REST_CRUD_Controller extends GetPaid_REST_Controller {
19 19
 
20
-	/**
21
-	 * Contains this controller's class name.
22
-	 *
23
-	 * @var string
24
-	 */
25
-	public $crud_class;
26
-
27
-	/**
28
-	 * Contains the current CRUD object.
29
-	 *
30
-	 * @var GetPaid_Data
31
-	 */
32
-	protected $data_object;
33
-
34
-	/**
35
-	 * Registers the routes for the objects of the controller.
36
-	 *
37
-	 * @since 1.0.19
38
-	 *
39
-	 * @see register_rest_route()
40
-	 */
41
-	public function register_namespace_routes( $namespace ) {
42
-
43
-		register_rest_route(
44
-			$namespace,
45
-			'/' . $this->rest_base,
46
-			array(
47
-				array(
48
-					'methods'             => WP_REST_Server::READABLE,
49
-					'callback'            => array( $this, 'get_items' ),
50
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
51
-					'args'                => $this->get_collection_params(),
52
-				),
53
-				array(
54
-					'methods'             => WP_REST_Server::CREATABLE,
55
-					'callback'            => array( $this, 'create_item' ),
56
-					'permission_callback' => array( $this, 'create_item_permissions_check' ),
57
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
58
-				),
59
-				'schema' => array( $this, 'get_public_item_schema' ),
60
-			)
61
-		);
62
-
63
-		$get_item_args = array(
64
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
65
-		);
66
-
67
-		register_rest_route(
68
-			$namespace,
69
-			'/' . $this->rest_base . '/(?P<id>[\d]+)',
70
-			array(
71
-				'args'   => array(
72
-					'id' => array(
73
-						'description' => __( 'Unique identifier for the object.', 'invoicing' ),
74
-						'type'        => 'integer',
75
-					),
76
-				),
77
-				array(
78
-					'methods'             => WP_REST_Server::READABLE,
79
-					'callback'            => array( $this, 'get_item' ),
80
-					'permission_callback' => array( $this, 'get_item_permissions_check' ),
81
-					'args'                => $get_item_args,
82
-				),
83
-				array(
84
-					'methods'             => WP_REST_Server::EDITABLE,
85
-					'callback'            => array( $this, 'update_item' ),
86
-					'permission_callback' => array( $this, 'update_item_permissions_check' ),
87
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
88
-				),
89
-				array(
90
-					'methods'             => WP_REST_Server::DELETABLE,
91
-					'callback'            => array( $this, 'delete_item' ),
92
-					'permission_callback' => array( $this, 'delete_item_permissions_check' ),
93
-					'args'                => array(
94
-						'force' => array(
95
-							'type'        => 'boolean',
96
-							'default'     => false,
97
-							'description' => __( 'Whether to bypass Trash and force deletion.', 'invoicing' ),
98
-						),
99
-					),
100
-				),
101
-				'schema' => array( $this, 'get_public_item_schema' ),
102
-			)
103
-		);
104
-
105
-	}
106
-
107
-	/**
108
-	 * Saves a single object.
109
-	 *
110
-	 * @param GetPaid_Data $object Object to save.
111
-	 * @return WP_Error|GetPaid_Data
112
-	 */
113
-	protected function save_object( $object ) {
114
-		$object->save();
115
-
116
-		if ( ! empty( $object->last_error ) ) {
117
-			return new WP_Error( 'rest_cannot_save', $object->last_error, array( 'status' => 400 ) );
118
-		}
119
-
120
-		return new $this->crud_class( $object->get_id() );
121
-	}
122
-
123
-	/**
124
-	 * Retrieves a single object.
125
-	 *
126
-	 * @since 1.0.13
127
-	 *
128
-	 * @param int|WP_Post $object_id Supplied ID.
129
-	 * @return GetPaid_Data|WP_Error GetPaid_Data object if ID is valid, WP_Error otherwise.
130
-	 */
131
-	protected function get_object( $object_id ) {
132
-
133
-		// Do we have an object?
134
-		if ( empty( $this->crud_class ) || ! class_exists( $this->crud_class ) ) {
135
-			return new WP_Error( 'no_crud_class', __( 'You need to specify a CRUD class for this controller', 'invoicing' ) );
136
-		}
137
-
138
-		// Fetch the object.
139
-		$object = new $this->crud_class( $object_id );
140
-		if ( ! empty( $object->last_error ) ) {
141
-			return new WP_Error( 'rest_object_invalid_id', $object->last_error, array( 'status' => 404 ) );
142
-		}
143
-
144
-		$this->data_object = $object;
145
-		return $object->get_id() ? $object : new WP_Error( 'rest_object_invalid_id', __( 'Invalid ID.', 'invoicing' ), array( 'status' => 404 ) );
146
-
147
-	}
148
-
149
-	/**
150
-	 * Get a single object.
151
-	 *
152
-	 * @param WP_REST_Request $request Full details about the request.
153
-	 * @return WP_Error|WP_REST_Response
154
-	 */
155
-	public function get_item( $request ) {
156
-
157
-		// Fetch the item.
158
-		$object = $this->get_object( $request['id'] );
159
-
160
-		if ( is_wp_error( $object ) ) {
161
-			return $object;
162
-		}
163
-
164
-		// Generate a response.
165
-		return rest_ensure_response( $this->prepare_item_for_response( $object, $request ) );
166
-
167
-	}
168
-
169
-	/**
170
-	 * Create a single object.
171
-	 *
172
-	 * @param WP_REST_Request $request Full details about the request.
173
-	 * @return WP_Error|WP_REST_Response
174
-	 */
175
-	public function create_item( $request ) {
176
-
177
-		// Can not create an existing item.
178
-		if ( ! empty( $request['id'] ) ) {
179
-			/* translators: %s: post type */
180
-			return new WP_Error( "getpaid_rest_{$this->rest_base}_exists", __( 'Cannot create existing resource.', 'invoicing' ), array( 'status' => 400 ) );
181
-		}
182
-
183
-		// Generate a GetPaid_Data object from the request.
184
-		$object = $this->prepare_item_for_database( $request );
185
-		if ( is_wp_error( $object ) ) {
186
-			return $object;
187
-		}
188
-
189
-		// Save the object.
190
-		$object = $this->save_object( $object );
191
-		if ( is_wp_error( $object ) ) {
192
-			return $object;
193
-		}
194
-
195
-		// Save special fields.
196
-		$save_special = $this->update_additional_fields_for_object( $object, $request );
197
-		if ( is_wp_error( $save_special ) ) {
198
-			$object->delete( true );
199
-			return $save_special;
200
-		}
201
-
202
-		$request->set_param( 'context', 'edit' );
203
-		$response = $this->prepare_item_for_response( $object, $request );
204
-		$response = rest_ensure_response( $response );
205
-		$response->set_status( 201 );
206
-		$response->header( 'Location', rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ) );
207
-
208
-		return $response;
209
-	}
210
-
211
-	/**
212
-	 * Update a single object.
213
-	 *
214
-	 * @param WP_REST_Request $request Full details about the request.
215
-	 * @return WP_Error|WP_REST_Response
216
-	 */
217
-	public function update_item( $request ) {
218
-
219
-		// Fetch the item.
220
-		$object = $this->get_object( $request['id'] );
221
-		if ( is_wp_error( $object ) ) {
222
-			return $object;
223
-		}
224
-
225
-		// Prepare the item for saving.
226
-		$object = $this->prepare_item_for_database( $request );
227
-		if ( is_wp_error( $object ) ) {
228
-			return $object;
229
-		}
230
-
231
-		// Save the item.
232
-		$object = $this->save_object( $object );
233
-		if ( is_wp_error( $object ) ) {
234
-			return $object;
235
-		}
236
-
237
-		// Save special fields (those added via hooks).
238
-		$save_special = $this->update_additional_fields_for_object( $object, $request );
239
-		if ( is_wp_error( $save_special ) ) {
240
-			return $save_special;
241
-		}
242
-
243
-		$request->set_param( 'context', 'edit' );
244
-		$response = $this->prepare_item_for_response( $object, $request );
245
-		return rest_ensure_response( $response );
246
-	}
247
-
248
-	/**
249
-	 * Prepare links for the request.
250
-	 *
251
-	 * @param GetPaid_Data    $object GetPaid_Data object.
252
-	 * @return array Links for the given object.
253
-	 */
254
-	protected function prepare_links( $object ) {
255
-
256
-		$links = array(
257
-			'self'       => array(
258
-				'href'   => rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ),
259
-			),
260
-			'collection' => array(
261
-				'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
262
-			),
263
-		);
264
-
265
-		return $links;
266
-	}
267
-
268
-	/**
269
-	 * Get the query params for collections of attachments.
270
-	 *
271
-	 * @return array
272
-	 */
273
-	public function get_collection_params() {
274
-		$params = parent::get_collection_params();
275
-		$params['context']['default'] = 'view';
276
-		return $params;
277
-	}
278
-
279
-	/**
280
-	 * Only return writable props from schema.
281
-	 *
282
-	 * @param  array $schema Schema.
283
-	 * @return bool
284
-	 */
285
-	public function filter_writable_props( $schema ) {
286
-		return empty( $schema['readonly'] );
287
-	}
288
-
289
-	/**
290
-	 * Prepare a single object for create or update.
291
-	 *
292
-	 * @since 1.0.19
293
-	 * @param  WP_REST_Request $request Request object.
294
-	 * @return GetPaid_Data|WP_Error Data object or WP_Error.
295
-	 */
296
-	protected function prepare_item_for_database( $request ) {
297
-
298
-		// Do we have an object?
299
-		if ( empty( $this->crud_class ) || ! class_exists( $this->crud_class ) ) {
300
-			return new WP_Error( 'no_crud_class', __( 'You need to specify a CRUD class for this controller', 'invoicing' ) );
301
-		}
302
-
303
-		// Prepare the object.
304
-		$id        = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
305
-		$object    = new $this->crud_class( $id );
306
-
307
-		// Abort if an error exists.
308
-		if ( ! empty( $object->last_error ) ) {
309
-			return new WP_Error( 'invalid_item', $object->last_error );
310
-		}
311
-
312
-		$schema    = $this->get_item_schema();
313
-		$data_keys = array_keys( array_filter( $schema['properties'], array( $this, 'filter_writable_props' ) ) );
314
-
315
-		// Handle all writable props.
316
-		foreach ( $data_keys as $key ) {
317
-			$value = $request[ $key ];
318
-
319
-			if ( ! is_null( $value ) ) {
320
-				switch ( $key ) {
321
-
322
-					case 'meta_data':
323
-						if ( is_array( $value ) ) {
324
-							foreach ( $value as $meta ) {
325
-								$object->update_meta_data( $meta['key'], $meta['value'], isset( $meta['id'] ) ? $meta['id'] : '' );
326
-							}
327
-						}
328
-						break;
329
-
330
-					default:
331
-						if ( is_callable( array( $object, "set_{$key}" ) ) ) {
332
-							$object->{"set_{$key}"}( $value );
333
-						}
334
-						break;
335
-				}
336
-			}
337
-
338
-		}
339
-
340
-		// Filters an object before it is inserted via the REST API..
341
-		return apply_filters( "getpaid_rest_pre_insert_{$this->rest_base}_object", $object, $request );
342
-	}
343
-
344
-	/**
345
-	 * Retrieves data from a GetPaid class.
346
-	 *
347
-	 * @since  1.0.19
348
-	 * @param  GetPaid_Meta_Data[]    $meta_data  meta data objects.
349
-	 * @return array
350
-	 */
351
-	protected function prepare_object_meta_data( $meta_data ) {
352
-		$meta = array();
353
-
354
-		foreach( $meta_data as $object ) {
355
-			$meta[] = $object->get_data();
356
-		}
357
-
358
-		return $meta;
359
-	}
360
-
361
-	/**
362
-	 * Retrieves invoice items.
363
-	 *
364
-	 * @since  1.0.19
365
-	 * @param  WPInv_Invoice $invoice  Invoice items.
366
-	 * @param array            $fields Fields to include.
367
-	 * @return array
368
-	 */
369
-	protected function prepare_invoice_items( $invoice ) {
370
-		$items = array();
371
-
372
-		foreach( $invoice->get_items() as $item ) {
373
-
374
-			$item_data = $item->prepare_data_for_saving();
375
-
376
-			if ( 'amount' == $invoice->get_template() ) {
377
-				$item_data['quantity'] = 1;
378
-			}
379
-
380
-			$items[] = $item_data;
381
-		}
382
-
383
-		return $items;
384
-	}
385
-
386
-	/**
387
-	 * Retrieves data from a GetPaid class.
388
-	 *
389
-	 * @since  1.0.19
390
-	 * @param  GetPaid_Data    $object  Data object.
391
-	 * @param array            $fields Fields to include.
392
-	 * @param string           $context either view or edit.
393
-	 * @return array
394
-	 */
395
-	protected function prepare_object_data( $object, $fields, $context = 'view' ) {
396
-
397
-		$data = array();
398
-
399
-		// Handle all writable props.
400
-		foreach ( array_keys( $this->get_schema_properties() ) as $key ) {
401
-
402
-			// Abort if it is not included.
403
-			if ( ! empty( $fields ) && ! $this->is_field_included( $key, $fields ) ) {
404
-				continue;
405
-			}
406
-
407
-			// Or this current object does not support the field.
408
-			if ( ! $this->object_supports_field( $object, $key ) ) {
409
-				continue;
410
-			}
411
-
412
-			// Handle meta data.
413
-			if ( $key == 'meta_data' ) {
414
-				$data['meta_data'] = $this->prepare_object_meta_data( $object->get_meta_data() );
415
-				continue;
416
-			}
417
-
418
-			// Handle items.
419
-			if ( $key == 'items' && is_a( $object, 'WPInv_Invoice' )  ) {
420
-				$data['items'] = $this->prepare_invoice_items( $object );
421
-				continue;
422
-			}
423
-
424
-			// Booleans.
425
-			if ( is_callable( array( $object, $key ) ) ) {
426
-				$data[ $key ] = $object->$key( $context );
427
-				continue;
428
-			}
429
-
430
-			// Get object value.
431
-			if ( is_callable( array( $object, "get_{$key}" ) ) ) {
432
-				$value = $object->{"get_{$key}"}( $context );
433
-
434
-				// If the value is an instance of GetPaid_Data...
435
-				if ( is_a( $value, 'GetPaid_Data' ) ) {
436
-					$value = $value->get_data( $context );
437
-				}
438
-
439
-				// For objects, retrieves it's properties.
440
-				$data[ $key ] = is_object( $value ) ? get_object_vars( $value ) :  $value ;
441
-				continue;
442
-			}
443
-
444
-		}
445
-
446
-		return $data;
447
-	}
448
-
449
-	/**
450
-	 * Checks if a key should be included in a response.
451
-	 *
452
-	 * @since  1.0.19
453
-	 * @param  GetPaid_Data $object  Data object.
454
-	 * @param  string       $field_key The key to check for.
455
-	 * @return bool
456
-	 */
457
-	public function object_supports_field( $object, $field_key ) {
458
-		return apply_filters( 'getpaid_rest_object_supports_key', true, $object, $field_key );
459
-	}
460
-
461
-	/**
462
-	 * Prepare a single object output for response.
463
-	 *
464
-	 * @since  1.0.19
465
-	 * @param  GetPaid_Data    $object  Data object.
466
-	 * @param  WP_REST_Request $request Request object.
467
-	 * @return WP_REST_Response
468
-	 */
469
-	public function prepare_item_for_response( $object, $request ) {
470
-		remove_filter( 'rest_post_dispatch', 'rest_filter_response_fields', 10 );
471
-
472
-		$this->data_object = $object;
473
-
474
-		// Fetch the fields to include in this response.
475
-		$fields = $this->get_fields_for_response( $request );
476
-
477
-		// Prepare object data.
478
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
479
-		$data    = $this->prepare_object_data( $object, $fields, $context );
480
-		$data    = $this->add_additional_fields_to_object( $data, $request );
481
-		$data    = $this->limit_object_to_requested_fields( $data, $fields );
482
-		$data    = $this->filter_response_by_context( $data, $context );
483
-
484
-		// Prepare the response.
485
-		$response = rest_ensure_response( $data );
486
-		$response->add_links( $this->prepare_links( $object, $request ) );
487
-
488
-		// Filter item response.
489
-		return apply_filters( "getpaid_rest_prepare_{$this->rest_base}_object", $response, $object, $request );
490
-	}
20
+    /**
21
+     * Contains this controller's class name.
22
+     *
23
+     * @var string
24
+     */
25
+    public $crud_class;
26
+
27
+    /**
28
+     * Contains the current CRUD object.
29
+     *
30
+     * @var GetPaid_Data
31
+     */
32
+    protected $data_object;
33
+
34
+    /**
35
+     * Registers the routes for the objects of the controller.
36
+     *
37
+     * @since 1.0.19
38
+     *
39
+     * @see register_rest_route()
40
+     */
41
+    public function register_namespace_routes( $namespace ) {
42
+
43
+        register_rest_route(
44
+            $namespace,
45
+            '/' . $this->rest_base,
46
+            array(
47
+                array(
48
+                    'methods'             => WP_REST_Server::READABLE,
49
+                    'callback'            => array( $this, 'get_items' ),
50
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
51
+                    'args'                => $this->get_collection_params(),
52
+                ),
53
+                array(
54
+                    'methods'             => WP_REST_Server::CREATABLE,
55
+                    'callback'            => array( $this, 'create_item' ),
56
+                    'permission_callback' => array( $this, 'create_item_permissions_check' ),
57
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
58
+                ),
59
+                'schema' => array( $this, 'get_public_item_schema' ),
60
+            )
61
+        );
62
+
63
+        $get_item_args = array(
64
+            'context' => $this->get_context_param( array( 'default' => 'view' ) ),
65
+        );
66
+
67
+        register_rest_route(
68
+            $namespace,
69
+            '/' . $this->rest_base . '/(?P<id>[\d]+)',
70
+            array(
71
+                'args'   => array(
72
+                    'id' => array(
73
+                        'description' => __( 'Unique identifier for the object.', 'invoicing' ),
74
+                        'type'        => 'integer',
75
+                    ),
76
+                ),
77
+                array(
78
+                    'methods'             => WP_REST_Server::READABLE,
79
+                    'callback'            => array( $this, 'get_item' ),
80
+                    'permission_callback' => array( $this, 'get_item_permissions_check' ),
81
+                    'args'                => $get_item_args,
82
+                ),
83
+                array(
84
+                    'methods'             => WP_REST_Server::EDITABLE,
85
+                    'callback'            => array( $this, 'update_item' ),
86
+                    'permission_callback' => array( $this, 'update_item_permissions_check' ),
87
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
88
+                ),
89
+                array(
90
+                    'methods'             => WP_REST_Server::DELETABLE,
91
+                    'callback'            => array( $this, 'delete_item' ),
92
+                    'permission_callback' => array( $this, 'delete_item_permissions_check' ),
93
+                    'args'                => array(
94
+                        'force' => array(
95
+                            'type'        => 'boolean',
96
+                            'default'     => false,
97
+                            'description' => __( 'Whether to bypass Trash and force deletion.', 'invoicing' ),
98
+                        ),
99
+                    ),
100
+                ),
101
+                'schema' => array( $this, 'get_public_item_schema' ),
102
+            )
103
+        );
104
+
105
+    }
106
+
107
+    /**
108
+     * Saves a single object.
109
+     *
110
+     * @param GetPaid_Data $object Object to save.
111
+     * @return WP_Error|GetPaid_Data
112
+     */
113
+    protected function save_object( $object ) {
114
+        $object->save();
115
+
116
+        if ( ! empty( $object->last_error ) ) {
117
+            return new WP_Error( 'rest_cannot_save', $object->last_error, array( 'status' => 400 ) );
118
+        }
119
+
120
+        return new $this->crud_class( $object->get_id() );
121
+    }
122
+
123
+    /**
124
+     * Retrieves a single object.
125
+     *
126
+     * @since 1.0.13
127
+     *
128
+     * @param int|WP_Post $object_id Supplied ID.
129
+     * @return GetPaid_Data|WP_Error GetPaid_Data object if ID is valid, WP_Error otherwise.
130
+     */
131
+    protected function get_object( $object_id ) {
132
+
133
+        // Do we have an object?
134
+        if ( empty( $this->crud_class ) || ! class_exists( $this->crud_class ) ) {
135
+            return new WP_Error( 'no_crud_class', __( 'You need to specify a CRUD class for this controller', 'invoicing' ) );
136
+        }
137
+
138
+        // Fetch the object.
139
+        $object = new $this->crud_class( $object_id );
140
+        if ( ! empty( $object->last_error ) ) {
141
+            return new WP_Error( 'rest_object_invalid_id', $object->last_error, array( 'status' => 404 ) );
142
+        }
143
+
144
+        $this->data_object = $object;
145
+        return $object->get_id() ? $object : new WP_Error( 'rest_object_invalid_id', __( 'Invalid ID.', 'invoicing' ), array( 'status' => 404 ) );
146
+
147
+    }
148
+
149
+    /**
150
+     * Get a single object.
151
+     *
152
+     * @param WP_REST_Request $request Full details about the request.
153
+     * @return WP_Error|WP_REST_Response
154
+     */
155
+    public function get_item( $request ) {
156
+
157
+        // Fetch the item.
158
+        $object = $this->get_object( $request['id'] );
159
+
160
+        if ( is_wp_error( $object ) ) {
161
+            return $object;
162
+        }
163
+
164
+        // Generate a response.
165
+        return rest_ensure_response( $this->prepare_item_for_response( $object, $request ) );
166
+
167
+    }
168
+
169
+    /**
170
+     * Create a single object.
171
+     *
172
+     * @param WP_REST_Request $request Full details about the request.
173
+     * @return WP_Error|WP_REST_Response
174
+     */
175
+    public function create_item( $request ) {
176
+
177
+        // Can not create an existing item.
178
+        if ( ! empty( $request['id'] ) ) {
179
+            /* translators: %s: post type */
180
+            return new WP_Error( "getpaid_rest_{$this->rest_base}_exists", __( 'Cannot create existing resource.', 'invoicing' ), array( 'status' => 400 ) );
181
+        }
182
+
183
+        // Generate a GetPaid_Data object from the request.
184
+        $object = $this->prepare_item_for_database( $request );
185
+        if ( is_wp_error( $object ) ) {
186
+            return $object;
187
+        }
188
+
189
+        // Save the object.
190
+        $object = $this->save_object( $object );
191
+        if ( is_wp_error( $object ) ) {
192
+            return $object;
193
+        }
194
+
195
+        // Save special fields.
196
+        $save_special = $this->update_additional_fields_for_object( $object, $request );
197
+        if ( is_wp_error( $save_special ) ) {
198
+            $object->delete( true );
199
+            return $save_special;
200
+        }
201
+
202
+        $request->set_param( 'context', 'edit' );
203
+        $response = $this->prepare_item_for_response( $object, $request );
204
+        $response = rest_ensure_response( $response );
205
+        $response->set_status( 201 );
206
+        $response->header( 'Location', rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ) );
207
+
208
+        return $response;
209
+    }
210
+
211
+    /**
212
+     * Update a single object.
213
+     *
214
+     * @param WP_REST_Request $request Full details about the request.
215
+     * @return WP_Error|WP_REST_Response
216
+     */
217
+    public function update_item( $request ) {
218
+
219
+        // Fetch the item.
220
+        $object = $this->get_object( $request['id'] );
221
+        if ( is_wp_error( $object ) ) {
222
+            return $object;
223
+        }
224
+
225
+        // Prepare the item for saving.
226
+        $object = $this->prepare_item_for_database( $request );
227
+        if ( is_wp_error( $object ) ) {
228
+            return $object;
229
+        }
230
+
231
+        // Save the item.
232
+        $object = $this->save_object( $object );
233
+        if ( is_wp_error( $object ) ) {
234
+            return $object;
235
+        }
236
+
237
+        // Save special fields (those added via hooks).
238
+        $save_special = $this->update_additional_fields_for_object( $object, $request );
239
+        if ( is_wp_error( $save_special ) ) {
240
+            return $save_special;
241
+        }
242
+
243
+        $request->set_param( 'context', 'edit' );
244
+        $response = $this->prepare_item_for_response( $object, $request );
245
+        return rest_ensure_response( $response );
246
+    }
247
+
248
+    /**
249
+     * Prepare links for the request.
250
+     *
251
+     * @param GetPaid_Data    $object GetPaid_Data object.
252
+     * @return array Links for the given object.
253
+     */
254
+    protected function prepare_links( $object ) {
255
+
256
+        $links = array(
257
+            'self'       => array(
258
+                'href'   => rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ),
259
+            ),
260
+            'collection' => array(
261
+                'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
262
+            ),
263
+        );
264
+
265
+        return $links;
266
+    }
267
+
268
+    /**
269
+     * Get the query params for collections of attachments.
270
+     *
271
+     * @return array
272
+     */
273
+    public function get_collection_params() {
274
+        $params = parent::get_collection_params();
275
+        $params['context']['default'] = 'view';
276
+        return $params;
277
+    }
278
+
279
+    /**
280
+     * Only return writable props from schema.
281
+     *
282
+     * @param  array $schema Schema.
283
+     * @return bool
284
+     */
285
+    public function filter_writable_props( $schema ) {
286
+        return empty( $schema['readonly'] );
287
+    }
288
+
289
+    /**
290
+     * Prepare a single object for create or update.
291
+     *
292
+     * @since 1.0.19
293
+     * @param  WP_REST_Request $request Request object.
294
+     * @return GetPaid_Data|WP_Error Data object or WP_Error.
295
+     */
296
+    protected function prepare_item_for_database( $request ) {
297
+
298
+        // Do we have an object?
299
+        if ( empty( $this->crud_class ) || ! class_exists( $this->crud_class ) ) {
300
+            return new WP_Error( 'no_crud_class', __( 'You need to specify a CRUD class for this controller', 'invoicing' ) );
301
+        }
302
+
303
+        // Prepare the object.
304
+        $id        = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
305
+        $object    = new $this->crud_class( $id );
306
+
307
+        // Abort if an error exists.
308
+        if ( ! empty( $object->last_error ) ) {
309
+            return new WP_Error( 'invalid_item', $object->last_error );
310
+        }
311
+
312
+        $schema    = $this->get_item_schema();
313
+        $data_keys = array_keys( array_filter( $schema['properties'], array( $this, 'filter_writable_props' ) ) );
314
+
315
+        // Handle all writable props.
316
+        foreach ( $data_keys as $key ) {
317
+            $value = $request[ $key ];
318
+
319
+            if ( ! is_null( $value ) ) {
320
+                switch ( $key ) {
321
+
322
+                    case 'meta_data':
323
+                        if ( is_array( $value ) ) {
324
+                            foreach ( $value as $meta ) {
325
+                                $object->update_meta_data( $meta['key'], $meta['value'], isset( $meta['id'] ) ? $meta['id'] : '' );
326
+                            }
327
+                        }
328
+                        break;
329
+
330
+                    default:
331
+                        if ( is_callable( array( $object, "set_{$key}" ) ) ) {
332
+                            $object->{"set_{$key}"}( $value );
333
+                        }
334
+                        break;
335
+                }
336
+            }
337
+
338
+        }
339
+
340
+        // Filters an object before it is inserted via the REST API..
341
+        return apply_filters( "getpaid_rest_pre_insert_{$this->rest_base}_object", $object, $request );
342
+    }
343
+
344
+    /**
345
+     * Retrieves data from a GetPaid class.
346
+     *
347
+     * @since  1.0.19
348
+     * @param  GetPaid_Meta_Data[]    $meta_data  meta data objects.
349
+     * @return array
350
+     */
351
+    protected function prepare_object_meta_data( $meta_data ) {
352
+        $meta = array();
353
+
354
+        foreach( $meta_data as $object ) {
355
+            $meta[] = $object->get_data();
356
+        }
357
+
358
+        return $meta;
359
+    }
360
+
361
+    /**
362
+     * Retrieves invoice items.
363
+     *
364
+     * @since  1.0.19
365
+     * @param  WPInv_Invoice $invoice  Invoice items.
366
+     * @param array            $fields Fields to include.
367
+     * @return array
368
+     */
369
+    protected function prepare_invoice_items( $invoice ) {
370
+        $items = array();
371
+
372
+        foreach( $invoice->get_items() as $item ) {
373
+
374
+            $item_data = $item->prepare_data_for_saving();
375
+
376
+            if ( 'amount' == $invoice->get_template() ) {
377
+                $item_data['quantity'] = 1;
378
+            }
379
+
380
+            $items[] = $item_data;
381
+        }
382
+
383
+        return $items;
384
+    }
385
+
386
+    /**
387
+     * Retrieves data from a GetPaid class.
388
+     *
389
+     * @since  1.0.19
390
+     * @param  GetPaid_Data    $object  Data object.
391
+     * @param array            $fields Fields to include.
392
+     * @param string           $context either view or edit.
393
+     * @return array
394
+     */
395
+    protected function prepare_object_data( $object, $fields, $context = 'view' ) {
396
+
397
+        $data = array();
398
+
399
+        // Handle all writable props.
400
+        foreach ( array_keys( $this->get_schema_properties() ) as $key ) {
401
+
402
+            // Abort if it is not included.
403
+            if ( ! empty( $fields ) && ! $this->is_field_included( $key, $fields ) ) {
404
+                continue;
405
+            }
406
+
407
+            // Or this current object does not support the field.
408
+            if ( ! $this->object_supports_field( $object, $key ) ) {
409
+                continue;
410
+            }
411
+
412
+            // Handle meta data.
413
+            if ( $key == 'meta_data' ) {
414
+                $data['meta_data'] = $this->prepare_object_meta_data( $object->get_meta_data() );
415
+                continue;
416
+            }
417
+
418
+            // Handle items.
419
+            if ( $key == 'items' && is_a( $object, 'WPInv_Invoice' )  ) {
420
+                $data['items'] = $this->prepare_invoice_items( $object );
421
+                continue;
422
+            }
423
+
424
+            // Booleans.
425
+            if ( is_callable( array( $object, $key ) ) ) {
426
+                $data[ $key ] = $object->$key( $context );
427
+                continue;
428
+            }
429
+
430
+            // Get object value.
431
+            if ( is_callable( array( $object, "get_{$key}" ) ) ) {
432
+                $value = $object->{"get_{$key}"}( $context );
433
+
434
+                // If the value is an instance of GetPaid_Data...
435
+                if ( is_a( $value, 'GetPaid_Data' ) ) {
436
+                    $value = $value->get_data( $context );
437
+                }
438
+
439
+                // For objects, retrieves it's properties.
440
+                $data[ $key ] = is_object( $value ) ? get_object_vars( $value ) :  $value ;
441
+                continue;
442
+            }
443
+
444
+        }
445
+
446
+        return $data;
447
+    }
448
+
449
+    /**
450
+     * Checks if a key should be included in a response.
451
+     *
452
+     * @since  1.0.19
453
+     * @param  GetPaid_Data $object  Data object.
454
+     * @param  string       $field_key The key to check for.
455
+     * @return bool
456
+     */
457
+    public function object_supports_field( $object, $field_key ) {
458
+        return apply_filters( 'getpaid_rest_object_supports_key', true, $object, $field_key );
459
+    }
460
+
461
+    /**
462
+     * Prepare a single object output for response.
463
+     *
464
+     * @since  1.0.19
465
+     * @param  GetPaid_Data    $object  Data object.
466
+     * @param  WP_REST_Request $request Request object.
467
+     * @return WP_REST_Response
468
+     */
469
+    public function prepare_item_for_response( $object, $request ) {
470
+        remove_filter( 'rest_post_dispatch', 'rest_filter_response_fields', 10 );
471
+
472
+        $this->data_object = $object;
473
+
474
+        // Fetch the fields to include in this response.
475
+        $fields = $this->get_fields_for_response( $request );
476
+
477
+        // Prepare object data.
478
+        $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
479
+        $data    = $this->prepare_object_data( $object, $fields, $context );
480
+        $data    = $this->add_additional_fields_to_object( $data, $request );
481
+        $data    = $this->limit_object_to_requested_fields( $data, $fields );
482
+        $data    = $this->filter_response_by_context( $data, $context );
483
+
484
+        // Prepare the response.
485
+        $response = rest_ensure_response( $data );
486
+        $response->add_links( $this->prepare_links( $object, $request ) );
487
+
488
+        // Filter item response.
489
+        return apply_filters( "getpaid_rest_prepare_{$this->rest_base}_object", $response, $object, $request );
490
+    }
491 491
 
492 492
 }
Please login to merge, or discard this patch.
Spacing   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  * @version 1.0.19
9 9
  */
10 10
 
11
-defined( 'ABSPATH' ) || exit;
11
+defined('ABSPATH') || exit;
12 12
 
13 13
 /**
14 14
  * GetPaid REST CRUD controller class.
@@ -38,7 +38,7 @@  discard block
 block discarded – undo
38 38
 	 *
39 39
 	 * @see register_rest_route()
40 40
 	 */
41
-	public function register_namespace_routes( $namespace ) {
41
+	public function register_namespace_routes($namespace) {
42 42
 
43 43
 		register_rest_route(
44 44
 			$namespace,
@@ -46,22 +46,22 @@  discard block
 block discarded – undo
46 46
 			array(
47 47
 				array(
48 48
 					'methods'             => WP_REST_Server::READABLE,
49
-					'callback'            => array( $this, 'get_items' ),
50
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
49
+					'callback'            => array($this, 'get_items'),
50
+					'permission_callback' => array($this, 'get_items_permissions_check'),
51 51
 					'args'                => $this->get_collection_params(),
52 52
 				),
53 53
 				array(
54 54
 					'methods'             => WP_REST_Server::CREATABLE,
55
-					'callback'            => array( $this, 'create_item' ),
56
-					'permission_callback' => array( $this, 'create_item_permissions_check' ),
57
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
55
+					'callback'            => array($this, 'create_item'),
56
+					'permission_callback' => array($this, 'create_item_permissions_check'),
57
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::CREATABLE),
58 58
 				),
59
-				'schema' => array( $this, 'get_public_item_schema' ),
59
+				'schema' => array($this, 'get_public_item_schema'),
60 60
 			)
61 61
 		);
62 62
 
63 63
 		$get_item_args = array(
64
-			'context' => $this->get_context_param( array( 'default' => 'view' ) ),
64
+			'context' => $this->get_context_param(array('default' => 'view')),
65 65
 		);
66 66
 
67 67
 		register_rest_route(
@@ -70,35 +70,35 @@  discard block
 block discarded – undo
70 70
 			array(
71 71
 				'args'   => array(
72 72
 					'id' => array(
73
-						'description' => __( 'Unique identifier for the object.', 'invoicing' ),
73
+						'description' => __('Unique identifier for the object.', 'invoicing'),
74 74
 						'type'        => 'integer',
75 75
 					),
76 76
 				),
77 77
 				array(
78 78
 					'methods'             => WP_REST_Server::READABLE,
79
-					'callback'            => array( $this, 'get_item' ),
80
-					'permission_callback' => array( $this, 'get_item_permissions_check' ),
79
+					'callback'            => array($this, 'get_item'),
80
+					'permission_callback' => array($this, 'get_item_permissions_check'),
81 81
 					'args'                => $get_item_args,
82 82
 				),
83 83
 				array(
84 84
 					'methods'             => WP_REST_Server::EDITABLE,
85
-					'callback'            => array( $this, 'update_item' ),
86
-					'permission_callback' => array( $this, 'update_item_permissions_check' ),
87
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
85
+					'callback'            => array($this, 'update_item'),
86
+					'permission_callback' => array($this, 'update_item_permissions_check'),
87
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
88 88
 				),
89 89
 				array(
90 90
 					'methods'             => WP_REST_Server::DELETABLE,
91
-					'callback'            => array( $this, 'delete_item' ),
92
-					'permission_callback' => array( $this, 'delete_item_permissions_check' ),
91
+					'callback'            => array($this, 'delete_item'),
92
+					'permission_callback' => array($this, 'delete_item_permissions_check'),
93 93
 					'args'                => array(
94 94
 						'force' => array(
95 95
 							'type'        => 'boolean',
96 96
 							'default'     => false,
97
-							'description' => __( 'Whether to bypass Trash and force deletion.', 'invoicing' ),
97
+							'description' => __('Whether to bypass Trash and force deletion.', 'invoicing'),
98 98
 						),
99 99
 					),
100 100
 				),
101
-				'schema' => array( $this, 'get_public_item_schema' ),
101
+				'schema' => array($this, 'get_public_item_schema'),
102 102
 			)
103 103
 		);
104 104
 
@@ -110,14 +110,14 @@  discard block
 block discarded – undo
110 110
 	 * @param GetPaid_Data $object Object to save.
111 111
 	 * @return WP_Error|GetPaid_Data
112 112
 	 */
113
-	protected function save_object( $object ) {
113
+	protected function save_object($object) {
114 114
 		$object->save();
115 115
 
116
-		if ( ! empty( $object->last_error ) ) {
117
-			return new WP_Error( 'rest_cannot_save', $object->last_error, array( 'status' => 400 ) );
116
+		if (!empty($object->last_error)) {
117
+			return new WP_Error('rest_cannot_save', $object->last_error, array('status' => 400));
118 118
 		}
119 119
 
120
-		return new $this->crud_class( $object->get_id() );
120
+		return new $this->crud_class($object->get_id());
121 121
 	}
122 122
 
123 123
 	/**
@@ -128,21 +128,21 @@  discard block
 block discarded – undo
128 128
 	 * @param int|WP_Post $object_id Supplied ID.
129 129
 	 * @return GetPaid_Data|WP_Error GetPaid_Data object if ID is valid, WP_Error otherwise.
130 130
 	 */
131
-	protected function get_object( $object_id ) {
131
+	protected function get_object($object_id) {
132 132
 
133 133
 		// Do we have an object?
134
-		if ( empty( $this->crud_class ) || ! class_exists( $this->crud_class ) ) {
135
-			return new WP_Error( 'no_crud_class', __( 'You need to specify a CRUD class for this controller', 'invoicing' ) );
134
+		if (empty($this->crud_class) || !class_exists($this->crud_class)) {
135
+			return new WP_Error('no_crud_class', __('You need to specify a CRUD class for this controller', 'invoicing'));
136 136
 		}
137 137
 
138 138
 		// Fetch the object.
139
-		$object = new $this->crud_class( $object_id );
140
-		if ( ! empty( $object->last_error ) ) {
141
-			return new WP_Error( 'rest_object_invalid_id', $object->last_error, array( 'status' => 404 ) );
139
+		$object = new $this->crud_class($object_id);
140
+		if (!empty($object->last_error)) {
141
+			return new WP_Error('rest_object_invalid_id', $object->last_error, array('status' => 404));
142 142
 		}
143 143
 
144 144
 		$this->data_object = $object;
145
-		return $object->get_id() ? $object : new WP_Error( 'rest_object_invalid_id', __( 'Invalid ID.', 'invoicing' ), array( 'status' => 404 ) );
145
+		return $object->get_id() ? $object : new WP_Error('rest_object_invalid_id', __('Invalid ID.', 'invoicing'), array('status' => 404));
146 146
 
147 147
 	}
148 148
 
@@ -152,17 +152,17 @@  discard block
 block discarded – undo
152 152
 	 * @param WP_REST_Request $request Full details about the request.
153 153
 	 * @return WP_Error|WP_REST_Response
154 154
 	 */
155
-	public function get_item( $request ) {
155
+	public function get_item($request) {
156 156
 
157 157
 		// Fetch the item.
158
-		$object = $this->get_object( $request['id'] );
158
+		$object = $this->get_object($request['id']);
159 159
 
160
-		if ( is_wp_error( $object ) ) {
160
+		if (is_wp_error($object)) {
161 161
 			return $object;
162 162
 		}
163 163
 
164 164
 		// Generate a response.
165
-		return rest_ensure_response( $this->prepare_item_for_response( $object, $request ) );
165
+		return rest_ensure_response($this->prepare_item_for_response($object, $request));
166 166
 
167 167
 	}
168 168
 
@@ -172,38 +172,38 @@  discard block
 block discarded – undo
172 172
 	 * @param WP_REST_Request $request Full details about the request.
173 173
 	 * @return WP_Error|WP_REST_Response
174 174
 	 */
175
-	public function create_item( $request ) {
175
+	public function create_item($request) {
176 176
 
177 177
 		// Can not create an existing item.
178
-		if ( ! empty( $request['id'] ) ) {
178
+		if (!empty($request['id'])) {
179 179
 			/* translators: %s: post type */
180
-			return new WP_Error( "getpaid_rest_{$this->rest_base}_exists", __( 'Cannot create existing resource.', 'invoicing' ), array( 'status' => 400 ) );
180
+			return new WP_Error("getpaid_rest_{$this->rest_base}_exists", __('Cannot create existing resource.', 'invoicing'), array('status' => 400));
181 181
 		}
182 182
 
183 183
 		// Generate a GetPaid_Data object from the request.
184
-		$object = $this->prepare_item_for_database( $request );
185
-		if ( is_wp_error( $object ) ) {
184
+		$object = $this->prepare_item_for_database($request);
185
+		if (is_wp_error($object)) {
186 186
 			return $object;
187 187
 		}
188 188
 
189 189
 		// Save the object.
190
-		$object = $this->save_object( $object );
191
-		if ( is_wp_error( $object ) ) {
190
+		$object = $this->save_object($object);
191
+		if (is_wp_error($object)) {
192 192
 			return $object;
193 193
 		}
194 194
 
195 195
 		// Save special fields.
196
-		$save_special = $this->update_additional_fields_for_object( $object, $request );
197
-		if ( is_wp_error( $save_special ) ) {
198
-			$object->delete( true );
196
+		$save_special = $this->update_additional_fields_for_object($object, $request);
197
+		if (is_wp_error($save_special)) {
198
+			$object->delete(true);
199 199
 			return $save_special;
200 200
 		}
201 201
 
202
-		$request->set_param( 'context', 'edit' );
203
-		$response = $this->prepare_item_for_response( $object, $request );
204
-		$response = rest_ensure_response( $response );
205
-		$response->set_status( 201 );
206
-		$response->header( 'Location', rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ) );
202
+		$request->set_param('context', 'edit');
203
+		$response = $this->prepare_item_for_response($object, $request);
204
+		$response = rest_ensure_response($response);
205
+		$response->set_status(201);
206
+		$response->header('Location', rest_url(sprintf('/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id())));
207 207
 
208 208
 		return $response;
209 209
 	}
@@ -214,35 +214,35 @@  discard block
 block discarded – undo
214 214
 	 * @param WP_REST_Request $request Full details about the request.
215 215
 	 * @return WP_Error|WP_REST_Response
216 216
 	 */
217
-	public function update_item( $request ) {
217
+	public function update_item($request) {
218 218
 
219 219
 		// Fetch the item.
220
-		$object = $this->get_object( $request['id'] );
221
-		if ( is_wp_error( $object ) ) {
220
+		$object = $this->get_object($request['id']);
221
+		if (is_wp_error($object)) {
222 222
 			return $object;
223 223
 		}
224 224
 
225 225
 		// Prepare the item for saving.
226
-		$object = $this->prepare_item_for_database( $request );
227
-		if ( is_wp_error( $object ) ) {
226
+		$object = $this->prepare_item_for_database($request);
227
+		if (is_wp_error($object)) {
228 228
 			return $object;
229 229
 		}
230 230
 
231 231
 		// Save the item.
232
-		$object = $this->save_object( $object );
233
-		if ( is_wp_error( $object ) ) {
232
+		$object = $this->save_object($object);
233
+		if (is_wp_error($object)) {
234 234
 			return $object;
235 235
 		}
236 236
 
237 237
 		// Save special fields (those added via hooks).
238
-		$save_special = $this->update_additional_fields_for_object( $object, $request );
239
-		if ( is_wp_error( $save_special ) ) {
238
+		$save_special = $this->update_additional_fields_for_object($object, $request);
239
+		if (is_wp_error($save_special)) {
240 240
 			return $save_special;
241 241
 		}
242 242
 
243
-		$request->set_param( 'context', 'edit' );
244
-		$response = $this->prepare_item_for_response( $object, $request );
245
-		return rest_ensure_response( $response );
243
+		$request->set_param('context', 'edit');
244
+		$response = $this->prepare_item_for_response($object, $request);
245
+		return rest_ensure_response($response);
246 246
 	}
247 247
 
248 248
 	/**
@@ -251,14 +251,14 @@  discard block
 block discarded – undo
251 251
 	 * @param GetPaid_Data    $object GetPaid_Data object.
252 252
 	 * @return array Links for the given object.
253 253
 	 */
254
-	protected function prepare_links( $object ) {
254
+	protected function prepare_links($object) {
255 255
 
256 256
 		$links = array(
257 257
 			'self'       => array(
258
-				'href'   => rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id() ) ),
258
+				'href'   => rest_url(sprintf('/%s/%s/%d', $this->namespace, $this->rest_base, $object->get_id())),
259 259
 			),
260 260
 			'collection' => array(
261
-				'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
261
+				'href'   => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
262 262
 			),
263 263
 		);
264 264
 
@@ -282,8 +282,8 @@  discard block
 block discarded – undo
282 282
 	 * @param  array $schema Schema.
283 283
 	 * @return bool
284 284
 	 */
285
-	public function filter_writable_props( $schema ) {
286
-		return empty( $schema['readonly'] );
285
+	public function filter_writable_props($schema) {
286
+		return empty($schema['readonly']);
287 287
 	}
288 288
 
289 289
 	/**
@@ -293,43 +293,43 @@  discard block
 block discarded – undo
293 293
 	 * @param  WP_REST_Request $request Request object.
294 294
 	 * @return GetPaid_Data|WP_Error Data object or WP_Error.
295 295
 	 */
296
-	protected function prepare_item_for_database( $request ) {
296
+	protected function prepare_item_for_database($request) {
297 297
 
298 298
 		// Do we have an object?
299
-		if ( empty( $this->crud_class ) || ! class_exists( $this->crud_class ) ) {
300
-			return new WP_Error( 'no_crud_class', __( 'You need to specify a CRUD class for this controller', 'invoicing' ) );
299
+		if (empty($this->crud_class) || !class_exists($this->crud_class)) {
300
+			return new WP_Error('no_crud_class', __('You need to specify a CRUD class for this controller', 'invoicing'));
301 301
 		}
302 302
 
303 303
 		// Prepare the object.
304
-		$id        = isset( $request['id'] ) ? absint( $request['id'] ) : 0;
305
-		$object    = new $this->crud_class( $id );
304
+		$id        = isset($request['id']) ? absint($request['id']) : 0;
305
+		$object    = new $this->crud_class($id);
306 306
 
307 307
 		// Abort if an error exists.
308
-		if ( ! empty( $object->last_error ) ) {
309
-			return new WP_Error( 'invalid_item', $object->last_error );
308
+		if (!empty($object->last_error)) {
309
+			return new WP_Error('invalid_item', $object->last_error);
310 310
 		}
311 311
 
312 312
 		$schema    = $this->get_item_schema();
313
-		$data_keys = array_keys( array_filter( $schema['properties'], array( $this, 'filter_writable_props' ) ) );
313
+		$data_keys = array_keys(array_filter($schema['properties'], array($this, 'filter_writable_props')));
314 314
 
315 315
 		// Handle all writable props.
316
-		foreach ( $data_keys as $key ) {
317
-			$value = $request[ $key ];
316
+		foreach ($data_keys as $key) {
317
+			$value = $request[$key];
318 318
 
319
-			if ( ! is_null( $value ) ) {
320
-				switch ( $key ) {
319
+			if (!is_null($value)) {
320
+				switch ($key) {
321 321
 
322 322
 					case 'meta_data':
323
-						if ( is_array( $value ) ) {
324
-							foreach ( $value as $meta ) {
325
-								$object->update_meta_data( $meta['key'], $meta['value'], isset( $meta['id'] ) ? $meta['id'] : '' );
323
+						if (is_array($value)) {
324
+							foreach ($value as $meta) {
325
+								$object->update_meta_data($meta['key'], $meta['value'], isset($meta['id']) ? $meta['id'] : '');
326 326
 							}
327 327
 						}
328 328
 						break;
329 329
 
330 330
 					default:
331
-						if ( is_callable( array( $object, "set_{$key}" ) ) ) {
332
-							$object->{"set_{$key}"}( $value );
331
+						if (is_callable(array($object, "set_{$key}"))) {
332
+							$object->{"set_{$key}"}($value);
333 333
 						}
334 334
 						break;
335 335
 				}
@@ -338,7 +338,7 @@  discard block
 block discarded – undo
338 338
 		}
339 339
 
340 340
 		// Filters an object before it is inserted via the REST API..
341
-		return apply_filters( "getpaid_rest_pre_insert_{$this->rest_base}_object", $object, $request );
341
+		return apply_filters("getpaid_rest_pre_insert_{$this->rest_base}_object", $object, $request);
342 342
 	}
343 343
 
344 344
 	/**
@@ -348,10 +348,10 @@  discard block
 block discarded – undo
348 348
 	 * @param  GetPaid_Meta_Data[]    $meta_data  meta data objects.
349 349
 	 * @return array
350 350
 	 */
351
-	protected function prepare_object_meta_data( $meta_data ) {
351
+	protected function prepare_object_meta_data($meta_data) {
352 352
 		$meta = array();
353 353
 
354
-		foreach( $meta_data as $object ) {
354
+		foreach ($meta_data as $object) {
355 355
 			$meta[] = $object->get_data();
356 356
 		}
357 357
 
@@ -366,14 +366,14 @@  discard block
 block discarded – undo
366 366
 	 * @param array            $fields Fields to include.
367 367
 	 * @return array
368 368
 	 */
369
-	protected function prepare_invoice_items( $invoice ) {
369
+	protected function prepare_invoice_items($invoice) {
370 370
 		$items = array();
371 371
 
372
-		foreach( $invoice->get_items() as $item ) {
372
+		foreach ($invoice->get_items() as $item) {
373 373
 
374 374
 			$item_data = $item->prepare_data_for_saving();
375 375
 
376
-			if ( 'amount' == $invoice->get_template() ) {
376
+			if ('amount' == $invoice->get_template()) {
377 377
 				$item_data['quantity'] = 1;
378 378
 			}
379 379
 
@@ -392,52 +392,52 @@  discard block
 block discarded – undo
392 392
 	 * @param string           $context either view or edit.
393 393
 	 * @return array
394 394
 	 */
395
-	protected function prepare_object_data( $object, $fields, $context = 'view' ) {
395
+	protected function prepare_object_data($object, $fields, $context = 'view') {
396 396
 
397 397
 		$data = array();
398 398
 
399 399
 		// Handle all writable props.
400
-		foreach ( array_keys( $this->get_schema_properties() ) as $key ) {
400
+		foreach (array_keys($this->get_schema_properties()) as $key) {
401 401
 
402 402
 			// Abort if it is not included.
403
-			if ( ! empty( $fields ) && ! $this->is_field_included( $key, $fields ) ) {
403
+			if (!empty($fields) && !$this->is_field_included($key, $fields)) {
404 404
 				continue;
405 405
 			}
406 406
 
407 407
 			// Or this current object does not support the field.
408
-			if ( ! $this->object_supports_field( $object, $key ) ) {
408
+			if (!$this->object_supports_field($object, $key)) {
409 409
 				continue;
410 410
 			}
411 411
 
412 412
 			// Handle meta data.
413
-			if ( $key == 'meta_data' ) {
414
-				$data['meta_data'] = $this->prepare_object_meta_data( $object->get_meta_data() );
413
+			if ($key == 'meta_data') {
414
+				$data['meta_data'] = $this->prepare_object_meta_data($object->get_meta_data());
415 415
 				continue;
416 416
 			}
417 417
 
418 418
 			// Handle items.
419
-			if ( $key == 'items' && is_a( $object, 'WPInv_Invoice' )  ) {
420
-				$data['items'] = $this->prepare_invoice_items( $object );
419
+			if ($key == 'items' && is_a($object, 'WPInv_Invoice')) {
420
+				$data['items'] = $this->prepare_invoice_items($object);
421 421
 				continue;
422 422
 			}
423 423
 
424 424
 			// Booleans.
425
-			if ( is_callable( array( $object, $key ) ) ) {
426
-				$data[ $key ] = $object->$key( $context );
425
+			if (is_callable(array($object, $key))) {
426
+				$data[$key] = $object->$key($context);
427 427
 				continue;
428 428
 			}
429 429
 
430 430
 			// Get object value.
431
-			if ( is_callable( array( $object, "get_{$key}" ) ) ) {
432
-				$value = $object->{"get_{$key}"}( $context );
431
+			if (is_callable(array($object, "get_{$key}"))) {
432
+				$value = $object->{"get_{$key}"}($context);
433 433
 
434 434
 				// If the value is an instance of GetPaid_Data...
435
-				if ( is_a( $value, 'GetPaid_Data' ) ) {
436
-					$value = $value->get_data( $context );
435
+				if (is_a($value, 'GetPaid_Data')) {
436
+					$value = $value->get_data($context);
437 437
 				}
438 438
 
439 439
 				// For objects, retrieves it's properties.
440
-				$data[ $key ] = is_object( $value ) ? get_object_vars( $value ) :  $value ;
440
+				$data[$key] = is_object($value) ? get_object_vars($value) : $value;
441 441
 				continue;
442 442
 			}
443 443
 
@@ -454,8 +454,8 @@  discard block
 block discarded – undo
454 454
 	 * @param  string       $field_key The key to check for.
455 455
 	 * @return bool
456 456
 	 */
457
-	public function object_supports_field( $object, $field_key ) {
458
-		return apply_filters( 'getpaid_rest_object_supports_key', true, $object, $field_key );
457
+	public function object_supports_field($object, $field_key) {
458
+		return apply_filters('getpaid_rest_object_supports_key', true, $object, $field_key);
459 459
 	}
460 460
 
461 461
 	/**
@@ -466,27 +466,27 @@  discard block
 block discarded – undo
466 466
 	 * @param  WP_REST_Request $request Request object.
467 467
 	 * @return WP_REST_Response
468 468
 	 */
469
-	public function prepare_item_for_response( $object, $request ) {
470
-		remove_filter( 'rest_post_dispatch', 'rest_filter_response_fields', 10 );
469
+	public function prepare_item_for_response($object, $request) {
470
+		remove_filter('rest_post_dispatch', 'rest_filter_response_fields', 10);
471 471
 
472 472
 		$this->data_object = $object;
473 473
 
474 474
 		// Fetch the fields to include in this response.
475
-		$fields = $this->get_fields_for_response( $request );
475
+		$fields = $this->get_fields_for_response($request);
476 476
 
477 477
 		// Prepare object data.
478
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
479
-		$data    = $this->prepare_object_data( $object, $fields, $context );
480
-		$data    = $this->add_additional_fields_to_object( $data, $request );
481
-		$data    = $this->limit_object_to_requested_fields( $data, $fields );
482
-		$data    = $this->filter_response_by_context( $data, $context );
478
+		$context = !empty($request['context']) ? $request['context'] : 'view';
479
+		$data    = $this->prepare_object_data($object, $fields, $context);
480
+		$data    = $this->add_additional_fields_to_object($data, $request);
481
+		$data    = $this->limit_object_to_requested_fields($data, $fields);
482
+		$data    = $this->filter_response_by_context($data, $context);
483 483
 
484 484
 		// Prepare the response.
485
-		$response = rest_ensure_response( $data );
486
-		$response->add_links( $this->prepare_links( $object, $request ) );
485
+		$response = rest_ensure_response($data);
486
+		$response->add_links($this->prepare_links($object, $request));
487 487
 
488 488
 		// Filter item response.
489
-		return apply_filters( "getpaid_rest_prepare_{$this->rest_base}_object", $response, $object, $request );
489
+		return apply_filters("getpaid_rest_prepare_{$this->rest_base}_object", $response, $object, $request);
490 490
 	}
491 491
 
492 492
 }
Please login to merge, or discard this patch.
includes/class-getpaid-subscriptions-query.php 2 patches
Indentation   +490 added lines, -490 removed lines patch added patch discarded remove patch
@@ -16,495 +16,495 @@
 block discarded – undo
16 16
  */
17 17
 class GetPaid_Subscriptions_Query {
18 18
 
19
-	/**
20
-	 * Query vars, after parsing
21
-	 *
22
-	 * @since 1.0.19
23
-	 * @var array
24
-	 */
25
-	public $query_vars = array();
26
-
27
-	/**
28
-	 * List of found subscriptions.
29
-	 *
30
-	 * @since 1.0.19
31
-	 * @var array
32
-	 */
33
-	private $results;
34
-
35
-	/**
36
-	 * Total number of found subscriptions for the current query
37
-	 *
38
-	 * @since 1.0.19
39
-	 * @var int
40
-	 */
41
-	private $total_subscriptions = 0;
42
-
43
-	/**
44
-	 * The SQL query used to fetch matching subscriptions.
45
-	 *
46
-	 * @since 1.0.19
47
-	 * @var string
48
-	 */
49
-	public $request;
50
-
51
-	// SQL clauses
52
-
53
-	/**
54
-	 * Contains the 'FIELDS' sql clause
55
-	 *
56
-	 * @since 1.0.19
57
-	 * @var string
58
-	 */
59
-	public $query_fields;
60
-
61
-	/**
62
-	 * Contains the 'FROM' sql clause
63
-	 *
64
-	 * @since 1.0.19
65
-	 * @var string
66
-	 */
67
-	public $query_from;
68
-
69
-	/**
70
-	 * Contains the 'WHERE' sql clause
71
-	 *
72
-	 * @since 1.0.19
73
-	 * @var string
74
-	 */
75
-	public $query_where;
76
-
77
-	/**
78
-	 * Contains the 'ORDER BY' sql clause
79
-	 *
80
-	 * @since 1.0.19
81
-	 * @var string
82
-	 */
83
-	public $query_orderby;
84
-
85
-	/**
86
-	 * Contains the 'LIMIT' sql clause
87
-	 *
88
-	 * @since 1.0.19
89
-	 * @var string
90
-	 */
91
-	public $query_limit;
92
-
93
-	/**
94
-	 * Class constructor.
95
-	 *
96
-	 * @since 1.0.19
97
-	 *
98
-	 * @param null|string|array $query Optional. The query variables.
99
-	 */
100
-	public function __construct( $query = null ) {
101
-		if ( ! is_null( $query ) ) {
102
-			$this->prepare_query( $query );
103
-			$this->query();
104
-		}
105
-	}
106
-
107
-	/**
108
-	 * Fills in missing query variables with default values.
109
-	 *
110
-	 * @since 1.0.19
111
-	 *
112
-	 * @param  string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`.
113
-	 * @return array Complete query variables with undefined ones filled in with defaults.
114
-	 */
115
-	public static function fill_query_vars( $args ) {
116
-		$defaults = array(
117
-			'status'            => 'all',
118
-			'customer_in'       => array(),
119
-			'customer_not_in'   => array(),
120
-			'product_in'        => array(),
121
-			'product_not_in'    => array(),
122
-			'include'           => array(),
123
-			'exclude'           => array(),
124
-			'orderby'           => 'id',
125
-			'order'             => 'DESC',
126
-			'offset'            => '',
127
-			'number'            => 10,
128
-			'paged'             => 1,
129
-			'count_total'       => true,
130
-			'fields'            => 'all',
131
-		);
132
-
133
-		return wp_parse_args( $args, $defaults );
134
-	}
135
-
136
-	/**
137
-	 * Prepare the query variables.
138
-	 *
139
-	 * @since 1.0.19
140
-	 *
141
-	 * @global wpdb $wpdb WordPress database abstraction object.
142
-	 *
143
-	 * @param string|array $query {
144
-	 *     Optional. Array or string of Query parameters.
145
-	 *
146
-	 *     @type string|array $status              The subscription status to filter by. Can either be a single status or an array of statuses.
147
-	 *                                             Default is all.
148
-	 *     @type int[]        $customer_in         An array of customer ids to filter by.
149
-	 *     @type int[]        $customer_not_in     An array of customer ids whose subscriptions should be excluded.
150
-	 *     @type int[]        $invoice_in          An array of invoice ids to filter by.
151
-	 *     @type int[]        $invoice_not_in      An array of invoice ids whose subscriptions should be excluded.
152
-	 *     @type int[]        $product_in          An array of product ids to filter by.
153
-	 *     @type int[]        $product_not_in      An array of product ids whose subscriptions should be excluded.
154
-	 *     @type array        $date_created_query  A WP_Date_Query compatible array use to filter subscriptions by their date of creation.
155
-	 *     @type array        $date_expires_query  A WP_Date_Query compatible array use to filter subscriptions by their expiration date.
156
-	 *     @type array        $include             An array of subscription IDs to include. Default empty array.
157
-	 *     @type array        $exclude             An array of subscription IDs to exclude. Default empty array.
158
-	 *     @type string|array $orderby             Field(s) to sort the retrieved subscription by. May be a single value,
159
-	 *                                             an array of values, or a multi-dimensional array with fields as
160
-	 *                                             keys and orders ('ASC' or 'DESC') as values. Accepted values are
161
-	 *                                             'id', 'customer_id', 'frequency', 'period', 'initial_amount,
162
-	 *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
163
-	 *                                             'transaction_id', 'product_id', 'trial_period', 'include', 'status', 'profile_id'. Default array( 'id' ).
164
-	 *     @type string       $order               Designates ascending or descending order of subscriptions. Order values
165
-	 *                                             passed as part of an `$orderby` array take precedence over this
166
-	 *                                             parameter. Accepts 'ASC', 'DESC'. Default 'DESC'.
167
-	 *     @type int          $offset              Number of subscriptions to offset in retrieved results. Can be used in
168
-	 *                                             conjunction with pagination. Default 0.
169
-	 *     @type int          $number              Number of subscriptions to limit the query for. Can be used in
170
-	 *                                             conjunction with pagination. Value -1 (all) is supported, but
171
-	 *                                             should be used with caution on larger sites.
172
-	 *                                             Default 10.
173
-	 *     @type int          $paged               When used with number, defines the page of results to return.
174
-	 *                                             Default 1.
175
-	 *     @type bool         $count_total         Whether to count the total number of subscriptions found. If pagination
176
-	 *                                             is not needed, setting this to false can improve performance.
177
-	 *                                             Default true.
178
-	 *     @type string|array $fields              Which fields to return. Single or all fields (string), or array
179
-	 *                                             of fields. Accepts 'id', 'customer_id', 'frequency', 'period', 'initial_amount,
180
-	 *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
181
-	 *                                             'transaction_id', 'product_id', 'trial_period', 'status', 'profile_id'.
182
-	 *                                             Use 'all' for all fields. Default 'all'.
183
-	 * }
184
-	 */
185
-	public function prepare_query( $query = array() ) {
186
-		global $wpdb;
187
-
188
-		if ( empty( $this->query_vars ) || ! empty( $query ) ) {
189
-			$this->query_limit = null;
190
-			$this->query_vars  = $this->fill_query_vars( $query );
191
-		}
192
-
193
-		if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) {
194
-			$this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] );
195
-		}
196
-
197
-		do_action( 'getpaid_pre_get_subscriptions', array( &$this ) );
198
-
199
-		// Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'.
200
-		$qv                =& $this->query_vars;
201
-		$qv                = $this->fill_query_vars( $qv );
202
-		$table             = $wpdb->prefix . 'wpinv_subscriptions';
203
-		$this->query_from  = "FROM $table";
204
-
205
-		// Prepare query fields.
206
-		$this->prepare_query_fields( $qv, $table );
207
-
208
-		// Prepare query where.
209
-		$this->prepare_query_where( $qv, $table );
210
-
211
-		// Prepare query order.
212
-		$this->prepare_query_order( $qv, $table );
213
-
214
-		// limit
215
-		if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
216
-			if ( $qv['offset'] ) {
217
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] );
218
-			} else {
219
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
220
-			}
221
-		}
222
-
223
-		do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) );
224
-	}
225
-
226
-	/**
227
-	 * Prepares the query fields.
228
-	 *
229
-	 * @since 1.0.19
230
-	 *
231
-	 * @param array $qv Query vars.
232
-	 * @param string $table Table name.
233
-	 */
234
-	protected function prepare_query_fields( &$qv, $table ) {
235
-
236
-		if ( is_array( $qv['fields'] ) ) {
237
-			$qv['fields'] = array_unique( $qv['fields'] );
238
-
239
-			$query_fields = array();
240
-			foreach ( $qv['fields'] as $field ) {
241
-				$field          = sanitize_key( $field );
242
-				$query_fields[] = "$table.`$field`";
243
-			}
244
-			$this->query_fields = implode( ',', $query_fields );
245
-		} else {
246
-			$this->query_fields = "$table.*";
247
-		}
248
-
249
-		if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
250
-			$this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
251
-		}
252
-
253
-	}
254
-
255
-	/**
256
-	 * Prepares the query where.
257
-	 *
258
-	 * @since 1.0.19
259
-	 *
260
-	 * @param array $qv Query vars.
261
-	 * @param string $table Table name.
262
-	 */
263
-	protected function prepare_query_where( &$qv, $table ) {
264
-		global $wpdb;
265
-		$this->query_where = 'WHERE 1=1';
266
-
267
-		// Status.
268
-		if ( 'all' !== $qv['status'] ) {
269
-			$statuses           = wpinv_clean( wpinv_parse_list( $qv['status'] ) );
270
-			$prepared_statuses  = join( ',', array_fill( 0, count( $statuses ), '%s' ) );
271
-			$this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses );
272
-		}
273
-
274
-		if ( ! empty( $qv['customer_in'] ) ) {
275
-			$customer_in        = implode( ',', wp_parse_id_list( $qv['customer_in'] ) );
276
-			$this->query_where .= " AND $table.`customer_id` IN ($customer_in)";
277
-		} elseif ( ! empty( $qv['customer_not_in'] ) ) {
278
-			$customer_not_in    = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) );
279
-			$this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)";
280
-		}
281
-
282
-		if ( ! empty( $qv['product_in'] ) ) {
283
-			$product_in         = implode( ',', wp_parse_id_list( $qv['product_in'] ) );
284
-			$this->query_where .= " AND $table.`product_id` IN ($product_in)";
285
-		} elseif ( ! empty( $qv['product_not_in'] ) ) {
286
-			$product_not_in     = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) );
287
-			$this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)";
288
-		}
289
-
290
-		if ( ! empty( $qv['invoice_in'] ) ) {
291
-			$invoice_in         = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) );
292
-			$this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)";
293
-		} elseif ( ! empty( $qv['invoice_not_in'] ) ) {
294
-			$invoice_not_in     = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) );
295
-			$this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)";
296
-		}
297
-
298
-		if ( ! empty( $qv['include'] ) ) {
299
-			$include            = implode( ',', wp_parse_id_list( $qv['include'] ) );
300
-			$this->query_where .= " AND $table.`id` IN ($include)";
301
-		} elseif ( ! empty( $qv['exclude'] ) ) {
302
-			$exclude            = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
303
-			$this->query_where .= " AND $table.`id` NOT IN ($exclude)";
304
-		}
305
-
306
-		// Date queries are allowed for the subscription creation date.
307
-		if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) {
308
-			$date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" );
309
-			$this->query_where .= $date_created_query->get_sql();
310
-		}
311
-
312
-		// Date queries are also allowed for the subscription expiration date.
313
-		if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) {
314
-			$date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" );
315
-			$this->query_where .= $date_expires_query->get_sql();
316
-		}
317
-
318
-	}
319
-
320
-	/**
321
-	 * Prepares the query order.
322
-	 *
323
-	 * @since 1.0.19
324
-	 *
325
-	 * @param array $qv Query vars.
326
-	 * @param string $table Table name.
327
-	 */
328
-	protected function prepare_query_order( &$qv, $table ) {
329
-
330
-		// sorting.
331
-		$qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
332
-		$order       = $this->parse_order( $qv['order'] );
333
-
334
-		// Default order is by 'id' (latest subscriptions).
335
-		if ( empty( $qv['orderby'] ) ) {
336
-			$qv['orderby'] = array( 'id' );
337
-		}
338
-
339
-		// 'orderby' values may be an array, comma- or space-separated list.
340
-		$ordersby      = array_filter( wpinv_parse_list(  $qv['orderby'] ) );
341
-
342
-		$orderby_array = array();
343
-		foreach ( $ordersby as $_key => $_value ) {
344
-
345
-			if ( is_int( $_key ) ) {
346
-				// Integer key means this is a flat array of 'orderby' fields.
347
-				$_orderby = $_value;
348
-				$_order   = $order;
349
-			} else {
350
-				// Non-integer key means that the key is the field and the value is ASC/DESC.
351
-				$_orderby = $_key;
352
-				$_order   = $_value;
353
-			}
354
-
355
-			$parsed = $this->parse_orderby( $_orderby, $table );
356
-
357
-			if ( $parsed ) {
358
-				$orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
359
-			}
360
-
361
-		}
362
-
363
-		// If no valid clauses were found, order by id.
364
-		if ( empty( $orderby_array ) ) {
365
-			$orderby_array[] = "id $order";
366
-		}
367
-
368
-		$this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
369
-
370
-	}
371
-
372
-	/**
373
-	 * Execute the query, with the current variables.
374
-	 *
375
-	 * @since 1.0.19
376
-	 *
377
-	 * @global wpdb $wpdb WordPress database abstraction object.
378
-	 */
379
-	public function query() {
380
-		global $wpdb;
381
-
382
-		$qv =& $this->query_vars;
383
-
384
-		// Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the
385
-		// total_subscriptions property.
386
-		$this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) );
387
-
388
-		if ( null === $this->results ) {
389
-			$this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
390
-
391
-			if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) {
392
-				$this->results = $wpdb->get_results( $this->request );
393
-			} else {
394
-				$this->results = $wpdb->get_col( $this->request );
395
-			}
396
-
397
-			if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
398
-				$found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this );
399
-				$this->total_subscriptions   = (int) $wpdb->get_var( $found_subscriptions_query );
400
-			}
401
-		}
402
-
403
-		if ( 'all' == $qv['fields'] ) {
404
-			foreach ( $this->results as $key => $subscription ) {
405
-				wp_cache_set( $subscription->id, $subscription, 'getpaid_subscriptions' );
406
-				wp_cache_set( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' );
407
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
408
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
409
-				$this->results[ $key ] = new WPInv_Subscription( $subscription );
410
-			}
411
-		}
412
-
413
-	}
414
-
415
-	/**
416
-	 * Retrieve query variable.
417
-	 *
418
-	 * @since 1.0.19
419
-	 *
420
-	 * @param string $query_var Query variable key.
421
-	 * @return mixed
422
-	 */
423
-	public function get( $query_var ) {
424
-		if ( isset( $this->query_vars[ $query_var ] ) ) {
425
-			return $this->query_vars[ $query_var ];
426
-		}
427
-
428
-		return null;
429
-	}
430
-
431
-	/**
432
-	 * Set query variable.
433
-	 *
434
-	 * @since 1.0.19
435
-	 *
436
-	 * @param string $query_var Query variable key.
437
-	 * @param mixed $value Query variable value.
438
-	 */
439
-	public function set( $query_var, $value ) {
440
-		$this->query_vars[ $query_var ] = $value;
441
-	}
442
-
443
-	/**
444
-	 * Return the list of subscriptions.
445
-	 *
446
-	 * @since 1.0.19
447
-	 *
448
-	 * @return WPInv_Subscription[]|array Found subscriptions.
449
-	 */
450
-	public function get_results() {
451
-		return $this->results;
452
-	}
453
-
454
-	/**
455
-	 * Return the total number of subscriptions for the current query.
456
-	 *
457
-	 * @since 1.0.19
458
-	 *
459
-	 * @return int Number of total subscriptions.
460
-	 */
461
-	public function get_total() {
462
-		return $this->total_subscriptions;
463
-	}
464
-
465
-	/**
466
-	 * Parse and sanitize 'orderby' keys passed to the subscriptions query.
467
-	 *
468
-	 * @since 1.0.19
469
-	 *
470
-	 * @param string $orderby Alias for the field to order by.
471
-	 *  @param string $table The current table.
472
-	 * @return string Value to use in the ORDER clause, if `$orderby` is valid.
473
-	 */
474
-	protected function parse_orderby( $orderby, $table ) {
475
-
476
-		$_orderby = '';
477
-		if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) {
478
-			$_orderby = "$table.`$orderby`";
479
-		} elseif ( 'id' === strtolower( $orderby ) ) {
480
-			$_orderby = "$table.id";
481
-		} elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
482
-			$include     = wp_parse_id_list( $this->query_vars['include'] );
483
-			$include_sql = implode( ',', $include );
484
-			$_orderby    = "FIELD( $table.id, $include_sql )";
485
-		}
486
-
487
-		return $_orderby;
488
-	}
489
-
490
-	/**
491
-	 * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
492
-	 *
493
-	 * @since 1.0.19
494
-	 *
495
-	 * @param string $order The 'order' query variable.
496
-	 * @return string The sanitized 'order' query variable.
497
-	 */
498
-	protected function parse_order( $order ) {
499
-		if ( ! is_string( $order ) || empty( $order ) ) {
500
-			return 'DESC';
501
-		}
502
-
503
-		if ( 'ASC' === strtoupper( $order ) ) {
504
-			return 'ASC';
505
-		} else {
506
-			return 'DESC';
507
-		}
508
-	}
19
+    /**
20
+     * Query vars, after parsing
21
+     *
22
+     * @since 1.0.19
23
+     * @var array
24
+     */
25
+    public $query_vars = array();
26
+
27
+    /**
28
+     * List of found subscriptions.
29
+     *
30
+     * @since 1.0.19
31
+     * @var array
32
+     */
33
+    private $results;
34
+
35
+    /**
36
+     * Total number of found subscriptions for the current query
37
+     *
38
+     * @since 1.0.19
39
+     * @var int
40
+     */
41
+    private $total_subscriptions = 0;
42
+
43
+    /**
44
+     * The SQL query used to fetch matching subscriptions.
45
+     *
46
+     * @since 1.0.19
47
+     * @var string
48
+     */
49
+    public $request;
50
+
51
+    // SQL clauses
52
+
53
+    /**
54
+     * Contains the 'FIELDS' sql clause
55
+     *
56
+     * @since 1.0.19
57
+     * @var string
58
+     */
59
+    public $query_fields;
60
+
61
+    /**
62
+     * Contains the 'FROM' sql clause
63
+     *
64
+     * @since 1.0.19
65
+     * @var string
66
+     */
67
+    public $query_from;
68
+
69
+    /**
70
+     * Contains the 'WHERE' sql clause
71
+     *
72
+     * @since 1.0.19
73
+     * @var string
74
+     */
75
+    public $query_where;
76
+
77
+    /**
78
+     * Contains the 'ORDER BY' sql clause
79
+     *
80
+     * @since 1.0.19
81
+     * @var string
82
+     */
83
+    public $query_orderby;
84
+
85
+    /**
86
+     * Contains the 'LIMIT' sql clause
87
+     *
88
+     * @since 1.0.19
89
+     * @var string
90
+     */
91
+    public $query_limit;
92
+
93
+    /**
94
+     * Class constructor.
95
+     *
96
+     * @since 1.0.19
97
+     *
98
+     * @param null|string|array $query Optional. The query variables.
99
+     */
100
+    public function __construct( $query = null ) {
101
+        if ( ! is_null( $query ) ) {
102
+            $this->prepare_query( $query );
103
+            $this->query();
104
+        }
105
+    }
106
+
107
+    /**
108
+     * Fills in missing query variables with default values.
109
+     *
110
+     * @since 1.0.19
111
+     *
112
+     * @param  string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`.
113
+     * @return array Complete query variables with undefined ones filled in with defaults.
114
+     */
115
+    public static function fill_query_vars( $args ) {
116
+        $defaults = array(
117
+            'status'            => 'all',
118
+            'customer_in'       => array(),
119
+            'customer_not_in'   => array(),
120
+            'product_in'        => array(),
121
+            'product_not_in'    => array(),
122
+            'include'           => array(),
123
+            'exclude'           => array(),
124
+            'orderby'           => 'id',
125
+            'order'             => 'DESC',
126
+            'offset'            => '',
127
+            'number'            => 10,
128
+            'paged'             => 1,
129
+            'count_total'       => true,
130
+            'fields'            => 'all',
131
+        );
132
+
133
+        return wp_parse_args( $args, $defaults );
134
+    }
135
+
136
+    /**
137
+     * Prepare the query variables.
138
+     *
139
+     * @since 1.0.19
140
+     *
141
+     * @global wpdb $wpdb WordPress database abstraction object.
142
+     *
143
+     * @param string|array $query {
144
+     *     Optional. Array or string of Query parameters.
145
+     *
146
+     *     @type string|array $status              The subscription status to filter by. Can either be a single status or an array of statuses.
147
+     *                                             Default is all.
148
+     *     @type int[]        $customer_in         An array of customer ids to filter by.
149
+     *     @type int[]        $customer_not_in     An array of customer ids whose subscriptions should be excluded.
150
+     *     @type int[]        $invoice_in          An array of invoice ids to filter by.
151
+     *     @type int[]        $invoice_not_in      An array of invoice ids whose subscriptions should be excluded.
152
+     *     @type int[]        $product_in          An array of product ids to filter by.
153
+     *     @type int[]        $product_not_in      An array of product ids whose subscriptions should be excluded.
154
+     *     @type array        $date_created_query  A WP_Date_Query compatible array use to filter subscriptions by their date of creation.
155
+     *     @type array        $date_expires_query  A WP_Date_Query compatible array use to filter subscriptions by their expiration date.
156
+     *     @type array        $include             An array of subscription IDs to include. Default empty array.
157
+     *     @type array        $exclude             An array of subscription IDs to exclude. Default empty array.
158
+     *     @type string|array $orderby             Field(s) to sort the retrieved subscription by. May be a single value,
159
+     *                                             an array of values, or a multi-dimensional array with fields as
160
+     *                                             keys and orders ('ASC' or 'DESC') as values. Accepted values are
161
+     *                                             'id', 'customer_id', 'frequency', 'period', 'initial_amount,
162
+     *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
163
+     *                                             'transaction_id', 'product_id', 'trial_period', 'include', 'status', 'profile_id'. Default array( 'id' ).
164
+     *     @type string       $order               Designates ascending or descending order of subscriptions. Order values
165
+     *                                             passed as part of an `$orderby` array take precedence over this
166
+     *                                             parameter. Accepts 'ASC', 'DESC'. Default 'DESC'.
167
+     *     @type int          $offset              Number of subscriptions to offset in retrieved results. Can be used in
168
+     *                                             conjunction with pagination. Default 0.
169
+     *     @type int          $number              Number of subscriptions to limit the query for. Can be used in
170
+     *                                             conjunction with pagination. Value -1 (all) is supported, but
171
+     *                                             should be used with caution on larger sites.
172
+     *                                             Default 10.
173
+     *     @type int          $paged               When used with number, defines the page of results to return.
174
+     *                                             Default 1.
175
+     *     @type bool         $count_total         Whether to count the total number of subscriptions found. If pagination
176
+     *                                             is not needed, setting this to false can improve performance.
177
+     *                                             Default true.
178
+     *     @type string|array $fields              Which fields to return. Single or all fields (string), or array
179
+     *                                             of fields. Accepts 'id', 'customer_id', 'frequency', 'period', 'initial_amount,
180
+     *                                             'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration'
181
+     *                                             'transaction_id', 'product_id', 'trial_period', 'status', 'profile_id'.
182
+     *                                             Use 'all' for all fields. Default 'all'.
183
+     * }
184
+     */
185
+    public function prepare_query( $query = array() ) {
186
+        global $wpdb;
187
+
188
+        if ( empty( $this->query_vars ) || ! empty( $query ) ) {
189
+            $this->query_limit = null;
190
+            $this->query_vars  = $this->fill_query_vars( $query );
191
+        }
192
+
193
+        if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) {
194
+            $this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] );
195
+        }
196
+
197
+        do_action( 'getpaid_pre_get_subscriptions', array( &$this ) );
198
+
199
+        // Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'.
200
+        $qv                =& $this->query_vars;
201
+        $qv                = $this->fill_query_vars( $qv );
202
+        $table             = $wpdb->prefix . 'wpinv_subscriptions';
203
+        $this->query_from  = "FROM $table";
204
+
205
+        // Prepare query fields.
206
+        $this->prepare_query_fields( $qv, $table );
207
+
208
+        // Prepare query where.
209
+        $this->prepare_query_where( $qv, $table );
210
+
211
+        // Prepare query order.
212
+        $this->prepare_query_order( $qv, $table );
213
+
214
+        // limit
215
+        if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
216
+            if ( $qv['offset'] ) {
217
+                $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] );
218
+            } else {
219
+                $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
220
+            }
221
+        }
222
+
223
+        do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) );
224
+    }
225
+
226
+    /**
227
+     * Prepares the query fields.
228
+     *
229
+     * @since 1.0.19
230
+     *
231
+     * @param array $qv Query vars.
232
+     * @param string $table Table name.
233
+     */
234
+    protected function prepare_query_fields( &$qv, $table ) {
235
+
236
+        if ( is_array( $qv['fields'] ) ) {
237
+            $qv['fields'] = array_unique( $qv['fields'] );
238
+
239
+            $query_fields = array();
240
+            foreach ( $qv['fields'] as $field ) {
241
+                $field          = sanitize_key( $field );
242
+                $query_fields[] = "$table.`$field`";
243
+            }
244
+            $this->query_fields = implode( ',', $query_fields );
245
+        } else {
246
+            $this->query_fields = "$table.*";
247
+        }
248
+
249
+        if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
250
+            $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
251
+        }
252
+
253
+    }
254
+
255
+    /**
256
+     * Prepares the query where.
257
+     *
258
+     * @since 1.0.19
259
+     *
260
+     * @param array $qv Query vars.
261
+     * @param string $table Table name.
262
+     */
263
+    protected function prepare_query_where( &$qv, $table ) {
264
+        global $wpdb;
265
+        $this->query_where = 'WHERE 1=1';
266
+
267
+        // Status.
268
+        if ( 'all' !== $qv['status'] ) {
269
+            $statuses           = wpinv_clean( wpinv_parse_list( $qv['status'] ) );
270
+            $prepared_statuses  = join( ',', array_fill( 0, count( $statuses ), '%s' ) );
271
+            $this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses );
272
+        }
273
+
274
+        if ( ! empty( $qv['customer_in'] ) ) {
275
+            $customer_in        = implode( ',', wp_parse_id_list( $qv['customer_in'] ) );
276
+            $this->query_where .= " AND $table.`customer_id` IN ($customer_in)";
277
+        } elseif ( ! empty( $qv['customer_not_in'] ) ) {
278
+            $customer_not_in    = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) );
279
+            $this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)";
280
+        }
281
+
282
+        if ( ! empty( $qv['product_in'] ) ) {
283
+            $product_in         = implode( ',', wp_parse_id_list( $qv['product_in'] ) );
284
+            $this->query_where .= " AND $table.`product_id` IN ($product_in)";
285
+        } elseif ( ! empty( $qv['product_not_in'] ) ) {
286
+            $product_not_in     = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) );
287
+            $this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)";
288
+        }
289
+
290
+        if ( ! empty( $qv['invoice_in'] ) ) {
291
+            $invoice_in         = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) );
292
+            $this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)";
293
+        } elseif ( ! empty( $qv['invoice_not_in'] ) ) {
294
+            $invoice_not_in     = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) );
295
+            $this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)";
296
+        }
297
+
298
+        if ( ! empty( $qv['include'] ) ) {
299
+            $include            = implode( ',', wp_parse_id_list( $qv['include'] ) );
300
+            $this->query_where .= " AND $table.`id` IN ($include)";
301
+        } elseif ( ! empty( $qv['exclude'] ) ) {
302
+            $exclude            = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
303
+            $this->query_where .= " AND $table.`id` NOT IN ($exclude)";
304
+        }
305
+
306
+        // Date queries are allowed for the subscription creation date.
307
+        if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) {
308
+            $date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" );
309
+            $this->query_where .= $date_created_query->get_sql();
310
+        }
311
+
312
+        // Date queries are also allowed for the subscription expiration date.
313
+        if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) {
314
+            $date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" );
315
+            $this->query_where .= $date_expires_query->get_sql();
316
+        }
317
+
318
+    }
319
+
320
+    /**
321
+     * Prepares the query order.
322
+     *
323
+     * @since 1.0.19
324
+     *
325
+     * @param array $qv Query vars.
326
+     * @param string $table Table name.
327
+     */
328
+    protected function prepare_query_order( &$qv, $table ) {
329
+
330
+        // sorting.
331
+        $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
332
+        $order       = $this->parse_order( $qv['order'] );
333
+
334
+        // Default order is by 'id' (latest subscriptions).
335
+        if ( empty( $qv['orderby'] ) ) {
336
+            $qv['orderby'] = array( 'id' );
337
+        }
338
+
339
+        // 'orderby' values may be an array, comma- or space-separated list.
340
+        $ordersby      = array_filter( wpinv_parse_list(  $qv['orderby'] ) );
341
+
342
+        $orderby_array = array();
343
+        foreach ( $ordersby as $_key => $_value ) {
344
+
345
+            if ( is_int( $_key ) ) {
346
+                // Integer key means this is a flat array of 'orderby' fields.
347
+                $_orderby = $_value;
348
+                $_order   = $order;
349
+            } else {
350
+                // Non-integer key means that the key is the field and the value is ASC/DESC.
351
+                $_orderby = $_key;
352
+                $_order   = $_value;
353
+            }
354
+
355
+            $parsed = $this->parse_orderby( $_orderby, $table );
356
+
357
+            if ( $parsed ) {
358
+                $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
359
+            }
360
+
361
+        }
362
+
363
+        // If no valid clauses were found, order by id.
364
+        if ( empty( $orderby_array ) ) {
365
+            $orderby_array[] = "id $order";
366
+        }
367
+
368
+        $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
369
+
370
+    }
371
+
372
+    /**
373
+     * Execute the query, with the current variables.
374
+     *
375
+     * @since 1.0.19
376
+     *
377
+     * @global wpdb $wpdb WordPress database abstraction object.
378
+     */
379
+    public function query() {
380
+        global $wpdb;
381
+
382
+        $qv =& $this->query_vars;
383
+
384
+        // Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the
385
+        // total_subscriptions property.
386
+        $this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) );
387
+
388
+        if ( null === $this->results ) {
389
+            $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
390
+
391
+            if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) {
392
+                $this->results = $wpdb->get_results( $this->request );
393
+            } else {
394
+                $this->results = $wpdb->get_col( $this->request );
395
+            }
396
+
397
+            if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
398
+                $found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this );
399
+                $this->total_subscriptions   = (int) $wpdb->get_var( $found_subscriptions_query );
400
+            }
401
+        }
402
+
403
+        if ( 'all' == $qv['fields'] ) {
404
+            foreach ( $this->results as $key => $subscription ) {
405
+                wp_cache_set( $subscription->id, $subscription, 'getpaid_subscriptions' );
406
+                wp_cache_set( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' );
407
+                wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
408
+                wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
409
+                $this->results[ $key ] = new WPInv_Subscription( $subscription );
410
+            }
411
+        }
412
+
413
+    }
414
+
415
+    /**
416
+     * Retrieve query variable.
417
+     *
418
+     * @since 1.0.19
419
+     *
420
+     * @param string $query_var Query variable key.
421
+     * @return mixed
422
+     */
423
+    public function get( $query_var ) {
424
+        if ( isset( $this->query_vars[ $query_var ] ) ) {
425
+            return $this->query_vars[ $query_var ];
426
+        }
427
+
428
+        return null;
429
+    }
430
+
431
+    /**
432
+     * Set query variable.
433
+     *
434
+     * @since 1.0.19
435
+     *
436
+     * @param string $query_var Query variable key.
437
+     * @param mixed $value Query variable value.
438
+     */
439
+    public function set( $query_var, $value ) {
440
+        $this->query_vars[ $query_var ] = $value;
441
+    }
442
+
443
+    /**
444
+     * Return the list of subscriptions.
445
+     *
446
+     * @since 1.0.19
447
+     *
448
+     * @return WPInv_Subscription[]|array Found subscriptions.
449
+     */
450
+    public function get_results() {
451
+        return $this->results;
452
+    }
453
+
454
+    /**
455
+     * Return the total number of subscriptions for the current query.
456
+     *
457
+     * @since 1.0.19
458
+     *
459
+     * @return int Number of total subscriptions.
460
+     */
461
+    public function get_total() {
462
+        return $this->total_subscriptions;
463
+    }
464
+
465
+    /**
466
+     * Parse and sanitize 'orderby' keys passed to the subscriptions query.
467
+     *
468
+     * @since 1.0.19
469
+     *
470
+     * @param string $orderby Alias for the field to order by.
471
+     *  @param string $table The current table.
472
+     * @return string Value to use in the ORDER clause, if `$orderby` is valid.
473
+     */
474
+    protected function parse_orderby( $orderby, $table ) {
475
+
476
+        $_orderby = '';
477
+        if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) {
478
+            $_orderby = "$table.`$orderby`";
479
+        } elseif ( 'id' === strtolower( $orderby ) ) {
480
+            $_orderby = "$table.id";
481
+        } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
482
+            $include     = wp_parse_id_list( $this->query_vars['include'] );
483
+            $include_sql = implode( ',', $include );
484
+            $_orderby    = "FIELD( $table.id, $include_sql )";
485
+        }
486
+
487
+        return $_orderby;
488
+    }
489
+
490
+    /**
491
+     * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
492
+     *
493
+     * @since 1.0.19
494
+     *
495
+     * @param string $order The 'order' query variable.
496
+     * @return string The sanitized 'order' query variable.
497
+     */
498
+    protected function parse_order( $order ) {
499
+        if ( ! is_string( $order ) || empty( $order ) ) {
500
+            return 'DESC';
501
+        }
502
+
503
+        if ( 'ASC' === strtoupper( $order ) ) {
504
+            return 'ASC';
505
+        } else {
506
+            return 'DESC';
507
+        }
508
+    }
509 509
 
510 510
 }
Please login to merge, or discard this patch.
Spacing   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -97,9 +97,9 @@  discard block
 block discarded – undo
97 97
 	 *
98 98
 	 * @param null|string|array $query Optional. The query variables.
99 99
 	 */
100
-	public function __construct( $query = null ) {
101
-		if ( ! is_null( $query ) ) {
102
-			$this->prepare_query( $query );
100
+	public function __construct($query = null) {
101
+		if (!is_null($query)) {
102
+			$this->prepare_query($query);
103 103
 			$this->query();
104 104
 		}
105 105
 	}
@@ -112,7 +112,7 @@  discard block
 block discarded – undo
112 112
 	 * @param  string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`.
113 113
 	 * @return array Complete query variables with undefined ones filled in with defaults.
114 114
 	 */
115
-	public static function fill_query_vars( $args ) {
115
+	public static function fill_query_vars($args) {
116 116
 		$defaults = array(
117 117
 			'status'            => 'all',
118 118
 			'customer_in'       => array(),
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
 			'fields'            => 'all',
131 131
 		);
132 132
 
133
-		return wp_parse_args( $args, $defaults );
133
+		return wp_parse_args($args, $defaults);
134 134
 	}
135 135
 
136 136
 	/**
@@ -182,45 +182,45 @@  discard block
 block discarded – undo
182 182
 	 *                                             Use 'all' for all fields. Default 'all'.
183 183
 	 * }
184 184
 	 */
185
-	public function prepare_query( $query = array() ) {
185
+	public function prepare_query($query = array()) {
186 186
 		global $wpdb;
187 187
 
188
-		if ( empty( $this->query_vars ) || ! empty( $query ) ) {
188
+		if (empty($this->query_vars) || !empty($query)) {
189 189
 			$this->query_limit = null;
190
-			$this->query_vars  = $this->fill_query_vars( $query );
190
+			$this->query_vars  = $this->fill_query_vars($query);
191 191
 		}
192 192
 
193
-		if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) {
194
-			$this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] );
193
+		if (!empty($this->query_vars['fields']) && 'all' !== $this->query_vars['fields']) {
194
+			$this->query_vars['fields'] = wpinv_parse_list($this->query_vars['fields']);
195 195
 		}
196 196
 
197
-		do_action( 'getpaid_pre_get_subscriptions', array( &$this ) );
197
+		do_action('getpaid_pre_get_subscriptions', array(&$this));
198 198
 
199 199
 		// Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'.
200
-		$qv                =& $this->query_vars;
201
-		$qv                = $this->fill_query_vars( $qv );
200
+		$qv                = & $this->query_vars;
201
+		$qv                = $this->fill_query_vars($qv);
202 202
 		$table             = $wpdb->prefix . 'wpinv_subscriptions';
203 203
 		$this->query_from  = "FROM $table";
204 204
 
205 205
 		// Prepare query fields.
206
-		$this->prepare_query_fields( $qv, $table );
206
+		$this->prepare_query_fields($qv, $table);
207 207
 
208 208
 		// Prepare query where.
209
-		$this->prepare_query_where( $qv, $table );
209
+		$this->prepare_query_where($qv, $table);
210 210
 
211 211
 		// Prepare query order.
212
-		$this->prepare_query_order( $qv, $table );
212
+		$this->prepare_query_order($qv, $table);
213 213
 
214 214
 		// limit
215
-		if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
216
-			if ( $qv['offset'] ) {
217
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] );
215
+		if (isset($qv['number']) && $qv['number'] > 0) {
216
+			if ($qv['offset']) {
217
+				$this->query_limit = $wpdb->prepare('LIMIT %d, %d', $qv['offset'], $qv['number']);
218 218
 			} else {
219
-				$this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
219
+				$this->query_limit = $wpdb->prepare('LIMIT %d, %d', $qv['number'] * ($qv['paged'] - 1), $qv['number']);
220 220
 			}
221 221
 		}
222 222
 
223
-		do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) );
223
+		do_action_ref_array('getpaid_after_subscriptions_query', array(&$this));
224 224
 	}
225 225
 
226 226
 	/**
@@ -231,22 +231,22 @@  discard block
 block discarded – undo
231 231
 	 * @param array $qv Query vars.
232 232
 	 * @param string $table Table name.
233 233
 	 */
234
-	protected function prepare_query_fields( &$qv, $table ) {
234
+	protected function prepare_query_fields(&$qv, $table) {
235 235
 
236
-		if ( is_array( $qv['fields'] ) ) {
237
-			$qv['fields'] = array_unique( $qv['fields'] );
236
+		if (is_array($qv['fields'])) {
237
+			$qv['fields'] = array_unique($qv['fields']);
238 238
 
239 239
 			$query_fields = array();
240
-			foreach ( $qv['fields'] as $field ) {
241
-				$field          = sanitize_key( $field );
240
+			foreach ($qv['fields'] as $field) {
241
+				$field          = sanitize_key($field);
242 242
 				$query_fields[] = "$table.`$field`";
243 243
 			}
244
-			$this->query_fields = implode( ',', $query_fields );
244
+			$this->query_fields = implode(',', $query_fields);
245 245
 		} else {
246 246
 			$this->query_fields = "$table.*";
247 247
 		}
248 248
 
249
-		if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
249
+		if (isset($qv['count_total']) && $qv['count_total']) {
250 250
 			$this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
251 251
 		}
252 252
 
@@ -260,58 +260,58 @@  discard block
 block discarded – undo
260 260
 	 * @param array $qv Query vars.
261 261
 	 * @param string $table Table name.
262 262
 	 */
263
-	protected function prepare_query_where( &$qv, $table ) {
263
+	protected function prepare_query_where(&$qv, $table) {
264 264
 		global $wpdb;
265 265
 		$this->query_where = 'WHERE 1=1';
266 266
 
267 267
 		// Status.
268
-		if ( 'all' !== $qv['status'] ) {
269
-			$statuses           = wpinv_clean( wpinv_parse_list( $qv['status'] ) );
270
-			$prepared_statuses  = join( ',', array_fill( 0, count( $statuses ), '%s' ) );
271
-			$this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses );
268
+		if ('all' !== $qv['status']) {
269
+			$statuses           = wpinv_clean(wpinv_parse_list($qv['status']));
270
+			$prepared_statuses  = join(',', array_fill(0, count($statuses), '%s'));
271
+			$this->query_where .= $wpdb->prepare(" AND $table.`status` IN ( $prepared_statuses )", $statuses);
272 272
 		}
273 273
 
274
-		if ( ! empty( $qv['customer_in'] ) ) {
275
-			$customer_in        = implode( ',', wp_parse_id_list( $qv['customer_in'] ) );
274
+		if (!empty($qv['customer_in'])) {
275
+			$customer_in        = implode(',', wp_parse_id_list($qv['customer_in']));
276 276
 			$this->query_where .= " AND $table.`customer_id` IN ($customer_in)";
277
-		} elseif ( ! empty( $qv['customer_not_in'] ) ) {
278
-			$customer_not_in    = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) );
277
+		} elseif (!empty($qv['customer_not_in'])) {
278
+			$customer_not_in    = implode(',', wp_parse_id_list($qv['customer_not_in']));
279 279
 			$this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)";
280 280
 		}
281 281
 
282
-		if ( ! empty( $qv['product_in'] ) ) {
283
-			$product_in         = implode( ',', wp_parse_id_list( $qv['product_in'] ) );
282
+		if (!empty($qv['product_in'])) {
283
+			$product_in         = implode(',', wp_parse_id_list($qv['product_in']));
284 284
 			$this->query_where .= " AND $table.`product_id` IN ($product_in)";
285
-		} elseif ( ! empty( $qv['product_not_in'] ) ) {
286
-			$product_not_in     = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) );
285
+		} elseif (!empty($qv['product_not_in'])) {
286
+			$product_not_in     = implode(',', wp_parse_id_list($qv['product_not_in']));
287 287
 			$this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)";
288 288
 		}
289 289
 
290
-		if ( ! empty( $qv['invoice_in'] ) ) {
291
-			$invoice_in         = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) );
290
+		if (!empty($qv['invoice_in'])) {
291
+			$invoice_in         = implode(',', wp_parse_id_list($qv['invoice_in']));
292 292
 			$this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)";
293
-		} elseif ( ! empty( $qv['invoice_not_in'] ) ) {
294
-			$invoice_not_in     = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) );
293
+		} elseif (!empty($qv['invoice_not_in'])) {
294
+			$invoice_not_in     = implode(',', wp_parse_id_list($qv['invoice_not_in']));
295 295
 			$this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)";
296 296
 		}
297 297
 
298
-		if ( ! empty( $qv['include'] ) ) {
299
-			$include            = implode( ',', wp_parse_id_list( $qv['include'] ) );
298
+		if (!empty($qv['include'])) {
299
+			$include            = implode(',', wp_parse_id_list($qv['include']));
300 300
 			$this->query_where .= " AND $table.`id` IN ($include)";
301
-		} elseif ( ! empty( $qv['exclude'] ) ) {
302
-			$exclude            = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
301
+		} elseif (!empty($qv['exclude'])) {
302
+			$exclude            = implode(',', wp_parse_id_list($qv['exclude']));
303 303
 			$this->query_where .= " AND $table.`id` NOT IN ($exclude)";
304 304
 		}
305 305
 
306 306
 		// Date queries are allowed for the subscription creation date.
307
-		if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) {
308
-			$date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" );
307
+		if (!empty($qv['date_created_query']) && is_array($qv['date_created_query'])) {
308
+			$date_created_query = new WP_Date_Query($qv['date_created_query'], "$table.created");
309 309
 			$this->query_where .= $date_created_query->get_sql();
310 310
 		}
311 311
 
312 312
 		// Date queries are also allowed for the subscription expiration date.
313
-		if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) {
314
-			$date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" );
313
+		if (!empty($qv['date_expires_query']) && is_array($qv['date_expires_query'])) {
314
+			$date_expires_query = new WP_Date_Query($qv['date_expires_query'], "$table.expiration");
315 315
 			$this->query_where .= $date_expires_query->get_sql();
316 316
 		}
317 317
 
@@ -325,24 +325,24 @@  discard block
 block discarded – undo
325 325
 	 * @param array $qv Query vars.
326 326
 	 * @param string $table Table name.
327 327
 	 */
328
-	protected function prepare_query_order( &$qv, $table ) {
328
+	protected function prepare_query_order(&$qv, $table) {
329 329
 
330 330
 		// sorting.
331
-		$qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
332
-		$order       = $this->parse_order( $qv['order'] );
331
+		$qv['order'] = isset($qv['order']) ? strtoupper($qv['order']) : '';
332
+		$order       = $this->parse_order($qv['order']);
333 333
 
334 334
 		// Default order is by 'id' (latest subscriptions).
335
-		if ( empty( $qv['orderby'] ) ) {
336
-			$qv['orderby'] = array( 'id' );
335
+		if (empty($qv['orderby'])) {
336
+			$qv['orderby'] = array('id');
337 337
 		}
338 338
 
339 339
 		// 'orderby' values may be an array, comma- or space-separated list.
340
-		$ordersby      = array_filter( wpinv_parse_list(  $qv['orderby'] ) );
340
+		$ordersby      = array_filter(wpinv_parse_list($qv['orderby']));
341 341
 
342 342
 		$orderby_array = array();
343
-		foreach ( $ordersby as $_key => $_value ) {
343
+		foreach ($ordersby as $_key => $_value) {
344 344
 
345
-			if ( is_int( $_key ) ) {
345
+			if (is_int($_key)) {
346 346
 				// Integer key means this is a flat array of 'orderby' fields.
347 347
 				$_orderby = $_value;
348 348
 				$_order   = $order;
@@ -352,20 +352,20 @@  discard block
 block discarded – undo
352 352
 				$_order   = $_value;
353 353
 			}
354 354
 
355
-			$parsed = $this->parse_orderby( $_orderby, $table );
355
+			$parsed = $this->parse_orderby($_orderby, $table);
356 356
 
357
-			if ( $parsed ) {
358
-				$orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
357
+			if ($parsed) {
358
+				$orderby_array[] = $parsed . ' ' . $this->parse_order($_order);
359 359
 			}
360 360
 
361 361
 		}
362 362
 
363 363
 		// If no valid clauses were found, order by id.
364
-		if ( empty( $orderby_array ) ) {
364
+		if (empty($orderby_array)) {
365 365
 			$orderby_array[] = "id $order";
366 366
 		}
367 367
 
368
-		$this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
368
+		$this->query_orderby = 'ORDER BY ' . implode(', ', $orderby_array);
369 369
 
370 370
 	}
371 371
 
@@ -379,34 +379,34 @@  discard block
 block discarded – undo
379 379
 	public function query() {
380 380
 		global $wpdb;
381 381
 
382
-		$qv =& $this->query_vars;
382
+		$qv = & $this->query_vars;
383 383
 
384 384
 		// Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the
385 385
 		// total_subscriptions property.
386
-		$this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) );
386
+		$this->results = apply_filters_ref_array('getpaid_subscriptions_pre_query', array(null, &$this));
387 387
 
388
-		if ( null === $this->results ) {
388
+		if (null === $this->results) {
389 389
 			$this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
390 390
 
391
-			if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) {
392
-				$this->results = $wpdb->get_results( $this->request );
391
+			if ((is_array($qv['fields']) && 1 != count($qv['fields'])) || 'all' == $qv['fields']) {
392
+				$this->results = $wpdb->get_results($this->request);
393 393
 			} else {
394
-				$this->results = $wpdb->get_col( $this->request );
394
+				$this->results = $wpdb->get_col($this->request);
395 395
 			}
396 396
 
397
-			if ( isset( $qv['count_total'] ) && $qv['count_total'] ) {
398
-				$found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this );
399
-				$this->total_subscriptions   = (int) $wpdb->get_var( $found_subscriptions_query );
397
+			if (isset($qv['count_total']) && $qv['count_total']) {
398
+				$found_subscriptions_query = apply_filters('getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this);
399
+				$this->total_subscriptions = (int) $wpdb->get_var($found_subscriptions_query);
400 400
 			}
401 401
 		}
402 402
 
403
-		if ( 'all' == $qv['fields'] ) {
404
-			foreach ( $this->results as $key => $subscription ) {
405
-				wp_cache_set( $subscription->id, $subscription, 'getpaid_subscriptions' );
406
-				wp_cache_set( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' );
407
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
408
-				wp_cache_set( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' );
409
-				$this->results[ $key ] = new WPInv_Subscription( $subscription );
403
+		if ('all' == $qv['fields']) {
404
+			foreach ($this->results as $key => $subscription) {
405
+				wp_cache_set($subscription->id, $subscription, 'getpaid_subscriptions');
406
+				wp_cache_set($subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids');
407
+				wp_cache_set($subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids');
408
+				wp_cache_set($subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids');
409
+				$this->results[$key] = new WPInv_Subscription($subscription);
410 410
 			}
411 411
 		}
412 412
 
@@ -420,9 +420,9 @@  discard block
 block discarded – undo
420 420
 	 * @param string $query_var Query variable key.
421 421
 	 * @return mixed
422 422
 	 */
423
-	public function get( $query_var ) {
424
-		if ( isset( $this->query_vars[ $query_var ] ) ) {
425
-			return $this->query_vars[ $query_var ];
423
+	public function get($query_var) {
424
+		if (isset($this->query_vars[$query_var])) {
425
+			return $this->query_vars[$query_var];
426 426
 		}
427 427
 
428 428
 		return null;
@@ -436,8 +436,8 @@  discard block
 block discarded – undo
436 436
 	 * @param string $query_var Query variable key.
437 437
 	 * @param mixed $value Query variable value.
438 438
 	 */
439
-	public function set( $query_var, $value ) {
440
-		$this->query_vars[ $query_var ] = $value;
439
+	public function set($query_var, $value) {
440
+		$this->query_vars[$query_var] = $value;
441 441
 	}
442 442
 
443 443
 	/**
@@ -471,16 +471,16 @@  discard block
 block discarded – undo
471 471
 	 *  @param string $table The current table.
472 472
 	 * @return string Value to use in the ORDER clause, if `$orderby` is valid.
473 473
 	 */
474
-	protected function parse_orderby( $orderby, $table ) {
474
+	protected function parse_orderby($orderby, $table) {
475 475
 
476 476
 		$_orderby = '';
477
-		if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) {
477
+		if (in_array($orderby, array('customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id'))) {
478 478
 			$_orderby = "$table.`$orderby`";
479
-		} elseif ( 'id' === strtolower( $orderby ) ) {
479
+		} elseif ('id' === strtolower($orderby)) {
480 480
 			$_orderby = "$table.id";
481
-		} elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
482
-			$include     = wp_parse_id_list( $this->query_vars['include'] );
483
-			$include_sql = implode( ',', $include );
481
+		} elseif ('include' === $orderby && !empty($this->query_vars['include'])) {
482
+			$include     = wp_parse_id_list($this->query_vars['include']);
483
+			$include_sql = implode(',', $include);
484 484
 			$_orderby    = "FIELD( $table.id, $include_sql )";
485 485
 		}
486 486
 
@@ -495,12 +495,12 @@  discard block
 block discarded – undo
495 495
 	 * @param string $order The 'order' query variable.
496 496
 	 * @return string The sanitized 'order' query variable.
497 497
 	 */
498
-	protected function parse_order( $order ) {
499
-		if ( ! is_string( $order ) || empty( $order ) ) {
498
+	protected function parse_order($order) {
499
+		if (!is_string($order) || empty($order)) {
500 500
 			return 'DESC';
501 501
 		}
502 502
 
503
-		if ( 'ASC' === strtoupper( $order ) ) {
503
+		if ('ASC' === strtoupper($order)) {
504 504
 			return 'ASC';
505 505
 		} else {
506 506
 			return 'DESC';
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-helper.php 3 patches
Braces   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -207,7 +207,7 @@
 block discarded – undo
207 207
 				foreach($args as $key => $val){
208 208
 					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
209 209
 				}
210
-			}else{
210
+			} else{
211 211
 				$output .= ' '.$args.' ';
212 212
 			}
213 213
 
Please login to merge, or discard this patch.
Indentation   +369 added lines, -369 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
4
+    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -11,372 +11,372 @@  discard block
 block discarded – undo
11 11
  */
12 12
 class AUI_Component_Helper {
13 13
 
14
-	/**
15
-	 * A component helper for generating a input name.
16
-	 *
17
-	 * @param $text
18
-	 * @param $multiple bool If the name is set to be multiple but no brackets found then we add some.
19
-	 *
20
-	 * @return string
21
-	 */
22
-	public static function name($text,$multiple = false){
23
-		$output = '';
24
-
25
-		if($text){
26
-			$is_multiple = strpos($text, '[') === false && $multiple  ? '[]' : '';
27
-			$output = ' name="'.esc_attr($text).$is_multiple.'" ';
28
-		}
29
-
30
-		return $output;
31
-	}
32
-
33
-	/**
34
-	 * A component helper for generating a item id.
35
-	 *
36
-	 * @param $text string The text to be used as the value.
37
-	 *
38
-	 * @return string The sanitized item.
39
-	 */
40
-	public static function id($text){
41
-		$output = '';
42
-
43
-		if($text){
44
-			$output = ' id="'.sanitize_html_class($text).'" ';
45
-		}
46
-
47
-		return $output;
48
-	}
49
-
50
-	/**
51
-	 * A component helper for generating a item title.
52
-	 *
53
-	 * @param $text string The text to be used as the value.
54
-	 *
55
-	 * @return string The sanitized item.
56
-	 */
57
-	public static function title($text){
58
-		$output = '';
59
-
60
-		if($text){
61
-			$output = ' title="'.esc_attr($text).'" ';
62
-		}
63
-
64
-		return $output;
65
-	}
66
-
67
-	/**
68
-	 * A component helper for generating a item value.
69
-	 *
70
-	 * @param $text string The text to be used as the value.
71
-	 *
72
-	 * @return string The sanitized item.
73
-	 */
74
-	public static function value($text){
75
-		$output = '';
76
-
77
-		if($text){
78
-			$output = ' value="'.sanitize_text_field($text).'" ';
79
-		}
80
-
81
-		return $output;
82
-	}
83
-
84
-	/**
85
-	 * A component helper for generating a item class attribute.
86
-	 *
87
-	 * @param $text string The text to be used as the value.
88
-	 *
89
-	 * @return string The sanitized item.
90
-	 */
91
-	public static function class_attr($text){
92
-		$output = '';
93
-
94
-		if($text){
95
-			$classes = self::esc_classes($text);
96
-			if(!empty($classes)){
97
-				$output = ' class="'.$classes.'" ';
98
-			}
99
-		}
100
-
101
-		return $output;
102
-	}
103
-
104
-	/**
105
-	 * Escape a string of classes.
106
-	 *
107
-	 * @param $text
108
-	 *
109
-	 * @return string
110
-	 */
111
-	public static function esc_classes($text){
112
-		$output = '';
113
-
114
-		if($text){
115
-			$classes = explode(" ",$text);
116
-			$classes = array_map("trim",$classes);
117
-			$classes = array_map("sanitize_html_class",$classes);
118
-			if(!empty($classes)){
119
-				$output = implode(" ",$classes);
120
-			}
121
-		}
122
-
123
-		return $output;
124
-
125
-	}
126
-
127
-	/**
128
-	 * @param $args
129
-	 *
130
-	 * @return string
131
-	 */
132
-	public static function data_attributes($args){
133
-		$output = '';
134
-
135
-		if(!empty($args)){
136
-
137
-			foreach($args as $key => $val){
138
-				if(substr( $key, 0, 5 ) === "data-"){
139
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
140
-				}
141
-			}
142
-		}
143
-
144
-		return $output;
145
-	}
146
-
147
-	/**
148
-	 * @param $args
149
-	 *
150
-	 * @return string
151
-	 */
152
-	public static function aria_attributes($args){
153
-		$output = '';
154
-
155
-		if(!empty($args)){
156
-
157
-			foreach($args as $key => $val){
158
-				if(substr( $key, 0, 5 ) === "aria-"){
159
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
160
-				}
161
-			}
162
-		}
163
-
164
-		return $output;
165
-	}
166
-
167
-	/**
168
-	 * Build a font awesome icon from a class.
169
-	 *
170
-	 * @param $class
171
-	 * @param bool $space_after
172
-	 * @param array $extra_attributes An array of extra attributes.
173
-	 *
174
-	 * @return string
175
-	 */
176
-	public static function icon($class,$space_after = false, $extra_attributes = array()){
177
-		$output = '';
178
-
179
-		if($class){
180
-			$classes = self::esc_classes($class);
181
-			if(!empty($classes)){
182
-				$output = '<i class="'.$classes.'" ';
183
-				// extra attributes
184
-				if(!empty($extra_attributes)){
185
-					$output .= AUI_Component_Helper::extra_attributes($extra_attributes);
186
-				}
187
-				$output .= '></i>';
188
-				if($space_after){
189
-					$output .= " ";
190
-				}
191
-			}
192
-		}
193
-
194
-		return $output;
195
-	}
196
-
197
-	/**
198
-	 * @param $args
199
-	 *
200
-	 * @return string
201
-	 */
202
-	public static function extra_attributes($args){
203
-		$output = '';
204
-
205
-		if(!empty($args)){
206
-
207
-			if( is_array($args) ){
208
-				foreach($args as $key => $val){
209
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
210
-				}
211
-			}else{
212
-				$output .= ' '.$args.' ';
213
-			}
214
-
215
-		}
216
-
217
-		return $output;
218
-	}
219
-
220
-	/**
221
-	 * @param $args
222
-	 *
223
-	 * @return string
224
-	 */
225
-	public static function help_text($text){
226
-		$output = '';
227
-
228
-		if($text){
229
-			$output .= '<small class="form-text text-muted">'.wp_kses_post($text).'</small>';
230
-		}
231
-
232
-
233
-		return $output;
234
-	}
235
-
236
-	/**
237
-	 * Replace element require context with JS.
238
-	 *
239
-	 * @param $input
240
-	 *
241
-	 * @return string|void
242
-	 */
243
-	public static function element_require( $input ) {
244
-
245
-		$input = str_replace( "'", '"', $input );// we only want double quotes
246
-
247
-		$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
248
-			"jQuery(form).find('[data-argument=\"",
249
-			"\"]').find('input,select,textarea').val()",
250
-			"\"]').find('input:checked').val()",
251
-		), $input ) );
252
-
253
-		if($output){
254
-			$output = ' data-element-require="'.$output.'" ';
255
-		}
256
-
257
-		return $output;
258
-	}
259
-
260
-	/**
261
-	 * Returns an array of allowed HTML tags and attributes for a given context.
262
-	 *
263
-	 * @since 0.1.41
264
-	 *
265
-	 * @param string|array $context The context for which to retrieve tags. Allowed values are 'post',
266
-	 *                              'strip', 'data', 'entities', or the name of a field filter such as
267
-	 *                              'pre_user_description'.
268
-	 * @param array $input Input.
269
-	 * @return array Array of allowed HTML tags and their allowed attributes.
270
-	 */
271
-	public static function kses_allowed_html( $context = 'post', $input = array() ) {
272
-		$allowed_html = wp_kses_allowed_html( $context );
273
-
274
-		if ( is_array( $allowed_html ) ) {
275
-			// <iframe>
276
-			if ( ! isset( $allowed_html['iframe'] ) && $context == 'post' ) {
277
-				$allowed_html['iframe']     = array(
278
-					'class'        => true,
279
-					'id'           => true,
280
-					'src'          => true,
281
-					'width'        => true,
282
-					'height'       => true,
283
-					'frameborder'  => true,
284
-					'marginwidth'  => true,
285
-					'marginheight' => true,
286
-					'scrolling'    => true,
287
-					'style'        => true,
288
-					'title'        => true,
289
-					'allow'        => true,
290
-					'allowfullscreen' => true,
291
-					'data-*'       => true,
292
-				);
293
-			}
294
-		}
295
-
296
-		/**
297
-		 * Filters the allowed html tags.
298
-		 *
299
-		 * @since 0.1.41
300
-		 *
301
-		 * @param array[]|string $allowed_html Allowed html tags.
302
-		 * @param @param string|array $context The context for which to retrieve tags.
303
-		 * @param array $input Input field.
304
-		 */
305
-		return apply_filters( 'ayecode_ui_kses_allowed_html', $allowed_html, $context, $input );
306
-	}
307
-
308
-	/**
309
-	 * Filters content and keeps only allowable HTML elements.
310
-	 *
311
-	 * This function makes sure that only the allowed HTML element names, attribute
312
-	 * names and attribute values plus only sane HTML entities will occur in
313
-	 * $string. You have to remove any slashes from PHP's magic quotes before you
314
-	 * call this function.
315
-	 *
316
-	 * The default allowed protocols are 'http', 'https', 'ftp', 'mailto', 'news',
317
-	 * 'irc', 'gopher', 'nntp', 'feed', 'telnet, 'mms', 'rtsp' and 'svn'. This
318
-	 * covers all common link protocols, except for 'javascript' which should not
319
-	 * be allowed for untrusted users.
320
-	 *
321
-	 * @since 0.1.41
322
-	 *
323
-	 * @param string|array $value Content to filter through kses.
324
-	 * @param array  $input       Input Field.
325
-	 * @return string Filtered content with only allowed HTML elements.
326
-	 */
327
-	public static function _sanitize_html_field( $value, $input = array() ) {
328
-		if ( $value === '' ) {
329
-			return $value;
330
-		}
331
-
332
-		$allowed_html = self::kses_allowed_html( 'post', $input );
333
-
334
-		if ( ! is_array( $allowed_html ) ) {
335
-			$allowed_html = wp_kses_allowed_html( 'post' );
336
-		}
337
-
338
-		$filtered = trim( wp_unslash( $value ) );
339
-		$filtered = wp_kses( $filtered, $allowed_html );
340
-		$filtered = balanceTags( $filtered ); // Balances tags
341
-
342
-		return $filtered;
343
-	}
344
-
345
-	/**
346
-	 * Navigates through an array, object, or scalar, and removes slashes from the values.
347
-	 *
348
-	 * @since 0.1.41
349
-	 *
350
-	 * @param mixed $value The value to be stripped.
351
-	 * @param array  $input Input Field.
352
-	 * @return mixed Stripped value.
353
-	 */
354
-	public static function sanitize_html_field( $value, $input = array() ) {
355
-		$original = $value;
356
-
357
-		if ( is_array( $value ) ) {
358
-			foreach ( $value as $index => $item ) {
359
-				$value[ $index ] = self::_sanitize_html_field( $value, $input );
360
-			}
361
-		} elseif ( is_object( $value ) ) {
362
-			$object_vars = get_object_vars( $value );
363
-
364
-			foreach ( $object_vars as $property_name => $property_value ) {
365
-				$value->$property_name = self::_sanitize_html_field( $property_value, $input );
366
-			}
367
-		} else {
368
-			$value = self::_sanitize_html_field( $value, $input );
369
-		}
370
-
371
-		/**
372
-		 * Filters content and keeps only allowable HTML elements.
373
-		 *
374
-		 * @since 0.1.41
375
-		 *
376
-		 * @param string|array $value Content to filter through kses.
377
-		 * @param string|array $value Original content without filter.
378
-		 * @param array  $input       Input Field.
379
-		 */
380
-		return apply_filters( 'ayecode_ui_sanitize_html_field', $value, $original, $input );
381
-	}
14
+    /**
15
+     * A component helper for generating a input name.
16
+     *
17
+     * @param $text
18
+     * @param $multiple bool If the name is set to be multiple but no brackets found then we add some.
19
+     *
20
+     * @return string
21
+     */
22
+    public static function name($text,$multiple = false){
23
+        $output = '';
24
+
25
+        if($text){
26
+            $is_multiple = strpos($text, '[') === false && $multiple  ? '[]' : '';
27
+            $output = ' name="'.esc_attr($text).$is_multiple.'" ';
28
+        }
29
+
30
+        return $output;
31
+    }
32
+
33
+    /**
34
+     * A component helper for generating a item id.
35
+     *
36
+     * @param $text string The text to be used as the value.
37
+     *
38
+     * @return string The sanitized item.
39
+     */
40
+    public static function id($text){
41
+        $output = '';
42
+
43
+        if($text){
44
+            $output = ' id="'.sanitize_html_class($text).'" ';
45
+        }
46
+
47
+        return $output;
48
+    }
49
+
50
+    /**
51
+     * A component helper for generating a item title.
52
+     *
53
+     * @param $text string The text to be used as the value.
54
+     *
55
+     * @return string The sanitized item.
56
+     */
57
+    public static function title($text){
58
+        $output = '';
59
+
60
+        if($text){
61
+            $output = ' title="'.esc_attr($text).'" ';
62
+        }
63
+
64
+        return $output;
65
+    }
66
+
67
+    /**
68
+     * A component helper for generating a item value.
69
+     *
70
+     * @param $text string The text to be used as the value.
71
+     *
72
+     * @return string The sanitized item.
73
+     */
74
+    public static function value($text){
75
+        $output = '';
76
+
77
+        if($text){
78
+            $output = ' value="'.sanitize_text_field($text).'" ';
79
+        }
80
+
81
+        return $output;
82
+    }
83
+
84
+    /**
85
+     * A component helper for generating a item class attribute.
86
+     *
87
+     * @param $text string The text to be used as the value.
88
+     *
89
+     * @return string The sanitized item.
90
+     */
91
+    public static function class_attr($text){
92
+        $output = '';
93
+
94
+        if($text){
95
+            $classes = self::esc_classes($text);
96
+            if(!empty($classes)){
97
+                $output = ' class="'.$classes.'" ';
98
+            }
99
+        }
100
+
101
+        return $output;
102
+    }
103
+
104
+    /**
105
+     * Escape a string of classes.
106
+     *
107
+     * @param $text
108
+     *
109
+     * @return string
110
+     */
111
+    public static function esc_classes($text){
112
+        $output = '';
113
+
114
+        if($text){
115
+            $classes = explode(" ",$text);
116
+            $classes = array_map("trim",$classes);
117
+            $classes = array_map("sanitize_html_class",$classes);
118
+            if(!empty($classes)){
119
+                $output = implode(" ",$classes);
120
+            }
121
+        }
122
+
123
+        return $output;
124
+
125
+    }
126
+
127
+    /**
128
+     * @param $args
129
+     *
130
+     * @return string
131
+     */
132
+    public static function data_attributes($args){
133
+        $output = '';
134
+
135
+        if(!empty($args)){
136
+
137
+            foreach($args as $key => $val){
138
+                if(substr( $key, 0, 5 ) === "data-"){
139
+                    $output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
140
+                }
141
+            }
142
+        }
143
+
144
+        return $output;
145
+    }
146
+
147
+    /**
148
+     * @param $args
149
+     *
150
+     * @return string
151
+     */
152
+    public static function aria_attributes($args){
153
+        $output = '';
154
+
155
+        if(!empty($args)){
156
+
157
+            foreach($args as $key => $val){
158
+                if(substr( $key, 0, 5 ) === "aria-"){
159
+                    $output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
160
+                }
161
+            }
162
+        }
163
+
164
+        return $output;
165
+    }
166
+
167
+    /**
168
+     * Build a font awesome icon from a class.
169
+     *
170
+     * @param $class
171
+     * @param bool $space_after
172
+     * @param array $extra_attributes An array of extra attributes.
173
+     *
174
+     * @return string
175
+     */
176
+    public static function icon($class,$space_after = false, $extra_attributes = array()){
177
+        $output = '';
178
+
179
+        if($class){
180
+            $classes = self::esc_classes($class);
181
+            if(!empty($classes)){
182
+                $output = '<i class="'.$classes.'" ';
183
+                // extra attributes
184
+                if(!empty($extra_attributes)){
185
+                    $output .= AUI_Component_Helper::extra_attributes($extra_attributes);
186
+                }
187
+                $output .= '></i>';
188
+                if($space_after){
189
+                    $output .= " ";
190
+                }
191
+            }
192
+        }
193
+
194
+        return $output;
195
+    }
196
+
197
+    /**
198
+     * @param $args
199
+     *
200
+     * @return string
201
+     */
202
+    public static function extra_attributes($args){
203
+        $output = '';
204
+
205
+        if(!empty($args)){
206
+
207
+            if( is_array($args) ){
208
+                foreach($args as $key => $val){
209
+                    $output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
210
+                }
211
+            }else{
212
+                $output .= ' '.$args.' ';
213
+            }
214
+
215
+        }
216
+
217
+        return $output;
218
+    }
219
+
220
+    /**
221
+     * @param $args
222
+     *
223
+     * @return string
224
+     */
225
+    public static function help_text($text){
226
+        $output = '';
227
+
228
+        if($text){
229
+            $output .= '<small class="form-text text-muted">'.wp_kses_post($text).'</small>';
230
+        }
231
+
232
+
233
+        return $output;
234
+    }
235
+
236
+    /**
237
+     * Replace element require context with JS.
238
+     *
239
+     * @param $input
240
+     *
241
+     * @return string|void
242
+     */
243
+    public static function element_require( $input ) {
244
+
245
+        $input = str_replace( "'", '"', $input );// we only want double quotes
246
+
247
+        $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
248
+            "jQuery(form).find('[data-argument=\"",
249
+            "\"]').find('input,select,textarea').val()",
250
+            "\"]').find('input:checked').val()",
251
+        ), $input ) );
252
+
253
+        if($output){
254
+            $output = ' data-element-require="'.$output.'" ';
255
+        }
256
+
257
+        return $output;
258
+    }
259
+
260
+    /**
261
+     * Returns an array of allowed HTML tags and attributes for a given context.
262
+     *
263
+     * @since 0.1.41
264
+     *
265
+     * @param string|array $context The context for which to retrieve tags. Allowed values are 'post',
266
+     *                              'strip', 'data', 'entities', or the name of a field filter such as
267
+     *                              'pre_user_description'.
268
+     * @param array $input Input.
269
+     * @return array Array of allowed HTML tags and their allowed attributes.
270
+     */
271
+    public static function kses_allowed_html( $context = 'post', $input = array() ) {
272
+        $allowed_html = wp_kses_allowed_html( $context );
273
+
274
+        if ( is_array( $allowed_html ) ) {
275
+            // <iframe>
276
+            if ( ! isset( $allowed_html['iframe'] ) && $context == 'post' ) {
277
+                $allowed_html['iframe']     = array(
278
+                    'class'        => true,
279
+                    'id'           => true,
280
+                    'src'          => true,
281
+                    'width'        => true,
282
+                    'height'       => true,
283
+                    'frameborder'  => true,
284
+                    'marginwidth'  => true,
285
+                    'marginheight' => true,
286
+                    'scrolling'    => true,
287
+                    'style'        => true,
288
+                    'title'        => true,
289
+                    'allow'        => true,
290
+                    'allowfullscreen' => true,
291
+                    'data-*'       => true,
292
+                );
293
+            }
294
+        }
295
+
296
+        /**
297
+         * Filters the allowed html tags.
298
+         *
299
+         * @since 0.1.41
300
+         *
301
+         * @param array[]|string $allowed_html Allowed html tags.
302
+         * @param @param string|array $context The context for which to retrieve tags.
303
+         * @param array $input Input field.
304
+         */
305
+        return apply_filters( 'ayecode_ui_kses_allowed_html', $allowed_html, $context, $input );
306
+    }
307
+
308
+    /**
309
+     * Filters content and keeps only allowable HTML elements.
310
+     *
311
+     * This function makes sure that only the allowed HTML element names, attribute
312
+     * names and attribute values plus only sane HTML entities will occur in
313
+     * $string. You have to remove any slashes from PHP's magic quotes before you
314
+     * call this function.
315
+     *
316
+     * The default allowed protocols are 'http', 'https', 'ftp', 'mailto', 'news',
317
+     * 'irc', 'gopher', 'nntp', 'feed', 'telnet, 'mms', 'rtsp' and 'svn'. This
318
+     * covers all common link protocols, except for 'javascript' which should not
319
+     * be allowed for untrusted users.
320
+     *
321
+     * @since 0.1.41
322
+     *
323
+     * @param string|array $value Content to filter through kses.
324
+     * @param array  $input       Input Field.
325
+     * @return string Filtered content with only allowed HTML elements.
326
+     */
327
+    public static function _sanitize_html_field( $value, $input = array() ) {
328
+        if ( $value === '' ) {
329
+            return $value;
330
+        }
331
+
332
+        $allowed_html = self::kses_allowed_html( 'post', $input );
333
+
334
+        if ( ! is_array( $allowed_html ) ) {
335
+            $allowed_html = wp_kses_allowed_html( 'post' );
336
+        }
337
+
338
+        $filtered = trim( wp_unslash( $value ) );
339
+        $filtered = wp_kses( $filtered, $allowed_html );
340
+        $filtered = balanceTags( $filtered ); // Balances tags
341
+
342
+        return $filtered;
343
+    }
344
+
345
+    /**
346
+     * Navigates through an array, object, or scalar, and removes slashes from the values.
347
+     *
348
+     * @since 0.1.41
349
+     *
350
+     * @param mixed $value The value to be stripped.
351
+     * @param array  $input Input Field.
352
+     * @return mixed Stripped value.
353
+     */
354
+    public static function sanitize_html_field( $value, $input = array() ) {
355
+        $original = $value;
356
+
357
+        if ( is_array( $value ) ) {
358
+            foreach ( $value as $index => $item ) {
359
+                $value[ $index ] = self::_sanitize_html_field( $value, $input );
360
+            }
361
+        } elseif ( is_object( $value ) ) {
362
+            $object_vars = get_object_vars( $value );
363
+
364
+            foreach ( $object_vars as $property_name => $property_value ) {
365
+                $value->$property_name = self::_sanitize_html_field( $property_value, $input );
366
+            }
367
+        } else {
368
+            $value = self::_sanitize_html_field( $value, $input );
369
+        }
370
+
371
+        /**
372
+         * Filters content and keeps only allowable HTML elements.
373
+         *
374
+         * @since 0.1.41
375
+         *
376
+         * @param string|array $value Content to filter through kses.
377
+         * @param string|array $value Original content without filter.
378
+         * @param array  $input       Input Field.
379
+         */
380
+        return apply_filters( 'ayecode_ui_sanitize_html_field', $value, $original, $input );
381
+    }
382 382
 }
383 383
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
3
+if (!defined('ABSPATH')) {
4 4
 	exit; // Exit if accessed directly
5 5
 }
6 6
 
@@ -19,12 +19,12 @@  discard block
 block discarded – undo
19 19
 	 *
20 20
 	 * @return string
21 21
 	 */
22
-	public static function name($text,$multiple = false){
22
+	public static function name($text, $multiple = false) {
23 23
 		$output = '';
24 24
 
25
-		if($text){
26
-			$is_multiple = strpos($text, '[') === false && $multiple  ? '[]' : '';
27
-			$output = ' name="'.esc_attr($text).$is_multiple.'" ';
25
+		if ($text) {
26
+			$is_multiple = strpos($text, '[') === false && $multiple ? '[]' : '';
27
+			$output = ' name="' . esc_attr($text) . $is_multiple . '" ';
28 28
 		}
29 29
 
30 30
 		return $output;
@@ -37,11 +37,11 @@  discard block
 block discarded – undo
37 37
 	 *
38 38
 	 * @return string The sanitized item.
39 39
 	 */
40
-	public static function id($text){
40
+	public static function id($text) {
41 41
 		$output = '';
42 42
 
43
-		if($text){
44
-			$output = ' id="'.sanitize_html_class($text).'" ';
43
+		if ($text) {
44
+			$output = ' id="' . sanitize_html_class($text) . '" ';
45 45
 		}
46 46
 
47 47
 		return $output;
@@ -54,11 +54,11 @@  discard block
 block discarded – undo
54 54
 	 *
55 55
 	 * @return string The sanitized item.
56 56
 	 */
57
-	public static function title($text){
57
+	public static function title($text) {
58 58
 		$output = '';
59 59
 
60
-		if($text){
61
-			$output = ' title="'.esc_attr($text).'" ';
60
+		if ($text) {
61
+			$output = ' title="' . esc_attr($text) . '" ';
62 62
 		}
63 63
 
64 64
 		return $output;
@@ -71,11 +71,11 @@  discard block
 block discarded – undo
71 71
 	 *
72 72
 	 * @return string The sanitized item.
73 73
 	 */
74
-	public static function value($text){
74
+	public static function value($text) {
75 75
 		$output = '';
76 76
 
77
-		if($text){
78
-			$output = ' value="'.sanitize_text_field($text).'" ';
77
+		if ($text) {
78
+			$output = ' value="' . sanitize_text_field($text) . '" ';
79 79
 		}
80 80
 
81 81
 		return $output;
@@ -88,13 +88,13 @@  discard block
 block discarded – undo
88 88
 	 *
89 89
 	 * @return string The sanitized item.
90 90
 	 */
91
-	public static function class_attr($text){
91
+	public static function class_attr($text) {
92 92
 		$output = '';
93 93
 
94
-		if($text){
94
+		if ($text) {
95 95
 			$classes = self::esc_classes($text);
96
-			if(!empty($classes)){
97
-				$output = ' class="'.$classes.'" ';
96
+			if (!empty($classes)) {
97
+				$output = ' class="' . $classes . '" ';
98 98
 			}
99 99
 		}
100 100
 
@@ -108,15 +108,15 @@  discard block
 block discarded – undo
108 108
 	 *
109 109
 	 * @return string
110 110
 	 */
111
-	public static function esc_classes($text){
111
+	public static function esc_classes($text) {
112 112
 		$output = '';
113 113
 
114
-		if($text){
115
-			$classes = explode(" ",$text);
116
-			$classes = array_map("trim",$classes);
117
-			$classes = array_map("sanitize_html_class",$classes);
118
-			if(!empty($classes)){
119
-				$output = implode(" ",$classes);
114
+		if ($text) {
115
+			$classes = explode(" ", $text);
116
+			$classes = array_map("trim", $classes);
117
+			$classes = array_map("sanitize_html_class", $classes);
118
+			if (!empty($classes)) {
119
+				$output = implode(" ", $classes);
120 120
 			}
121 121
 		}
122 122
 
@@ -129,14 +129,14 @@  discard block
 block discarded – undo
129 129
 	 *
130 130
 	 * @return string
131 131
 	 */
132
-	public static function data_attributes($args){
132
+	public static function data_attributes($args) {
133 133
 		$output = '';
134 134
 
135
-		if(!empty($args)){
135
+		if (!empty($args)) {
136 136
 
137
-			foreach($args as $key => $val){
138
-				if(substr( $key, 0, 5 ) === "data-"){
139
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
137
+			foreach ($args as $key => $val) {
138
+				if (substr($key, 0, 5) === "data-") {
139
+					$output .= ' ' . sanitize_html_class($key) . '="' . esc_attr($val) . '" ';
140 140
 				}
141 141
 			}
142 142
 		}
@@ -149,14 +149,14 @@  discard block
 block discarded – undo
149 149
 	 *
150 150
 	 * @return string
151 151
 	 */
152
-	public static function aria_attributes($args){
152
+	public static function aria_attributes($args) {
153 153
 		$output = '';
154 154
 
155
-		if(!empty($args)){
155
+		if (!empty($args)) {
156 156
 
157
-			foreach($args as $key => $val){
158
-				if(substr( $key, 0, 5 ) === "aria-"){
159
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
157
+			foreach ($args as $key => $val) {
158
+				if (substr($key, 0, 5) === "aria-") {
159
+					$output .= ' ' . sanitize_html_class($key) . '="' . esc_attr($val) . '" ';
160 160
 				}
161 161
 			}
162 162
 		}
@@ -173,19 +173,19 @@  discard block
 block discarded – undo
173 173
 	 *
174 174
 	 * @return string
175 175
 	 */
176
-	public static function icon($class,$space_after = false, $extra_attributes = array()){
176
+	public static function icon($class, $space_after = false, $extra_attributes = array()) {
177 177
 		$output = '';
178 178
 
179
-		if($class){
179
+		if ($class) {
180 180
 			$classes = self::esc_classes($class);
181
-			if(!empty($classes)){
182
-				$output = '<i class="'.$classes.'" ';
181
+			if (!empty($classes)) {
182
+				$output = '<i class="' . $classes . '" ';
183 183
 				// extra attributes
184
-				if(!empty($extra_attributes)){
184
+				if (!empty($extra_attributes)) {
185 185
 					$output .= AUI_Component_Helper::extra_attributes($extra_attributes);
186 186
 				}
187 187
 				$output .= '></i>';
188
-				if($space_after){
188
+				if ($space_after) {
189 189
 					$output .= " ";
190 190
 				}
191 191
 			}
@@ -199,17 +199,17 @@  discard block
 block discarded – undo
199 199
 	 *
200 200
 	 * @return string
201 201
 	 */
202
-	public static function extra_attributes($args){
202
+	public static function extra_attributes($args) {
203 203
 		$output = '';
204 204
 
205
-		if(!empty($args)){
205
+		if (!empty($args)) {
206 206
 
207
-			if( is_array($args) ){
208
-				foreach($args as $key => $val){
209
-					$output .= ' '.sanitize_html_class($key).'="'.esc_attr($val).'" ';
207
+			if (is_array($args)) {
208
+				foreach ($args as $key => $val) {
209
+					$output .= ' ' . sanitize_html_class($key) . '="' . esc_attr($val) . '" ';
210 210
 				}
211
-			}else{
212
-				$output .= ' '.$args.' ';
211
+			} else {
212
+				$output .= ' ' . $args . ' ';
213 213
 			}
214 214
 
215 215
 		}
@@ -222,11 +222,11 @@  discard block
 block discarded – undo
222 222
 	 *
223 223
 	 * @return string
224 224
 	 */
225
-	public static function help_text($text){
225
+	public static function help_text($text) {
226 226
 		$output = '';
227 227
 
228
-		if($text){
229
-			$output .= '<small class="form-text text-muted">'.wp_kses_post($text).'</small>';
228
+		if ($text) {
229
+			$output .= '<small class="form-text text-muted">' . wp_kses_post($text) . '</small>';
230 230
 		}
231 231
 
232 232
 
@@ -240,18 +240,18 @@  discard block
 block discarded – undo
240 240
 	 *
241 241
 	 * @return string|void
242 242
 	 */
243
-	public static function element_require( $input ) {
243
+	public static function element_require($input) {
244 244
 
245
-		$input = str_replace( "'", '"', $input );// we only want double quotes
245
+		$input = str_replace("'", '"', $input); // we only want double quotes
246 246
 
247
-		$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
247
+		$output = esc_attr(str_replace(array("[%", "%]", "%:checked]"), array(
248 248
 			"jQuery(form).find('[data-argument=\"",
249 249
 			"\"]').find('input,select,textarea').val()",
250 250
 			"\"]').find('input:checked').val()",
251
-		), $input ) );
251
+		), $input));
252 252
 
253
-		if($output){
254
-			$output = ' data-element-require="'.$output.'" ';
253
+		if ($output) {
254
+			$output = ' data-element-require="' . $output . '" ';
255 255
 		}
256 256
 
257 257
 		return $output;
@@ -268,13 +268,13 @@  discard block
 block discarded – undo
268 268
 	 * @param array $input Input.
269 269
 	 * @return array Array of allowed HTML tags and their allowed attributes.
270 270
 	 */
271
-	public static function kses_allowed_html( $context = 'post', $input = array() ) {
272
-		$allowed_html = wp_kses_allowed_html( $context );
271
+	public static function kses_allowed_html($context = 'post', $input = array()) {
272
+		$allowed_html = wp_kses_allowed_html($context);
273 273
 
274
-		if ( is_array( $allowed_html ) ) {
274
+		if (is_array($allowed_html)) {
275 275
 			// <iframe>
276
-			if ( ! isset( $allowed_html['iframe'] ) && $context == 'post' ) {
277
-				$allowed_html['iframe']     = array(
276
+			if (!isset($allowed_html['iframe']) && $context == 'post') {
277
+				$allowed_html['iframe'] = array(
278 278
 					'class'        => true,
279 279
 					'id'           => true,
280 280
 					'src'          => true,
@@ -302,7 +302,7 @@  discard block
 block discarded – undo
302 302
 		 * @param @param string|array $context The context for which to retrieve tags.
303 303
 		 * @param array $input Input field.
304 304
 		 */
305
-		return apply_filters( 'ayecode_ui_kses_allowed_html', $allowed_html, $context, $input );
305
+		return apply_filters('ayecode_ui_kses_allowed_html', $allowed_html, $context, $input);
306 306
 	}
307 307
 
308 308
 	/**
@@ -324,20 +324,20 @@  discard block
 block discarded – undo
324 324
 	 * @param array  $input       Input Field.
325 325
 	 * @return string Filtered content with only allowed HTML elements.
326 326
 	 */
327
-	public static function _sanitize_html_field( $value, $input = array() ) {
328
-		if ( $value === '' ) {
327
+	public static function _sanitize_html_field($value, $input = array()) {
328
+		if ($value === '') {
329 329
 			return $value;
330 330
 		}
331 331
 
332
-		$allowed_html = self::kses_allowed_html( 'post', $input );
332
+		$allowed_html = self::kses_allowed_html('post', $input);
333 333
 
334
-		if ( ! is_array( $allowed_html ) ) {
335
-			$allowed_html = wp_kses_allowed_html( 'post' );
334
+		if (!is_array($allowed_html)) {
335
+			$allowed_html = wp_kses_allowed_html('post');
336 336
 		}
337 337
 
338
-		$filtered = trim( wp_unslash( $value ) );
339
-		$filtered = wp_kses( $filtered, $allowed_html );
340
-		$filtered = balanceTags( $filtered ); // Balances tags
338
+		$filtered = trim(wp_unslash($value));
339
+		$filtered = wp_kses($filtered, $allowed_html);
340
+		$filtered = balanceTags($filtered); // Balances tags
341 341
 
342 342
 		return $filtered;
343 343
 	}
@@ -351,21 +351,21 @@  discard block
 block discarded – undo
351 351
 	 * @param array  $input Input Field.
352 352
 	 * @return mixed Stripped value.
353 353
 	 */
354
-	public static function sanitize_html_field( $value, $input = array() ) {
354
+	public static function sanitize_html_field($value, $input = array()) {
355 355
 		$original = $value;
356 356
 
357
-		if ( is_array( $value ) ) {
358
-			foreach ( $value as $index => $item ) {
359
-				$value[ $index ] = self::_sanitize_html_field( $value, $input );
357
+		if (is_array($value)) {
358
+			foreach ($value as $index => $item) {
359
+				$value[$index] = self::_sanitize_html_field($value, $input);
360 360
 			}
361
-		} elseif ( is_object( $value ) ) {
362
-			$object_vars = get_object_vars( $value );
361
+		} elseif (is_object($value)) {
362
+			$object_vars = get_object_vars($value);
363 363
 
364
-			foreach ( $object_vars as $property_name => $property_value ) {
365
-				$value->$property_name = self::_sanitize_html_field( $property_value, $input );
364
+			foreach ($object_vars as $property_name => $property_value) {
365
+				$value->$property_name = self::_sanitize_html_field($property_value, $input);
366 366
 			}
367 367
 		} else {
368
-			$value = self::_sanitize_html_field( $value, $input );
368
+			$value = self::_sanitize_html_field($value, $input);
369 369
 		}
370 370
 
371 371
 		/**
@@ -377,6 +377,6 @@  discard block
 block discarded – undo
377 377
 		 * @param string|array $value Original content without filter.
378 378
 		 * @param array  $input       Input Field.
379 379
 		 */
380
-		return apply_filters( 'ayecode_ui_sanitize_html_field', $value, $original, $input );
380
+		return apply_filters('ayecode_ui_sanitize_html_field', $value, $original, $input);
381 381
 	}
382 382
 }
383 383
\ No newline at end of file
Please login to merge, or discard this patch.
includes/class-getpaid-notification-email.php 2 patches
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -13,36 +13,36 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Notification_Email {
14 14
 
15 15
     /**
16
-	 * Contains the type of this notification email.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Contains the type of this notification email.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id;
21 21
 
22 22
     /**
23
-	 * Contains any object to use in filters.
24
-	 *
25
-	 * @var false|WPInv_Invoice|WPInv_Item|WPInv_Subscription
26
-	 */
23
+     * Contains any object to use in filters.
24
+     *
25
+     * @var false|WPInv_Invoice|WPInv_Item|WPInv_Subscription
26
+     */
27 27
     public $object;
28 28
 
29 29
     /**
30
-	 * Class constructor.
31
-	 *
30
+     * Class constructor.
31
+     *
32 32
      * @param string $id Email Type.
33 33
      * @param mixed $object Optional. Associated object.
34
-	 */
35
-	public function __construct( $id, $object = false ) {
34
+     */
35
+    public function __construct( $id, $object = false ) {
36 36
         $this->id     = $id;
37 37
         $this->object = $object;
38 38
     }
39 39
 
40 40
     /**
41
-	 * Retrieves an option
42
-	 *
41
+     * Retrieves an option
42
+     *
43 43
      * @return mixed
44
-	 */
45
-	public function get_option( $key ) {
44
+     */
45
+    public function get_option( $key ) {
46 46
 
47 47
         $key   = "email_{$this->id}_$key";
48 48
         $value = wpinv_get_option( $key, null );
@@ -60,80 +60,80 @@  discard block
 block discarded – undo
60 60
     }
61 61
 
62 62
     /**
63
-	 * Retrieves the email body.
64
-	 *
63
+     * Retrieves the email body.
64
+     *
65 65
      * @return string
66
-	 */
67
-	public function get_body() {
66
+     */
67
+    public function get_body() {
68 68
         $body = $this->get_option( 'body' );
69 69
         return apply_filters( 'getpaid_get_email_body', $body, $this->id, $this->object );
70 70
     }
71 71
 
72 72
     /**
73
-	 * Retrieves the email subject.
74
-	 *
73
+     * Retrieves the email subject.
74
+     *
75 75
      * @return string
76
-	 */
77
-	public function get_subject() {
76
+     */
77
+    public function get_subject() {
78 78
         $subject = $this->get_option( 'subject' );
79 79
         return apply_filters( 'getpaid_get_email_subject', $subject, $this->id, $this->object );
80 80
     }
81 81
 
82 82
     /**
83
-	 * Retrieves the email heading.
84
-	 *
83
+     * Retrieves the email heading.
84
+     *
85 85
      * @return string
86
-	 */
87
-	public function get_heading() {
86
+     */
87
+    public function get_heading() {
88 88
         $heading = $this->get_option( 'heading' );
89 89
         return apply_filters( 'getpaid_get_email_heading', $heading, $this->id, $this->object );
90 90
     }
91 91
 
92 92
     /**
93
-	 * Checks if an email is active.
94
-	 *
93
+     * Checks if an email is active.
94
+     *
95 95
      * @return bool
96
-	 */
97
-	public function is_active() {
96
+     */
97
+    public function is_active() {
98 98
         $is_active = ! empty( $this->get_option( 'active' ) );
99 99
         return apply_filters( 'getpaid_email_type_is_active', $is_active, $this->id, $this->object );
100 100
     }
101 101
 
102 102
     /**
103
-	 * Checks if the site's admin should receive email notifications.
104
-	 *
103
+     * Checks if the site's admin should receive email notifications.
104
+     *
105 105
      * @return bool
106
-	 */
107
-	public function include_admin_bcc() {
106
+     */
107
+    public function include_admin_bcc() {
108 108
         $include_admin_bcc = ! empty( $this->get_option( 'admin_bcc' ) );
109 109
         return apply_filters( 'getpaid_email_type_include_admin_bcc', $include_admin_bcc, $this->id, $this->object );
110 110
     }
111 111
 
112 112
     /**
113
-	 * Checks whether this email should be sent to the customer or admin.
114
-	 *
113
+     * Checks whether this email should be sent to the customer or admin.
114
+     *
115 115
      * @return bool
116
-	 */
117
-	public function is_admin_email() {
116
+     */
117
+    public function is_admin_email() {
118 118
         $is_admin_email = in_array( $this->id, array( 'new_invoice', 'cancelled_invoice', 'failed_invoice' ) );
119 119
         return apply_filters( 'getpaid_email_type_is_admin_email', $is_admin_email, $this->id, $this->object );
120 120
     }
121 121
 
122 122
     /**
123
-	 * Returns email attachments.
124
-	 *
123
+     * Returns email attachments.
124
+     *
125 125
      * @return array
126
-	 */
127
-	public function get_attachments() {
126
+     */
127
+    public function get_attachments() {
128 128
         return apply_filters( 'getpaid_get_email_attachments', array(), $this->id, $this->object );
129 129
     }
130 130
 
131 131
     /**
132
-	 * Returns an array of merge tags.
133
-	 *
132
+     * Returns an array of merge tags.
133
+     *
134 134
      * @return array
135
-	 */
136
-	public function get_merge_tags() {
135
+     */
136
+    public function get_merge_tags() {
137 137
 
138 138
         $merge_tags = array(
139 139
             '{site_title}' => wpinv_get_blogname(),
@@ -144,13 +144,13 @@  discard block
 block discarded – undo
144 144
     }
145 145
 
146 146
     /**
147
-	 * Adds merge tags to a text.
148
-	 *
147
+     * Adds merge tags to a text.
148
+     *
149 149
      * @param string string $text
150 150
      * @param array $merge_tags
151 151
      * @return string
152
-	 */
153
-	public function add_merge_tags( $text, $merge_tags = array() ) {
152
+     */
153
+    public function add_merge_tags( $text, $merge_tags = array() ) {
154 154
 
155 155
         foreach ( $merge_tags as $key => $value ) {
156 156
             $text = str_replace( $key, $value, $text );
@@ -160,13 +160,13 @@  discard block
 block discarded – undo
160 160
     }
161 161
 
162 162
     /**
163
-	 * Returns the email content
164
-	 *
163
+     * Returns the email content
164
+     *
165 165
      * @param array $merge_tags
166 166
      * @param array $extra_args Extra template args
167 167
      * @return string
168
-	 */
169
-	public function get_content( $merge_tags = array(), $extra_args = array() ) {
168
+     */
169
+    public function get_content( $merge_tags = array(), $extra_args = array() ) {
170 170
 
171 171
         $content = wpinv_get_template_html(
172 172
             "emails/wpinv-email-{$this->id}.php",
Please login to merge, or discard this patch.
Spacing   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 
7
-defined( 'ABSPATH' ) || exit;
7
+defined('ABSPATH') || exit;
8 8
 
9 9
 /**
10 10
  * Represents a single email type.
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
      * @param string $id Email Type.
33 33
      * @param mixed $object Optional. Associated object.
34 34
 	 */
35
-	public function __construct( $id, $object = false ) {
35
+	public function __construct($id, $object = false) {
36 36
         $this->id     = $id;
37 37
         $this->object = $object;
38 38
     }
@@ -42,18 +42,18 @@  discard block
 block discarded – undo
42 42
 	 *
43 43
      * @return mixed
44 44
 	 */
45
-	public function get_option( $key ) {
45
+	public function get_option($key) {
46 46
 
47 47
         $key   = "email_{$this->id}_$key";
48
-        $value = wpinv_get_option( $key, null );
49
-        if ( is_null( $value ) ) {
48
+        $value = wpinv_get_option($key, null);
49
+        if (is_null($value)) {
50 50
             $options = wpinv_get_emails();
51 51
 
52
-            if ( ! isset( $options[ $this->id ] ) || ! isset( $options[ $this->id ][ $key ] ) ) {
52
+            if (!isset($options[$this->id]) || !isset($options[$this->id][$key])) {
53 53
                 return '';
54 54
             }
55 55
 
56
-            $value = isset( $options[ $this->id ][ $key ]['std'] ) ? $options[ $this->id ][ $key ]['std'] : '';
56
+            $value = isset($options[$this->id][$key]['std']) ? $options[$this->id][$key]['std'] : '';
57 57
         }
58 58
 
59 59
         return $value;
@@ -65,8 +65,8 @@  discard block
 block discarded – undo
65 65
      * @return string
66 66
 	 */
67 67
 	public function get_body() {
68
-        $body = $this->get_option( 'body' );
69
-        return apply_filters( 'getpaid_get_email_body', $body, $this->id, $this->object );
68
+        $body = $this->get_option('body');
69
+        return apply_filters('getpaid_get_email_body', $body, $this->id, $this->object);
70 70
     }
71 71
 
72 72
     /**
@@ -75,8 +75,8 @@  discard block
 block discarded – undo
75 75
      * @return string
76 76
 	 */
77 77
 	public function get_subject() {
78
-        $subject = $this->get_option( 'subject' );
79
-        return apply_filters( 'getpaid_get_email_subject', $subject, $this->id, $this->object );
78
+        $subject = $this->get_option('subject');
79
+        return apply_filters('getpaid_get_email_subject', $subject, $this->id, $this->object);
80 80
     }
81 81
 
82 82
     /**
@@ -85,8 +85,8 @@  discard block
 block discarded – undo
85 85
      * @return string
86 86
 	 */
87 87
 	public function get_heading() {
88
-        $heading = $this->get_option( 'heading' );
89
-        return apply_filters( 'getpaid_get_email_heading', $heading, $this->id, $this->object );
88
+        $heading = $this->get_option('heading');
89
+        return apply_filters('getpaid_get_email_heading', $heading, $this->id, $this->object);
90 90
     }
91 91
 
92 92
     /**
@@ -95,8 +95,8 @@  discard block
 block discarded – undo
95 95
      * @return bool
96 96
 	 */
97 97
 	public function is_active() {
98
-        $is_active = ! empty( $this->get_option( 'active' ) );
99
-        return apply_filters( 'getpaid_email_type_is_active', $is_active, $this->id, $this->object );
98
+        $is_active = !empty($this->get_option('active'));
99
+        return apply_filters('getpaid_email_type_is_active', $is_active, $this->id, $this->object);
100 100
     }
101 101
 
102 102
     /**
@@ -105,8 +105,8 @@  discard block
 block discarded – undo
105 105
      * @return bool
106 106
 	 */
107 107
 	public function include_admin_bcc() {
108
-        $include_admin_bcc = ! empty( $this->get_option( 'admin_bcc' ) );
109
-        return apply_filters( 'getpaid_email_type_include_admin_bcc', $include_admin_bcc, $this->id, $this->object );
108
+        $include_admin_bcc = !empty($this->get_option('admin_bcc'));
109
+        return apply_filters('getpaid_email_type_include_admin_bcc', $include_admin_bcc, $this->id, $this->object);
110 110
     }
111 111
 
112 112
     /**
@@ -115,8 +115,8 @@  discard block
 block discarded – undo
115 115
      * @return bool
116 116
 	 */
117 117
 	public function is_admin_email() {
118
-        $is_admin_email = in_array( $this->id, array( 'new_invoice', 'cancelled_invoice', 'failed_invoice' ) );
119
-        return apply_filters( 'getpaid_email_type_is_admin_email', $is_admin_email, $this->id, $this->object );
118
+        $is_admin_email = in_array($this->id, array('new_invoice', 'cancelled_invoice', 'failed_invoice'));
119
+        return apply_filters('getpaid_email_type_is_admin_email', $is_admin_email, $this->id, $this->object);
120 120
     }
121 121
 
122 122
     /**
@@ -125,7 +125,7 @@  discard block
 block discarded – undo
125 125
      * @return array
126 126
 	 */
127 127
 	public function get_attachments() {
128
-        return apply_filters( 'getpaid_get_email_attachments', array(), $this->id, $this->object );
128
+        return apply_filters('getpaid_get_email_attachments', array(), $this->id, $this->object);
129 129
     }
130 130
 
131 131
     /**
@@ -137,10 +137,10 @@  discard block
 block discarded – undo
137 137
 
138 138
         $merge_tags = array(
139 139
             '{site_title}' => wpinv_get_blogname(),
140
-            '{date}'       => getpaid_format_date_value( current_time( 'mysql' ) ),
140
+            '{date}'       => getpaid_format_date_value(current_time('mysql')),
141 141
         );
142 142
 
143
-        return apply_filters( 'getpaid_get_email_merge_tags', $merge_tags, $this->object, $this->id );
143
+        return apply_filters('getpaid_get_email_merge_tags', $merge_tags, $this->object, $this->id);
144 144
     }
145 145
 
146 146
     /**
@@ -150,13 +150,13 @@  discard block
 block discarded – undo
150 150
      * @param array $merge_tags
151 151
      * @return string
152 152
 	 */
153
-	public function add_merge_tags( $text, $merge_tags = array() ) {
153
+	public function add_merge_tags($text, $merge_tags = array()) {
154 154
 
155
-        foreach ( $merge_tags as $key => $value ) {
156
-            $text = str_replace( $key, $value, $text );
155
+        foreach ($merge_tags as $key => $value) {
156
+            $text = str_replace($key, $value, $text);
157 157
         }
158 158
 
159
-        return wptexturize( $text );
159
+        return wptexturize($text);
160 160
     }
161 161
 
162 162
     /**
@@ -166,7 +166,7 @@  discard block
 block discarded – undo
166 166
      * @param array $extra_args Extra template args
167 167
      * @return string
168 168
 	 */
169
-	public function get_content( $merge_tags = array(), $extra_args = array() ) {
169
+	public function get_content($merge_tags = array(), $extra_args = array()) {
170 170
 
171 171
         $content = wpinv_get_template_html(
172 172
             "emails/wpinv-email-{$this->id}.php",
@@ -176,15 +176,15 @@  discard block
 block discarded – undo
176 176
                     'invoice'       => $this->object, // Backwards compat.
177 177
                     'object'        => $this->object,
178 178
                     'email_type'    => $this->id,
179
-                    'email_heading' => $this->add_merge_tags( $this->get_heading(), $merge_tags ),
179
+                    'email_heading' => $this->add_merge_tags($this->get_heading(), $merge_tags),
180 180
                     'sent_to_admin' => $this->is_admin_email(),
181 181
                     'plain_text'    => false,
182
-                    'message_body'  => wpautop( $this->add_merge_tags( $this->get_body(), $merge_tags ) ),
182
+                    'message_body'  => wpautop($this->add_merge_tags($this->get_body(), $merge_tags)),
183 183
                 )
184 184
             )
185 185
         );
186 186
 
187
-        return wpinv_email_style_body( $content );
187
+        return wpinv_email_style_body($content);
188 188
     }
189 189
 
190 190
 }
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-authorize-net-legacy-gateway.php 2 patches
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -15,31 +15,31 @@  discard block
 block discarded – undo
15 15
 abstract class GetPaid_Authorize_Net_Legacy_Gateway extends GetPaid_Payment_Gateway {
16 16
 
17 17
     /**
18
-	 * Class constructor.
19
-	 */
20
-	public function __construct() {
18
+     * Class constructor.
19
+     */
20
+    public function __construct() {
21 21
         parent::__construct();
22 22
     }
23 23
 
24 24
     /**
25
-	 * Returns the API URL.
26
-	 *
27
-	 *
28
-	 * @param WPInv_Invoice $invoice Invoice.
29
-	 * @return string
30
-	 */
31
-	public function get_api_url( $invoice ) {
25
+     * Returns the API URL.
26
+     *
27
+     *
28
+     * @param WPInv_Invoice $invoice Invoice.
29
+     * @return string
30
+     */
31
+    public function get_api_url( $invoice ) {
32 32
         return $this->is_sandbox( $invoice ) ? 'https://apitest.authorize.net/xml/v1/request.api' : 'https://api.authorize.net/xml/v1/request.api';
33 33
     }
34 34
 
35 35
     /**
36
-	 * Communicates with authorize.net
37
-	 *
38
-	 *
39
-	 * @param array $post Data to post.
36
+     * Communicates with authorize.net
37
+     *
38
+     *
39
+     * @param array $post Data to post.
40 40
      * @param WPInv_Invoice $invoice Invoice.
41
-	 * @return stdClass|WP_Error
42
-	 */
41
+     * @return stdClass|WP_Error
42
+     */
43 43
     public function post( $post, $invoice ){
44 44
 
45 45
         $url      = $this->get_api_url( $invoice );
@@ -81,12 +81,12 @@  discard block
 block discarded – undo
81 81
     }
82 82
 
83 83
     /**
84
-	 * Returns the API authentication params.
85
-	 *
86
-	 *
87
-	 * @return array
88
-	 */
89
-	public function get_auth_params() {
84
+     * Returns the API authentication params.
85
+     *
86
+     *
87
+     * @return array
88
+     */
89
+    public function get_auth_params() {
90 90
 
91 91
         return array(
92 92
             'name'           => $this->get_option( 'login_id' ),
@@ -96,13 +96,13 @@  discard block
 block discarded – undo
96 96
     }
97 97
 
98 98
     /**
99
-	 * Cancels a subscription remotely
100
-	 *
101
-	 *
102
-	 * @param WPInv_Subscription $subscription Subscription.
99
+     * Cancels a subscription remotely
100
+     *
101
+     *
102
+     * @param WPInv_Subscription $subscription Subscription.
103 103
      * @param WPInv_Invoice $invoice Invoice.
104
-	 */
105
-	public function cancel_subscription( $subscription, $invoice ) {
104
+     */
105
+    public function cancel_subscription( $subscription, $invoice ) {
106 106
 
107 107
         // Backwards compatibility. New version do not use authorize.net subscriptions.
108 108
         $this->post(
@@ -118,17 +118,17 @@  discard block
 block discarded – undo
118 118
     }
119 119
 
120 120
     /**
121
-	 * Processes ipns.
122
-	 *
123
-	 * @return void
124
-	 */
125
-	public function verify_ipn() {
121
+     * Processes ipns.
122
+     *
123
+     * @return void
124
+     */
125
+    public function verify_ipn() {
126 126
 
127 127
         $this->maybe_process_old_ipn();
128 128
 
129 129
         // Validate the IPN.
130 130
         if ( empty( $_POST ) || ! $this->validate_ipn() ) {
131
-		    wp_die( 'Authorize.NET IPN Request Failure', 'Authorize.NET IPN', array( 'response' => 500 ) );
131
+            wp_die( 'Authorize.NET IPN Request Failure', 'Authorize.NET IPN', array( 'response' => 500 ) );
132 132
         }
133 133
 
134 134
         // Event type.
@@ -167,24 +167,24 @@  discard block
 block discarded – undo
167 167
     }
168 168
 
169 169
     /**
170
-	 * Validates IPN invoices.
171
-	 *
170
+     * Validates IPN invoices.
171
+     *
172 172
      * @param WPInv_Invoice $invoice
173 173
      * @param object $payload
174
-	 * @return void
175
-	 */
176
-	public function validate_ipn_invoice( $invoice, $payload ) {
174
+     * @return void
175
+     */
176
+    public function validate_ipn_invoice( $invoice, $payload ) {
177 177
         if ( ! $invoice->exists() || $payload->id != $invoice->get_transaction_id() ) {
178 178
             exit;
179 179
         }
180 180
     }
181 181
 
182 182
     /**
183
-	 * Process subscriptio IPNS.
184
-	 *
185
-	 * @return void
186
-	 */
187
-	public function maybe_process_old_ipn() {
183
+     * Process subscriptio IPNS.
184
+     *
185
+     * @return void
186
+     */
187
+    public function maybe_process_old_ipn() {
188 188
 
189 189
         $data = wp_unslash( $_POST );
190 190
 
@@ -226,11 +226,11 @@  discard block
 block discarded – undo
226 226
     }
227 227
 
228 228
     /**
229
-	 * Validates the old IPN signature.
229
+     * Validates the old IPN signature.
230 230
      *
231 231
      * @param array $posted
232
-	 */
233
-	public function validate_old_ipn_signature( $posted ) {
232
+     */
233
+    public function validate_old_ipn_signature( $posted ) {
234 234
 
235 235
         $signature = $this->get_option( 'signature_key' );
236 236
         if ( ! empty( $signature ) ) {
@@ -249,9 +249,9 @@  discard block
 block discarded – undo
249 249
     }
250 250
 
251 251
     /**
252
-	 * Check Authorize.NET IPN validity.
253
-	 */
254
-	public function validate_ipn() {
252
+     * Check Authorize.NET IPN validity.
253
+     */
254
+    public function validate_ipn() {
255 255
 
256 256
         wpinv_error_log( 'Validating Authorize.NET IPN response' );
257 257
 
Please login to merge, or discard this patch.
Spacing   +66 added lines, -66 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 
7
-defined( 'ABSPATH' ) || exit;
7
+defined('ABSPATH') || exit;
8 8
 
9 9
 /**
10 10
  * Authorize.net Legacy Payment Gateway class.
@@ -28,8 +28,8 @@  discard block
 block discarded – undo
28 28
 	 * @param WPInv_Invoice $invoice Invoice.
29 29
 	 * @return string
30 30
 	 */
31
-	public function get_api_url( $invoice ) {
32
-        return $this->is_sandbox( $invoice ) ? 'https://apitest.authorize.net/xml/v1/request.api' : 'https://api.authorize.net/xml/v1/request.api';
31
+	public function get_api_url($invoice) {
32
+        return $this->is_sandbox($invoice) ? 'https://apitest.authorize.net/xml/v1/request.api' : 'https://api.authorize.net/xml/v1/request.api';
33 33
     }
34 34
 
35 35
     /**
@@ -40,48 +40,48 @@  discard block
 block discarded – undo
40 40
      * @param WPInv_Invoice $invoice Invoice.
41 41
 	 * @return stdClass|WP_Error
42 42
 	 */
43
-    public function post( $post, $invoice ){
43
+    public function post($post, $invoice) {
44 44
 
45
-        $url      = $this->get_api_url( $invoice );
45
+        $url      = $this->get_api_url($invoice);
46 46
         $response = wp_remote_post(
47 47
             $url,
48 48
             array(
49 49
                 'headers'          => array(
50 50
                     'Content-Type' => 'application/json; charset=utf-8'
51 51
                 ),
52
-                'body'             => json_encode( $post ),
52
+                'body'             => json_encode($post),
53 53
                 'method'           => 'POST'
54 54
             )
55 55
         );
56 56
 
57
-        if ( is_wp_error( $response ) ) {
57
+        if (is_wp_error($response)) {
58 58
             return $response;
59 59
         }
60 60
 
61
-        $response = wp_unslash( wp_remote_retrieve_body( $response ) );
61
+        $response = wp_unslash(wp_remote_retrieve_body($response));
62 62
         $response = preg_replace('/\xEF\xBB\xBF/', '', $response); // https://community.developer.authorize.net/t5/Integration-and-Testing/JSON-issues/td-p/48851
63
-        $response = json_decode( $response );
63
+        $response = json_decode($response);
64 64
 
65
-        if ( empty( $response ) ) {
66
-            return new WP_Error( 'invalid_reponse', __( 'Invalid gateway response', 'invoicing' ) );
65
+        if (empty($response)) {
66
+            return new WP_Error('invalid_reponse', __('Invalid gateway response', 'invoicing'));
67 67
         }
68 68
 
69
-        if ( $response->messages->resultCode == 'Error' ) {
69
+        if ($response->messages->resultCode == 'Error') {
70 70
 
71
-            if ( $this->is_sandbox( $invoice ) ) {
72
-                wpinv_error_log( $response );
71
+            if ($this->is_sandbox($invoice)) {
72
+                wpinv_error_log($response);
73 73
             }
74 74
 
75
-            if ( $response->messages->message[0]->code == 'E00039' && ! empty( $response->customerProfileId )  && ! empty( $response->customerPaymentProfileId ) ) {
76
-                return new WP_Error( 'dup_payment_profile', $response->customerProfileId . '.' . $response->customerPaymentProfileId );
75
+            if ($response->messages->message[0]->code == 'E00039' && !empty($response->customerProfileId) && !empty($response->customerPaymentProfileId)) {
76
+                return new WP_Error('dup_payment_profile', $response->customerProfileId . '.' . $response->customerPaymentProfileId);
77 77
             }
78 78
 
79
-            if ( ! empty( $response->transactionResponse ) && ! empty( $response->transactionResponse->errors ) ) {
79
+            if (!empty($response->transactionResponse) && !empty($response->transactionResponse->errors)) {
80 80
                 $error = $response->transactionResponse->errors[0];
81
-                return new WP_Error( $error->errorCode, $error->errorText );
81
+                return new WP_Error($error->errorCode, $error->errorText);
82 82
             }
83 83
 
84
-            return new WP_Error( $response->messages->message[0]->code, $response->messages->message[0]->text );
84
+            return new WP_Error($response->messages->message[0]->code, $response->messages->message[0]->text);
85 85
         }
86 86
 
87 87
         return $response;
@@ -97,8 +97,8 @@  discard block
 block discarded – undo
97 97
 	public function get_auth_params() {
98 98
 
99 99
         return array(
100
-            'name'           => $this->get_option( 'login_id' ),
101
-            'transactionKey' => $this->get_option( 'transaction_key' ),
100
+            'name'           => $this->get_option('login_id'),
101
+            'transactionKey' => $this->get_option('transaction_key'),
102 102
         );
103 103
 
104 104
     }
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
 	 * @param WPInv_Subscription $subscription Subscription.
111 111
      * @param WPInv_Invoice $invoice Invoice.
112 112
 	 */
113
-	public function cancel_subscription( $subscription, $invoice ) {
113
+	public function cancel_subscription($subscription, $invoice) {
114 114
 
115 115
         // Backwards compatibility. New version do not use authorize.net subscriptions.
116 116
         $this->post(
@@ -135,38 +135,38 @@  discard block
 block discarded – undo
135 135
         $this->maybe_process_old_ipn();
136 136
 
137 137
         // Validate the IPN.
138
-        if ( empty( $_POST ) || ! $this->validate_ipn() ) {
139
-		    wp_die( 'Authorize.NET IPN Request Failure', 'Authorize.NET IPN', array( 'response' => 500 ) );
138
+        if (empty($_POST) || !$this->validate_ipn()) {
139
+		    wp_die('Authorize.NET IPN Request Failure', 'Authorize.NET IPN', array('response' => 500));
140 140
         }
141 141
 
142 142
         // Event type.
143
-        $posted = json_decode( file_get_contents( 'php://input' ) );
144
-        if ( empty( $posted ) ) {
145
-            wp_die( 'Invalid JSON', 'Authorize.NET IPN', array( 'response' => 500 ) );
143
+        $posted = json_decode(file_get_contents('php://input'));
144
+        if (empty($posted)) {
145
+            wp_die('Invalid JSON', 'Authorize.NET IPN', array('response' => 500));
146 146
         }
147 147
 
148 148
         // Process the IPN.
149
-        $posted = (object) wp_unslash( $posted );
149
+        $posted = (object) wp_unslash($posted);
150 150
 
151 151
         // Process refunds.
152
-        if ( 'net.authorize.payment.refund.created' == $posted->eventType ) {
153
-            $invoice = new WPInv_Invoice( $posted->payload->merchantReferenceId );
154
-            $this->validate_ipn_invoice( $invoice, $posted->payload );
152
+        if ('net.authorize.payment.refund.created' == $posted->eventType) {
153
+            $invoice = new WPInv_Invoice($posted->payload->merchantReferenceId);
154
+            $this->validate_ipn_invoice($invoice, $posted->payload);
155 155
             $invoice->refund();
156 156
         }
157 157
 
158 158
         // Held funds approved.
159
-        if ( 'net.authorize.payment.fraud.approved' == $posted->eventType ) {
160
-            $invoice = new WPInv_Invoice( $posted->payload->id );
161
-            $this->validate_ipn_invoice( $invoice, $posted->payload );
162
-            $invoice->mark_paid( false, __( 'Payment released', 'invoicing' ) );
159
+        if ('net.authorize.payment.fraud.approved' == $posted->eventType) {
160
+            $invoice = new WPInv_Invoice($posted->payload->id);
161
+            $this->validate_ipn_invoice($invoice, $posted->payload);
162
+            $invoice->mark_paid(false, __('Payment released', 'invoicing'));
163 163
         }
164 164
 
165 165
         // Held funds declined.
166
-        if ( 'net.authorize.payment.fraud.declined' == $posted->eventType ) {
167
-            $invoice = new WPInv_Invoice( $posted->payload->id );
168
-            $this->validate_ipn_invoice( $invoice, $posted->payload );
169
-            $invoice->set_status( 'wpi-failed', __( 'Payment declined', 'invoicing' ) );
166
+        if ('net.authorize.payment.fraud.declined' == $posted->eventType) {
167
+            $invoice = new WPInv_Invoice($posted->payload->id);
168
+            $this->validate_ipn_invoice($invoice, $posted->payload);
169
+            $invoice->set_status('wpi-failed', __('Payment declined', 'invoicing'));
170 170
             $invoice->save();
171 171
         }
172 172
 
@@ -181,8 +181,8 @@  discard block
 block discarded – undo
181 181
      * @param object $payload
182 182
 	 * @return void
183 183
 	 */
184
-	public function validate_ipn_invoice( $invoice, $payload ) {
185
-        if ( ! $invoice->exists() || $payload->id != $invoice->get_transaction_id() ) {
184
+	public function validate_ipn_invoice($invoice, $payload) {
185
+        if (!$invoice->exists() || $payload->id != $invoice->get_transaction_id()) {
186 186
             exit;
187 187
         }
188 188
     }
@@ -194,32 +194,32 @@  discard block
 block discarded – undo
194 194
 	 */
195 195
 	public function maybe_process_old_ipn() {
196 196
 
197
-        $data = wp_unslash( $_POST );
197
+        $data = wp_unslash($_POST);
198 198
 
199 199
         // Only process subscriptions subscriptions.
200
-        if ( empty( $_POST['x_subscription_id'] ) ) {
200
+        if (empty($_POST['x_subscription_id'])) {
201 201
             return;
202 202
         }
203 203
 
204 204
         // Check validity.
205
-        $this->validate_old_ipn_signature( $data );
205
+        $this->validate_old_ipn_signature($data);
206 206
 
207 207
         // Fetch the associated subscription.
208
-        $subscription_id = WPInv_Subscription::get_subscription_id_by_field( $_POST['x_subscription_id'] );
209
-        $subscription    = new WPInv_Subscription( $subscription_id );
208
+        $subscription_id = WPInv_Subscription::get_subscription_id_by_field($_POST['x_subscription_id']);
209
+        $subscription    = new WPInv_Subscription($subscription_id);
210 210
 
211 211
         // Abort if it is missing or completed.
212
-        if ( ! $subscription->get_id() || $subscription->has_status( 'completed' ) ) {
212
+        if (!$subscription->get_id() || $subscription->has_status('completed')) {
213 213
             return;
214 214
         }
215 215
 
216 216
         // Payment status.
217
-        if ( 1 == $_POST['x_response_code'] ) {
217
+        if (1 == $_POST['x_response_code']) {
218 218
 
219 219
             // Renew the subscription.
220 220
             $subscription->add_payment(
221 221
                 array(
222
-                    'transaction_id' => sanitize_text_field( $data['x_trans_id'] ),
222
+                    'transaction_id' => sanitize_text_field($data['x_trans_id']),
223 223
                     'gateway'        => $this->id
224 224
                 )
225 225
             );
@@ -238,17 +238,17 @@  discard block
 block discarded – undo
238 238
      *
239 239
      * @param array $posted
240 240
 	 */
241
-	public function validate_old_ipn_signature( $posted ) {
241
+	public function validate_old_ipn_signature($posted) {
242 242
 
243
-        $signature = $this->get_option( 'signature_key' );
244
-        if ( ! empty( $signature ) ) {
245
-            $login_id  = $this->get_option( 'login_id' );
243
+        $signature = $this->get_option('signature_key');
244
+        if (!empty($signature)) {
245
+            $login_id  = $this->get_option('login_id');
246 246
             $trans_id  = $_POST['x_trans_id'];
247 247
             $amount    = $_POST['x_amount'];
248
-            $hash      = hash_hmac ( 'sha512', "^$login_id^$trans_id^$amount^", hex2bin( $signature ) );
248
+            $hash      = hash_hmac('sha512', "^$login_id^$trans_id^$amount^", hex2bin($signature));
249 249
 
250
-            if ( ! hash_equals( $hash, $posted['x_SHA2_Hash'] ) ) {
251
-                wpinv_error_log( $posted['x_SHA2_Hash'], "Invalid signature. Expected $hash" );
250
+            if (!hash_equals($hash, $posted['x_SHA2_Hash'])) {
251
+                wpinv_error_log($posted['x_SHA2_Hash'], "Invalid signature. Expected $hash");
252 252
                 exit;
253 253
             }
254 254
 
@@ -261,28 +261,28 @@  discard block
 block discarded – undo
261 261
 	 */
262 262
 	public function validate_ipn() {
263 263
 
264
-        wpinv_error_log( 'Validating Authorize.NET IPN response' );
264
+        wpinv_error_log('Validating Authorize.NET IPN response');
265 265
 
266
-        if ( empty( $_SERVER['HTTP_X_ANET_SIGNATURE'] ) ) {
266
+        if (empty($_SERVER['HTTP_X_ANET_SIGNATURE'])) {
267 267
             return false;
268 268
         }
269 269
 
270
-        $signature = $this->get_option( 'signature_key' );
270
+        $signature = $this->get_option('signature_key');
271 271
 
272
-        if ( empty( $signature ) ) {
273
-            wpinv_error_log( 'Error: You have not set a signature key' );
272
+        if (empty($signature)) {
273
+            wpinv_error_log('Error: You have not set a signature key');
274 274
             return false;
275 275
         }
276 276
 
277
-        $hash  = hash_hmac ( 'sha512', file_get_contents( 'php://input' ), hex2bin( $signature ) );
277
+        $hash = hash_hmac('sha512', file_get_contents('php://input'), hex2bin($signature));
278 278
 
279
-        if ( hash_equals( $hash, $_SERVER['HTTP_X_ANET_SIGNATURE'] ) ) {
280
-            wpinv_error_log( 'Successfully validated the IPN' );
279
+        if (hash_equals($hash, $_SERVER['HTTP_X_ANET_SIGNATURE'])) {
280
+            wpinv_error_log('Successfully validated the IPN');
281 281
             return true;
282 282
         }
283 283
 
284
-        wpinv_error_log( 'IPN hash is not valid' );
285
-        wpinv_error_log(  $_SERVER['HTTP_X_ANET_SIGNATURE']  );
284
+        wpinv_error_log('IPN hash is not valid');
285
+        wpinv_error_log($_SERVER['HTTP_X_ANET_SIGNATURE']);
286 286
         return false;
287 287
 
288 288
     }
Please login to merge, or discard this patch.
includes/wpinv-email-functions.php 2 patches
Indentation   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -110,8 +110,8 @@  discard block
 block discarded – undo
110 110
     $css = getpaid_get_email_css();
111 111
 
112 112
     // include css inliner
113
-	if ( ! class_exists( 'Emogrifier' ) ) {
114
-		include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' );
113
+    if ( ! class_exists( 'Emogrifier' ) ) {
114
+        include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' );
115 115
     }
116 116
 
117 117
     // Inline the css.
@@ -190,7 +190,7 @@  discard block
 block discarded – undo
190 190
     $message = wpinv_email_style_body( $message );
191 191
     $to      = array_merge( wpinv_parse_list( $to ), wpinv_parse_list( $cc ) );
192 192
 
193
-	return $mailer->send(
193
+    return $mailer->send(
194 194
         $to,
195 195
         $subject,
196 196
         $message,
Please login to merge, or discard this patch.
Spacing   +126 added lines, -126 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  * Please use GetPaid_Notification_Email_Sender
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /*
12 12
 |--------------------------------------------------------------------------
@@ -17,19 +17,19 @@  discard block
 block discarded – undo
17 17
 /**
18 18
  * Generates the email header.
19 19
  */
20
-function wpinv_email_header( $email_heading ) {
21
-    wpinv_get_template( 'emails/wpinv-email-header.php', compact( 'email_heading' ) );
20
+function wpinv_email_header($email_heading) {
21
+    wpinv_get_template('emails/wpinv-email-header.php', compact('email_heading'));
22 22
 }
23
-add_action( 'wpinv_email_header', 'wpinv_email_header' );
23
+add_action('wpinv_email_header', 'wpinv_email_header');
24 24
 
25 25
 
26 26
 /**
27 27
  * Generates the email footer.
28 28
  */
29 29
 function wpinv_email_footer() {
30
-    wpinv_get_template( 'emails/wpinv-email-footer.php' );
30
+    wpinv_get_template('emails/wpinv-email-footer.php');
31 31
 }
32
-add_action( 'wpinv_email_footer', 'wpinv_email_footer' );
32
+add_action('wpinv_email_footer', 'wpinv_email_footer');
33 33
 
34 34
 
35 35
 /**
@@ -39,13 +39,13 @@  discard block
 block discarded – undo
39 39
  * @param string $email_type
40 40
  * @param bool $sent_to_admin
41 41
  */
42
-function wpinv_email_invoice_details( $invoice,  $email_type, $sent_to_admin ) {
42
+function wpinv_email_invoice_details($invoice, $email_type, $sent_to_admin) {
43 43
 
44
-    $args = compact( 'invoice', 'email_type', 'sent_to_admin' );
45
-    wpinv_get_template( 'emails/invoice-details.php', $args );
44
+    $args = compact('invoice', 'email_type', 'sent_to_admin');
45
+    wpinv_get_template('emails/invoice-details.php', $args);
46 46
 
47 47
 }
48
-add_action( 'wpinv_email_invoice_details', 'wpinv_email_invoice_details', 10, 3 );
48
+add_action('wpinv_email_invoice_details', 'wpinv_email_invoice_details', 10, 3);
49 49
 
50 50
 /**
51 51
  * Display line items in emails.
@@ -54,17 +54,17 @@  discard block
 block discarded – undo
54 54
  * @param string $email_type
55 55
  * @param bool $sent_to_admin
56 56
  */
57
-function wpinv_email_invoice_items( $invoice, $email_type, $sent_to_admin ) {
57
+function wpinv_email_invoice_items($invoice, $email_type, $sent_to_admin) {
58 58
 
59 59
     // Prepare line items.
60
-    $columns = getpaid_invoice_item_columns( $invoice );
61
-    $columns = apply_filters( 'getpaid_invoice_line_items_table_columns', $columns, $invoice );
60
+    $columns = getpaid_invoice_item_columns($invoice);
61
+    $columns = apply_filters('getpaid_invoice_line_items_table_columns', $columns, $invoice);
62 62
 
63 63
     // Load the template.
64
-    wpinv_get_template( 'emails/invoice-items.php', compact( 'invoice', 'columns', 'email_type', 'sent_to_admin' ) );
64
+    wpinv_get_template('emails/invoice-items.php', compact('invoice', 'columns', 'email_type', 'sent_to_admin'));
65 65
 
66 66
 }
67
-add_action( 'wpinv_email_invoice_items', 'wpinv_email_invoice_items', 10, 3 );
67
+add_action('wpinv_email_invoice_items', 'wpinv_email_invoice_items', 10, 3);
68 68
 
69 69
 
70 70
 /**
@@ -74,13 +74,13 @@  discard block
 block discarded – undo
74 74
  * @param string $email_type
75 75
  * @param bool $sent_to_admin
76 76
  */
77
-function wpinv_email_billing_details( $invoice, $email_type, $sent_to_admin ) {
77
+function wpinv_email_billing_details($invoice, $email_type, $sent_to_admin) {
78 78
 
79
-    $args = compact( 'invoice', 'email_type', 'sent_to_admin' );
80
-    wpinv_get_template( 'emails/wpinv-email-billing-details.php', $args );
79
+    $args = compact('invoice', 'email_type', 'sent_to_admin');
80
+    wpinv_get_template('emails/wpinv-email-billing-details.php', $args);
81 81
 
82 82
 }
83
-add_action( 'wpinv_email_billing_details', 'wpinv_email_billing_details', 10, 3 );
83
+add_action('wpinv_email_billing_details', 'wpinv_email_billing_details', 10, 3);
84 84
 
85 85
 /**
86 86
  * Returns email css.
@@ -88,8 +88,8 @@  discard block
 block discarded – undo
88 88
  */
89 89
 function getpaid_get_email_css() {
90 90
 
91
-    $css = wpinv_get_template_html( 'emails/wpinv-email-styles.php' );
92
-    return apply_filters( 'wpinv_email_styles', $css );
91
+    $css = wpinv_get_template_html('emails/wpinv-email-styles.php');
92
+    return apply_filters('wpinv_email_styles', $css);
93 93
 
94 94
 }
95 95
 
@@ -100,26 +100,26 @@  discard block
 block discarded – undo
100 100
  * @return string
101 101
  * 
102 102
  */
103
-function wpinv_email_style_body( $content ) {
103
+function wpinv_email_style_body($content) {
104 104
 
105
-    if ( ! class_exists( 'DOMDocument' ) ) {
105
+    if (!class_exists('DOMDocument')) {
106 106
         return $content;
107 107
     }
108 108
 
109 109
     $css = getpaid_get_email_css();
110 110
 
111 111
     // include css inliner
112
-	if ( ! class_exists( 'Emogrifier' ) ) {
113
-		include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' );
112
+	if (!class_exists('Emogrifier')) {
113
+		include_once(WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php');
114 114
     }
115 115
 
116 116
     // Inline the css.
117 117
     try {
118
-        $emogrifier = new Emogrifier( $content, $css );
118
+        $emogrifier = new Emogrifier($content, $css);
119 119
         $_content   = $emogrifier->emogrify();
120 120
         $content    = $_content;
121
-    } catch ( Exception $e ) {
122
-        wpinv_error_log( $e->getMessage(), 'emogrifier' );
121
+    } catch (Exception $e) {
122
+        wpinv_error_log($e->getMessage(), 'emogrifier');
123 123
     }
124 124
 
125 125
     return $content;
@@ -128,37 +128,37 @@  discard block
 block discarded – undo
128 128
 
129 129
 // Backwards compatibility.
130 130
 function wpinv_init_transactional_emails() {
131
-    foreach ( apply_filters( 'wpinv_email_actions', array() ) as $action ) {
132
-        add_action( $action, 'wpinv_send_transactional_email', 10, 10 );
131
+    foreach (apply_filters('wpinv_email_actions', array()) as $action) {
132
+        add_action($action, 'wpinv_send_transactional_email', 10, 10);
133 133
     }
134 134
 }
135
-add_action( 'init', 'wpinv_init_transactional_emails' );
135
+add_action('init', 'wpinv_init_transactional_emails');
136 136
 
137 137
 function wpinv_send_transactional_email() {
138 138
     $args       = func_get_args();
139 139
     $function   = current_filter() . '_notification';
140
-    do_action_ref_array( $function, $args );
140
+    do_action_ref_array($function, $args);
141 141
 }
142 142
 
143 143
 function wpinv_mail_get_from_address() {
144
-    $from_address = apply_filters( 'wpinv_mail_from_address', wpinv_get_option( 'email_from', get_option( 'admin_email' ) ) );
145
-    return sanitize_email( $from_address );
144
+    $from_address = apply_filters('wpinv_mail_from_address', wpinv_get_option('email_from', get_option('admin_email')));
145
+    return sanitize_email($from_address);
146 146
 }
147 147
 
148 148
 function wpinv_mail_get_from_name() {
149
-    $from_name = apply_filters( 'wpinv_mail_from_name', wpinv_get_option( 'email_from_name', get_bloginfo( 'name', 'display' ) ) );
150
-    return wp_specialchars_decode( esc_html( $from_name ), ENT_QUOTES );
149
+    $from_name = apply_filters('wpinv_mail_from_name', wpinv_get_option('email_from_name', get_bloginfo('name', 'display')));
150
+    return wp_specialchars_decode(esc_html($from_name), ENT_QUOTES);
151 151
 }
152 152
 
153
-function wpinv_mail_admin_bcc_active( $mail_type = '' ) {
154
-    $active = apply_filters( 'wpinv_mail_admin_bcc_active', wpinv_get_option( 'email_' . $mail_type . '_admin_bcc' ) );
155
-    return ( $active ? true : false );
153
+function wpinv_mail_admin_bcc_active($mail_type = '') {
154
+    $active = apply_filters('wpinv_mail_admin_bcc_active', wpinv_get_option('email_' . $mail_type . '_admin_bcc'));
155
+    return ($active ? true : false);
156 156
 }
157 157
     
158
-function wpinv_mail_get_content_type(  $content_type = 'text/html', $email_type = 'html' ) {
159
-    $email_type = apply_filters( 'wpinv_mail_content_type', $email_type );
158
+function wpinv_mail_get_content_type($content_type = 'text/html', $email_type = 'html') {
159
+    $email_type = apply_filters('wpinv_mail_content_type', $email_type);
160 160
 
161
-    switch ( $email_type ) {
161
+    switch ($email_type) {
162 162
         case 'html' :
163 163
             $content_type = 'text/html';
164 164
             break;
@@ -183,11 +183,11 @@  discard block
 block discarded – undo
183 183
  * @param array        $attachments Any files to attach to the email.
184 184
  * @param string|array $cc An email or array of extra emails to send a copy of the email to.
185 185
  */
186
-function wpinv_mail_send( $to, $subject, $message, $deprecated, $attachments = array(), $cc = array() ) {
186
+function wpinv_mail_send($to, $subject, $message, $deprecated, $attachments = array(), $cc = array()) {
187 187
 
188 188
     $mailer  = new GetPaid_Notification_Email_Sender();
189
-    $message = wpinv_email_style_body( $message );
190
-    $to      = array_merge( wpinv_parse_list( $to ), wpinv_parse_list( $cc ) );
189
+    $message = wpinv_email_style_body($message);
190
+    $to      = array_merge(wpinv_parse_list($to), wpinv_parse_list($cc));
191 191
 
192 192
 	return $mailer->send(
193 193
         $to,
@@ -204,7 +204,7 @@  discard block
 block discarded – undo
204 204
  * @return array
205 205
  */
206 206
 function wpinv_get_emails() {
207
-    return apply_filters( 'wpinv_get_emails', wpinv_get_data( 'email-settings' ) );
207
+    return apply_filters('wpinv_get_emails', wpinv_get_data('email-settings'));
208 208
 }
209 209
 
210 210
 /**
@@ -213,172 +213,172 @@  discard block
 block discarded – undo
213 213
  * @param array $settings
214 214
  * @return array
215 215
  */
216
-function wpinv_settings_emails( $settings = array() ) {
217
-    $settings = array_merge( $settings, wpinv_get_emails() );
218
-    return apply_filters( 'wpinv_settings_get_emails', $settings );
216
+function wpinv_settings_emails($settings = array()) {
217
+    $settings = array_merge($settings, wpinv_get_emails());
218
+    return apply_filters('wpinv_settings_get_emails', $settings);
219 219
 }
220
-add_filter( 'wpinv_settings_emails', 'wpinv_settings_emails', 10, 1 );
220
+add_filter('wpinv_settings_emails', 'wpinv_settings_emails', 10, 1);
221 221
 
222 222
 /**
223 223
  * Filter email section names.
224 224
  * 
225 225
  */
226
-function wpinv_settings_sections_emails( $settings ) {
227
-    foreach  ( wpinv_get_emails() as $key => $email) {
228
-        $settings[$key] = ! empty( $email['email_' . $key . '_header']['name'] ) ? strip_tags( $email['email_' . $key . '_header']['name'] ) : strip_tags( $key );
226
+function wpinv_settings_sections_emails($settings) {
227
+    foreach (wpinv_get_emails() as $key => $email) {
228
+        $settings[$key] = !empty($email['email_' . $key . '_header']['name']) ? strip_tags($email['email_' . $key . '_header']['name']) : strip_tags($key);
229 229
     }
230 230
 
231 231
     return $settings;    
232 232
 }
233
-add_filter( 'wpinv_settings_sections_emails', 'wpinv_settings_sections_emails', 10, 1 );
233
+add_filter('wpinv_settings_sections_emails', 'wpinv_settings_sections_emails', 10, 1);
234 234
 
235
-function wpinv_email_is_enabled( $email_type ) {
235
+function wpinv_email_is_enabled($email_type) {
236 236
     $emails = wpinv_get_emails();
237
-    $enabled = isset( $emails[$email_type] ) && wpinv_get_option( 'email_'. $email_type . '_active', 0 ) ? true : false;
237
+    $enabled = isset($emails[$email_type]) && wpinv_get_option('email_' . $email_type . '_active', 0) ? true : false;
238 238
 
239
-    return apply_filters( 'wpinv_email_is_enabled', $enabled, $email_type );
239
+    return apply_filters('wpinv_email_is_enabled', $enabled, $email_type);
240 240
 }
241 241
 
242
-function wpinv_email_get_recipient( $email_type = '', $invoice_id = 0, $invoice = array() ) {
243
-    switch ( $email_type ) {
242
+function wpinv_email_get_recipient($email_type = '', $invoice_id = 0, $invoice = array()) {
243
+    switch ($email_type) {
244 244
         case 'new_invoice':
245 245
         case 'cancelled_invoice':
246 246
         case 'failed_invoice':
247 247
             $recipient  = wpinv_get_admin_email();
248 248
         break;
249 249
         default:
250
-            $invoice    = !empty( $invoice ) && is_object( $invoice ) ? $invoice : ( $invoice_id > 0 ? wpinv_get_invoice( $invoice_id ) : NULL );
251
-            $recipient  = !empty( $invoice ) ? $invoice->get_email() : '';
250
+            $invoice    = !empty($invoice) && is_object($invoice) ? $invoice : ($invoice_id > 0 ? wpinv_get_invoice($invoice_id) : NULL);
251
+            $recipient  = !empty($invoice) ? $invoice->get_email() : '';
252 252
         break;
253 253
     }
254 254
 
255
-    return apply_filters( 'wpinv_email_recipient', $recipient, $email_type, $invoice_id, $invoice );
255
+    return apply_filters('wpinv_email_recipient', $recipient, $email_type, $invoice_id, $invoice);
256 256
 }
257 257
 
258 258
 /**
259 259
  * Returns invoice CC recipients
260 260
  */
261
-function wpinv_email_get_cc_recipients( $email_type = '', $invoice_id = 0, $invoice = array() ) {
262
-    switch ( $email_type ) {
261
+function wpinv_email_get_cc_recipients($email_type = '', $invoice_id = 0, $invoice = array()) {
262
+    switch ($email_type) {
263 263
         case 'new_invoice':
264 264
         case 'cancelled_invoice':
265 265
         case 'failed_invoice':
266 266
             return array();
267 267
         break;
268 268
         default:
269
-            $invoice    = !empty( $invoice ) && is_object( $invoice ) ? $invoice : ( $invoice_id > 0 ? wpinv_get_invoice( $invoice_id ) : NULL );
270
-            $recipient  = empty( $invoice ) ? '' : get_post_meta( $invoice->ID, 'wpinv_email_cc', true );
271
-            if ( empty( $recipient ) ) {
269
+            $invoice    = !empty($invoice) && is_object($invoice) ? $invoice : ($invoice_id > 0 ? wpinv_get_invoice($invoice_id) : NULL);
270
+            $recipient  = empty($invoice) ? '' : get_post_meta($invoice->ID, 'wpinv_email_cc', true);
271
+            if (empty($recipient)) {
272 272
                 return array();
273 273
             }
274
-            return  array_filter( array_map( 'trim', explode( ',', $recipient ) ) );
274
+            return  array_filter(array_map('trim', explode(',', $recipient)));
275 275
         break;
276 276
     }
277 277
 
278 278
 }
279 279
 
280
-function wpinv_email_get_subject( $email_type = '', $invoice_id = 0, $invoice = array() ) {
281
-    $subject    = wpinv_get_option( 'email_' . $email_type . '_subject' );
282
-    $subject    = __( $subject, 'invoicing' );
280
+function wpinv_email_get_subject($email_type = '', $invoice_id = 0, $invoice = array()) {
281
+    $subject    = wpinv_get_option('email_' . $email_type . '_subject');
282
+    $subject    = __($subject, 'invoicing');
283 283
 
284
-    $subject    = wpinv_email_format_text( $subject, $invoice );
284
+    $subject    = wpinv_email_format_text($subject, $invoice);
285 285
 
286
-    return apply_filters( 'wpinv_email_subject', $subject, $email_type, $invoice_id, $invoice );
286
+    return apply_filters('wpinv_email_subject', $subject, $email_type, $invoice_id, $invoice);
287 287
 }
288 288
 
289
-function wpinv_email_get_heading( $email_type = '', $invoice_id = 0, $invoice = array() ) {
290
-    $email_heading = wpinv_get_option( 'email_' . $email_type . '_heading' );
291
-    $email_heading = __( $email_heading, 'invoicing' );
289
+function wpinv_email_get_heading($email_type = '', $invoice_id = 0, $invoice = array()) {
290
+    $email_heading = wpinv_get_option('email_' . $email_type . '_heading');
291
+    $email_heading = __($email_heading, 'invoicing');
292 292
 
293
-    $email_heading = wpinv_email_format_text( $email_heading, $invoice );
293
+    $email_heading = wpinv_email_format_text($email_heading, $invoice);
294 294
 
295
-    return apply_filters( 'wpinv_email_heading', $email_heading, $email_type, $invoice_id, $invoice );
295
+    return apply_filters('wpinv_email_heading', $email_heading, $email_type, $invoice_id, $invoice);
296 296
 }
297 297
 
298
-function wpinv_email_get_content( $email_type = '', $invoice_id = 0, $invoice = array() ) {
299
-    $content    = wpinv_get_option( 'email_' . $email_type . '_body' );
300
-    $content    = __( $content, 'invoicing' );
298
+function wpinv_email_get_content($email_type = '', $invoice_id = 0, $invoice = array()) {
299
+    $content    = wpinv_get_option('email_' . $email_type . '_body');
300
+    $content    = __($content, 'invoicing');
301 301
 
302
-    $content    = wpinv_email_format_text( $content, $invoice );
302
+    $content    = wpinv_email_format_text($content, $invoice);
303 303
 
304
-    return apply_filters( 'wpinv_email_content', $content, $email_type, $invoice_id, $invoice );
304
+    return apply_filters('wpinv_email_content', $content, $email_type, $invoice_id, $invoice);
305 305
 }
306 306
 
307
-function wpinv_email_get_headers( $email_type = '', $invoice_id = 0, $invoice = array() ) {
307
+function wpinv_email_get_headers($email_type = '', $invoice_id = 0, $invoice = array()) {
308 308
     $from_name = wpinv_mail_get_from_address();
309 309
     $from_email = wpinv_mail_get_from_address();
310 310
     
311
-    $invoice    = !empty( $invoice ) && is_object( $invoice ) ? $invoice : ( $invoice_id > 0 ? wpinv_get_invoice( $invoice_id ) : NULL );
311
+    $invoice    = !empty($invoice) && is_object($invoice) ? $invoice : ($invoice_id > 0 ? wpinv_get_invoice($invoice_id) : NULL);
312 312
     
313
-    $headers    = "From: " . stripslashes_deep( html_entity_decode( $from_name, ENT_COMPAT, 'UTF-8' ) ) . " <$from_email>\r\n";
314
-    $headers    .= "Reply-To: ". $from_email . "\r\n";
313
+    $headers    = "From: " . stripslashes_deep(html_entity_decode($from_name, ENT_COMPAT, 'UTF-8')) . " <$from_email>\r\n";
314
+    $headers    .= "Reply-To: " . $from_email . "\r\n";
315 315
     $headers    .= "Content-Type: " . wpinv_mail_get_content_type() . "\r\n";
316 316
     
317
-    return apply_filters( 'wpinv_email_headers', $headers, $email_type, $invoice_id, $invoice );
317
+    return apply_filters('wpinv_email_headers', $headers, $email_type, $invoice_id, $invoice);
318 318
 }
319 319
 
320
-function wpinv_email_get_attachments( $email_type = '', $invoice_id = 0, $invoice = array() ) {
320
+function wpinv_email_get_attachments($email_type = '', $invoice_id = 0, $invoice = array()) {
321 321
     $attachments = array();
322 322
     
323
-    return apply_filters( 'wpinv_email_attachments', $attachments, $email_type, $invoice_id, $invoice );
323
+    return apply_filters('wpinv_email_attachments', $attachments, $email_type, $invoice_id, $invoice);
324 324
 }
325 325
 
326 326
 /**
327 327
  * Searches for and replaces certain placeholders in an email.
328 328
  */
329
-function wpinv_email_format_text( $content, $invoice ) {
329
+function wpinv_email_format_text($content, $invoice) {
330 330
 
331 331
     $replace_array = array(
332 332
         '{site_title}'      => wpinv_get_blogname(),
333
-        '{date}'            => getpaid_format_date( current_time( 'mysql' ) ),
333
+        '{date}'            => getpaid_format_date(current_time('mysql')),
334 334
     );
335 335
 
336
-    $invoice = new WPInv_Invoice( $invoice );
336
+    $invoice = new WPInv_Invoice($invoice);
337 337
 
338
-    if ( $invoice->get_id() ) {
338
+    if ($invoice->get_id()) {
339 339
 
340 340
         $replace_array = array_merge(
341 341
             $replace_array, 
342 342
             array(
343
-                '{name}'            => sanitize_text_field( $invoice->get_user_full_name() ),
344
-                '{full_name}'       => sanitize_text_field( $invoice->get_user_full_name() ),
345
-                '{first_name}'      => sanitize_text_field( $invoice->get_first_name() ),
346
-                '{last_name}'       => sanitize_text_field( $invoice->get_last_name() ),
347
-                '{email}'           => sanitize_email( $invoice->get_email() ),
348
-                '{invoice_number}'  => sanitize_text_field( $invoice->get_number() ),
349
-                '{invoice_total}'   => sanitize_text_field( wpinv_price( $invoice->get_total( true ), $invoice->get_currency() ) ),
350
-                '{invoice_link}'    => esc_url( $invoice->get_view_url() ),
351
-                '{invoice_pay_link}'=> esc_url( $invoice->get_checkout_payment_url() ),
352
-                '{invoice_date}'    => date( get_option( 'date_format' ), strtotime( $invoice->get_date_created(), current_time( 'timestamp' ) ) ),
353
-                '{invoice_due_date}'=> date( get_option( 'date_format' ), strtotime( $invoice->get_due_date(), current_time( 'timestamp' ) ) ),
354
-                '{invoice_quote}'   => sanitize_text_field( $invoice->get_invoice_quote_type() ),
355
-                '{invoice_label}'   => sanitize_text_field( ucfirst( $invoice->get_invoice_quote_type() ) ),
356
-                '{is_was}'          => strtotime( $invoice->get_due_date() ) < current_time( 'timestamp' ) ? __( 'was', 'invoicing' ) : __( 'is', 'invoicing' ),
343
+                '{name}'            => sanitize_text_field($invoice->get_user_full_name()),
344
+                '{full_name}'       => sanitize_text_field($invoice->get_user_full_name()),
345
+                '{first_name}'      => sanitize_text_field($invoice->get_first_name()),
346
+                '{last_name}'       => sanitize_text_field($invoice->get_last_name()),
347
+                '{email}'           => sanitize_email($invoice->get_email()),
348
+                '{invoice_number}'  => sanitize_text_field($invoice->get_number()),
349
+                '{invoice_total}'   => sanitize_text_field(wpinv_price($invoice->get_total(true), $invoice->get_currency())),
350
+                '{invoice_link}'    => esc_url($invoice->get_view_url()),
351
+                '{invoice_pay_link}'=> esc_url($invoice->get_checkout_payment_url()),
352
+                '{invoice_date}'    => date(get_option('date_format'), strtotime($invoice->get_date_created(), current_time('timestamp'))),
353
+                '{invoice_due_date}'=> date(get_option('date_format'), strtotime($invoice->get_due_date(), current_time('timestamp'))),
354
+                '{invoice_quote}'   => sanitize_text_field($invoice->get_invoice_quote_type()),
355
+                '{invoice_label}'   => sanitize_text_field(ucfirst($invoice->get_invoice_quote_type())),
356
+                '{is_was}'          => strtotime($invoice->get_due_date()) < current_time('timestamp') ? __('was', 'invoicing') : __('is', 'invoicing'),
357 357
             )
358 358
         );
359 359
 
360 360
     }
361 361
 
362 362
     // Let third party plugins filter the arra.
363
-    $replace_array = apply_filters( 'wpinv_email_format_text', $replace_array, $content, $invoice );
363
+    $replace_array = apply_filters('wpinv_email_format_text', $replace_array, $content, $invoice);
364 364
 
365
-    foreach ( $replace_array as $key => $value ) {
366
-        $content = str_replace( $key, $value, $content );
365
+    foreach ($replace_array as $key => $value) {
366
+        $content = str_replace($key, $value, $content);
367 367
     }
368 368
 
369
-    return apply_filters( 'wpinv_email_content_replace', $content );
369
+    return apply_filters('wpinv_email_content_replace', $content);
370 370
 }
371 371
 
372 372
 
373
-function wpinv_email_wrap_message( $message ) {
373
+function wpinv_email_wrap_message($message) {
374 374
     // Buffer
375 375
     ob_start();
376 376
 
377
-    do_action( 'wpinv_email_header' );
377
+    do_action('wpinv_email_header');
378 378
 
379
-    echo wpautop( wptexturize( $message ) );
379
+    echo wpautop(wptexturize($message));
380 380
 
381
-    do_action( 'wpinv_email_footer' );
381
+    do_action('wpinv_email_footer');
382 382
 
383 383
     // Get contents
384 384
     $message = ob_get_clean();
@@ -386,21 +386,21 @@  discard block
 block discarded – undo
386 386
     return $message;
387 387
 }
388 388
 
389
-function wpinv_add_notes_to_invoice_email( $invoice, $email_type ) {
390
-    if ( !empty( $invoice ) && $email_type == 'user_invoice' && $invoice_notes = wpinv_get_invoice_notes( $invoice->get_id(), true ) ) {
391
-        $date_format = get_option( 'date_format' );
392
-        $time_format = get_option( 'time_format' );
389
+function wpinv_add_notes_to_invoice_email($invoice, $email_type) {
390
+    if (!empty($invoice) && $email_type == 'user_invoice' && $invoice_notes = wpinv_get_invoice_notes($invoice->get_id(), true)) {
391
+        $date_format = get_option('date_format');
392
+        $time_format = get_option('time_format');
393 393
         ?>
394 394
         <div id="wpinv-email-notes">
395
-            <h3 class="wpinv-notes-t"><?php echo apply_filters( 'wpinv_email_invoice_notes_title', __( 'Invoice Notes', 'invoicing' ) ); ?></h3>
395
+            <h3 class="wpinv-notes-t"><?php echo apply_filters('wpinv_email_invoice_notes_title', __('Invoice Notes', 'invoicing')); ?></h3>
396 396
             <ol class="wpinv-notes-lists">
397 397
         <?php
398
-        foreach ( $invoice_notes as $note ) {
399
-            $note_time = strtotime( $note->comment_date );
398
+        foreach ($invoice_notes as $note) {
399
+            $note_time = strtotime($note->comment_date);
400 400
             ?>
401 401
             <li class="comment wpinv-note">
402
-            <p class="wpinv-note-date meta"><?php printf( __( '%2$s at %3$s', 'invoicing' ), $note->comment_author, date_i18n( $date_format, $note_time ), date_i18n( $time_format, $note_time ), $note_time ); ?></p>
403
-            <div class="wpinv-note-desc description"><?php echo wpautop( wptexturize( $note->comment_content ) ); ?></div>
402
+            <p class="wpinv-note-date meta"><?php printf(__('%2$s at %3$s', 'invoicing'), $note->comment_author, date_i18n($date_format, $note_time), date_i18n($time_format, $note_time), $note_time); ?></p>
403
+            <div class="wpinv-note-desc description"><?php echo wpautop(wptexturize($note->comment_content)); ?></div>
404 404
             </li>
405 405
             <?php
406 406
         }
@@ -409,4 +409,4 @@  discard block
 block discarded – undo
409 409
         <?php
410 410
     }
411 411
 }
412
-add_action( 'wpinv_email_billing_details', 'wpinv_add_notes_to_invoice_email', 10, 3 );
412
+add_action('wpinv_email_billing_details', 'wpinv_add_notes_to_invoice_email', 10, 3);
Please login to merge, or discard this patch.
includes/wpinv-general-functions.php 3 patches
Braces   +12 added lines, -8 removed lines patch added patch discarded remove patch
@@ -87,8 +87,9 @@  discard block
 block discarded – undo
87 87
     
88 88
     if ( !empty( $args ) ) {
89 89
         // Check for backward compatibility
90
-        if ( is_string( $args ) )
91
-            $args = str_replace( '?', '', $args );
90
+        if ( is_string( $args ) ) {
91
+                    $args = str_replace( '?', '', $args );
92
+        }
92 93
 
93 94
         $args = wp_parse_args( $args );
94 95
 
@@ -108,8 +109,9 @@  discard block
 block discarded – undo
108 109
 
109 110
 	if ( !empty( $args ) ) {
110 111
 		// Check for backward compatibility
111
-		if ( is_string( $args ) )
112
-			$args = str_replace( '?', '', $args );
112
+		if ( is_string( $args ) ) {
113
+					$args = str_replace( '?', '', $args );
114
+		}
113 115
 
114 116
 		$args = wp_parse_args( $args );
115 117
 
@@ -131,8 +133,9 @@  discard block
 block discarded – undo
131 133
 	$success_page = wpinv_get_option( 'success_page', 0 );
132 134
 	$success_page = get_permalink( $success_page );
133 135
 
134
-	if ( $query_string )
135
-		$success_page .= $query_string;
136
+	if ( $query_string ) {
137
+			$success_page .= $query_string;
138
+	}
136 139
 
137 140
 	return apply_filters( 'wpinv_success_page_url', $success_page );
138 141
 }
@@ -141,8 +144,9 @@  discard block
 block discarded – undo
141 144
 	$uri = wpinv_get_option( 'failure_page', '' );
142 145
 	$uri = ! empty( $uri ) ? trailingslashit( get_permalink( $uri ) ) : home_url();
143 146
 
144
-	if ( $extras )
145
-		$uri .= $extras;
147
+	if ( $extras ) {
148
+			$uri .= $extras;
149
+	}
146 150
 
147 151
 	return apply_filters( 'wpinv_get_failed_transaction_uri', $uri );
148 152
 }
Please login to merge, or discard this patch.
Indentation   +73 added lines, -73 removed lines patch added patch discarded remove patch
@@ -31,16 +31,16 @@  discard block
 block discarded – undo
31 31
 }
32 32
 
33 33
 function wpinv_can_checkout() {
34
-	$can_checkout = true; // Always true for now
34
+    $can_checkout = true; // Always true for now
35 35
 
36
-	return (bool) apply_filters( 'wpinv_can_checkout', $can_checkout );
36
+    return (bool) apply_filters( 'wpinv_can_checkout', $can_checkout );
37 37
 }
38 38
 
39 39
 function wpinv_get_success_page_uri() {
40
-	$page_id = wpinv_get_option( 'success_page', 0 );
41
-	$page_id = absint( $page_id );
40
+    $page_id = wpinv_get_option( 'success_page', 0 );
41
+    $page_id = absint( $page_id );
42 42
 
43
-	return apply_filters( 'wpinv_get_success_page_uri', get_permalink( $page_id ) );
43
+    return apply_filters( 'wpinv_get_success_page_uri', get_permalink( $page_id ) );
44 44
 }
45 45
 
46 46
 /**
@@ -51,22 +51,22 @@  discard block
 block discarded – undo
51 51
  */
52 52
 function wpinv_get_history_page_uri( $post_type = 'wpi_invoice' ) {
53 53
     $post_type = sanitize_key( str_replace( 'wpi_', '', $post_type ) );
54
-	$page_id   = wpinv_get_option( "{$post_type}_history_page", 0 );
55
-	$page_id   = absint( $page_id );
56
-	return apply_filters( 'wpinv_get_history_page_uri', get_permalink( $page_id ), $post_type );
54
+    $page_id   = wpinv_get_option( "{$post_type}_history_page", 0 );
55
+    $page_id   = absint( $page_id );
56
+    return apply_filters( 'wpinv_get_history_page_uri', get_permalink( $page_id ), $post_type );
57 57
 }
58 58
 
59 59
 function wpinv_is_success_page() {
60
-	$is_success_page = wpinv_get_option( 'success_page', false );
61
-	$is_success_page = ! empty( $is_success_page ) ? is_page( $is_success_page ) : false;
60
+    $is_success_page = wpinv_get_option( 'success_page', false );
61
+    $is_success_page = ! empty( $is_success_page ) ? is_page( $is_success_page ) : false;
62 62
 
63
-	return apply_filters( 'wpinv_is_success_page', $is_success_page );
63
+    return apply_filters( 'wpinv_is_success_page', $is_success_page );
64 64
 }
65 65
 
66 66
 function wpinv_is_invoice_history_page() {
67
-	$ret = wpinv_get_option( 'invoice_history_page', false );
68
-	$ret = $ret ? is_page( $ret ) : false;
69
-	return apply_filters( 'wpinv_is_invoice_history_page', $ret );
67
+    $ret = wpinv_get_option( 'invoice_history_page', false );
68
+    $ret = $ret ? is_page( $ret ) : false;
69
+    return apply_filters( 'wpinv_is_invoice_history_page', $ret );
70 70
 }
71 71
 
72 72
 function wpinv_is_subscriptions_history_page() {
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
 }
90 90
 
91 91
 function wpinv_send_to_failed_page( $args = null ) {
92
-	$redirect = wpinv_get_failed_transaction_uri();
92
+    $redirect = wpinv_get_failed_transaction_uri();
93 93
     
94 94
     if ( !empty( $args ) ) {
95 95
         // Check for backward compatibility
@@ -109,55 +109,55 @@  discard block
 block discarded – undo
109 109
 }
110 110
 
111 111
 function wpinv_get_checkout_uri( $args = array() ) {
112
-	$uri = wpinv_get_option( 'checkout_page', false );
113
-	$uri = isset( $uri ) ? get_permalink( $uri ) : NULL;
112
+    $uri = wpinv_get_option( 'checkout_page', false );
113
+    $uri = isset( $uri ) ? get_permalink( $uri ) : NULL;
114 114
 
115
-	if ( !empty( $args ) ) {
116
-		// Check for backward compatibility
117
-		if ( is_string( $args ) )
118
-			$args = str_replace( '?', '', $args );
115
+    if ( !empty( $args ) ) {
116
+        // Check for backward compatibility
117
+        if ( is_string( $args ) )
118
+            $args = str_replace( '?', '', $args );
119 119
 
120
-		$args = wp_parse_args( $args );
120
+        $args = wp_parse_args( $args );
121 121
 
122
-		$uri = add_query_arg( $args, $uri );
123
-	}
122
+        $uri = add_query_arg( $args, $uri );
123
+    }
124 124
 
125
-	$scheme = defined( 'FORCE_SSL_ADMIN' ) && FORCE_SSL_ADMIN ? 'https' : 'admin';
125
+    $scheme = defined( 'FORCE_SSL_ADMIN' ) && FORCE_SSL_ADMIN ? 'https' : 'admin';
126 126
 
127
-	$ajax_url = admin_url( 'admin-ajax.php', $scheme );
127
+    $ajax_url = admin_url( 'admin-ajax.php', $scheme );
128 128
 
129
-	if ( ( ! preg_match( '/^https/', $uri ) && preg_match( '/^https/', $ajax_url ) ) || wpinv_is_ssl_enforced() ) {
130
-		$uri = preg_replace( '/^http:/', 'https:', $uri );
131
-	}
129
+    if ( ( ! preg_match( '/^https/', $uri ) && preg_match( '/^https/', $ajax_url ) ) || wpinv_is_ssl_enforced() ) {
130
+        $uri = preg_replace( '/^http:/', 'https:', $uri );
131
+    }
132 132
 
133
-	return apply_filters( 'wpinv_get_checkout_uri', $uri );
133
+    return apply_filters( 'wpinv_get_checkout_uri', $uri );
134 134
 }
135 135
 
136 136
 function wpinv_get_success_page_url( $query_string = null ) {
137
-	$success_page = wpinv_get_option( 'success_page', 0 );
138
-	$success_page = get_permalink( $success_page );
137
+    $success_page = wpinv_get_option( 'success_page', 0 );
138
+    $success_page = get_permalink( $success_page );
139 139
 
140
-	if ( $query_string )
141
-		$success_page .= $query_string;
140
+    if ( $query_string )
141
+        $success_page .= $query_string;
142 142
 
143
-	return apply_filters( 'wpinv_success_page_url', $success_page );
143
+    return apply_filters( 'wpinv_success_page_url', $success_page );
144 144
 }
145 145
 
146 146
 function wpinv_get_failed_transaction_uri( $extras = false ) {
147
-	$uri = wpinv_get_option( 'failure_page', '' );
148
-	$uri = ! empty( $uri ) ? trailingslashit( get_permalink( $uri ) ) : home_url();
147
+    $uri = wpinv_get_option( 'failure_page', '' );
148
+    $uri = ! empty( $uri ) ? trailingslashit( get_permalink( $uri ) ) : home_url();
149 149
 
150
-	if ( $extras )
151
-		$uri .= $extras;
150
+    if ( $extras )
151
+        $uri .= $extras;
152 152
 
153
-	return apply_filters( 'wpinv_get_failed_transaction_uri', $uri );
153
+    return apply_filters( 'wpinv_get_failed_transaction_uri', $uri );
154 154
 }
155 155
 
156 156
 function wpinv_is_failed_transaction_page() {
157
-	$ret = wpinv_get_option( 'failure_page', false );
158
-	$ret = isset( $ret ) ? is_page( $ret ) : false;
157
+    $ret = wpinv_get_option( 'failure_page', false );
158
+    $ret = isset( $ret ) ? is_page( $ret ) : false;
159 159
 
160
-	return apply_filters( 'wpinv_is_failure_page', $ret );
160
+    return apply_filters( 'wpinv_is_failure_page', $ret );
161 161
 }
162 162
 
163 163
 function wpinv_transaction_query( $type = 'start' ) {
@@ -232,36 +232,36 @@  discard block
 block discarded – undo
232 232
     $require_billing_details = apply_filters( 'wpinv_checkout_required_billing_details', wpinv_use_taxes() );
233 233
     
234 234
     if ( $require_billing_details ) {
235
-		if ( (bool)wpinv_get_option( 'fname_mandatory' ) ) {
236
-			$required_fields['first_name'] = array(
237
-				'error_id' => 'invalid_first_name',
238
-				'error_message' => __( 'Please enter your first name', 'invoicing' )
239
-			);
240
-		}
241
-		if ( (bool)wpinv_get_option( 'address_mandatory' ) ) {
242
-			$required_fields['address'] = array(
243
-				'error_id' => 'invalid_address',
244
-				'error_message' => __( 'Please enter your address', 'invoicing' )
245
-			);
246
-		}
247
-		if ( (bool)wpinv_get_option( 'city_mandatory' ) ) {
248
-			$required_fields['city'] = array(
249
-				'error_id' => 'invalid_city',
250
-				'error_message' => __( 'Please enter your billing city', 'invoicing' )
251
-			);
252
-		}
253
-		if ( (bool)wpinv_get_option( 'state_mandatory' ) ) {
254
-			$required_fields['state'] = array(
255
-				'error_id' => 'invalid_state',
256
-				'error_message' => __( 'Please enter billing state / province', 'invoicing' )
257
-			);
258
-		}
259
-		if ( (bool)wpinv_get_option( 'country_mandatory' ) ) {
260
-			$required_fields['country'] = array(
261
-				'error_id' => 'invalid_country',
262
-				'error_message' => __( 'Please select your billing country', 'invoicing' )
263
-			);
264
-		}
235
+        if ( (bool)wpinv_get_option( 'fname_mandatory' ) ) {
236
+            $required_fields['first_name'] = array(
237
+                'error_id' => 'invalid_first_name',
238
+                'error_message' => __( 'Please enter your first name', 'invoicing' )
239
+            );
240
+        }
241
+        if ( (bool)wpinv_get_option( 'address_mandatory' ) ) {
242
+            $required_fields['address'] = array(
243
+                'error_id' => 'invalid_address',
244
+                'error_message' => __( 'Please enter your address', 'invoicing' )
245
+            );
246
+        }
247
+        if ( (bool)wpinv_get_option( 'city_mandatory' ) ) {
248
+            $required_fields['city'] = array(
249
+                'error_id' => 'invalid_city',
250
+                'error_message' => __( 'Please enter your billing city', 'invoicing' )
251
+            );
252
+        }
253
+        if ( (bool)wpinv_get_option( 'state_mandatory' ) ) {
254
+            $required_fields['state'] = array(
255
+                'error_id' => 'invalid_state',
256
+                'error_message' => __( 'Please enter billing state / province', 'invoicing' )
257
+            );
258
+        }
259
+        if ( (bool)wpinv_get_option( 'country_mandatory' ) ) {
260
+            $required_fields['country'] = array(
261
+                'error_id' => 'invalid_country',
262
+                'error_message' => __( 'Please select your billing country', 'invoicing' )
263
+            );
264
+        }
265 265
     }
266 266
 
267 267
     return apply_filters( 'wpinv_checkout_required_fields', $required_fields );
Please login to merge, or discard this patch.
Spacing   +141 added lines, -141 removed lines patch added patch discarded remove patch
@@ -7,40 +7,40 @@  discard block
 block discarded – undo
7 7
  */
8 8
  
9 9
 // MUST have WordPress.
10
-if ( !defined( 'WPINC' ) ) {
11
-    exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) );
10
+if (!defined('WPINC')) {
11
+    exit('Do NOT access this file directly: ' . basename(__FILE__));
12 12
 }
13 13
 
14 14
 function wpinv_is_checkout() {
15 15
     global $wp_query;
16 16
 
17
-    $is_object_set    = isset( $wp_query->queried_object );
18
-    $is_object_id_set = isset( $wp_query->queried_object_id );
19
-    $checkout_page    = wpinv_get_option( 'checkout_page' );
20
-    $is_checkout      = ! empty( $checkout_page ) && is_page( $checkout_page );
17
+    $is_object_set    = isset($wp_query->queried_object);
18
+    $is_object_id_set = isset($wp_query->queried_object_id);
19
+    $checkout_page    = wpinv_get_option('checkout_page');
20
+    $is_checkout      = !empty($checkout_page) && is_page($checkout_page);
21 21
 
22
-    if ( !$is_object_set ) {
23
-        unset( $wp_query->queried_object );
22
+    if (!$is_object_set) {
23
+        unset($wp_query->queried_object);
24 24
     }
25 25
 
26
-    if ( !$is_object_id_set ) {
27
-        unset( $wp_query->queried_object_id );
26
+    if (!$is_object_id_set) {
27
+        unset($wp_query->queried_object_id);
28 28
     }
29 29
 
30
-    return apply_filters( 'wpinv_is_checkout', $is_checkout );
30
+    return apply_filters('wpinv_is_checkout', $is_checkout);
31 31
 }
32 32
 
33 33
 function wpinv_can_checkout() {
34 34
 	$can_checkout = true; // Always true for now
35 35
 
36
-	return (bool) apply_filters( 'wpinv_can_checkout', $can_checkout );
36
+	return (bool) apply_filters('wpinv_can_checkout', $can_checkout);
37 37
 }
38 38
 
39 39
 function wpinv_get_success_page_uri() {
40
-	$page_id = wpinv_get_option( 'success_page', 0 );
41
-	$page_id = absint( $page_id );
40
+	$page_id = wpinv_get_option('success_page', 0);
41
+	$page_id = absint($page_id);
42 42
 
43
-	return apply_filters( 'wpinv_get_success_page_uri', get_permalink( $page_id ) );
43
+	return apply_filters('wpinv_get_success_page_uri', get_permalink($page_id));
44 44
 }
45 45
 
46 46
 /**
@@ -49,139 +49,139 @@  discard block
 block discarded – undo
49 49
  * @param string $post_type The post type or invoice type.
50 50
  * @return string The history page URL.
51 51
  */
52
-function wpinv_get_history_page_uri( $post_type = 'wpi_invoice' ) {
53
-    $post_type = sanitize_key( str_replace( 'wpi_', '', $post_type ) );
54
-	$page_id   = wpinv_get_option( "{$post_type}_history_page", 0 );
55
-	$page_id   = absint( $page_id );
56
-	return apply_filters( 'wpinv_get_history_page_uri', get_permalink( $page_id ), $post_type );
52
+function wpinv_get_history_page_uri($post_type = 'wpi_invoice') {
53
+    $post_type = sanitize_key(str_replace('wpi_', '', $post_type));
54
+	$page_id   = wpinv_get_option("{$post_type}_history_page", 0);
55
+	$page_id   = absint($page_id);
56
+	return apply_filters('wpinv_get_history_page_uri', get_permalink($page_id), $post_type);
57 57
 }
58 58
 
59 59
 function wpinv_is_success_page() {
60
-	$is_success_page = wpinv_get_option( 'success_page', false );
61
-	$is_success_page = ! empty( $is_success_page ) ? is_page( $is_success_page ) : false;
60
+	$is_success_page = wpinv_get_option('success_page', false);
61
+	$is_success_page = !empty($is_success_page) ? is_page($is_success_page) : false;
62 62
 
63
-	return apply_filters( 'wpinv_is_success_page', $is_success_page );
63
+	return apply_filters('wpinv_is_success_page', $is_success_page);
64 64
 }
65 65
 
66 66
 function wpinv_is_invoice_history_page() {
67
-	$ret = wpinv_get_option( 'invoice_history_page', false );
68
-	$ret = $ret ? is_page( $ret ) : false;
69
-	return apply_filters( 'wpinv_is_invoice_history_page', $ret );
67
+	$ret = wpinv_get_option('invoice_history_page', false);
68
+	$ret = $ret ? is_page($ret) : false;
69
+	return apply_filters('wpinv_is_invoice_history_page', $ret);
70 70
 }
71 71
 
72 72
 function wpinv_is_subscriptions_history_page() {
73
-    $ret = wpinv_get_option( 'invoice_subscription_page', false );
74
-    $ret = $ret ? is_page( $ret ) : false;
75
-    return apply_filters( 'wpinv_is_subscriptions_history_page', $ret );
73
+    $ret = wpinv_get_option('invoice_subscription_page', false);
74
+    $ret = $ret ? is_page($ret) : false;
75
+    return apply_filters('wpinv_is_subscriptions_history_page', $ret);
76 76
 }
77 77
 
78 78
 /**
79 79
  * Redirects a user the success page.
80 80
  */
81
-function wpinv_send_to_success_page( $args = array() ) {
81
+function wpinv_send_to_success_page($args = array()) {
82 82
 
83 83
     $redirect = add_query_arg(
84
-        wp_parse_args( $args ),
84
+        wp_parse_args($args),
85 85
         wpinv_get_success_page_uri()
86 86
     );
87 87
 
88
-    $redirect = apply_filters( 'wpinv_send_to_success_page_url', $redirect, $args );
88
+    $redirect = apply_filters('wpinv_send_to_success_page_url', $redirect, $args);
89 89
 
90
-    wp_redirect( $redirect );
90
+    wp_redirect($redirect);
91 91
     exit;
92 92
 }
93 93
 
94
-function wpinv_send_to_failed_page( $args = null ) {
94
+function wpinv_send_to_failed_page($args = null) {
95 95
 	$redirect = wpinv_get_failed_transaction_uri();
96 96
     
97
-    if ( !empty( $args ) ) {
97
+    if (!empty($args)) {
98 98
         // Check for backward compatibility
99
-        if ( is_string( $args ) )
100
-            $args = str_replace( '?', '', $args );
99
+        if (is_string($args))
100
+            $args = str_replace('?', '', $args);
101 101
 
102
-        $args = wp_parse_args( $args );
102
+        $args = wp_parse_args($args);
103 103
 
104
-        $redirect = add_query_arg( $args, $redirect );
104
+        $redirect = add_query_arg($args, $redirect);
105 105
     }
106 106
 
107
-    $gateway = isset( $_REQUEST['wpi-gateway'] ) ? $_REQUEST['wpi-gateway'] : '';
107
+    $gateway = isset($_REQUEST['wpi-gateway']) ? $_REQUEST['wpi-gateway'] : '';
108 108
     
109
-    $redirect = apply_filters( 'wpinv_failed_page_redirect', $redirect, $gateway, $args );
110
-    wp_redirect( $redirect );
109
+    $redirect = apply_filters('wpinv_failed_page_redirect', $redirect, $gateway, $args);
110
+    wp_redirect($redirect);
111 111
     exit;
112 112
 }
113 113
 
114
-function wpinv_get_checkout_uri( $args = array() ) {
115
-	$uri = wpinv_get_option( 'checkout_page', false );
116
-	$uri = isset( $uri ) ? get_permalink( $uri ) : NULL;
114
+function wpinv_get_checkout_uri($args = array()) {
115
+	$uri = wpinv_get_option('checkout_page', false);
116
+	$uri = isset($uri) ? get_permalink($uri) : NULL;
117 117
 
118
-	if ( !empty( $args ) ) {
118
+	if (!empty($args)) {
119 119
 		// Check for backward compatibility
120
-		if ( is_string( $args ) )
121
-			$args = str_replace( '?', '', $args );
120
+		if (is_string($args))
121
+			$args = str_replace('?', '', $args);
122 122
 
123
-		$args = wp_parse_args( $args );
123
+		$args = wp_parse_args($args);
124 124
 
125
-		$uri = add_query_arg( $args, $uri );
125
+		$uri = add_query_arg($args, $uri);
126 126
 	}
127 127
 
128
-	$scheme = defined( 'FORCE_SSL_ADMIN' ) && FORCE_SSL_ADMIN ? 'https' : 'admin';
128
+	$scheme = defined('FORCE_SSL_ADMIN') && FORCE_SSL_ADMIN ? 'https' : 'admin';
129 129
 
130
-	$ajax_url = admin_url( 'admin-ajax.php', $scheme );
130
+	$ajax_url = admin_url('admin-ajax.php', $scheme);
131 131
 
132
-	if ( ( ! preg_match( '/^https/', $uri ) && preg_match( '/^https/', $ajax_url ) ) || wpinv_is_ssl_enforced() ) {
133
-		$uri = preg_replace( '/^http:/', 'https:', $uri );
132
+	if ((!preg_match('/^https/', $uri) && preg_match('/^https/', $ajax_url)) || wpinv_is_ssl_enforced()) {
133
+		$uri = preg_replace('/^http:/', 'https:', $uri);
134 134
 	}
135 135
 
136
-	return apply_filters( 'wpinv_get_checkout_uri', $uri );
136
+	return apply_filters('wpinv_get_checkout_uri', $uri);
137 137
 }
138 138
 
139
-function wpinv_get_success_page_url( $query_string = null ) {
140
-	$success_page = wpinv_get_option( 'success_page', 0 );
141
-	$success_page = get_permalink( $success_page );
139
+function wpinv_get_success_page_url($query_string = null) {
140
+	$success_page = wpinv_get_option('success_page', 0);
141
+	$success_page = get_permalink($success_page);
142 142
 
143
-	if ( $query_string )
143
+	if ($query_string)
144 144
 		$success_page .= $query_string;
145 145
 
146
-	return apply_filters( 'wpinv_success_page_url', $success_page );
146
+	return apply_filters('wpinv_success_page_url', $success_page);
147 147
 }
148 148
 
149
-function wpinv_get_failed_transaction_uri( $extras = false ) {
150
-	$uri = wpinv_get_option( 'failure_page', '' );
151
-	$uri = ! empty( $uri ) ? trailingslashit( get_permalink( $uri ) ) : home_url();
149
+function wpinv_get_failed_transaction_uri($extras = false) {
150
+	$uri = wpinv_get_option('failure_page', '');
151
+	$uri = !empty($uri) ? trailingslashit(get_permalink($uri)) : home_url();
152 152
 
153
-	if ( $extras )
153
+	if ($extras)
154 154
 		$uri .= $extras;
155 155
 
156
-	return apply_filters( 'wpinv_get_failed_transaction_uri', $uri );
156
+	return apply_filters('wpinv_get_failed_transaction_uri', $uri);
157 157
 }
158 158
 
159 159
 function wpinv_is_failed_transaction_page() {
160
-	$ret = wpinv_get_option( 'failure_page', false );
161
-	$ret = isset( $ret ) ? is_page( $ret ) : false;
160
+	$ret = wpinv_get_option('failure_page', false);
161
+	$ret = isset($ret) ? is_page($ret) : false;
162 162
 
163
-	return apply_filters( 'wpinv_is_failure_page', $ret );
163
+	return apply_filters('wpinv_is_failure_page', $ret);
164 164
 }
165 165
 
166
-function wpinv_transaction_query( $type = 'start' ) {
166
+function wpinv_transaction_query($type = 'start') {
167 167
     global $wpdb;
168 168
 
169 169
     $wpdb->hide_errors();
170 170
 
171
-    if ( ! defined( 'WPINV_USE_TRANSACTIONS' ) ) {
172
-        define( 'WPINV_USE_TRANSACTIONS', true );
171
+    if (!defined('WPINV_USE_TRANSACTIONS')) {
172
+        define('WPINV_USE_TRANSACTIONS', true);
173 173
     }
174 174
 
175
-    if ( WPINV_USE_TRANSACTIONS ) {
176
-        switch ( $type ) {
175
+    if (WPINV_USE_TRANSACTIONS) {
176
+        switch ($type) {
177 177
             case 'commit' :
178
-                $wpdb->query( 'COMMIT' );
178
+                $wpdb->query('COMMIT');
179 179
                 break;
180 180
             case 'rollback' :
181
-                $wpdb->query( 'ROLLBACK' );
181
+                $wpdb->query('ROLLBACK');
182 182
                 break;
183 183
             default :
184
-                $wpdb->query( 'START TRANSACTION' );
184
+                $wpdb->query('START TRANSACTION');
185 185
             break;
186 186
         }
187 187
     }
@@ -190,146 +190,146 @@  discard block
 block discarded – undo
190 190
 function wpinv_get_prefix() {
191 191
     $invoice_prefix = 'INV-';
192 192
     
193
-    return apply_filters( 'wpinv_get_prefix', $invoice_prefix );
193
+    return apply_filters('wpinv_get_prefix', $invoice_prefix);
194 194
 }
195 195
 
196 196
 function wpinv_get_business_logo() {
197
-    $business_logo = wpinv_get_option( 'logo' );
198
-    return apply_filters( 'wpinv_get_business_logo', $business_logo );
197
+    $business_logo = wpinv_get_option('logo');
198
+    return apply_filters('wpinv_get_business_logo', $business_logo);
199 199
 }
200 200
 
201 201
 function wpinv_get_business_name() {
202
-    $name = wpinv_get_option( 'store_name', wpinv_get_blogname() );
202
+    $name = wpinv_get_option('store_name', wpinv_get_blogname());
203 203
 
204
-    if ( empty( $name ) ) {
204
+    if (empty($name)) {
205 205
         $name = wpinv_get_blogname();
206 206
     }
207 207
 
208
-    return apply_filters( 'wpinv_get_business_name', $name );
208
+    return apply_filters('wpinv_get_business_name', $name);
209 209
 }
210 210
 
211 211
 function wpinv_get_blogname() {
212
-    return wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
212
+    return wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
213 213
 }
214 214
 
215 215
 function wpinv_get_admin_email() {
216
-    $admin_email = wpinv_get_option( 'admin_email', get_option( 'admin_email' ) );
217
-    return apply_filters( 'wpinv_admin_email', $admin_email );
216
+    $admin_email = wpinv_get_option('admin_email', get_option('admin_email'));
217
+    return apply_filters('wpinv_admin_email', $admin_email);
218 218
 }
219 219
 
220 220
 function wpinv_get_business_website() {
221
-    $business_website = home_url( '/' );
222
-    return apply_filters( 'wpinv_get_business_website', $business_website );
221
+    $business_website = home_url('/');
222
+    return apply_filters('wpinv_get_business_website', $business_website);
223 223
 }
224 224
 
225
-function wpinv_get_terms_text( $invoice_id = 0 ) {
225
+function wpinv_get_terms_text($invoice_id = 0) {
226 226
     $terms_text = '';
227
-    return apply_filters( 'wpinv_get_terms_text', $terms_text, $invoice_id );
227
+    return apply_filters('wpinv_get_terms_text', $terms_text, $invoice_id);
228 228
 }
229 229
 
230 230
 function wpinv_get_business_footer() {
231
-    $site_link = '<a target="_blank" href="' . esc_url( wpinv_get_business_website() ) . '">' . esc_html( wpinv_get_business_name() ) . '</a>';
232
-    $business_footer = wp_sprintf( __( 'Thanks for using %s', 'invoicing' ), $site_link );
233
-    return apply_filters( 'wpinv_get_business_footer', $business_footer );
231
+    $site_link = '<a target="_blank" href="' . esc_url(wpinv_get_business_website()) . '">' . esc_html(wpinv_get_business_name()) . '</a>';
232
+    $business_footer = wp_sprintf(__('Thanks for using %s', 'invoicing'), $site_link);
233
+    return apply_filters('wpinv_get_business_footer', $business_footer);
234 234
 }
235 235
 
236 236
 function wpinv_checkout_required_fields() {
237 237
     $required_fields = array();
238 238
     
239 239
     // Let payment gateways and other extensions determine if address fields should be required
240
-    $require_billing_details = apply_filters( 'wpinv_checkout_required_billing_details', wpinv_use_taxes() );
240
+    $require_billing_details = apply_filters('wpinv_checkout_required_billing_details', wpinv_use_taxes());
241 241
     
242
-    if ( $require_billing_details ) {
243
-		if ( (bool)wpinv_get_option( 'fname_mandatory' ) ) {
242
+    if ($require_billing_details) {
243
+		if ((bool) wpinv_get_option('fname_mandatory')) {
244 244
 			$required_fields['first_name'] = array(
245 245
 				'error_id' => 'invalid_first_name',
246
-				'error_message' => __( 'Please enter your first name', 'invoicing' )
246
+				'error_message' => __('Please enter your first name', 'invoicing')
247 247
 			);
248 248
 		}
249
-		if ( (bool)wpinv_get_option( 'address_mandatory' ) ) {
249
+		if ((bool) wpinv_get_option('address_mandatory')) {
250 250
 			$required_fields['address'] = array(
251 251
 				'error_id' => 'invalid_address',
252
-				'error_message' => __( 'Please enter your address', 'invoicing' )
252
+				'error_message' => __('Please enter your address', 'invoicing')
253 253
 			);
254 254
 		}
255
-		if ( (bool)wpinv_get_option( 'city_mandatory' ) ) {
255
+		if ((bool) wpinv_get_option('city_mandatory')) {
256 256
 			$required_fields['city'] = array(
257 257
 				'error_id' => 'invalid_city',
258
-				'error_message' => __( 'Please enter your billing city', 'invoicing' )
258
+				'error_message' => __('Please enter your billing city', 'invoicing')
259 259
 			);
260 260
 		}
261
-		if ( (bool)wpinv_get_option( 'state_mandatory' ) ) {
261
+		if ((bool) wpinv_get_option('state_mandatory')) {
262 262
 			$required_fields['state'] = array(
263 263
 				'error_id' => 'invalid_state',
264
-				'error_message' => __( 'Please enter billing state / province', 'invoicing' )
264
+				'error_message' => __('Please enter billing state / province', 'invoicing')
265 265
 			);
266 266
 		}
267
-		if ( (bool)wpinv_get_option( 'country_mandatory' ) ) {
267
+		if ((bool) wpinv_get_option('country_mandatory')) {
268 268
 			$required_fields['country'] = array(
269 269
 				'error_id' => 'invalid_country',
270
-				'error_message' => __( 'Please select your billing country', 'invoicing' )
270
+				'error_message' => __('Please select your billing country', 'invoicing')
271 271
 			);
272 272
 		}
273 273
     }
274 274
 
275
-    return apply_filters( 'wpinv_checkout_required_fields', $required_fields );
275
+    return apply_filters('wpinv_checkout_required_fields', $required_fields);
276 276
 }
277 277
 
278 278
 function wpinv_is_ssl_enforced() {
279
-    $ssl_enforced = wpinv_get_option( 'enforce_ssl', false );
280
-    return (bool) apply_filters( 'wpinv_is_ssl_enforced', $ssl_enforced );
279
+    $ssl_enforced = wpinv_get_option('enforce_ssl', false);
280
+    return (bool) apply_filters('wpinv_is_ssl_enforced', $ssl_enforced);
281 281
 }
282 282
 
283 283
 function wpinv_schedule_event_twicedaily() {
284 284
     wpinv_email_payment_reminders();
285 285
 }
286
-add_action( 'wpinv_register_schedule_event_daily', 'wpinv_schedule_event_twicedaily' );
286
+add_action('wpinv_register_schedule_event_daily', 'wpinv_schedule_event_twicedaily');
287 287
 
288 288
 function wpinv_require_login_to_checkout() {
289
-    $return = wpinv_get_option( 'login_to_checkout', false );
290
-    return (bool) apply_filters( 'wpinv_require_login_to_checkout', $return );
289
+    $return = wpinv_get_option('login_to_checkout', false);
290
+    return (bool) apply_filters('wpinv_require_login_to_checkout', $return);
291 291
 }
292 292
 
293
-function wpinv_sequential_number_active( $type = '' ) {
294
-    $check = apply_filters( 'wpinv_pre_check_sequential_number_active', null, $type );
295
-    if ( null !== $check ) {
293
+function wpinv_sequential_number_active($type = '') {
294
+    $check = apply_filters('wpinv_pre_check_sequential_number_active', null, $type);
295
+    if (null !== $check) {
296 296
         return $check;
297 297
     }
298 298
     
299
-    return wpinv_get_option( 'sequential_invoice_number' );
299
+    return wpinv_get_option('sequential_invoice_number');
300 300
 }
301 301
 
302
-function wpinv_switch_to_locale( $locale = NULL ) {
302
+function wpinv_switch_to_locale($locale = NULL) {
303 303
     global $invoicing, $wpi_switch_locale;
304 304
 
305
-    if ( ! empty( $invoicing ) && function_exists( 'switch_to_locale' ) ) {
306
-        $locale = empty( $locale ) ? get_locale() : $locale;
305
+    if (!empty($invoicing) && function_exists('switch_to_locale')) {
306
+        $locale = empty($locale) ? get_locale() : $locale;
307 307
 
308
-        switch_to_locale( $locale );
308
+        switch_to_locale($locale);
309 309
 
310 310
         $wpi_switch_locale = $locale;
311 311
 
312
-        add_filter( 'plugin_locale', 'get_locale' );
312
+        add_filter('plugin_locale', 'get_locale');
313 313
 
314 314
         $invoicing->load_textdomain();
315 315
 
316
-        do_action( 'wpinv_switch_to_locale', $locale );
316
+        do_action('wpinv_switch_to_locale', $locale);
317 317
     }
318 318
 }
319 319
 
320 320
 function wpinv_restore_locale() {
321 321
     global $invoicing, $wpi_switch_locale;
322 322
     
323
-    if ( ! empty( $invoicing ) && function_exists( 'restore_previous_locale' ) && $wpi_switch_locale ) {
323
+    if (!empty($invoicing) && function_exists('restore_previous_locale') && $wpi_switch_locale) {
324 324
         restore_previous_locale();
325 325
 
326 326
         $wpi_switch_locale = NULL;
327 327
 
328
-        remove_filter( 'plugin_locale', 'get_locale' );
328
+        remove_filter('plugin_locale', 'get_locale');
329 329
 
330 330
         $invoicing->load_textdomain();
331 331
 
332
-        do_action( 'wpinv_restore_locale' );
332
+        do_action('wpinv_restore_locale');
333 333
     }
334 334
 }
335 335
 
@@ -337,26 +337,26 @@  discard block
 block discarded – undo
337 337
  * Returns the default form's id.
338 338
  */
339 339
 function wpinv_get_default_payment_form() {
340
-    $form = get_option( 'wpinv_default_payment_form' );
340
+    $form = get_option('wpinv_default_payment_form');
341 341
 
342
-    if ( empty( $form ) || 'publish' != get_post_status( $form ) ) {
342
+    if (empty($form) || 'publish' != get_post_status($form)) {
343 343
         $form = wp_insert_post(
344 344
             array(
345 345
                 'post_type'   => 'wpi_payment_form',
346
-                'post_title'  => __( 'Checkout (default)', 'invoicing' ),
346
+                'post_title'  => __('Checkout (default)', 'invoicing'),
347 347
                 'post_status' => 'publish',
348 348
                 'meta_input'  => array(
349
-                    'wpinv_form_elements' => wpinv_get_data( 'default-payment-form' ),
349
+                    'wpinv_form_elements' => wpinv_get_data('default-payment-form'),
350 350
                     'wpinv_form_items'    => array(),
351 351
                 )
352 352
             )
353 353
         );
354 354
 
355
-        update_option( 'wpinv_default_payment_form', $form );
355
+        update_option('wpinv_default_payment_form', $form);
356 356
     }
357 357
 
358 358
     // WPML support.
359
-    $form = apply_filters( 'wpml_object_id', $form, 'wpi_payment_form', TRUE  );
359
+    $form = apply_filters('wpml_object_id', $form, 'wpi_payment_form', TRUE);
360 360
     return $form;
361 361
 }
362 362
 
@@ -365,19 +365,19 @@  discard block
 block discarded – undo
365 365
  * 
366 366
  * @param int $payment_form
367 367
  */
368
-function getpaid_get_payment_form_elements( $payment_form ) {
368
+function getpaid_get_payment_form_elements($payment_form) {
369 369
 
370
-    if ( empty( $payment_form ) ) {
371
-        return wpinv_get_data( 'sample-payment-form' );
370
+    if (empty($payment_form)) {
371
+        return wpinv_get_data('sample-payment-form');
372 372
     }
373 373
 
374
-    $form_elements = get_post_meta( $payment_form, 'wpinv_form_elements', true );
374
+    $form_elements = get_post_meta($payment_form, 'wpinv_form_elements', true);
375 375
 
376
-    if ( is_array( $form_elements ) ) {
376
+    if (is_array($form_elements)) {
377 377
         return $form_elements;
378 378
     }
379 379
 
380
-    return wpinv_get_data( 'sample-payment-form' );
380
+    return wpinv_get_data('sample-payment-form');
381 381
 
382 382
 }
383 383
 
@@ -386,21 +386,21 @@  discard block
 block discarded – undo
386 386
  * 
387 387
  * @param int $payment_form
388 388
  */
389
-function gepaid_get_form_items( $id ) {
390
-    $form = new GetPaid_Payment_Form( $id );
389
+function gepaid_get_form_items($id) {
390
+    $form = new GetPaid_Payment_Form($id);
391 391
 
392 392
     // Is this a default form?
393
-    if ( $form->is_default() ) {
393
+    if ($form->is_default()) {
394 394
         return array();
395 395
     }
396 396
 
397
-    return $form->get_items( 'view', 'arrays' );
397
+    return $form->get_items('view', 'arrays');
398 398
 }
399 399
 
400 400
 /**
401 401
  * Trims each line in a paragraph.
402 402
  * 
403 403
  */
404
-function gepaid_trim_lines( $content ) {
405
-    return implode( "\n", array_map( 'trim', explode( "\n", $content ) ) );
404
+function gepaid_trim_lines($content) {
405
+    return implode("\n", array_map('trim', explode("\n", $content)));
406 406
 }
Please login to merge, or discard this patch.