Passed
Pull Request — master (#481)
by Patrik
04:37
created
templates/payment-forms/cart.php 1 patch
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -7,31 +7,31 @@  discard block
 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
 // Cart table columns.
13 13
 $columns = array(
14
-    'name'     => __( 'Item', 'invoicing' ),
15
-    'price'    => __( 'Price', 'invoicing' ),
16
-    'quantity' => __( 'Quantity', 'invoicing' ),
17
-    'subtotal' => __( 'Subtotal', 'invoicing' ),
14
+    'name'     => __('Item', 'invoicing'),
15
+    'price'    => __('Price', 'invoicing'),
16
+    'quantity' => __('Quantity', 'invoicing'),
17
+    'subtotal' => __('Subtotal', 'invoicing'),
18 18
 );
19 19
 
20
-if ( ! empty( $form->invoice ) ) {
21
-    $columns = getpaid_invoice_item_columns( $form->invoice );
20
+if (!empty($form->invoice)) {
21
+    $columns = getpaid_invoice_item_columns($form->invoice);
22 22
 }
23 23
 
24
-$columns = apply_filters( 'getpaid_payment_form_cart_table_columns', $columns, $form );
24
+$columns = apply_filters('getpaid_payment_form_cart_table_columns', $columns, $form);
25 25
 
26
-do_action( 'getpaid_before_payment_form_cart', $form );
26
+do_action('getpaid_before_payment_form_cart', $form);
27 27
 
28 28
 ?>
29 29
     <div class="getpaid-payment-form-items-cart border form-group">
30 30
         <div class="getpaid-payment-form-items-cart-header border-bottom py-2 px-3 font-weight-bold bg-light">
31 31
             <div class="form-row">
32
-            <?php foreach ( $columns as $key => $label ) : ?>
33
-                <div class="<?php echo 'name' == $key ? 'col-12 col-sm-5' : 'col-12 col-sm' ?> getpaid-form-cart-item-<?php echo esc_attr( $key ); ?>">
34
-                    <?php echo sanitize_text_field( $label ); ?>
32
+            <?php foreach ($columns as $key => $label) : ?>
33
+                <div class="<?php echo 'name' == $key ? 'col-12 col-sm-5' : 'col-12 col-sm' ?> getpaid-form-cart-item-<?php echo esc_attr($key); ?>">
34
+                    <?php echo sanitize_text_field($label); ?>
35 35
                 </div>
36 36
             <?php endforeach; ?>
37 37
             </div>
@@ -39,16 +39,16 @@  discard block
 block discarded – undo
39 39
         <?php
40 40
 
41 41
             // Display the item totals.
42
-            foreach ( $form->get_items() as $item ) {
43
-                wpinv_get_template( 'payment-forms/cart-item.php', compact( 'form', 'item', 'columns' ) );
42
+            foreach ($form->get_items() as $item) {
43
+                wpinv_get_template('payment-forms/cart-item.php', compact('form', 'item', 'columns'));
44 44
             }
45 45
 
46 46
             // Display the cart totals.
47
-            wpinv_get_template( 'payment-forms/cart-totals.php', compact( 'form' ) );
47
+            wpinv_get_template('payment-forms/cart-totals.php', compact('form'));
48 48
 
49 49
         ?>
50 50
     </div>
51 51
 
52 52
 <?php 
53 53
 
54
-do_action( 'getpaid_after_payment_form_cart', $form );
54
+do_action('getpaid_after_payment_form_cart', $form);
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-bank-transfer-gateway.php 2 patches
Indentation   +175 added lines, -175 removed lines patch added patch discarded remove patch
@@ -13,30 +13,30 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'bank_transfer';
21 21
 
22
-	/**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
27
-	protected $supports = array( 'addons' );
22
+    /**
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27
+    protected $supports = array( 'addons' );
28 28
 
29 29
     /**
30
-	 * Payment method order.
31
-	 *
32
-	 * @var int
33
-	 */
34
-	public $order = 8;
30
+     * Payment method order.
31
+     *
32
+     * @var int
33
+     */
34
+    public $order = 8;
35 35
 
36 36
     /**
37
-	 * Class constructor.
38
-	 */
39
-	public function __construct() {
37
+     * Class constructor.
38
+     */
39
+    public function __construct() {
40 40
         parent::__construct();
41 41
 
42 42
         $this->title                = __( 'Direct bank transfer', 'invoicing' );
@@ -44,23 +44,23 @@  discard block
 block discarded – undo
44 44
         $this->checkout_button_text = __( 'Proceed', 'invoicing' );
45 45
         $this->instructions         = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) );
46 46
 
47
-		add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
48
-		add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
49
-		add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
50
-		add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
47
+        add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
48
+        add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
49
+        add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
50
+        add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
51 51
 
52 52
     }
53 53
 
54 54
     /**
55
-	 * Process Payment.
56
-	 *
57
-	 *
58
-	 * @param WPInv_Invoice $invoice Invoice.
59
-	 * @param array $submission_data Posted checkout fields.
60
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
61
-	 * @return array
62
-	 */
63
-	public function process_payment( $invoice, $submission_data, $submission ) {
55
+     * Process Payment.
56
+     *
57
+     *
58
+     * @param WPInv_Invoice $invoice Invoice.
59
+     * @param array $submission_data Posted checkout fields.
60
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
61
+     * @return array
62
+     */
63
+    public function process_payment( $invoice, $submission_data, $submission ) {
64 64
 
65 65
         // Add a transaction id.
66 66
         $invoice->set_transaction_id( $invoice->generate_key('trans_') );
@@ -81,66 +81,66 @@  discard block
 block discarded – undo
81 81
     }
82 82
 
83 83
     /**
84
-	 * Output for the order received page.
85
-	 *
86
-	 * @param WPInv_Invoice $invoice Invoice.
87
-	 */
88
-	public function thankyou_page( $invoice ) {
84
+     * Output for the order received page.
85
+     *
86
+     * @param WPInv_Invoice $invoice Invoice.
87
+     */
88
+    public function thankyou_page( $invoice ) {
89 89
 
90 90
         if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
91 91
 
92
-			echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
92
+            echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
93 93
 
94 94
             if ( ! empty( $this->instructions ) ) {
95 95
                 echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) );
96
-			}
96
+            }
97 97
 
98
-			$this->bank_details( $invoice );
98
+            $this->bank_details( $invoice );
99 99
 
100
-			echo '</div>';
100
+            echo '</div>';
101 101
 
102 102
         }
103 103
 
104
-	}
104
+    }
105 105
 
106 106
     /**
107
-	 * Add content to the WPI emails.
108
-	 *
109
-	 * @param WPInv_Invoice $invoice Invoice.
110
-	 * @param string     $email_type Email format: plain text or HTML.
111
-	 * @param bool     $sent_to_admin Sent to admin.
112
-	 */
113
-	public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
107
+     * Add content to the WPI emails.
108
+     *
109
+     * @param WPInv_Invoice $invoice Invoice.
110
+     * @param string     $email_type Email format: plain text or HTML.
111
+     * @param bool     $sent_to_admin Sent to admin.
112
+     */
113
+    public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
114 114
 
115
-		if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
115
+        if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
116 116
 
117
-			echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
117
+            echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
118 118
 
119
-			if ( $this->instructions ) {
120
-				echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
119
+            if ( $this->instructions ) {
120
+                echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
121 121
             }
122 122
 
123
-			$this->bank_details( $invoice );
123
+            $this->bank_details( $invoice );
124 124
 			
125
-			echo '</div>';
125
+            echo '</div>';
126 126
 
127
-		}
127
+        }
128 128
 
129 129
     }
130 130
     
131 131
     /**
132
-	 * Get bank details and place into a list format.
133
-	 *
134
-	 * @param WPInv_Invoice $invoice Invoice.
135
-	 */
136
-	protected function bank_details( $invoice ) {
132
+     * Get bank details and place into a list format.
133
+     *
134
+     * @param WPInv_Invoice $invoice Invoice.
135
+     */
136
+    protected function bank_details( $invoice ) {
137 137
 
138
-		// Get the invoice country and country $locale.
139
-		$country = $invoice->get_country();
140
-		$locale  = $this->get_country_locale();
138
+        // Get the invoice country and country $locale.
139
+        $country = $invoice->get_country();
140
+        $locale  = $this->get_country_locale();
141 141
 
142
-		// Get sortcode label in the $locale array and use appropriate one.
143
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
142
+        // Get sortcode label in the $locale array and use appropriate one.
143
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
144 144
 
145 145
         $bank_fields = array(
146 146
             'ac_name'     => __( 'Account Name', 'invoicing' ),
@@ -169,144 +169,144 @@  discard block
 block discarded – undo
169 169
             return;
170 170
         }
171 171
 
172
-		echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL;
172
+        echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL;
173 173
 
174
-		echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
174
+        echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
175 175
 
176
-		foreach ( $bank_info as $key => $data ) {
176
+        foreach ( $bank_info as $key => $data ) {
177 177
 
178
-			$key   = sanitize_html_class( $key );
179
-			$label = wp_kses_post( $data['label'] );
180
-			$value = wp_kses_post( wptexturize( $data['value'] ) );
178
+            $key   = sanitize_html_class( $key );
179
+            $label = wp_kses_post( $data['label'] );
180
+            $value = wp_kses_post( wptexturize( $data['value'] ) );
181 181
 
182
-			echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL;
183
-		}
182
+            echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL;
183
+        }
184 184
 
185
-		echo '</table>';
185
+        echo '</table>';
186 186
 
187 187
     }
188 188
     
189 189
     /**
190
-	 * Get country locale if localized.
191
-	 *
192
-	 * @return array
193
-	 */
194
-	public function get_country_locale() {
195
-
196
-		if ( empty( $this->locale ) ) {
197
-
198
-			// Locale information to be used - only those that are not 'Sort Code'.
199
-			$this->locale = apply_filters(
200
-				'getpaid_get_bank_transfer_locale',
201
-				array(
202
-					'AU' => array(
203
-						'sortcode' => array(
204
-							'label' => __( 'BSB', 'invoicing' ),
205
-						),
206
-					),
207
-					'CA' => array(
208
-						'sortcode' => array(
209
-							'label' => __( 'Bank transit number', 'invoicing' ),
210
-						),
211
-					),
212
-					'IN' => array(
213
-						'sortcode' => array(
214
-							'label' => __( 'IFSC', 'invoicing' ),
215
-						),
216
-					),
217
-					'IT' => array(
218
-						'sortcode' => array(
219
-							'label' => __( 'Branch sort', 'invoicing' ),
220
-						),
221
-					),
222
-					'NZ' => array(
223
-						'sortcode' => array(
224
-							'label' => __( 'Bank code', 'invoicing' ),
225
-						),
226
-					),
227
-					'SE' => array(
228
-						'sortcode' => array(
229
-							'label' => __( 'Bank code', 'invoicing' ),
230
-						),
231
-					),
232
-					'US' => array(
233
-						'sortcode' => array(
234
-							'label' => __( 'Routing number', 'invoicing' ),
235
-						),
236
-					),
237
-					'ZA' => array(
238
-						'sortcode' => array(
239
-							'label' => __( 'Branch code', 'invoicing' ),
240
-						),
241
-					),
242
-				)
243
-			);
244
-
245
-		}
246
-
247
-		return $this->locale;
248
-
249
-	}
250
-
251
-	/**
252
-	 * Filters the gateway settings.
253
-	 * 
254
-	 * @param array $admin_settings
255
-	 */
256
-	public function admin_settings( $admin_settings ) {
190
+     * Get country locale if localized.
191
+     *
192
+     * @return array
193
+     */
194
+    public function get_country_locale() {
195
+
196
+        if ( empty( $this->locale ) ) {
197
+
198
+            // Locale information to be used - only those that are not 'Sort Code'.
199
+            $this->locale = apply_filters(
200
+                'getpaid_get_bank_transfer_locale',
201
+                array(
202
+                    'AU' => array(
203
+                        'sortcode' => array(
204
+                            'label' => __( 'BSB', 'invoicing' ),
205
+                        ),
206
+                    ),
207
+                    'CA' => array(
208
+                        'sortcode' => array(
209
+                            'label' => __( 'Bank transit number', 'invoicing' ),
210
+                        ),
211
+                    ),
212
+                    'IN' => array(
213
+                        'sortcode' => array(
214
+                            'label' => __( 'IFSC', 'invoicing' ),
215
+                        ),
216
+                    ),
217
+                    'IT' => array(
218
+                        'sortcode' => array(
219
+                            'label' => __( 'Branch sort', 'invoicing' ),
220
+                        ),
221
+                    ),
222
+                    'NZ' => array(
223
+                        'sortcode' => array(
224
+                            'label' => __( 'Bank code', 'invoicing' ),
225
+                        ),
226
+                    ),
227
+                    'SE' => array(
228
+                        'sortcode' => array(
229
+                            'label' => __( 'Bank code', 'invoicing' ),
230
+                        ),
231
+                    ),
232
+                    'US' => array(
233
+                        'sortcode' => array(
234
+                            'label' => __( 'Routing number', 'invoicing' ),
235
+                        ),
236
+                    ),
237
+                    'ZA' => array(
238
+                        'sortcode' => array(
239
+                            'label' => __( 'Branch code', 'invoicing' ),
240
+                        ),
241
+                    ),
242
+                )
243
+            );
244
+
245
+        }
246
+
247
+        return $this->locale;
248
+
249
+    }
250
+
251
+    /**
252
+     * Filters the gateway settings.
253
+     * 
254
+     * @param array $admin_settings
255
+     */
256
+    public function admin_settings( $admin_settings ) {
257 257
 
258 258
         $admin_settings['bank_transfer_desc']['std']    = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' );
259
-		$admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
259
+        $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
260 260
 
261
-		$locale  = $this->get_country_locale();
261
+        $locale  = $this->get_country_locale();
262 262
 
263
-		// Get sortcode label in the $locale array and use appropriate one.
264
-		$country  = wpinv_default_billing_country();
265
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
263
+        // Get sortcode label in the $locale array and use appropriate one.
264
+        $country  = wpinv_default_billing_country();
265
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
266 266
 
267
-		$admin_settings['bank_transfer_ac_name'] = array(
267
+        $admin_settings['bank_transfer_ac_name'] = array(
268 268
             'type' => 'text',
269 269
             'id'   => 'bank_transfer_ac_name',
270 270
             'name' => __( 'Account Name', 'invoicing' ),
271
-		);
271
+        );
272 272
 		
273
-		$admin_settings['bank_transfer_ac_no'] = array(
273
+        $admin_settings['bank_transfer_ac_no'] = array(
274 274
             'type' => 'text',
275 275
             'id'   => 'bank_transfer_ac_no',
276 276
             'name' => __( 'Account Number', 'invoicing' ),
277
-		);
277
+        );
278 278
 		
279
-		$admin_settings['bank_transfer_bank_name'] = array(
279
+        $admin_settings['bank_transfer_bank_name'] = array(
280 280
             'type' => 'text',
281 281
             'id'   => 'bank_transfer_bank_name',
282 282
             'name' => __( 'Bank Name', 'invoicing' ),
283
-		);
283
+        );
284 284
 
285
-		$admin_settings['bank_transfer_ifsc'] = array(
285
+        $admin_settings['bank_transfer_ifsc'] = array(
286 286
             'type' => 'text',
287 287
             'id'   => 'bank_transfer_ifsc',
288 288
             'name' => __( 'IFSC Code', 'invoicing' ),
289
-		);
289
+        );
290 290
 
291
-		$admin_settings['bank_transfer_iban'] = array(
291
+        $admin_settings['bank_transfer_iban'] = array(
292 292
             'type' => 'text',
293 293
             'id'   => 'bank_transfer_iban',
294 294
             'name' => __( 'IBAN', 'invoicing' ),
295
-		);
295
+        );
296 296
 
297
-		$admin_settings['bank_transfer_bic'] = array(
297
+        $admin_settings['bank_transfer_bic'] = array(
298 298
             'type' => 'text',
299 299
             'id'   => 'bank_transfer_bic',
300 300
             'name' => __( 'BIC/Swift Code', 'invoicing' ),
301
-		);
301
+        );
302 302
 		
303
-		$admin_settings['bank_transfer_sort_code'] = array(
304
-			'type' => 'text',
305
-			'id'   => 'bank_transfer_sort_code',
306
-			'name' => $sortcode,
307
-		);
303
+        $admin_settings['bank_transfer_sort_code'] = array(
304
+            'type' => 'text',
305
+            'id'   => 'bank_transfer_sort_code',
306
+            'name' => $sortcode,
307
+        );
308 308
 
309
-		$admin_settings['bank_transfer_info'] = array(
309
+        $admin_settings['bank_transfer_info'] = array(
310 310
             'id'   => 'bank_transfer_info',
311 311
             'name' => __( 'Instructions', 'invoicing' ),
312 312
             'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
@@ -316,17 +316,17 @@  discard block
 block discarded – undo
316 316
             'rows' => 5
317 317
         );
318 318
 
319
-		return $admin_settings;
320
-	}
319
+        return $admin_settings;
320
+    }
321 321
 
322
-	/**
323
-	 * Processes invoice addons.
324
-	 *
325
-	 * @param WPInv_Invoice $invoice
326
-	 * @param GetPaid_Form_Item[] $items
327
-	 * @return WPInv_Invoice
328
-	 */
329
-	public function process_addons( $invoice, $items ) {
322
+    /**
323
+     * Processes invoice addons.
324
+     *
325
+     * @param WPInv_Invoice $invoice
326
+     * @param GetPaid_Form_Item[] $items
327
+     * @return WPInv_Invoice
328
+     */
329
+    public function process_addons( $invoice, $items ) {
330 330
 
331 331
         foreach ( $items as $item ) {
332 332
             $invoice->add_item( $item );
@@ -334,6 +334,6 @@  discard block
 block discarded – undo
334 334
 
335 335
         $invoice->recalculate_total();
336 336
         $invoice->save();
337
-	}
337
+    }
338 338
 
339 339
 }
Please login to merge, or discard this patch.
Spacing   +71 added lines, -71 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
  * Bank transfer Payment Gateway class.
@@ -24,7 +24,7 @@  discard block
 block discarded – undo
24 24
 	 *
25 25
 	 * @var array
26 26
 	 */
27
-	protected $supports = array( 'addons' );
27
+	protected $supports = array('addons');
28 28
 
29 29
     /**
30 30
 	 * Payment method order.
@@ -39,15 +39,15 @@  discard block
 block discarded – undo
39 39
 	public function __construct() {
40 40
         parent::__construct();
41 41
 
42
-        $this->title                = __( 'Direct bank transfer', 'invoicing' );
43
-        $this->method_title         = __( 'Bank transfer', 'invoicing' );
44
-        $this->checkout_button_text = __( 'Proceed', 'invoicing' );
45
-        $this->instructions         = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) );
42
+        $this->title                = __('Direct bank transfer', 'invoicing');
43
+        $this->method_title         = __('Bank transfer', 'invoicing');
44
+        $this->checkout_button_text = __('Proceed', 'invoicing');
45
+        $this->instructions         = apply_filters('wpinv_bank_instructions', $this->get_option('info'));
46 46
 
47
-		add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
48
-		add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
49
-		add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
50
-		add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
47
+		add_action('wpinv_receipt_end', array($this, 'thankyou_page'));
48
+		add_action('getpaid_invoice_line_items', array($this, 'thankyou_page'), 40);
49
+		add_action('wpinv_pdf_content_billing', array($this, 'thankyou_page'), 11);
50
+		add_action('wpinv_email_invoice_details', array($this, 'email_instructions'), 10, 3);
51 51
 
52 52
     }
53 53
 
@@ -60,23 +60,23 @@  discard block
 block discarded – undo
60 60
 	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
61 61
 	 * @return array
62 62
 	 */
63
-	public function process_payment( $invoice, $submission_data, $submission ) {
63
+	public function process_payment($invoice, $submission_data, $submission) {
64 64
 
65 65
         // Add a transaction id.
66
-        $invoice->set_transaction_id( $invoice->generate_key('trans_') );
66
+        $invoice->set_transaction_id($invoice->generate_key('trans_'));
67 67
 
68 68
         // Set it as pending payment.
69
-        if ( ! $invoice->needs_payment() ) {
69
+        if (!$invoice->needs_payment()) {
70 70
             $invoice->mark_paid();
71
-        } else if ( ! $invoice->is_paid() ) {
72
-            $invoice->set_status( 'wpi-onhold' );
71
+        } else if (!$invoice->is_paid()) {
72
+            $invoice->set_status('wpi-onhold');
73 73
         }
74 74
 
75 75
         // Save it.
76 76
         $invoice->save();
77 77
 
78 78
         // Send to the success page.
79
-        wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) );
79
+        wpinv_send_to_success_page(array('invoice_key' => $invoice->get_key()));
80 80
 
81 81
     }
82 82
 
@@ -85,17 +85,17 @@  discard block
 block discarded – undo
85 85
 	 *
86 86
 	 * @param WPInv_Invoice $invoice Invoice.
87 87
 	 */
88
-	public function thankyou_page( $invoice ) {
88
+	public function thankyou_page($invoice) {
89 89
 
90
-        if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
90
+        if ('bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) {
91 91
 
92 92
 			echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
93 93
 
94
-            if ( ! empty( $this->instructions ) ) {
95
-                echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) );
94
+            if (!empty($this->instructions)) {
95
+                echo wp_kses_post(wpautop(wptexturize($this->instructions)));
96 96
 			}
97 97
 
98
-			$this->bank_details( $invoice );
98
+			$this->bank_details($invoice);
99 99
 
100 100
 			echo '</div>';
101 101
 
@@ -110,17 +110,17 @@  discard block
 block discarded – undo
110 110
 	 * @param string     $email_type Email format: plain text or HTML.
111 111
 	 * @param bool     $sent_to_admin Sent to admin.
112 112
 	 */
113
-	public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
113
+	public function email_instructions($invoice, $email_type, $sent_to_admin) {
114 114
 
115
-		if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
115
+		if (!$sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) {
116 116
 
117 117
 			echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
118 118
 
119
-			if ( $this->instructions ) {
120
-				echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
119
+			if ($this->instructions) {
120
+				echo wp_kses_post(wpautop(wptexturize($this->instructions)) . PHP_EOL);
121 121
             }
122 122
 
123
-			$this->bank_details( $invoice );
123
+			$this->bank_details($invoice);
124 124
 			
125 125
 			echo '</div>';
126 126
 
@@ -133,51 +133,51 @@  discard block
 block discarded – undo
133 133
 	 *
134 134
 	 * @param WPInv_Invoice $invoice Invoice.
135 135
 	 */
136
-	protected function bank_details( $invoice ) {
136
+	protected function bank_details($invoice) {
137 137
 
138 138
 		// Get the invoice country and country $locale.
139 139
 		$country = $invoice->get_country();
140 140
 		$locale  = $this->get_country_locale();
141 141
 
142 142
 		// Get sortcode label in the $locale array and use appropriate one.
143
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
143
+		$sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing');
144 144
 
145 145
         $bank_fields = array(
146
-            'ac_name'     => __( 'Account Name', 'invoicing' ),
147
-            'ac_no'       => __( 'Account Number', 'invoicing' ),
148
-            'bank_name'   => __( 'Bank Name', 'invoicing' ),
149
-            'ifsc'        => __( 'IFSC code', 'invoicing' ),
150
-            'iban'        => __( 'IBAN', 'invoicing' ),
151
-            'bic'         => __( 'BIC/Swift code', 'invoicing' ),
146
+            'ac_name'     => __('Account Name', 'invoicing'),
147
+            'ac_no'       => __('Account Number', 'invoicing'),
148
+            'bank_name'   => __('Bank Name', 'invoicing'),
149
+            'ifsc'        => __('IFSC code', 'invoicing'),
150
+            'iban'        => __('IBAN', 'invoicing'),
151
+            'bic'         => __('BIC/Swift code', 'invoicing'),
152 152
             'sort_code'   => $sortcode,
153 153
         );
154 154
 
155 155
         $bank_info = array();
156 156
 
157
-        foreach ( $bank_fields as $field => $label ) {
158
-            $value = $this->get_option( $field );
157
+        foreach ($bank_fields as $field => $label) {
158
+            $value = $this->get_option($field);
159 159
 
160
-            if ( ! empty( $value ) ) {
161
-                $bank_info[$field] = array( 'label' => $label, 'value' => $value );
160
+            if (!empty($value)) {
161
+                $bank_info[$field] = array('label' => $label, 'value' => $value);
162 162
             }
163 163
 
164 164
         }
165 165
 
166
-        $bank_info = apply_filters( 'wpinv_bank_info', $bank_info );
166
+        $bank_info = apply_filters('wpinv_bank_info', $bank_info);
167 167
 
168
-        if ( empty( $bank_info ) ) {
168
+        if (empty($bank_info)) {
169 169
             return;
170 170
         }
171 171
 
172
-		echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL;
172
+		echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters('wpinv_receipt_bank_details_title', __('Bank Details', 'invoicing')) . '</h3>' . PHP_EOL;
173 173
 
174 174
 		echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
175 175
 
176
-		foreach ( $bank_info as $key => $data ) {
176
+		foreach ($bank_info as $key => $data) {
177 177
 
178
-			$key   = sanitize_html_class( $key );
179
-			$label = wp_kses_post( $data['label'] );
180
-			$value = wp_kses_post( wptexturize( $data['value'] ) );
178
+			$key   = sanitize_html_class($key);
179
+			$label = wp_kses_post($data['label']);
180
+			$value = wp_kses_post(wptexturize($data['value']));
181 181
 
182 182
 			echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL;
183 183
 		}
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
 	 */
194 194
 	public function get_country_locale() {
195 195
 
196
-		if ( empty( $this->locale ) ) {
196
+		if (empty($this->locale)) {
197 197
 
198 198
 			// Locale information to be used - only those that are not 'Sort Code'.
199 199
 			$this->locale = apply_filters(
@@ -201,42 +201,42 @@  discard block
 block discarded – undo
201 201
 				array(
202 202
 					'AU' => array(
203 203
 						'sortcode' => array(
204
-							'label' => __( 'BSB', 'invoicing' ),
204
+							'label' => __('BSB', 'invoicing'),
205 205
 						),
206 206
 					),
207 207
 					'CA' => array(
208 208
 						'sortcode' => array(
209
-							'label' => __( 'Bank transit number', 'invoicing' ),
209
+							'label' => __('Bank transit number', 'invoicing'),
210 210
 						),
211 211
 					),
212 212
 					'IN' => array(
213 213
 						'sortcode' => array(
214
-							'label' => __( 'IFSC', 'invoicing' ),
214
+							'label' => __('IFSC', 'invoicing'),
215 215
 						),
216 216
 					),
217 217
 					'IT' => array(
218 218
 						'sortcode' => array(
219
-							'label' => __( 'Branch sort', 'invoicing' ),
219
+							'label' => __('Branch sort', 'invoicing'),
220 220
 						),
221 221
 					),
222 222
 					'NZ' => array(
223 223
 						'sortcode' => array(
224
-							'label' => __( 'Bank code', 'invoicing' ),
224
+							'label' => __('Bank code', 'invoicing'),
225 225
 						),
226 226
 					),
227 227
 					'SE' => array(
228 228
 						'sortcode' => array(
229
-							'label' => __( 'Bank code', 'invoicing' ),
229
+							'label' => __('Bank code', 'invoicing'),
230 230
 						),
231 231
 					),
232 232
 					'US' => array(
233 233
 						'sortcode' => array(
234
-							'label' => __( 'Routing number', 'invoicing' ),
234
+							'label' => __('Routing number', 'invoicing'),
235 235
 						),
236 236
 					),
237 237
 					'ZA' => array(
238 238
 						'sortcode' => array(
239
-							'label' => __( 'Branch code', 'invoicing' ),
239
+							'label' => __('Branch code', 'invoicing'),
240 240
 						),
241 241
 					),
242 242
 				)
@@ -253,51 +253,51 @@  discard block
 block discarded – undo
253 253
 	 * 
254 254
 	 * @param array $admin_settings
255 255
 	 */
256
-	public function admin_settings( $admin_settings ) {
256
+	public function admin_settings($admin_settings) {
257 257
 
258
-        $admin_settings['bank_transfer_desc']['std']    = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' );
259
-		$admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
258
+        $admin_settings['bank_transfer_desc']['std'] = __("Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing');
259
+		$admin_settings['bank_transfer_active']['desc'] = __('Enable bank transfer', 'invoicing');
260 260
 
261
-		$locale  = $this->get_country_locale();
261
+		$locale = $this->get_country_locale();
262 262
 
263 263
 		// Get sortcode label in the $locale array and use appropriate one.
264 264
 		$country  = wpinv_default_billing_country();
265
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
265
+		$sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing');
266 266
 
267 267
 		$admin_settings['bank_transfer_ac_name'] = array(
268 268
             'type' => 'text',
269 269
             'id'   => 'bank_transfer_ac_name',
270
-            'name' => __( 'Account Name', 'invoicing' ),
270
+            'name' => __('Account Name', 'invoicing'),
271 271
 		);
272 272
 		
273 273
 		$admin_settings['bank_transfer_ac_no'] = array(
274 274
             'type' => 'text',
275 275
             'id'   => 'bank_transfer_ac_no',
276
-            'name' => __( 'Account Number', 'invoicing' ),
276
+            'name' => __('Account Number', 'invoicing'),
277 277
 		);
278 278
 		
279 279
 		$admin_settings['bank_transfer_bank_name'] = array(
280 280
             'type' => 'text',
281 281
             'id'   => 'bank_transfer_bank_name',
282
-            'name' => __( 'Bank Name', 'invoicing' ),
282
+            'name' => __('Bank Name', 'invoicing'),
283 283
 		);
284 284
 
285 285
 		$admin_settings['bank_transfer_ifsc'] = array(
286 286
             'type' => 'text',
287 287
             'id'   => 'bank_transfer_ifsc',
288
-            'name' => __( 'IFSC Code', 'invoicing' ),
288
+            'name' => __('IFSC Code', 'invoicing'),
289 289
 		);
290 290
 
291 291
 		$admin_settings['bank_transfer_iban'] = array(
292 292
             'type' => 'text',
293 293
             'id'   => 'bank_transfer_iban',
294
-            'name' => __( 'IBAN', 'invoicing' ),
294
+            'name' => __('IBAN', 'invoicing'),
295 295
 		);
296 296
 
297 297
 		$admin_settings['bank_transfer_bic'] = array(
298 298
             'type' => 'text',
299 299
             'id'   => 'bank_transfer_bic',
300
-            'name' => __( 'BIC/Swift Code', 'invoicing' ),
300
+            'name' => __('BIC/Swift Code', 'invoicing'),
301 301
 		);
302 302
 		
303 303
 		$admin_settings['bank_transfer_sort_code'] = array(
@@ -308,10 +308,10 @@  discard block
 block discarded – undo
308 308
 
309 309
 		$admin_settings['bank_transfer_info'] = array(
310 310
             'id'   => 'bank_transfer_info',
311
-            'name' => __( 'Instructions', 'invoicing' ),
312
-            'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
311
+            'name' => __('Instructions', 'invoicing'),
312
+            'desc' => __('Instructions that will be added to the thank you page and emails.', 'invoicing'),
313 313
             'type' => 'textarea',
314
-            'std'  => __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ),
314
+            'std'  => __("Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing'),
315 315
             'cols' => 50,
316 316
             'rows' => 5
317 317
         );
@@ -326,10 +326,10 @@  discard block
 block discarded – undo
326 326
 	 * @param GetPaid_Form_Item[] $items
327 327
 	 * @return WPInv_Invoice
328 328
 	 */
329
-	public function process_addons( $invoice, $items ) {
329
+	public function process_addons($invoice, $items) {
330 330
 
331
-        foreach ( $items as $item ) {
332
-            $invoice->add_item( $item );
331
+        foreach ($items as $item) {
332
+            $invoice->add_item($item);
333 333
         }
334 334
 
335 335
         $invoice->recalculate_total();
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-settings-controller.php 2 patches
Indentation   +749 added lines, -749 removed lines patch added patch discarded remove patch
@@ -18,758 +18,758 @@
 block discarded – undo
18 18
  */
19 19
 class GetPaid_REST_Settings_Controller extends GetPaid_REST_Controller {
20 20
 
21
-	/**
22
-	 * An array of available settings.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $settings;
27
-
28
-	/**
29
-	 * Route base.
30
-	 *
31
-	 * @var string
32
-	 */
33
-	protected $rest_base = 'settings';
34
-
35
-	/**
36
-	 * Registers the routes for the objects of the controller.
37
-	 *
38
-	 * @since 2.0.0
39
-	 *
40
-	 * @see register_rest_route()
41
-	 */
42
-	public function register_namespace_routes( $namespace ) {
43
-
44
-		// List all registered tabs.
45
-		register_rest_route(
46
-			$namespace,
47
-			$this->rest_base,
48
-			array(
49
-				array(
50
-					'methods'             => WP_REST_Server::READABLE,
51
-					'callback'            => array( $this, 'get_tabs' ),
52
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
53
-				),
54
-				'schema' => '__return_empty_array',
55
-			)
56
-		);
57
-
58
-		// View/Update a single setting.
59
-		register_rest_route(
60
-			$namespace,
61
-			$this->rest_base . '/setting/(?P<id>[\w-]+)',
62
-			array(
63
-				'args'   => array(
64
-					'id'    => array(
65
-						'description' => __( 'Unique identifier for the setting.', 'invoicing' ),
66
-						'type'        => 'string',
67
-						'required'    => true,
68
-					),
69
-				),
70
-				array(
71
-					'methods'             => WP_REST_Server::READABLE,
72
-					'callback'            => array( $this, 'get_item' ),
73
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
74
-				),
75
-				array(
76
-					'methods'             => WP_REST_Server::EDITABLE,
77
-					'callback'            => array( $this, 'update_item' ),
78
-					'permission_callback' => array( $this, 'update_items_permissions_check' ),
79
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
80
-				),
81
-				'schema' => array( $this, 'get_public_item_schema' ),
82
-			)
83
-		);
84
-
85
-		// List registered sections for a given tab.
86
-		register_rest_route(
87
-			$namespace,
88
-			$this->rest_base . '/(?P<tab>[\w-]+)',
89
-			array(
90
-				'args'   => array(
91
-					'tab'    => array(
92
-						'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ),
93
-						'type'        => 'string',
94
-						'required'    => true,
95
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
96
-					),
97
-				),
98
-				array(
99
-					'methods'             => WP_REST_Server::READABLE,
100
-					'callback'            => array( $this, 'get_sections' ),
101
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
102
-				),
103
-				'schema' => '__return_empty_array',
104
-			)
105
-		);
106
-
107
-		// List all registered settings for a given tab.
108
-		register_rest_route(
109
-			$namespace,
110
-			$this->rest_base . '/(?P<tab>[\w-]+)/(?P<section>[\w-]+)',
111
-			array(
112
-				'args'   => array(
113
-					'tab'    => array(
114
-						'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ),
115
-						'type'        => 'string',
116
-						'required'    => true,
117
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
118
-					),
119
-					'section'    => array(
120
-						'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ),
121
-						'type'        => 'string',
122
-						'required'    => true,
123
-					),
124
-				),
125
-				array(
126
-					'methods'             => WP_REST_Server::READABLE,
127
-					'callback'            => array( $this, 'get_items' ),
128
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
129
-				),
130
-				'schema' => array( $this, 'get_public_item_schema' ),
131
-			)
132
-		);
133
-
134
-		register_rest_route(
135
-			$namespace,
136
-			'/' . $this->rest_base . '/batch',
137
-			array(
138
-				'args'   => array(
139
-					'id'              => array(
140
-						'description' => __( 'Setting ID.', 'invoicing' ),
141
-						'type'        => 'string',
142
-					),
143
-				),
144
-				array(
145
-					'methods'             => WP_REST_Server::EDITABLE,
146
-					'callback'            => array( $this, 'batch_items' ),
147
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
148
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
149
-				),
150
-				'schema' => array( $this, 'get_public_batch_schema' ),
151
-			)
152
-		);
153
-
154
-	}
21
+    /**
22
+     * An array of available settings.
23
+     *
24
+     * @var string
25
+     */
26
+    protected $settings;
27
+
28
+    /**
29
+     * Route base.
30
+     *
31
+     * @var string
32
+     */
33
+    protected $rest_base = 'settings';
34
+
35
+    /**
36
+     * Registers the routes for the objects of the controller.
37
+     *
38
+     * @since 2.0.0
39
+     *
40
+     * @see register_rest_route()
41
+     */
42
+    public function register_namespace_routes( $namespace ) {
43
+
44
+        // List all registered tabs.
45
+        register_rest_route(
46
+            $namespace,
47
+            $this->rest_base,
48
+            array(
49
+                array(
50
+                    'methods'             => WP_REST_Server::READABLE,
51
+                    'callback'            => array( $this, 'get_tabs' ),
52
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
53
+                ),
54
+                'schema' => '__return_empty_array',
55
+            )
56
+        );
57
+
58
+        // View/Update a single setting.
59
+        register_rest_route(
60
+            $namespace,
61
+            $this->rest_base . '/setting/(?P<id>[\w-]+)',
62
+            array(
63
+                'args'   => array(
64
+                    'id'    => array(
65
+                        'description' => __( 'Unique identifier for the setting.', 'invoicing' ),
66
+                        'type'        => 'string',
67
+                        'required'    => true,
68
+                    ),
69
+                ),
70
+                array(
71
+                    'methods'             => WP_REST_Server::READABLE,
72
+                    'callback'            => array( $this, 'get_item' ),
73
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
74
+                ),
75
+                array(
76
+                    'methods'             => WP_REST_Server::EDITABLE,
77
+                    'callback'            => array( $this, 'update_item' ),
78
+                    'permission_callback' => array( $this, 'update_items_permissions_check' ),
79
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
80
+                ),
81
+                'schema' => array( $this, 'get_public_item_schema' ),
82
+            )
83
+        );
84
+
85
+        // List registered sections for a given tab.
86
+        register_rest_route(
87
+            $namespace,
88
+            $this->rest_base . '/(?P<tab>[\w-]+)',
89
+            array(
90
+                'args'   => array(
91
+                    'tab'    => array(
92
+                        'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ),
93
+                        'type'        => 'string',
94
+                        'required'    => true,
95
+                        'enum'        => array_keys( wpinv_get_settings_tabs() ),
96
+                    ),
97
+                ),
98
+                array(
99
+                    'methods'             => WP_REST_Server::READABLE,
100
+                    'callback'            => array( $this, 'get_sections' ),
101
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
102
+                ),
103
+                'schema' => '__return_empty_array',
104
+            )
105
+        );
106
+
107
+        // List all registered settings for a given tab.
108
+        register_rest_route(
109
+            $namespace,
110
+            $this->rest_base . '/(?P<tab>[\w-]+)/(?P<section>[\w-]+)',
111
+            array(
112
+                'args'   => array(
113
+                    'tab'    => array(
114
+                        'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ),
115
+                        'type'        => 'string',
116
+                        'required'    => true,
117
+                        'enum'        => array_keys( wpinv_get_settings_tabs() ),
118
+                    ),
119
+                    'section'    => array(
120
+                        'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ),
121
+                        'type'        => 'string',
122
+                        'required'    => true,
123
+                    ),
124
+                ),
125
+                array(
126
+                    'methods'             => WP_REST_Server::READABLE,
127
+                    'callback'            => array( $this, 'get_items' ),
128
+                    'permission_callback' => array( $this, 'get_items_permissions_check' ),
129
+                ),
130
+                'schema' => array( $this, 'get_public_item_schema' ),
131
+            )
132
+        );
133
+
134
+        register_rest_route(
135
+            $namespace,
136
+            '/' . $this->rest_base . '/batch',
137
+            array(
138
+                'args'   => array(
139
+                    'id'              => array(
140
+                        'description' => __( 'Setting ID.', 'invoicing' ),
141
+                        'type'        => 'string',
142
+                    ),
143
+                ),
144
+                array(
145
+                    'methods'             => WP_REST_Server::EDITABLE,
146
+                    'callback'            => array( $this, 'batch_items' ),
147
+                    'permission_callback' => array( $this, 'batch_items_permissions_check' ),
148
+                    'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
149
+                ),
150
+                'schema' => array( $this, 'get_public_batch_schema' ),
151
+            )
152
+        );
153
+
154
+    }
155 155
 	
156
-	/**
157
-	 * Return all settings.
158
-	 *
159
-	 * @since  2.0.0
160
-	 * @param  WP_REST_Request $request Request data.
161
-	 * @return WP_Error|WP_REST_Response
162
-	 */
163
-	public function get_items( $request ) {
164
-
165
-		$settings = $this->get_settings();
166
-
167
-		if ( ! isset( $settings[ $request['tab'] ] ) ) {
168
-			return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) );
169
-		}
170
-
171
-		if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) {
172
-			return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) );
173
-		}
174
-
175
-		$settings = $settings[ $request['tab'] ][ $request['section'] ];
176
-		$prepared = array();
177
-
178
-		foreach ( $settings as $setting ) {
179
-
180
-			$setting      = $this->sanitize_setting( $setting );
181
-			$setting_data = $this->prepare_item_for_response( $setting, $request );
182
-			$setting_data = $this->prepare_response_for_collection( $setting_data );
183
-
184
-			if ( $this->is_setting_type_valid( $setting['type'] ) ) {
185
-				$prepared[]   = $setting_data;
186
-			}
187
-
188
-		}
189
-
190
-		return rest_ensure_response( $prepared );
191
-	}
192
-
193
-	/**
194
-	 * Return a single setting.
195
-	 *
196
-	 * @since  2.0.0
197
-	 * @param  WP_REST_Request $request Request data.
198
-	 * @return WP_Error|WP_REST_Response
199
-	 */
200
-	public function get_item( $request ) {
201
-		$setting  = $this->get_setting( $request['id'] );
202
-
203
-		if ( is_wp_error( $setting ) ) {
204
-			return $setting;
205
-		}
206
-
207
-		$setting  = $this->sanitize_setting( $setting );
208
-		$response = $this->prepare_item_for_response( $setting, $request );
209
-		return rest_ensure_response( $response );
210
-	}
211
-
212
-	/**
213
-	 * Update a single setting.
214
-	 *
215
-	 * @since  2.0.0
216
-	 * @param  WP_REST_Request $request Request data.
217
-	 * @return WP_Error|WP_REST_Response
218
-	 */
219
-	public function update_item( $request ) {
220
-		$setting = $this->get_setting( $request['id'] );
221
-
222
-		if ( is_wp_error( $setting ) ) {
223
-			return $setting;
224
-		}
225
-
226
-		if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
227
-			$value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
228
-		} else {
229
-			$value = $this->validate_setting_text_field( $request['value'], $setting );
230
-		}
231
-
232
-		if ( is_wp_error( $value ) ) {
233
-			return $value;
234
-		}
235
-
236
-		wpinv_update_option( $request['id'], $value );
237
-		$setting['value'] = $value;
238
-		$setting          = $this->sanitize_setting( $setting );
239
-		$response         = $this->prepare_item_for_response( $setting, $request );
240
-
241
-		return rest_ensure_response( $response );
242
-	}
243
-
244
-	/**
245
-	 * Makes sure the current user has access to READ the settings APIs.
246
-	 *
247
-	 * @since  2.0.0
248
-	 * @param WP_REST_Request $request Full data about the request.
249
-	 * @return WP_Error|boolean
250
-	 */
251
-	public function get_items_permissions_check( $request ) {
252
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
253
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
254
-		}
255
-
256
-		return true;
257
-	}
258
-
259
-	/**
260
-	 * Makes sure the current user has access to WRITE the settings APIs.
261
-	 *
262
-	 * @since  2.0.0
263
-	 * @param WP_REST_Request $request Full data about the request.
264
-	 * @return WP_Error|boolean
265
-	 */
266
-	public function update_items_permissions_check( $request ) {
267
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
268
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
269
-		}
270
-
271
-		return true;
272
-	}
273
-
274
-	/**
275
-	 * Check if a given request has access batch create, update and delete items.
276
-	 *
277
-	 * @param  WP_REST_Request $request Full details about the request.
278
-	 *
279
-	 * @return boolean|WP_Error
280
-	 */
281
-	public function batch_items_permissions_check( $request ) {
282
-		return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
283
-	}
284
-
285
-	/**
286
-	 * Prepare links for the request.
287
-	 *
288
-	 * @param string $setting_id Setting ID.
289
-	 * @return array Links for the given setting.
290
-	 */
291
-	protected function prepare_links( $setting_id ) {
292
-
293
-		$links = array(
294
-			'self'       => array(
295
-				'href'   => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ),
296
-			),
297
-			'collection' => array(
298
-				'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
299
-			),
300
-		);
301
-
302
-		return $links;
303
-	}
304
-
305
-	/**
306
-	 * Prepare a settings object for serialization.
307
-	 *
308
-	 * @since  2.0.0
309
-	 * @param array           $item Setting object.
310
-	 * @param WP_REST_Request $request Request object.
311
-	 * @return WP_REST_Response $response Response data.
312
-	 */
313
-	public function prepare_item_for_response( $item, $request ) {
314
-		$context = empty( $request['context'] ) ? 'view' : $request['context'];
315
-		$data    = $this->add_additional_fields_to_object( $item, $request );
316
-		$data    = $this->filter_response_by_context( $data, $context );
317
-
318
-		$response = rest_ensure_response( $data );
319
-
320
-		$response->add_links( $this->prepare_links( $item['id'] ) );
321
-
322
-		return $response;
323
-	}
324
-
325
-	/**
326
-	 * Filters out bad values from the settings array/filter so we
327
-	 * only return known values via the API.
328
-	 *
329
-	 * @since 2.0.0
330
-	 * @param  array $setting Setting.
331
-	 * @return array
332
-	 */
333
-	public function filter_setting( $setting ) {
334
-		return array_intersect_key(
335
-			$setting,
336
-			array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) )
337
-		);
338
-	}
339
-
340
-	/**
341
-	 * Callback for allowed keys for each setting response.
342
-	 *
343
-	 * @param  string $key Key to check.
344
-	 * @return boolean
345
-	 */
346
-	public function allowed_setting_keys( $key ) {
347
-		return in_array( $key, array_keys( $this->setting_defaults() ), true );
348
-	}
349
-
350
-	/**
351
-	 * Returns default options for a setting. null means the field is required.
352
-	 *
353
-	 * @since  2.0.0
354
-	 * @return array
355
-	 */
356
-	protected function setting_defaults() {
357
-		return array(
358
-			'id'          => null,
359
-			'name'        => null,
360
-			'desc'        => '',
361
-			'options'     => array(),
362
-			'std'         => false,
363
-			'value'       => false,
364
-			'placeholder' => '',
365
-			'readonly'    => false,
366
-			'faux'        => false,
367
-			'section'     => 'main',
368
-			'tab'         => 'general',
369
-			'type'        => 'text',
370
-		);
371
-	}
372
-
373
-	/**
374
-	 * Sanitizes a setting's field.
375
-	 *
376
-	 * @param  array $setting The setting to sanitize.
377
-	 * @return array
378
-	 */
379
-	public function sanitize_setting( $setting ) {
156
+    /**
157
+     * Return all settings.
158
+     *
159
+     * @since  2.0.0
160
+     * @param  WP_REST_Request $request Request data.
161
+     * @return WP_Error|WP_REST_Response
162
+     */
163
+    public function get_items( $request ) {
164
+
165
+        $settings = $this->get_settings();
166
+
167
+        if ( ! isset( $settings[ $request['tab'] ] ) ) {
168
+            return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) );
169
+        }
170
+
171
+        if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) {
172
+            return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) );
173
+        }
174
+
175
+        $settings = $settings[ $request['tab'] ][ $request['section'] ];
176
+        $prepared = array();
177
+
178
+        foreach ( $settings as $setting ) {
179
+
180
+            $setting      = $this->sanitize_setting( $setting );
181
+            $setting_data = $this->prepare_item_for_response( $setting, $request );
182
+            $setting_data = $this->prepare_response_for_collection( $setting_data );
183
+
184
+            if ( $this->is_setting_type_valid( $setting['type'] ) ) {
185
+                $prepared[]   = $setting_data;
186
+            }
187
+
188
+        }
189
+
190
+        return rest_ensure_response( $prepared );
191
+    }
192
+
193
+    /**
194
+     * Return a single setting.
195
+     *
196
+     * @since  2.0.0
197
+     * @param  WP_REST_Request $request Request data.
198
+     * @return WP_Error|WP_REST_Response
199
+     */
200
+    public function get_item( $request ) {
201
+        $setting  = $this->get_setting( $request['id'] );
202
+
203
+        if ( is_wp_error( $setting ) ) {
204
+            return $setting;
205
+        }
206
+
207
+        $setting  = $this->sanitize_setting( $setting );
208
+        $response = $this->prepare_item_for_response( $setting, $request );
209
+        return rest_ensure_response( $response );
210
+    }
211
+
212
+    /**
213
+     * Update a single setting.
214
+     *
215
+     * @since  2.0.0
216
+     * @param  WP_REST_Request $request Request data.
217
+     * @return WP_Error|WP_REST_Response
218
+     */
219
+    public function update_item( $request ) {
220
+        $setting = $this->get_setting( $request['id'] );
221
+
222
+        if ( is_wp_error( $setting ) ) {
223
+            return $setting;
224
+        }
225
+
226
+        if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
227
+            $value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
228
+        } else {
229
+            $value = $this->validate_setting_text_field( $request['value'], $setting );
230
+        }
231
+
232
+        if ( is_wp_error( $value ) ) {
233
+            return $value;
234
+        }
235
+
236
+        wpinv_update_option( $request['id'], $value );
237
+        $setting['value'] = $value;
238
+        $setting          = $this->sanitize_setting( $setting );
239
+        $response         = $this->prepare_item_for_response( $setting, $request );
240
+
241
+        return rest_ensure_response( $response );
242
+    }
243
+
244
+    /**
245
+     * Makes sure the current user has access to READ the settings APIs.
246
+     *
247
+     * @since  2.0.0
248
+     * @param WP_REST_Request $request Full data about the request.
249
+     * @return WP_Error|boolean
250
+     */
251
+    public function get_items_permissions_check( $request ) {
252
+        if ( ! wpinv_current_user_can_manage_invoicing() ) {
253
+            return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
254
+        }
255
+
256
+        return true;
257
+    }
258
+
259
+    /**
260
+     * Makes sure the current user has access to WRITE the settings APIs.
261
+     *
262
+     * @since  2.0.0
263
+     * @param WP_REST_Request $request Full data about the request.
264
+     * @return WP_Error|boolean
265
+     */
266
+    public function update_items_permissions_check( $request ) {
267
+        if ( ! wpinv_current_user_can_manage_invoicing() ) {
268
+            return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
269
+        }
270
+
271
+        return true;
272
+    }
273
+
274
+    /**
275
+     * Check if a given request has access batch create, update and delete items.
276
+     *
277
+     * @param  WP_REST_Request $request Full details about the request.
278
+     *
279
+     * @return boolean|WP_Error
280
+     */
281
+    public function batch_items_permissions_check( $request ) {
282
+        return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
283
+    }
284
+
285
+    /**
286
+     * Prepare links for the request.
287
+     *
288
+     * @param string $setting_id Setting ID.
289
+     * @return array Links for the given setting.
290
+     */
291
+    protected function prepare_links( $setting_id ) {
292
+
293
+        $links = array(
294
+            'self'       => array(
295
+                'href'   => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ),
296
+            ),
297
+            'collection' => array(
298
+                'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
299
+            ),
300
+        );
301
+
302
+        return $links;
303
+    }
304
+
305
+    /**
306
+     * Prepare a settings object for serialization.
307
+     *
308
+     * @since  2.0.0
309
+     * @param array           $item Setting object.
310
+     * @param WP_REST_Request $request Request object.
311
+     * @return WP_REST_Response $response Response data.
312
+     */
313
+    public function prepare_item_for_response( $item, $request ) {
314
+        $context = empty( $request['context'] ) ? 'view' : $request['context'];
315
+        $data    = $this->add_additional_fields_to_object( $item, $request );
316
+        $data    = $this->filter_response_by_context( $data, $context );
317
+
318
+        $response = rest_ensure_response( $data );
319
+
320
+        $response->add_links( $this->prepare_links( $item['id'] ) );
321
+
322
+        return $response;
323
+    }
324
+
325
+    /**
326
+     * Filters out bad values from the settings array/filter so we
327
+     * only return known values via the API.
328
+     *
329
+     * @since 2.0.0
330
+     * @param  array $setting Setting.
331
+     * @return array
332
+     */
333
+    public function filter_setting( $setting ) {
334
+        return array_intersect_key(
335
+            $setting,
336
+            array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) )
337
+        );
338
+    }
339
+
340
+    /**
341
+     * Callback for allowed keys for each setting response.
342
+     *
343
+     * @param  string $key Key to check.
344
+     * @return boolean
345
+     */
346
+    public function allowed_setting_keys( $key ) {
347
+        return in_array( $key, array_keys( $this->setting_defaults() ), true );
348
+    }
349
+
350
+    /**
351
+     * Returns default options for a setting. null means the field is required.
352
+     *
353
+     * @since  2.0.0
354
+     * @return array
355
+     */
356
+    protected function setting_defaults() {
357
+        return array(
358
+            'id'          => null,
359
+            'name'        => null,
360
+            'desc'        => '',
361
+            'options'     => array(),
362
+            'std'         => false,
363
+            'value'       => false,
364
+            'placeholder' => '',
365
+            'readonly'    => false,
366
+            'faux'        => false,
367
+            'section'     => 'main',
368
+            'tab'         => 'general',
369
+            'type'        => 'text',
370
+        );
371
+    }
372
+
373
+    /**
374
+     * Sanitizes a setting's field.
375
+     *
376
+     * @param  array $setting The setting to sanitize.
377
+     * @return array
378
+     */
379
+    public function sanitize_setting( $setting ) {
380 380
 		
381
-		$setting          = wp_parse_args( $setting, $this->setting_defaults() );
382
-		$setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] );
383
-		return $this->filter_setting( $setting );
384
-
385
-	}
386
-
387
-	/**
388
-	 * Get setting data.
389
-	 *
390
-	 * @since  2.0.0
391
-	 * @param string $setting_id Setting ID.
392
-	 * @return array|WP_Error
393
-	 */
394
-	public function get_setting( $setting_id ) {
395
-
396
-		if ( empty( $setting_id ) ) {
397
-			return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
398
-		}
399
-
400
-		$settings  = $this->get_settings();
401
-
402
-		foreach ( $settings as $tabs ) {
403
-
404
-			foreach ( $tabs as $sections ) {
405
-
406
-				if ( isset( $sections[ $setting_id ] ) ) {
407
-					if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) {
408
-						return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) );
409
-					}
410
-
411
-					return $sections[ $setting_id ];
412
-				}
413
-
414
-			}
415
-
416
-		}
417
-
418
-		return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
419
-	}
420
-
421
-	/**
422
-	 * Get all tabs.
423
-	 *
424
-	 * @param  WP_REST_Request $request Request data.
425
-	 * @return array
426
-	 */
427
-	public function get_tabs( $request ) {
428
-		$tabs     = wpinv_get_settings_tabs();
429
-		$prepared = array();
430
-
431
-		foreach ( $tabs as $id => $tab ) {
432
-
433
-			$_request        = $request;
434
-			$_request['tab'] = sanitize_title( $id );
435
-			$data            = array(
436
-				'id'       => sanitize_title( $id ),
437
-				'label'    => sanitize_text_field( $tab ),
438
-				'sections' => $this->get_sections( $_request ),
439
-			);
440
-
441
-			$data     = $this->add_additional_fields_to_object( $data, $request );
442
-			$response = rest_ensure_response( $data );
443
-
444
-			if ( ! is_wp_error( $response ) ) {
445
-				$links = array(
446
-					'sections'   => array(
447
-						'href'   => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ),
448
-					),
449
-					'collection' => array(
450
-						'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
451
-					),
452
-				);
453
-				$response->add_links( $links );
454
-				$response = $this->prepare_response_for_collection( $response );
455
-			}
456
-
457
-			$prepared[] = $response;
458
-
459
-		}
460
-
461
-		return rest_ensure_response( $prepared );
462
-	}
463
-
464
-	/**
465
-	 * Get all sections.
466
-	 *
467
-	 * @param  WP_REST_Request $request Request data.
468
-	 * @return array
469
-	 */
470
-	public function get_sections( $request ) {
471
-
472
-		$tab      = sanitize_title( $request['tab'] );
473
-		$sections = wpinv_get_settings_tab_sections( $tab );
474
-		$prepared = array();
475
-
476
-		foreach ( $sections as $id => $section ) {
477
-
478
-			$data            = array(
479
-				'id'       => sanitize_title( $id ),
480
-				'label'    => sanitize_text_field( $section ),
481
-			);
482
-
483
-			$data     = $this->add_additional_fields_to_object( $data, $request );
484
-			$response = rest_ensure_response( $data );
485
-
486
-			if ( ! is_wp_error( $response ) ) {
487
-				$links = array(
488
-					'settings'   => array(
489
-						'href'   => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ),
490
-					),
491
-					'collection' => array(
492
-						'href'   => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ),
493
-					),
494
-					'tabs'       => array(
495
-						'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
496
-					),
497
-				);
498
-				$response->add_links( $links );
499
-				$response = $this->prepare_response_for_collection( $response );
500
-			}
501
-
502
-			$prepared[] = $response;
503
-
504
-		}
505
-
506
-		return rest_ensure_response( $prepared );
507
-	}
508
-
509
-	/**
510
-	 * Get all settings.
511
-	 *
512
-	 * @return array
513
-	 */
514
-	public function get_settings() {
515
-
516
-		if ( empty( $this->settings ) ) {
517
-			$this->settings = wpinv_get_registered_settings();
518
-		}
519
-
520
-		return $this->settings;
521
-
522
-	}
523
-
524
-	/**
525
-	 * Boolean for if a setting type is a valid supported setting type.
526
-	 *
527
-	 * @since  2.0.0
528
-	 * @param  string $type Type.
529
-	 * @return bool
530
-	 */
531
-	public function is_setting_type_valid( $type ) {
532
-
533
-		return in_array(
534
-			$type, array(
535
-				'text',         // Validates with validate_setting_text_field.
536
-				'email',        // Validates with validate_setting_text_field.
537
-				'number',       // Validates with validate_setting_text_field.
538
-				'color',        // Validates with validate_setting_text_field.
539
-				'password',     // Validates with validate_setting_text_field.
540
-				'textarea',     // Validates with validate_setting_textarea_field.
541
-				'select',       // Validates with validate_setting_select_field.
542
-				'multiselect',  // Validates with validate_setting_multiselect_field.
543
-				'radio',        // Validates with validate_setting_radio_field (-> validate_setting_select_field).
544
-				'checkbox',     // Validates with validate_setting_checkbox_field.
545
-				'header',       // Validates with validate_setting_text_field.
546
-			)
547
-		);
548
-
549
-	}
550
-
551
-	/**
552
-	 * Get the settings schema, conforming to JSON Schema.
553
-	 *
554
-	 * @return array
555
-	 */
556
-	public function get_item_schema() {
557
-
558
-		// Maybe retrieve the schema from cache.
559
-		if ( ! empty( $this->schema ) ) {
560
-			return $this->add_additional_fields_schema( $this->schema );
561
-		}
562
-
563
-		$schema = array(
564
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
565
-			'title'      => 'setting',
566
-			'type'       => 'object',
567
-			'properties' => array(
568
-				'id'          => array(
569
-					'description' => __( 'A unique identifier for the setting.', 'invoicing' ),
570
-					'type'        => 'string',
571
-					'arg_options' => array(
572
-						'sanitize_callback' => 'sanitize_title',
573
-					),
574
-					'context'     => array( 'view', 'edit' ),
575
-					'readonly'    => true,
576
-				),
577
-				'tab'         => array(
578
-					'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ),
579
-					'type'        => 'string',
580
-					'arg_options' => array(
581
-						'sanitize_callback' => 'sanitize_title',
582
-					),
583
-					'context'     => array( 'view', 'edit' ),
584
-					'readonly'    => true,
585
-				),
586
-				'section'     => array(
587
-					'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ),
588
-					'type'        => 'string',
589
-					'arg_options' => array(
590
-						'sanitize_callback' => 'sanitize_title',
591
-					),
592
-					'context'     => array( 'view', 'edit' ),
593
-					'readonly'    => true,
594
-				),
595
-				'name'       => array(
596
-					'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ),
597
-					'type'        => 'string',
598
-					'arg_options' => array(
599
-						'sanitize_callback' => 'sanitize_text_field',
600
-					),
601
-					'context'     => array( 'view', 'edit' ),
602
-					'readonly'    => true,
603
-				),
604
-				'desc'        => array(
605
-					'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ),
606
-					'type'        => 'string',
607
-					'context'     => array( 'view', 'edit' ),
608
-					'readonly'    => true,
609
-				),
610
-				'value'       => array(
611
-					'description' => __( 'The current value of this setting.', 'invoicing' ),
612
-					'type'        => 'mixed',
613
-					'context'     => array( 'view', 'edit' ),
614
-				),
615
-				'default'     => array(
616
-					'description' => __( 'Default value for the setting.', 'invoicing' ),
617
-					'type'        => 'mixed',
618
-					'context'     => array( 'view', 'edit' ),
619
-					'readonly'    => true,
620
-				),
621
-				'placeholder' => array(
622
-					'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ),
623
-					'type'        => 'string',
624
-					'arg_options' => array(
625
-						'sanitize_callback' => 'sanitize_text_field',
626
-					),
627
-					'context'     => array( 'view', 'edit' ),
628
-					'readonly'    => true,
629
-				),
630
-				'type'        => array(
631
-					'description' => __( 'Type of setting.', 'invoicing' ),
632
-					'type'        => 'string',
633
-					'arg_options' => array(
634
-						'sanitize_callback' => 'sanitize_text_field',
635
-					),
636
-					'context'     => array( 'view', 'edit' ),
637
-					'enum'        => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ),
638
-					'readonly'    => true,
639
-				),
640
-				'options'     => array(
641
-					'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ),
642
-					'type'        => 'object',
643
-					'context'     => array( 'view', 'edit' ),
644
-					'readonly'    => true,
645
-				),
646
-				'readonly'        => array(
647
-					'description' => __( 'Whether or not this setting is readonly', 'invoicing' ),
648
-					'type'        => 'string',
649
-					'context'     => array( 'view' ),
650
-					'readonly'    => true,
651
-				),
652
-				'faux'            => array(
653
-					'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ),
654
-					'type'        => 'string',
655
-					'context'     => array( 'view' ),
656
-					'readonly'    => true,
657
-				),
658
-			),
659
-		);
660
-
661
-		// Filters the settings schema for the REST API.
381
+        $setting          = wp_parse_args( $setting, $this->setting_defaults() );
382
+        $setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] );
383
+        return $this->filter_setting( $setting );
384
+
385
+    }
386
+
387
+    /**
388
+     * Get setting data.
389
+     *
390
+     * @since  2.0.0
391
+     * @param string $setting_id Setting ID.
392
+     * @return array|WP_Error
393
+     */
394
+    public function get_setting( $setting_id ) {
395
+
396
+        if ( empty( $setting_id ) ) {
397
+            return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
398
+        }
399
+
400
+        $settings  = $this->get_settings();
401
+
402
+        foreach ( $settings as $tabs ) {
403
+
404
+            foreach ( $tabs as $sections ) {
405
+
406
+                if ( isset( $sections[ $setting_id ] ) ) {
407
+                    if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) {
408
+                        return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) );
409
+                    }
410
+
411
+                    return $sections[ $setting_id ];
412
+                }
413
+
414
+            }
415
+
416
+        }
417
+
418
+        return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
419
+    }
420
+
421
+    /**
422
+     * Get all tabs.
423
+     *
424
+     * @param  WP_REST_Request $request Request data.
425
+     * @return array
426
+     */
427
+    public function get_tabs( $request ) {
428
+        $tabs     = wpinv_get_settings_tabs();
429
+        $prepared = array();
430
+
431
+        foreach ( $tabs as $id => $tab ) {
432
+
433
+            $_request        = $request;
434
+            $_request['tab'] = sanitize_title( $id );
435
+            $data            = array(
436
+                'id'       => sanitize_title( $id ),
437
+                'label'    => sanitize_text_field( $tab ),
438
+                'sections' => $this->get_sections( $_request ),
439
+            );
440
+
441
+            $data     = $this->add_additional_fields_to_object( $data, $request );
442
+            $response = rest_ensure_response( $data );
443
+
444
+            if ( ! is_wp_error( $response ) ) {
445
+                $links = array(
446
+                    'sections'   => array(
447
+                        'href'   => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ),
448
+                    ),
449
+                    'collection' => array(
450
+                        'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
451
+                    ),
452
+                );
453
+                $response->add_links( $links );
454
+                $response = $this->prepare_response_for_collection( $response );
455
+            }
456
+
457
+            $prepared[] = $response;
458
+
459
+        }
460
+
461
+        return rest_ensure_response( $prepared );
462
+    }
463
+
464
+    /**
465
+     * Get all sections.
466
+     *
467
+     * @param  WP_REST_Request $request Request data.
468
+     * @return array
469
+     */
470
+    public function get_sections( $request ) {
471
+
472
+        $tab      = sanitize_title( $request['tab'] );
473
+        $sections = wpinv_get_settings_tab_sections( $tab );
474
+        $prepared = array();
475
+
476
+        foreach ( $sections as $id => $section ) {
477
+
478
+            $data            = array(
479
+                'id'       => sanitize_title( $id ),
480
+                'label'    => sanitize_text_field( $section ),
481
+            );
482
+
483
+            $data     = $this->add_additional_fields_to_object( $data, $request );
484
+            $response = rest_ensure_response( $data );
485
+
486
+            if ( ! is_wp_error( $response ) ) {
487
+                $links = array(
488
+                    'settings'   => array(
489
+                        'href'   => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ),
490
+                    ),
491
+                    'collection' => array(
492
+                        'href'   => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ),
493
+                    ),
494
+                    'tabs'       => array(
495
+                        'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
496
+                    ),
497
+                );
498
+                $response->add_links( $links );
499
+                $response = $this->prepare_response_for_collection( $response );
500
+            }
501
+
502
+            $prepared[] = $response;
503
+
504
+        }
505
+
506
+        return rest_ensure_response( $prepared );
507
+    }
508
+
509
+    /**
510
+     * Get all settings.
511
+     *
512
+     * @return array
513
+     */
514
+    public function get_settings() {
515
+
516
+        if ( empty( $this->settings ) ) {
517
+            $this->settings = wpinv_get_registered_settings();
518
+        }
519
+
520
+        return $this->settings;
521
+
522
+    }
523
+
524
+    /**
525
+     * Boolean for if a setting type is a valid supported setting type.
526
+     *
527
+     * @since  2.0.0
528
+     * @param  string $type Type.
529
+     * @return bool
530
+     */
531
+    public function is_setting_type_valid( $type ) {
532
+
533
+        return in_array(
534
+            $type, array(
535
+                'text',         // Validates with validate_setting_text_field.
536
+                'email',        // Validates with validate_setting_text_field.
537
+                'number',       // Validates with validate_setting_text_field.
538
+                'color',        // Validates with validate_setting_text_field.
539
+                'password',     // Validates with validate_setting_text_field.
540
+                'textarea',     // Validates with validate_setting_textarea_field.
541
+                'select',       // Validates with validate_setting_select_field.
542
+                'multiselect',  // Validates with validate_setting_multiselect_field.
543
+                'radio',        // Validates with validate_setting_radio_field (-> validate_setting_select_field).
544
+                'checkbox',     // Validates with validate_setting_checkbox_field.
545
+                'header',       // Validates with validate_setting_text_field.
546
+            )
547
+        );
548
+
549
+    }
550
+
551
+    /**
552
+     * Get the settings schema, conforming to JSON Schema.
553
+     *
554
+     * @return array
555
+     */
556
+    public function get_item_schema() {
557
+
558
+        // Maybe retrieve the schema from cache.
559
+        if ( ! empty( $this->schema ) ) {
560
+            return $this->add_additional_fields_schema( $this->schema );
561
+        }
562
+
563
+        $schema = array(
564
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
565
+            'title'      => 'setting',
566
+            'type'       => 'object',
567
+            'properties' => array(
568
+                'id'          => array(
569
+                    'description' => __( 'A unique identifier for the setting.', 'invoicing' ),
570
+                    'type'        => 'string',
571
+                    'arg_options' => array(
572
+                        'sanitize_callback' => 'sanitize_title',
573
+                    ),
574
+                    'context'     => array( 'view', 'edit' ),
575
+                    'readonly'    => true,
576
+                ),
577
+                'tab'         => array(
578
+                    'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ),
579
+                    'type'        => 'string',
580
+                    'arg_options' => array(
581
+                        'sanitize_callback' => 'sanitize_title',
582
+                    ),
583
+                    'context'     => array( 'view', 'edit' ),
584
+                    'readonly'    => true,
585
+                ),
586
+                'section'     => array(
587
+                    'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ),
588
+                    'type'        => 'string',
589
+                    'arg_options' => array(
590
+                        'sanitize_callback' => 'sanitize_title',
591
+                    ),
592
+                    'context'     => array( 'view', 'edit' ),
593
+                    'readonly'    => true,
594
+                ),
595
+                'name'       => array(
596
+                    'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ),
597
+                    'type'        => 'string',
598
+                    'arg_options' => array(
599
+                        'sanitize_callback' => 'sanitize_text_field',
600
+                    ),
601
+                    'context'     => array( 'view', 'edit' ),
602
+                    'readonly'    => true,
603
+                ),
604
+                'desc'        => array(
605
+                    'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ),
606
+                    'type'        => 'string',
607
+                    'context'     => array( 'view', 'edit' ),
608
+                    'readonly'    => true,
609
+                ),
610
+                'value'       => array(
611
+                    'description' => __( 'The current value of this setting.', 'invoicing' ),
612
+                    'type'        => 'mixed',
613
+                    'context'     => array( 'view', 'edit' ),
614
+                ),
615
+                'default'     => array(
616
+                    'description' => __( 'Default value for the setting.', 'invoicing' ),
617
+                    'type'        => 'mixed',
618
+                    'context'     => array( 'view', 'edit' ),
619
+                    'readonly'    => true,
620
+                ),
621
+                'placeholder' => array(
622
+                    'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ),
623
+                    'type'        => 'string',
624
+                    'arg_options' => array(
625
+                        'sanitize_callback' => 'sanitize_text_field',
626
+                    ),
627
+                    'context'     => array( 'view', 'edit' ),
628
+                    'readonly'    => true,
629
+                ),
630
+                'type'        => array(
631
+                    'description' => __( 'Type of setting.', 'invoicing' ),
632
+                    'type'        => 'string',
633
+                    'arg_options' => array(
634
+                        'sanitize_callback' => 'sanitize_text_field',
635
+                    ),
636
+                    'context'     => array( 'view', 'edit' ),
637
+                    'enum'        => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ),
638
+                    'readonly'    => true,
639
+                ),
640
+                'options'     => array(
641
+                    'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ),
642
+                    'type'        => 'object',
643
+                    'context'     => array( 'view', 'edit' ),
644
+                    'readonly'    => true,
645
+                ),
646
+                'readonly'        => array(
647
+                    'description' => __( 'Whether or not this setting is readonly', 'invoicing' ),
648
+                    'type'        => 'string',
649
+                    'context'     => array( 'view' ),
650
+                    'readonly'    => true,
651
+                ),
652
+                'faux'            => array(
653
+                    'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ),
654
+                    'type'        => 'string',
655
+                    'context'     => array( 'view' ),
656
+                    'readonly'    => true,
657
+                ),
658
+            ),
659
+        );
660
+
661
+        // Filters the settings schema for the REST API.
662 662
         $schema = apply_filters( 'getpaid_rest_settings_schema', $schema );
663 663
 
664
-		// Cache the settings schema.
665
-		$this->schema = $schema;
666
-
667
-		return $this->add_additional_fields_schema( $this->schema );
668
-
669
-	}
670
-
671
-	/**
672
-	 * Validate a text value for a text based setting.
673
-	 *
674
-	 * @since 2.0.0
675
-	 * @param string $value Value.
676
-	 * @param array  $setting Setting.
677
-	 * @return string
678
-	 */
679
-	public function validate_setting_text_field( $value ) {
680
-		$value = is_null( $value ) ? '' : $value;
681
-		return wp_kses_post( trim( stripslashes( $value ) ) );
682
-	}
683
-
684
-	/**
685
-	 * Validate select based settings.
686
-	 *
687
-	 * @since 2.0.0
688
-	 * @param string $value Value.
689
-	 * @param array  $setting Setting.
690
-	 * @return string|WP_Error
691
-	 */
692
-	public function validate_setting_select_field( $value, $setting ) {
693
-		if ( array_key_exists( $value, $setting['options'] ) ) {
694
-			return $value;
695
-		} else {
696
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
697
-		}
698
-	}
699
-
700
-	/**
701
-	 * Validate multiselect based settings.
702
-	 *
703
-	 * @since 2.0.0
704
-	 * @param array $values Values.
705
-	 * @param array $setting Setting.
706
-	 * @return array|WP_Error
707
-	 */
708
-	public function validate_setting_multiselect_field( $values, $setting ) {
709
-		if ( empty( $values ) ) {
710
-			return array();
711
-		}
712
-
713
-		if ( ! is_array( $values ) ) {
714
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
715
-		}
716
-
717
-		$final_values = array();
718
-		foreach ( $values as $value ) {
719
-			if ( array_key_exists( $value, $setting['options'] ) ) {
720
-				$final_values[] = $value;
721
-			}
722
-		}
723
-
724
-		return $final_values;
725
-	}
726
-
727
-	/**
728
-	 * Validate radio based settings.
729
-	 *
730
-	 * @since 2.0.0
731
-	 * @param string $value Value.
732
-	 * @param array  $setting Setting.
733
-	 * @return string|WP_Error
734
-	 */
735
-	public function validate_setting_radio_field( $value, $setting ) {
736
-		return $this->validate_setting_select_field( $value, $setting );
737
-	}
738
-
739
-	/**
740
-	 * Validate checkbox based settings.
741
-	 *
742
-	 * @since 2.0.0
743
-	 * @param string $value Value.
744
-	 * @return int
745
-	 */
746
-	public function validate_setting_checkbox_field( $value ) {
747
-		return (int) ! empty( $value );
748
-	}
749
-
750
-	/**
751
-	 * Validate textarea based settings.
752
-	 *
753
-	 * @since 2.0.0
754
-	 * @param string $value Value.
755
-	 * @return string
756
-	 */
757
-	public function validate_setting_textarea_field( $value ) {
758
-		$value = is_null( $value ) ? '' : $value;
759
-		return wp_kses(
760
-			trim( stripslashes( $value ) ),
761
-			array_merge(
762
-				array(
763
-					'iframe' => array(
764
-						'src'   => true,
765
-						'style' => true,
766
-						'id'    => true,
767
-						'class' => true,
768
-					),
769
-				),
770
-				wp_kses_allowed_html( 'post' )
771
-			)
772
-		);
773
-	}
664
+        // Cache the settings schema.
665
+        $this->schema = $schema;
666
+
667
+        return $this->add_additional_fields_schema( $this->schema );
668
+
669
+    }
670
+
671
+    /**
672
+     * Validate a text value for a text based setting.
673
+     *
674
+     * @since 2.0.0
675
+     * @param string $value Value.
676
+     * @param array  $setting Setting.
677
+     * @return string
678
+     */
679
+    public function validate_setting_text_field( $value ) {
680
+        $value = is_null( $value ) ? '' : $value;
681
+        return wp_kses_post( trim( stripslashes( $value ) ) );
682
+    }
683
+
684
+    /**
685
+     * Validate select based settings.
686
+     *
687
+     * @since 2.0.0
688
+     * @param string $value Value.
689
+     * @param array  $setting Setting.
690
+     * @return string|WP_Error
691
+     */
692
+    public function validate_setting_select_field( $value, $setting ) {
693
+        if ( array_key_exists( $value, $setting['options'] ) ) {
694
+            return $value;
695
+        } else {
696
+            return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
697
+        }
698
+    }
699
+
700
+    /**
701
+     * Validate multiselect based settings.
702
+     *
703
+     * @since 2.0.0
704
+     * @param array $values Values.
705
+     * @param array $setting Setting.
706
+     * @return array|WP_Error
707
+     */
708
+    public function validate_setting_multiselect_field( $values, $setting ) {
709
+        if ( empty( $values ) ) {
710
+            return array();
711
+        }
712
+
713
+        if ( ! is_array( $values ) ) {
714
+            return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
715
+        }
716
+
717
+        $final_values = array();
718
+        foreach ( $values as $value ) {
719
+            if ( array_key_exists( $value, $setting['options'] ) ) {
720
+                $final_values[] = $value;
721
+            }
722
+        }
723
+
724
+        return $final_values;
725
+    }
726
+
727
+    /**
728
+     * Validate radio based settings.
729
+     *
730
+     * @since 2.0.0
731
+     * @param string $value Value.
732
+     * @param array  $setting Setting.
733
+     * @return string|WP_Error
734
+     */
735
+    public function validate_setting_radio_field( $value, $setting ) {
736
+        return $this->validate_setting_select_field( $value, $setting );
737
+    }
738
+
739
+    /**
740
+     * Validate checkbox based settings.
741
+     *
742
+     * @since 2.0.0
743
+     * @param string $value Value.
744
+     * @return int
745
+     */
746
+    public function validate_setting_checkbox_field( $value ) {
747
+        return (int) ! empty( $value );
748
+    }
749
+
750
+    /**
751
+     * Validate textarea based settings.
752
+     *
753
+     * @since 2.0.0
754
+     * @param string $value Value.
755
+     * @return string
756
+     */
757
+    public function validate_setting_textarea_field( $value ) {
758
+        $value = is_null( $value ) ? '' : $value;
759
+        return wp_kses(
760
+            trim( stripslashes( $value ) ),
761
+            array_merge(
762
+                array(
763
+                    'iframe' => array(
764
+                        'src'   => true,
765
+                        'style' => true,
766
+                        'id'    => true,
767
+                        'class' => true,
768
+                    ),
769
+                ),
770
+                wp_kses_allowed_html( 'post' )
771
+            )
772
+        );
773
+    }
774 774
 
775 775
 }
Please login to merge, or discard this patch.
Spacing   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  * @since   2.0.0
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 /**
15 15
  * GetPaid REST Setting controller class.
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
 	 *
40 40
 	 * @see register_rest_route()
41 41
 	 */
42
-	public function register_namespace_routes( $namespace ) {
42
+	public function register_namespace_routes($namespace) {
43 43
 
44 44
 		// List all registered tabs.
45 45
 		register_rest_route(
@@ -48,8 +48,8 @@  discard block
 block discarded – undo
48 48
 			array(
49 49
 				array(
50 50
 					'methods'             => WP_REST_Server::READABLE,
51
-					'callback'            => array( $this, 'get_tabs' ),
52
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
51
+					'callback'            => array($this, 'get_tabs'),
52
+					'permission_callback' => array($this, 'get_items_permissions_check'),
53 53
 				),
54 54
 				'schema' => '__return_empty_array',
55 55
 			)
@@ -62,23 +62,23 @@  discard block
 block discarded – undo
62 62
 			array(
63 63
 				'args'   => array(
64 64
 					'id'    => array(
65
-						'description' => __( 'Unique identifier for the setting.', 'invoicing' ),
65
+						'description' => __('Unique identifier for the setting.', 'invoicing'),
66 66
 						'type'        => 'string',
67 67
 						'required'    => true,
68 68
 					),
69 69
 				),
70 70
 				array(
71 71
 					'methods'             => WP_REST_Server::READABLE,
72
-					'callback'            => array( $this, 'get_item' ),
73
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
72
+					'callback'            => array($this, 'get_item'),
73
+					'permission_callback' => array($this, 'get_items_permissions_check'),
74 74
 				),
75 75
 				array(
76 76
 					'methods'             => WP_REST_Server::EDITABLE,
77
-					'callback'            => array( $this, 'update_item' ),
78
-					'permission_callback' => array( $this, 'update_items_permissions_check' ),
79
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
77
+					'callback'            => array($this, 'update_item'),
78
+					'permission_callback' => array($this, 'update_items_permissions_check'),
79
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
80 80
 				),
81
-				'schema' => array( $this, 'get_public_item_schema' ),
81
+				'schema' => array($this, 'get_public_item_schema'),
82 82
 			)
83 83
 		);
84 84
 
@@ -89,16 +89,16 @@  discard block
 block discarded – undo
89 89
 			array(
90 90
 				'args'   => array(
91 91
 					'tab'    => array(
92
-						'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ),
92
+						'description' => __('Unique identifier for the tab whose sections should be retrieved.', 'invoicing'),
93 93
 						'type'        => 'string',
94 94
 						'required'    => true,
95
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
95
+						'enum'        => array_keys(wpinv_get_settings_tabs()),
96 96
 					),
97 97
 				),
98 98
 				array(
99 99
 					'methods'             => WP_REST_Server::READABLE,
100
-					'callback'            => array( $this, 'get_sections' ),
101
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
100
+					'callback'            => array($this, 'get_sections'),
101
+					'permission_callback' => array($this, 'get_items_permissions_check'),
102 102
 				),
103 103
 				'schema' => '__return_empty_array',
104 104
 			)
@@ -111,23 +111,23 @@  discard block
 block discarded – undo
111 111
 			array(
112 112
 				'args'   => array(
113 113
 					'tab'    => array(
114
-						'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ),
114
+						'description' => __('Unique identifier for the tab whose settings should be retrieved.', 'invoicing'),
115 115
 						'type'        => 'string',
116 116
 						'required'    => true,
117
-						'enum'        => array_keys( wpinv_get_settings_tabs() ),
117
+						'enum'        => array_keys(wpinv_get_settings_tabs()),
118 118
 					),
119 119
 					'section'    => array(
120
-						'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ),
120
+						'description' => __('The section in the tab whose settings should be retrieved.', 'invoicing'),
121 121
 						'type'        => 'string',
122 122
 						'required'    => true,
123 123
 					),
124 124
 				),
125 125
 				array(
126 126
 					'methods'             => WP_REST_Server::READABLE,
127
-					'callback'            => array( $this, 'get_items' ),
128
-					'permission_callback' => array( $this, 'get_items_permissions_check' ),
127
+					'callback'            => array($this, 'get_items'),
128
+					'permission_callback' => array($this, 'get_items_permissions_check'),
129 129
 				),
130
-				'schema' => array( $this, 'get_public_item_schema' ),
130
+				'schema' => array($this, 'get_public_item_schema'),
131 131
 			)
132 132
 		);
133 133
 
@@ -137,17 +137,17 @@  discard block
 block discarded – undo
137 137
 			array(
138 138
 				'args'   => array(
139 139
 					'id'              => array(
140
-						'description' => __( 'Setting ID.', 'invoicing' ),
140
+						'description' => __('Setting ID.', 'invoicing'),
141 141
 						'type'        => 'string',
142 142
 					),
143 143
 				),
144 144
 				array(
145 145
 					'methods'             => WP_REST_Server::EDITABLE,
146
-					'callback'            => array( $this, 'batch_items' ),
147
-					'permission_callback' => array( $this, 'batch_items_permissions_check' ),
148
-					'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
146
+					'callback'            => array($this, 'batch_items'),
147
+					'permission_callback' => array($this, 'batch_items_permissions_check'),
148
+					'args'                => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE),
149 149
 				),
150
-				'schema' => array( $this, 'get_public_batch_schema' ),
150
+				'schema' => array($this, 'get_public_batch_schema'),
151 151
 			)
152 152
 		);
153 153
 
@@ -160,34 +160,34 @@  discard block
 block discarded – undo
160 160
 	 * @param  WP_REST_Request $request Request data.
161 161
 	 * @return WP_Error|WP_REST_Response
162 162
 	 */
163
-	public function get_items( $request ) {
163
+	public function get_items($request) {
164 164
 
165 165
 		$settings = $this->get_settings();
166 166
 
167
-		if ( ! isset( $settings[ $request['tab'] ] ) ) {
168
-			return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) );
167
+		if (!isset($settings[$request['tab']])) {
168
+			return new WP_Error('rest_invalid_tab', __('Invalid tab.', 'invoicing'), array('status' => 400));
169 169
 		}
170 170
 
171
-		if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) {
172
-			return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) );
171
+		if (!isset($settings[$request['tab']][$request['section']])) {
172
+			return new WP_Error('rest_invalid_section', __('Invalid section.', 'invoicing'), array('status' => 400));
173 173
 		}
174 174
 
175
-		$settings = $settings[ $request['tab'] ][ $request['section'] ];
175
+		$settings = $settings[$request['tab']][$request['section']];
176 176
 		$prepared = array();
177 177
 
178
-		foreach ( $settings as $setting ) {
178
+		foreach ($settings as $setting) {
179 179
 
180
-			$setting      = $this->sanitize_setting( $setting );
181
-			$setting_data = $this->prepare_item_for_response( $setting, $request );
182
-			$setting_data = $this->prepare_response_for_collection( $setting_data );
180
+			$setting      = $this->sanitize_setting($setting);
181
+			$setting_data = $this->prepare_item_for_response($setting, $request);
182
+			$setting_data = $this->prepare_response_for_collection($setting_data);
183 183
 
184
-			if ( $this->is_setting_type_valid( $setting['type'] ) ) {
185
-				$prepared[]   = $setting_data;
184
+			if ($this->is_setting_type_valid($setting['type'])) {
185
+				$prepared[] = $setting_data;
186 186
 			}
187 187
 
188 188
 		}
189 189
 
190
-		return rest_ensure_response( $prepared );
190
+		return rest_ensure_response($prepared);
191 191
 	}
192 192
 
193 193
 	/**
@@ -197,16 +197,16 @@  discard block
 block discarded – undo
197 197
 	 * @param  WP_REST_Request $request Request data.
198 198
 	 * @return WP_Error|WP_REST_Response
199 199
 	 */
200
-	public function get_item( $request ) {
201
-		$setting  = $this->get_setting( $request['id'] );
200
+	public function get_item($request) {
201
+		$setting = $this->get_setting($request['id']);
202 202
 
203
-		if ( is_wp_error( $setting ) ) {
203
+		if (is_wp_error($setting)) {
204 204
 			return $setting;
205 205
 		}
206 206
 
207
-		$setting  = $this->sanitize_setting( $setting );
208
-		$response = $this->prepare_item_for_response( $setting, $request );
209
-		return rest_ensure_response( $response );
207
+		$setting  = $this->sanitize_setting($setting);
208
+		$response = $this->prepare_item_for_response($setting, $request);
209
+		return rest_ensure_response($response);
210 210
 	}
211 211
 
212 212
 	/**
@@ -216,29 +216,29 @@  discard block
 block discarded – undo
216 216
 	 * @param  WP_REST_Request $request Request data.
217 217
 	 * @return WP_Error|WP_REST_Response
218 218
 	 */
219
-	public function update_item( $request ) {
220
-		$setting = $this->get_setting( $request['id'] );
219
+	public function update_item($request) {
220
+		$setting = $this->get_setting($request['id']);
221 221
 
222
-		if ( is_wp_error( $setting ) ) {
222
+		if (is_wp_error($setting)) {
223 223
 			return $setting;
224 224
 		}
225 225
 
226
-		if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
227
-			$value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
226
+		if (is_callable(array($this, 'validate_setting_' . $setting['type'] . '_field'))) {
227
+			$value = $this->{'validate_setting_' . $setting['type'] . '_field'}($request['value'], $setting);
228 228
 		} else {
229
-			$value = $this->validate_setting_text_field( $request['value'], $setting );
229
+			$value = $this->validate_setting_text_field($request['value'], $setting);
230 230
 		}
231 231
 
232
-		if ( is_wp_error( $value ) ) {
232
+		if (is_wp_error($value)) {
233 233
 			return $value;
234 234
 		}
235 235
 
236
-		wpinv_update_option( $request['id'], $value );
236
+		wpinv_update_option($request['id'], $value);
237 237
 		$setting['value'] = $value;
238
-		$setting          = $this->sanitize_setting( $setting );
239
-		$response         = $this->prepare_item_for_response( $setting, $request );
238
+		$setting          = $this->sanitize_setting($setting);
239
+		$response         = $this->prepare_item_for_response($setting, $request);
240 240
 
241
-		return rest_ensure_response( $response );
241
+		return rest_ensure_response($response);
242 242
 	}
243 243
 
244 244
 	/**
@@ -248,9 +248,9 @@  discard block
 block discarded – undo
248 248
 	 * @param WP_REST_Request $request Full data about the request.
249 249
 	 * @return WP_Error|boolean
250 250
 	 */
251
-	public function get_items_permissions_check( $request ) {
252
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
253
-			return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
251
+	public function get_items_permissions_check($request) {
252
+		if (!wpinv_current_user_can_manage_invoicing()) {
253
+			return new WP_Error('rest_cannot_view', __('Sorry, you cannot list resources.', 'invoicing'), array('status' => rest_authorization_required_code()));
254 254
 		}
255 255
 
256 256
 		return true;
@@ -263,9 +263,9 @@  discard block
 block discarded – undo
263 263
 	 * @param WP_REST_Request $request Full data about the request.
264 264
 	 * @return WP_Error|boolean
265 265
 	 */
266
-	public function update_items_permissions_check( $request ) {
267
-		if ( ! wpinv_current_user_can_manage_invoicing() ) {
268
-			return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
266
+	public function update_items_permissions_check($request) {
267
+		if (!wpinv_current_user_can_manage_invoicing()) {
268
+			return new WP_Error('rest_cannot_edit', __('Sorry, you cannot edit this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
269 269
 		}
270 270
 
271 271
 		return true;
@@ -278,8 +278,8 @@  discard block
 block discarded – undo
278 278
 	 *
279 279
 	 * @return boolean|WP_Error
280 280
 	 */
281
-	public function batch_items_permissions_check( $request ) {
282
-		return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) );
281
+	public function batch_items_permissions_check($request) {
282
+		return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error('rest_cannot_batch', __('Sorry, you are not allowed to batch manipulate this resource.', 'invoicing'), array('status' => rest_authorization_required_code()));
283 283
 	}
284 284
 
285 285
 	/**
@@ -288,14 +288,14 @@  discard block
 block discarded – undo
288 288
 	 * @param string $setting_id Setting ID.
289 289
 	 * @return array Links for the given setting.
290 290
 	 */
291
-	protected function prepare_links( $setting_id ) {
291
+	protected function prepare_links($setting_id) {
292 292
 
293 293
 		$links = array(
294 294
 			'self'       => array(
295
-				'href'   => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ),
295
+				'href'   => rest_url(sprintf('/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id)),
296 296
 			),
297 297
 			'collection' => array(
298
-				'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
298
+				'href'   => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
299 299
 			),
300 300
 		);
301 301
 
@@ -310,14 +310,14 @@  discard block
 block discarded – undo
310 310
 	 * @param WP_REST_Request $request Request object.
311 311
 	 * @return WP_REST_Response $response Response data.
312 312
 	 */
313
-	public function prepare_item_for_response( $item, $request ) {
314
-		$context = empty( $request['context'] ) ? 'view' : $request['context'];
315
-		$data    = $this->add_additional_fields_to_object( $item, $request );
316
-		$data    = $this->filter_response_by_context( $data, $context );
313
+	public function prepare_item_for_response($item, $request) {
314
+		$context = empty($request['context']) ? 'view' : $request['context'];
315
+		$data    = $this->add_additional_fields_to_object($item, $request);
316
+		$data    = $this->filter_response_by_context($data, $context);
317 317
 
318
-		$response = rest_ensure_response( $data );
318
+		$response = rest_ensure_response($data);
319 319
 
320
-		$response->add_links( $this->prepare_links( $item['id'] ) );
320
+		$response->add_links($this->prepare_links($item['id']));
321 321
 
322 322
 		return $response;
323 323
 	}
@@ -330,10 +330,10 @@  discard block
 block discarded – undo
330 330
 	 * @param  array $setting Setting.
331 331
 	 * @return array
332 332
 	 */
333
-	public function filter_setting( $setting ) {
333
+	public function filter_setting($setting) {
334 334
 		return array_intersect_key(
335 335
 			$setting,
336
-			array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) )
336
+			array_flip(array_filter(array_keys($setting), array($this, 'allowed_setting_keys')))
337 337
 		);
338 338
 	}
339 339
 
@@ -343,8 +343,8 @@  discard block
 block discarded – undo
343 343
 	 * @param  string $key Key to check.
344 344
 	 * @return boolean
345 345
 	 */
346
-	public function allowed_setting_keys( $key ) {
347
-		return in_array( $key, array_keys( $this->setting_defaults() ), true );
346
+	public function allowed_setting_keys($key) {
347
+		return in_array($key, array_keys($this->setting_defaults()), true);
348 348
 	}
349 349
 
350 350
 	/**
@@ -376,11 +376,11 @@  discard block
 block discarded – undo
376 376
 	 * @param  array $setting The setting to sanitize.
377 377
 	 * @return array
378 378
 	 */
379
-	public function sanitize_setting( $setting ) {
379
+	public function sanitize_setting($setting) {
380 380
 		
381
-		$setting          = wp_parse_args( $setting, $this->setting_defaults() );
382
-		$setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] );
383
-		return $this->filter_setting( $setting );
381
+		$setting          = wp_parse_args($setting, $this->setting_defaults());
382
+		$setting['value'] = wpinv_get_option($setting['id'], $setting['std']);
383
+		return $this->filter_setting($setting);
384 384
 
385 385
 	}
386 386
 
@@ -391,31 +391,31 @@  discard block
 block discarded – undo
391 391
 	 * @param string $setting_id Setting ID.
392 392
 	 * @return array|WP_Error
393 393
 	 */
394
-	public function get_setting( $setting_id ) {
394
+	public function get_setting($setting_id) {
395 395
 
396
-		if ( empty( $setting_id ) ) {
397
-			return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
396
+		if (empty($setting_id)) {
397
+			return new WP_Error('rest_setting_setting_invalid', __('Invalid setting.', 'invoicing'), array('status' => 404));
398 398
 		}
399 399
 
400
-		$settings  = $this->get_settings();
400
+		$settings = $this->get_settings();
401 401
 
402
-		foreach ( $settings as $tabs ) {
402
+		foreach ($settings as $tabs) {
403 403
 
404
-			foreach ( $tabs as $sections ) {
404
+			foreach ($tabs as $sections) {
405 405
 
406
-				if ( isset( $sections[ $setting_id ] ) ) {
407
-					if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) {
408
-						return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) );
406
+				if (isset($sections[$setting_id])) {
407
+					if (!$this->is_setting_type_valid($sections[$setting_id]['type'])) {
408
+						return new WP_Error('rest_setting_setting_type_invalid', __('Invalid setting type.', 'invoicing'), array('status' => 404));
409 409
 					}
410 410
 
411
-					return $sections[ $setting_id ];
411
+					return $sections[$setting_id];
412 412
 				}
413 413
 
414 414
 			}
415 415
 
416 416
 		}
417 417
 
418
-		return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) );
418
+		return new WP_Error('rest_setting_setting_invalid', __('Invalid setting.', 'invoicing'), array('status' => 404));
419 419
 	}
420 420
 
421 421
 	/**
@@ -424,41 +424,41 @@  discard block
 block discarded – undo
424 424
 	 * @param  WP_REST_Request $request Request data.
425 425
 	 * @return array
426 426
 	 */
427
-	public function get_tabs( $request ) {
427
+	public function get_tabs($request) {
428 428
 		$tabs     = wpinv_get_settings_tabs();
429 429
 		$prepared = array();
430 430
 
431
-		foreach ( $tabs as $id => $tab ) {
431
+		foreach ($tabs as $id => $tab) {
432 432
 
433 433
 			$_request        = $request;
434
-			$_request['tab'] = sanitize_title( $id );
434
+			$_request['tab'] = sanitize_title($id);
435 435
 			$data            = array(
436
-				'id'       => sanitize_title( $id ),
437
-				'label'    => sanitize_text_field( $tab ),
438
-				'sections' => $this->get_sections( $_request ),
436
+				'id'       => sanitize_title($id),
437
+				'label'    => sanitize_text_field($tab),
438
+				'sections' => $this->get_sections($_request),
439 439
 			);
440 440
 
441
-			$data     = $this->add_additional_fields_to_object( $data, $request );
442
-			$response = rest_ensure_response( $data );
441
+			$data     = $this->add_additional_fields_to_object($data, $request);
442
+			$response = rest_ensure_response($data);
443 443
 
444
-			if ( ! is_wp_error( $response ) ) {
444
+			if (!is_wp_error($response)) {
445 445
 				$links = array(
446 446
 					'sections'   => array(
447
-						'href'   => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ),
447
+						'href'   => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $id)),
448 448
 					),
449 449
 					'collection' => array(
450
-						'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
450
+						'href'   => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
451 451
 					),
452 452
 				);
453
-				$response->add_links( $links );
454
-				$response = $this->prepare_response_for_collection( $response );
453
+				$response->add_links($links);
454
+				$response = $this->prepare_response_for_collection($response);
455 455
 			}
456 456
 
457 457
 			$prepared[] = $response;
458 458
 
459 459
 		}
460 460
 
461
-		return rest_ensure_response( $prepared );
461
+		return rest_ensure_response($prepared);
462 462
 	}
463 463
 
464 464
 	/**
@@ -467,43 +467,43 @@  discard block
 block discarded – undo
467 467
 	 * @param  WP_REST_Request $request Request data.
468 468
 	 * @return array
469 469
 	 */
470
-	public function get_sections( $request ) {
470
+	public function get_sections($request) {
471 471
 
472
-		$tab      = sanitize_title( $request['tab'] );
473
-		$sections = wpinv_get_settings_tab_sections( $tab );
472
+		$tab      = sanitize_title($request['tab']);
473
+		$sections = wpinv_get_settings_tab_sections($tab);
474 474
 		$prepared = array();
475 475
 
476
-		foreach ( $sections as $id => $section ) {
476
+		foreach ($sections as $id => $section) {
477 477
 
478
-			$data            = array(
479
-				'id'       => sanitize_title( $id ),
480
-				'label'    => sanitize_text_field( $section ),
478
+			$data = array(
479
+				'id'       => sanitize_title($id),
480
+				'label'    => sanitize_text_field($section),
481 481
 			);
482 482
 
483
-			$data     = $this->add_additional_fields_to_object( $data, $request );
484
-			$response = rest_ensure_response( $data );
483
+			$data     = $this->add_additional_fields_to_object($data, $request);
484
+			$response = rest_ensure_response($data);
485 485
 
486
-			if ( ! is_wp_error( $response ) ) {
486
+			if (!is_wp_error($response)) {
487 487
 				$links = array(
488 488
 					'settings'   => array(
489
-						'href'   => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ),
489
+						'href'   => rest_url(sprintf('/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id)),
490 490
 					),
491 491
 					'collection' => array(
492
-						'href'   => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ),
492
+						'href'   => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $tab)),
493 493
 					),
494 494
 					'tabs'       => array(
495
-						'href'   => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ),
495
+						'href'   => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)),
496 496
 					),
497 497
 				);
498
-				$response->add_links( $links );
499
-				$response = $this->prepare_response_for_collection( $response );
498
+				$response->add_links($links);
499
+				$response = $this->prepare_response_for_collection($response);
500 500
 			}
501 501
 
502 502
 			$prepared[] = $response;
503 503
 
504 504
 		}
505 505
 
506
-		return rest_ensure_response( $prepared );
506
+		return rest_ensure_response($prepared);
507 507
 	}
508 508
 
509 509
 	/**
@@ -513,7 +513,7 @@  discard block
 block discarded – undo
513 513
 	 */
514 514
 	public function get_settings() {
515 515
 
516
-		if ( empty( $this->settings ) ) {
516
+		if (empty($this->settings)) {
517 517
 			$this->settings = wpinv_get_registered_settings();
518 518
 		}
519 519
 
@@ -528,21 +528,21 @@  discard block
 block discarded – undo
528 528
 	 * @param  string $type Type.
529 529
 	 * @return bool
530 530
 	 */
531
-	public function is_setting_type_valid( $type ) {
531
+	public function is_setting_type_valid($type) {
532 532
 
533 533
 		return in_array(
534 534
 			$type, array(
535
-				'text',         // Validates with validate_setting_text_field.
536
-				'email',        // Validates with validate_setting_text_field.
537
-				'number',       // Validates with validate_setting_text_field.
538
-				'color',        // Validates with validate_setting_text_field.
539
-				'password',     // Validates with validate_setting_text_field.
540
-				'textarea',     // Validates with validate_setting_textarea_field.
541
-				'select',       // Validates with validate_setting_select_field.
542
-				'multiselect',  // Validates with validate_setting_multiselect_field.
543
-				'radio',        // Validates with validate_setting_radio_field (-> validate_setting_select_field).
544
-				'checkbox',     // Validates with validate_setting_checkbox_field.
545
-				'header',       // Validates with validate_setting_text_field.
535
+				'text', // Validates with validate_setting_text_field.
536
+				'email', // Validates with validate_setting_text_field.
537
+				'number', // Validates with validate_setting_text_field.
538
+				'color', // Validates with validate_setting_text_field.
539
+				'password', // Validates with validate_setting_text_field.
540
+				'textarea', // Validates with validate_setting_textarea_field.
541
+				'select', // Validates with validate_setting_select_field.
542
+				'multiselect', // Validates with validate_setting_multiselect_field.
543
+				'radio', // Validates with validate_setting_radio_field (-> validate_setting_select_field).
544
+				'checkbox', // Validates with validate_setting_checkbox_field.
545
+				'header', // Validates with validate_setting_text_field.
546 546
 			)
547 547
 		);
548 548
 
@@ -556,8 +556,8 @@  discard block
 block discarded – undo
556 556
 	public function get_item_schema() {
557 557
 
558 558
 		// Maybe retrieve the schema from cache.
559
-		if ( ! empty( $this->schema ) ) {
560
-			return $this->add_additional_fields_schema( $this->schema );
559
+		if (!empty($this->schema)) {
560
+			return $this->add_additional_fields_schema($this->schema);
561 561
 		}
562 562
 
563 563
 		$schema = array(
@@ -566,105 +566,105 @@  discard block
 block discarded – undo
566 566
 			'type'       => 'object',
567 567
 			'properties' => array(
568 568
 				'id'          => array(
569
-					'description' => __( 'A unique identifier for the setting.', 'invoicing' ),
569
+					'description' => __('A unique identifier for the setting.', 'invoicing'),
570 570
 					'type'        => 'string',
571 571
 					'arg_options' => array(
572 572
 						'sanitize_callback' => 'sanitize_title',
573 573
 					),
574
-					'context'     => array( 'view', 'edit' ),
574
+					'context'     => array('view', 'edit'),
575 575
 					'readonly'    => true,
576 576
 				),
577 577
 				'tab'         => array(
578
-					'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ),
578
+					'description' => __('An identifier for the tab this setting belongs to.', 'invoicing'),
579 579
 					'type'        => 'string',
580 580
 					'arg_options' => array(
581 581
 						'sanitize_callback' => 'sanitize_title',
582 582
 					),
583
-					'context'     => array( 'view', 'edit' ),
583
+					'context'     => array('view', 'edit'),
584 584
 					'readonly'    => true,
585 585
 				),
586 586
 				'section'     => array(
587
-					'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ),
587
+					'description' => __('An identifier for the section this setting belongs to.', 'invoicing'),
588 588
 					'type'        => 'string',
589 589
 					'arg_options' => array(
590 590
 						'sanitize_callback' => 'sanitize_title',
591 591
 					),
592
-					'context'     => array( 'view', 'edit' ),
592
+					'context'     => array('view', 'edit'),
593 593
 					'readonly'    => true,
594 594
 				),
595 595
 				'name'       => array(
596
-					'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ),
596
+					'description' => __('A human readable label for the setting used in interfaces.', 'invoicing'),
597 597
 					'type'        => 'string',
598 598
 					'arg_options' => array(
599 599
 						'sanitize_callback' => 'sanitize_text_field',
600 600
 					),
601
-					'context'     => array( 'view', 'edit' ),
601
+					'context'     => array('view', 'edit'),
602 602
 					'readonly'    => true,
603 603
 				),
604 604
 				'desc'        => array(
605
-					'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ),
605
+					'description' => __('A human readable description for the setting used in interfaces.', 'invoicing'),
606 606
 					'type'        => 'string',
607
-					'context'     => array( 'view', 'edit' ),
607
+					'context'     => array('view', 'edit'),
608 608
 					'readonly'    => true,
609 609
 				),
610 610
 				'value'       => array(
611
-					'description' => __( 'The current value of this setting.', 'invoicing' ),
611
+					'description' => __('The current value of this setting.', 'invoicing'),
612 612
 					'type'        => 'mixed',
613
-					'context'     => array( 'view', 'edit' ),
613
+					'context'     => array('view', 'edit'),
614 614
 				),
615 615
 				'default'     => array(
616
-					'description' => __( 'Default value for the setting.', 'invoicing' ),
616
+					'description' => __('Default value for the setting.', 'invoicing'),
617 617
 					'type'        => 'mixed',
618
-					'context'     => array( 'view', 'edit' ),
618
+					'context'     => array('view', 'edit'),
619 619
 					'readonly'    => true,
620 620
 				),
621 621
 				'placeholder' => array(
622
-					'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ),
622
+					'description' => __('Placeholder text to be displayed in text inputs.', 'invoicing'),
623 623
 					'type'        => 'string',
624 624
 					'arg_options' => array(
625 625
 						'sanitize_callback' => 'sanitize_text_field',
626 626
 					),
627
-					'context'     => array( 'view', 'edit' ),
627
+					'context'     => array('view', 'edit'),
628 628
 					'readonly'    => true,
629 629
 				),
630 630
 				'type'        => array(
631
-					'description' => __( 'Type of setting.', 'invoicing' ),
631
+					'description' => __('Type of setting.', 'invoicing'),
632 632
 					'type'        => 'string',
633 633
 					'arg_options' => array(
634 634
 						'sanitize_callback' => 'sanitize_text_field',
635 635
 					),
636
-					'context'     => array( 'view', 'edit' ),
637
-					'enum'        => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ),
636
+					'context'     => array('view', 'edit'),
637
+					'enum'        => array('text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html'),
638 638
 					'readonly'    => true,
639 639
 				),
640 640
 				'options'     => array(
641
-					'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ),
641
+					'description' => __('Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing'),
642 642
 					'type'        => 'object',
643
-					'context'     => array( 'view', 'edit' ),
643
+					'context'     => array('view', 'edit'),
644 644
 					'readonly'    => true,
645 645
 				),
646 646
 				'readonly'        => array(
647
-					'description' => __( 'Whether or not this setting is readonly', 'invoicing' ),
647
+					'description' => __('Whether or not this setting is readonly', 'invoicing'),
648 648
 					'type'        => 'string',
649
-					'context'     => array( 'view' ),
649
+					'context'     => array('view'),
650 650
 					'readonly'    => true,
651 651
 				),
652 652
 				'faux'            => array(
653
-					'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ),
653
+					'description' => __('Whether or not this setting is readonly/faux', 'invoicing'),
654 654
 					'type'        => 'string',
655
-					'context'     => array( 'view' ),
655
+					'context'     => array('view'),
656 656
 					'readonly'    => true,
657 657
 				),
658 658
 			),
659 659
 		);
660 660
 
661 661
 		// Filters the settings schema for the REST API.
662
-        $schema = apply_filters( 'getpaid_rest_settings_schema', $schema );
662
+        $schema = apply_filters('getpaid_rest_settings_schema', $schema);
663 663
 
664 664
 		// Cache the settings schema.
665 665
 		$this->schema = $schema;
666 666
 
667
-		return $this->add_additional_fields_schema( $this->schema );
667
+		return $this->add_additional_fields_schema($this->schema);
668 668
 
669 669
 	}
670 670
 
@@ -676,9 +676,9 @@  discard block
 block discarded – undo
676 676
 	 * @param array  $setting Setting.
677 677
 	 * @return string
678 678
 	 */
679
-	public function validate_setting_text_field( $value ) {
680
-		$value = is_null( $value ) ? '' : $value;
681
-		return wp_kses_post( trim( stripslashes( $value ) ) );
679
+	public function validate_setting_text_field($value) {
680
+		$value = is_null($value) ? '' : $value;
681
+		return wp_kses_post(trim(stripslashes($value)));
682 682
 	}
683 683
 
684 684
 	/**
@@ -689,11 +689,11 @@  discard block
 block discarded – undo
689 689
 	 * @param array  $setting Setting.
690 690
 	 * @return string|WP_Error
691 691
 	 */
692
-	public function validate_setting_select_field( $value, $setting ) {
693
-		if ( array_key_exists( $value, $setting['options'] ) ) {
692
+	public function validate_setting_select_field($value, $setting) {
693
+		if (array_key_exists($value, $setting['options'])) {
694 694
 			return $value;
695 695
 		} else {
696
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
696
+			return new WP_Error('rest_setting_value_invalid', __('An invalid setting value was passed.', 'invoicing'), array('status' => 400));
697 697
 		}
698 698
 	}
699 699
 
@@ -705,18 +705,18 @@  discard block
 block discarded – undo
705 705
 	 * @param array $setting Setting.
706 706
 	 * @return array|WP_Error
707 707
 	 */
708
-	public function validate_setting_multiselect_field( $values, $setting ) {
709
-		if ( empty( $values ) ) {
708
+	public function validate_setting_multiselect_field($values, $setting) {
709
+		if (empty($values)) {
710 710
 			return array();
711 711
 		}
712 712
 
713
-		if ( ! is_array( $values ) ) {
714
-			return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) );
713
+		if (!is_array($values)) {
714
+			return new WP_Error('rest_setting_value_invalid', __('An invalid setting value was passed.', 'invoicing'), array('status' => 400));
715 715
 		}
716 716
 
717 717
 		$final_values = array();
718
-		foreach ( $values as $value ) {
719
-			if ( array_key_exists( $value, $setting['options'] ) ) {
718
+		foreach ($values as $value) {
719
+			if (array_key_exists($value, $setting['options'])) {
720 720
 				$final_values[] = $value;
721 721
 			}
722 722
 		}
@@ -732,8 +732,8 @@  discard block
 block discarded – undo
732 732
 	 * @param array  $setting Setting.
733 733
 	 * @return string|WP_Error
734 734
 	 */
735
-	public function validate_setting_radio_field( $value, $setting ) {
736
-		return $this->validate_setting_select_field( $value, $setting );
735
+	public function validate_setting_radio_field($value, $setting) {
736
+		return $this->validate_setting_select_field($value, $setting);
737 737
 	}
738 738
 
739 739
 	/**
@@ -743,8 +743,8 @@  discard block
 block discarded – undo
743 743
 	 * @param string $value Value.
744 744
 	 * @return int
745 745
 	 */
746
-	public function validate_setting_checkbox_field( $value ) {
747
-		return (int) ! empty( $value );
746
+	public function validate_setting_checkbox_field($value) {
747
+		return (int) !empty($value);
748 748
 	}
749 749
 
750 750
 	/**
@@ -754,10 +754,10 @@  discard block
 block discarded – undo
754 754
 	 * @param string $value Value.
755 755
 	 * @return string
756 756
 	 */
757
-	public function validate_setting_textarea_field( $value ) {
758
-		$value = is_null( $value ) ? '' : $value;
757
+	public function validate_setting_textarea_field($value) {
758
+		$value = is_null($value) ? '' : $value;
759 759
 		return wp_kses(
760
-			trim( stripslashes( $value ) ),
760
+			trim(stripslashes($value)),
761 761
 			array_merge(
762 762
 				array(
763 763
 					'iframe' => array(
@@ -767,7 +767,7 @@  discard block
 block discarded – undo
767 767
 						'class' => true,
768 768
 					),
769 769
 				),
770
-				wp_kses_allowed_html( 'post' )
770
+				wp_kses_allowed_html('post')
771 771
 			)
772 772
 		);
773 773
 	}
Please login to merge, or discard this patch.
includes/reports/class-getpaid-reports-helper.php 2 patches
Spacing   +64 added lines, -64 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  *
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * GetPaid_Reports_Helper Class.
@@ -26,7 +26,7 @@  discard block
 block discarded – undo
26 26
 	 * @param  array $args
27 27
 	 * @return mixed depending on query_type
28 28
 	 */
29
-	public static function get_invoice_report_data( $args = array() ) {
29
+	public static function get_invoice_report_data($args = array()) {
30 30
 		global $wpdb;
31 31
 
32 32
 		$default_args = array(
@@ -37,94 +37,94 @@  discard block
 block discarded – undo
37 37
 			'order_by'              => '', // What to order by.
38 38
 			'limit'                 => '', // Results limit.
39 39
 			'filter_range'          => array(), // An array of before and after dates to limit results by.
40
-			'invoice_types'         => array( 'wpi_invoice' ), // An array of post types to retrieve.
41
-			'invoice_status'        => array( 'publish', 'wpi-processing', 'wpi-onhold' ),
40
+			'invoice_types'         => array('wpi_invoice'), // An array of post types to retrieve.
41
+			'invoice_status'        => array('publish', 'wpi-processing', 'wpi-onhold'),
42 42
 			'parent_invoice_status' => false, // Optionally filter by parent invoice status.
43 43
 		);
44 44
 
45
-		$args         = apply_filters( 'getpaid_reports_get_invoice_report_data_args', $args );
46
-		$args         = wp_parse_args( $args, $default_args );
45
+		$args         = apply_filters('getpaid_reports_get_invoice_report_data_args', $args);
46
+		$args         = wp_parse_args($args, $default_args);
47 47
 
48
-		extract( $args );
48
+		extract($args);
49 49
 
50
-		if ( empty( $data ) ) {
50
+		if (empty($data)) {
51 51
 			return '';
52 52
 		}
53 53
 
54 54
 		$query           = array();
55
-		$query['select'] = 'SELECT ' . implode( ',', self::prepare_invoice_data( $data ) );
55
+		$query['select'] = 'SELECT ' . implode(',', self::prepare_invoice_data($data));
56 56
 		$query['from']   = "FROM {$wpdb->posts} AS posts";
57
-		$query['join']   = implode( ' ', self::prepare_invoice_joins( $data + $where, ! empty( $parent_invoice_status ) ) );
57
+		$query['join']   = implode(' ', self::prepare_invoice_joins($data + $where, !empty($parent_invoice_status)));
58 58
 
59 59
 		$query['where']  = "
60
-			WHERE 	posts.post_type 	IN ( '" . implode( "','", $invoice_types ) . "' )
60
+			WHERE 	posts.post_type 	IN ( '" . implode("','", $invoice_types) . "' )
61 61
 			";
62 62
 
63
-		if ( ! empty( $invoice_status ) ) {
63
+		if (!empty($invoice_status)) {
64 64
 			$query['where'] .= "
65
-				AND 	posts.post_status 	IN ( '" . implode( "','", $invoice_status ) . "' )
65
+				AND 	posts.post_status 	IN ( '" . implode("','", $invoice_status) . "' )
66 66
 			";
67 67
 		}
68 68
 
69
-		if ( ! empty( $parent_invoice_status ) ) {
70
-			if ( ! empty( $invoice_status ) ) {
71
-				$query['where'] .= " AND ( parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) OR parent.ID IS NULL ) ";
69
+		if (!empty($parent_invoice_status)) {
70
+			if (!empty($invoice_status)) {
71
+				$query['where'] .= " AND ( parent.post_status IN ( '" . implode("','", $parent_invoice_status) . "' ) OR parent.ID IS NULL ) ";
72 72
 			} else {
73
-				$query['where'] .= " AND parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) ";
73
+				$query['where'] .= " AND parent.post_status IN ( '" . implode("','", $parent_invoice_status) . "' ) ";
74 74
 			}
75 75
 		}
76 76
 
77
-		if ( ! empty( $filter_range['before'] ) ) {
77
+		if (!empty($filter_range['before'])) {
78 78
 			$query['where'] .= "
79
-				AND 	posts.post_date < '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['before'] ) ) . "'
79
+				AND 	posts.post_date < '" . date('Y-m-d H:i:s', strtotime($filter_range['before'])) . "'
80 80
 			";
81 81
 		}
82 82
 
83
-		if ( ! empty( $filter_range['after'] ) ) {
83
+		if (!empty($filter_range['after'])) {
84 84
 			$query['where'] .= "
85
-				AND 	posts.post_date > '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['after'] ) ) . "'
85
+				AND 	posts.post_date > '" . date('Y-m-d H:i:s', strtotime($filter_range['after'])) . "'
86 86
 			";
87 87
 		}
88 88
 
89
-		if ( ! empty( $where ) ) {
89
+		if (!empty($where)) {
90 90
 
91
-			foreach ( $where as $value ) {
91
+			foreach ($where as $value) {
92 92
 
93
-				if ( strtolower( $value['operator'] ) == 'in' || strtolower( $value['operator'] ) == 'not in' ) {
93
+				if (strtolower($value['operator']) == 'in' || strtolower($value['operator']) == 'not in') {
94 94
 
95
-					if ( is_array( $value['value'] ) ) {
96
-						$value['value'] = implode( "','", $value['value'] );
95
+					if (is_array($value['value'])) {
96
+						$value['value'] = implode("','", $value['value']);
97 97
 					}
98 98
 
99
-					if ( ! empty( $value['value'] ) ) {
99
+					if (!empty($value['value'])) {
100 100
 						$where_value = "{$value['operator']} ('{$value['value']}')";
101 101
 					}
102 102
 				} else {
103 103
 					$where_value = "{$value['operator']} '{$value['value']}'";
104 104
 				}
105 105
 
106
-				if ( ! empty( $where_value ) ) {
106
+				if (!empty($where_value)) {
107 107
 					$query['where'] .= " AND {$value['key']} {$where_value}";
108 108
 				}
109 109
 			}
110 110
 		}
111 111
 
112
-		if ( $group_by ) {
112
+		if ($group_by) {
113 113
 			$query['group_by'] = "GROUP BY {$group_by}";
114 114
 		}
115 115
 
116
-		if ( $order_by ) {
116
+		if ($order_by) {
117 117
 			$query['order_by'] = "ORDER BY {$order_by}";
118 118
 		}
119 119
 
120
-		if ( $limit ) {
120
+		if ($limit) {
121 121
 			$query['limit'] = "LIMIT {$limit}";
122 122
 		}
123 123
 
124
-		$query = apply_filters( 'getpaid_reports_get_invoice_report_query', $query, $data );
125
-		$query = implode( ' ', $query );
124
+		$query = apply_filters('getpaid_reports_get_invoice_report_query', $query, $data);
125
+		$query = implode(' ', $query);
126 126
 
127
-		return self::execute( $query_type, $query );
127
+		return self::execute($query_type, $query);
128 128
 
129 129
 	}
130 130
 
@@ -135,26 +135,26 @@  discard block
 block discarded – undo
135 135
 	 * @param  array $data
136 136
 	 * @return array
137 137
 	 */
138
-	public static function prepare_invoice_data( $data ) {
138
+	public static function prepare_invoice_data($data) {
139 139
 
140 140
 		$prepared = array();
141 141
 
142
-		foreach ( $data as $raw_key => $value ) {
143
-			$key      = sanitize_key( $raw_key );
142
+		foreach ($data as $raw_key => $value) {
143
+			$key      = sanitize_key($raw_key);
144 144
 			$distinct = '';
145 145
 
146
-			if ( isset( $value['distinct'] ) ) {
146
+			if (isset($value['distinct'])) {
147 147
 				$distinct = 'DISTINCT';
148 148
 			}
149 149
 
150
-			$get_key = self::get_invoice_table_key( $key, $value['type'] );
150
+			$get_key = self::get_invoice_table_key($key, $value['type']);
151 151
 
152
-			if ( false === $get_key ) {
152
+			if (false === $get_key) {
153 153
 				// Skip to the next foreach iteration else the query will be invalid.
154 154
 				continue;
155 155
 			}
156 156
 
157
-			if ( ! empty( $value['function'] ) ) {
157
+			if (!empty($value['function'])) {
158 158
 				$get = "{$value['function']}({$distinct} {$get_key})";
159 159
 			} else {
160 160
 				$get = "{$distinct} {$get_key}";
@@ -175,22 +175,22 @@  discard block
 block discarded – undo
175 175
 	 * @param  bool $with_parent
176 176
 	 * @return array
177 177
 	 */
178
-	public static function prepare_invoice_joins( $data, $with_parent ) {
178
+	public static function prepare_invoice_joins($data, $with_parent) {
179 179
 		global $wpdb;
180 180
 
181 181
 		$prepared = array();
182 182
 
183
-		foreach ( $data as $raw_key => $value ) {
184
-			$join_type = isset( $value['join_type'] ) ? $value['join_type'] : 'INNER';
185
-			$type      = isset( $value['type'] ) ? $value['type'] : false;
186
-			$key       = sanitize_key( $raw_key );
183
+		foreach ($data as $raw_key => $value) {
184
+			$join_type = isset($value['join_type']) ? $value['join_type'] : 'INNER';
185
+			$type      = isset($value['type']) ? $value['type'] : false;
186
+			$key       = sanitize_key($raw_key);
187 187
 
188
-			switch ( $type ) {
188
+			switch ($type) {
189 189
 				case 'meta':
190
-					$prepared[ "meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )";
190
+					$prepared["meta_{$key}"] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )";
191 191
 					break;
192 192
 				case 'parent_meta':
193
-					$prepared[ "parent_meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')";
193
+					$prepared["parent_meta_{$key}"] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')";
194 194
 					break;
195 195
 				case 'invoice_data':
196 196
 					$prepared['invoices'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoices AS invoices ON posts.ID = invoices.post_id";
@@ -201,7 +201,7 @@  discard block
 block discarded – undo
201 201
 			}
202 202
 		}
203 203
 
204
-		if ( $with_parent ) {
204
+		if ($with_parent) {
205 205
 			$prepared['parent'] = "LEFT JOIN {$wpdb->posts} AS parent ON posts.post_parent = parent.ID";
206 206
 		}
207 207
 
@@ -217,7 +217,7 @@  discard block
 block discarded – undo
217 217
 	 * @param  string $table
218 218
 	 * @return string|false
219 219
 	 */
220
-	public static function get_invoice_table_key( $key, $table ) {
220
+	public static function get_invoice_table_key($key, $table) {
221 221
 
222 222
 		$keys = array(
223 223
 			'meta'         => "meta_{$key}.meta_value",
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
 			'invoice_item' => "invoice_items.{$key}",
228 228
 		);
229 229
 
230
-		return isset( $keys[ $table ] ) ? $keys[ $table ] : false;
230
+		return isset($keys[$table]) ? $keys[$table] : false;
231 231
 
232 232
 	}
233 233
 
@@ -239,16 +239,16 @@  discard block
 block discarded – undo
239 239
 	 * @param  string $query
240 240
 	 * @return mixed depending on query_type
241 241
 	 */
242
-	public static function execute( $query_type, $query ) {
242
+	public static function execute($query_type, $query) {
243 243
 		global $wpdb;
244 244
 
245
-		$query_hash = md5( $query_type . $query );
246
-		$result     = self::get_cached_query( $query_hash );
247
-		if ( $result === false ) {
245
+		$query_hash = md5($query_type . $query);
246
+		$result     = self::get_cached_query($query_hash);
247
+		if ($result === false) {
248 248
 			self::enable_big_selects();
249 249
 
250
-			$result = $wpdb->$query_type( $query );
251
-			self::set_cached_query( $query_hash, $result );
250
+			$result = $wpdb->$query_type($query);
251
+			self::set_cached_query($query_hash, $result);
252 252
 		}
253 253
 
254 254
 		return $result;
@@ -263,8 +263,8 @@  discard block
 block discarded – undo
263 263
 
264 264
 		global $wpdb;
265 265
 
266
-		if ( ! $big_selects ) {
267
-			$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
266
+		if (!$big_selects) {
267
+			$wpdb->query('SET SESSION SQL_BIG_SELECTS=1');
268 268
 			$big_selects = true;
269 269
 		}
270 270
 	}
@@ -276,11 +276,11 @@  discard block
 block discarded – undo
276 276
 	 *
277 277
 	 * @return mixed|false The cache contents on success, false on failure to retrieve contents.
278 278
 	 */
279
-	protected static function get_cached_query( $query_hash ) {
279
+	protected static function get_cached_query($query_hash) {
280 280
 
281 281
 		return wp_cache_get(
282 282
 			$query_hash,
283
-			strtolower( __CLASS__ )
283
+			strtolower(__CLASS__)
284 284
 		);
285 285
 
286 286
 	}
@@ -291,12 +291,12 @@  discard block
 block discarded – undo
291 291
 	 * @param string $query_hash The query hash.
292 292
 	 * @param mixed  $data The data to cache.
293 293
 	 */
294
-	protected static function set_cached_query( $query_hash, $data ) {
294
+	protected static function set_cached_query($query_hash, $data) {
295 295
 
296 296
 		wp_cache_set(
297 297
 			$query_hash,
298 298
 			$data,
299
-			strtolower( __CLASS__ ),
299
+			strtolower(__CLASS__),
300 300
 			5 * MINUTE_IN_SECONDS
301 301
 		);
302 302
 
Please login to merge, or discard this patch.
Indentation   +276 added lines, -276 removed lines patch added patch discarded remove patch
@@ -12,294 +12,294 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Reports_Helper {
14 14
 
15
-	/**
16
-	 * Get report totals such as invoice totals and discount amounts.
17
-	 *
18
-	 * Data example:
19
-	 *
20
-	 * 'subtotal' => array(
21
-	 *     'type'     => 'invoice_data',
22
-	 *     'function' => 'SUM',
23
-	 *     'name'     => 'subtotal'
24
-	 * )
25
-	 *
26
-	 * @param  array $args
27
-	 * @return mixed depending on query_type
28
-	 */
29
-	public static function get_invoice_report_data( $args = array() ) {
30
-		global $wpdb;
31
-
32
-		$default_args = array(
33
-			'data'                  => array(), // The data to retrieve.
34
-			'where'                 => array(), // An array of where queries.
35
-			'query_type'            => 'get_row', // wpdb query to run.
36
-			'group_by'              => '', // What to group results by.
37
-			'order_by'              => '', // What to order by.
38
-			'limit'                 => '', // Results limit.
39
-			'filter_range'          => array(), // An array of before and after dates to limit results by.
40
-			'invoice_types'         => array( 'wpi_invoice' ), // An array of post types to retrieve.
41
-			'invoice_status'        => array( 'publish', 'wpi-processing', 'wpi-onhold' ),
42
-			'parent_invoice_status' => false, // Optionally filter by parent invoice status.
43
-		);
44
-
45
-		$args         = apply_filters( 'getpaid_reports_get_invoice_report_data_args', $args );
46
-		$args         = wp_parse_args( $args, $default_args );
47
-
48
-		extract( $args );
49
-
50
-		if ( empty( $data ) ) {
51
-			return '';
52
-		}
53
-
54
-		$query           = array();
55
-		$query['select'] = 'SELECT ' . implode( ',', self::prepare_invoice_data( $data ) );
56
-		$query['from']   = "FROM {$wpdb->posts} AS posts";
57
-		$query['join']   = implode( ' ', self::prepare_invoice_joins( $data + $where, ! empty( $parent_invoice_status ) ) );
58
-
59
-		$query['where']  = "
15
+    /**
16
+     * Get report totals such as invoice totals and discount amounts.
17
+     *
18
+     * Data example:
19
+     *
20
+     * 'subtotal' => array(
21
+     *     'type'     => 'invoice_data',
22
+     *     'function' => 'SUM',
23
+     *     'name'     => 'subtotal'
24
+     * )
25
+     *
26
+     * @param  array $args
27
+     * @return mixed depending on query_type
28
+     */
29
+    public static function get_invoice_report_data( $args = array() ) {
30
+        global $wpdb;
31
+
32
+        $default_args = array(
33
+            'data'                  => array(), // The data to retrieve.
34
+            'where'                 => array(), // An array of where queries.
35
+            'query_type'            => 'get_row', // wpdb query to run.
36
+            'group_by'              => '', // What to group results by.
37
+            'order_by'              => '', // What to order by.
38
+            'limit'                 => '', // Results limit.
39
+            'filter_range'          => array(), // An array of before and after dates to limit results by.
40
+            'invoice_types'         => array( 'wpi_invoice' ), // An array of post types to retrieve.
41
+            'invoice_status'        => array( 'publish', 'wpi-processing', 'wpi-onhold' ),
42
+            'parent_invoice_status' => false, // Optionally filter by parent invoice status.
43
+        );
44
+
45
+        $args         = apply_filters( 'getpaid_reports_get_invoice_report_data_args', $args );
46
+        $args         = wp_parse_args( $args, $default_args );
47
+
48
+        extract( $args );
49
+
50
+        if ( empty( $data ) ) {
51
+            return '';
52
+        }
53
+
54
+        $query           = array();
55
+        $query['select'] = 'SELECT ' . implode( ',', self::prepare_invoice_data( $data ) );
56
+        $query['from']   = "FROM {$wpdb->posts} AS posts";
57
+        $query['join']   = implode( ' ', self::prepare_invoice_joins( $data + $where, ! empty( $parent_invoice_status ) ) );
58
+
59
+        $query['where']  = "
60 60
 			WHERE 	posts.post_type 	IN ( '" . implode( "','", $invoice_types ) . "' )
61 61
 			";
62 62
 
63
-		if ( ! empty( $invoice_status ) ) {
64
-			$query['where'] .= "
63
+        if ( ! empty( $invoice_status ) ) {
64
+            $query['where'] .= "
65 65
 				AND 	posts.post_status 	IN ( '" . implode( "','", $invoice_status ) . "' )
66 66
 			";
67
-		}
68
-
69
-		if ( ! empty( $parent_invoice_status ) ) {
70
-			if ( ! empty( $invoice_status ) ) {
71
-				$query['where'] .= " AND ( parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) OR parent.ID IS NULL ) ";
72
-			} else {
73
-				$query['where'] .= " AND parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) ";
74
-			}
75
-		}
76
-
77
-		if ( ! empty( $filter_range['before'] ) ) {
78
-			$query['where'] .= "
67
+        }
68
+
69
+        if ( ! empty( $parent_invoice_status ) ) {
70
+            if ( ! empty( $invoice_status ) ) {
71
+                $query['where'] .= " AND ( parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) OR parent.ID IS NULL ) ";
72
+            } else {
73
+                $query['where'] .= " AND parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) ";
74
+            }
75
+        }
76
+
77
+        if ( ! empty( $filter_range['before'] ) ) {
78
+            $query['where'] .= "
79 79
 				AND 	posts.post_date < '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['before'] ) ) . "'
80 80
 			";
81
-		}
81
+        }
82 82
 
83
-		if ( ! empty( $filter_range['after'] ) ) {
84
-			$query['where'] .= "
83
+        if ( ! empty( $filter_range['after'] ) ) {
84
+            $query['where'] .= "
85 85
 				AND 	posts.post_date > '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['after'] ) ) . "'
86 86
 			";
87
-		}
87
+        }
88 88
 
89
-		if ( ! empty( $where ) ) {
89
+        if ( ! empty( $where ) ) {
90 90
 
91
-			foreach ( $where as $value ) {
91
+            foreach ( $where as $value ) {
92 92
 
93
-				if ( strtolower( $value['operator'] ) == 'in' || strtolower( $value['operator'] ) == 'not in' ) {
94
-
95
-					if ( is_array( $value['value'] ) ) {
96
-						$value['value'] = implode( "','", $value['value'] );
97
-					}
98
-
99
-					if ( ! empty( $value['value'] ) ) {
100
-						$where_value = "{$value['operator']} ('{$value['value']}')";
101
-					}
102
-				} else {
103
-					$where_value = "{$value['operator']} '{$value['value']}'";
104
-				}
105
-
106
-				if ( ! empty( $where_value ) ) {
107
-					$query['where'] .= " AND {$value['key']} {$where_value}";
108
-				}
109
-			}
110
-		}
111
-
112
-		if ( $group_by ) {
113
-			$query['group_by'] = "GROUP BY {$group_by}";
114
-		}
115
-
116
-		if ( $order_by ) {
117
-			$query['order_by'] = "ORDER BY {$order_by}";
118
-		}
119
-
120
-		if ( $limit ) {
121
-			$query['limit'] = "LIMIT {$limit}";
122
-		}
123
-
124
-		$query = apply_filters( 'getpaid_reports_get_invoice_report_query', $query, $data );
125
-		$query = implode( ' ', $query );
126
-
127
-		return self::execute( $query_type, $query );
128
-
129
-	}
130
-
131
-	/**
132
-	 * Prepares the data to select.
133
-	 *
134
-	 *
135
-	 * @param  array $data
136
-	 * @return array
137
-	 */
138
-	public static function prepare_invoice_data( $data ) {
139
-
140
-		$prepared = array();
141
-
142
-		foreach ( $data as $raw_key => $value ) {
143
-			$key      = sanitize_key( $raw_key );
144
-			$distinct = '';
145
-
146
-			if ( isset( $value['distinct'] ) ) {
147
-				$distinct = 'DISTINCT';
148
-			}
149
-
150
-			$get_key = self::get_invoice_table_key( $key, $value['type'] );
151
-
152
-			if ( false === $get_key ) {
153
-				// Skip to the next foreach iteration else the query will be invalid.
154
-				continue;
155
-			}
156
-
157
-			if ( ! empty( $value['function'] ) ) {
158
-				$get = "{$value['function']}({$distinct} {$get_key})";
159
-			} else {
160
-				$get = "{$distinct} {$get_key}";
161
-			}
162
-
163
-			$prepared[] = "{$get} as {$value['name']}";
164
-		}
165
-
166
-		return $prepared;
167
-
168
-	}
169
-
170
-	/**
171
-	 * Prepares the joins to use.
172
-	 *
173
-	 *
174
-	 * @param  array $data
175
-	 * @param  bool $with_parent
176
-	 * @return array
177
-	 */
178
-	public static function prepare_invoice_joins( $data, $with_parent ) {
179
-		global $wpdb;
180
-
181
-		$prepared = array();
182
-
183
-		foreach ( $data as $raw_key => $value ) {
184
-			$join_type = isset( $value['join_type'] ) ? $value['join_type'] : 'INNER';
185
-			$type      = isset( $value['type'] ) ? $value['type'] : false;
186
-			$key       = sanitize_key( $raw_key );
187
-
188
-			switch ( $type ) {
189
-				case 'meta':
190
-					$prepared[ "meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )";
191
-					break;
192
-				case 'parent_meta':
193
-					$prepared[ "parent_meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')";
194
-					break;
195
-				case 'invoice_data':
196
-					$prepared['invoices'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoices AS invoices ON posts.ID = invoices.post_id";
197
-					break;
198
-				case 'invoice_item':
199
-					$prepared['invoice_items'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoice_items AS invoice_items ON posts.ID = invoice_items.post_id";
200
-					break;
201
-			}
202
-		}
203
-
204
-		if ( $with_parent ) {
205
-			$prepared['parent'] = "LEFT JOIN {$wpdb->posts} AS parent ON posts.post_parent = parent.ID";
206
-		}
207
-
208
-		return $prepared;
209
-
210
-	}
211
-
212
-	/**
213
-	 * Retrieves the appropriate table key to use.
214
-	 *
215
-	 *
216
-	 * @param  string $key
217
-	 * @param  string $table
218
-	 * @return string|false
219
-	 */
220
-	public static function get_invoice_table_key( $key, $table ) {
221
-
222
-		$keys = array(
223
-			'meta'         => "meta_{$key}.meta_value",
224
-			'parent_meta'  => "parent_meta_{$key}.meta_value",
225
-			'post_data'    => "posts.{$key}",
226
-			'invoice_data' => "invoices.{$key}",
227
-			'invoice_item' => "invoice_items.{$key}",
228
-		);
229
-
230
-		return isset( $keys[ $table ] ) ? $keys[ $table ] : false;
231
-
232
-	}
233
-
234
-	/**
235
-	 * Executes a query and caches the result for a minute.
236
-	 *
237
-	 *
238
-	 * @param  string $query_type
239
-	 * @param  string $query
240
-	 * @return mixed depending on query_type
241
-	 */
242
-	public static function execute( $query_type, $query ) {
243
-		global $wpdb;
244
-
245
-		$query_hash = md5( $query_type . $query );
246
-		$result     = self::get_cached_query( $query_hash );
247
-		if ( $result === false ) {
248
-			self::enable_big_selects();
249
-
250
-			$result = $wpdb->$query_type( $query );
251
-			self::set_cached_query( $query_hash, $result );
252
-		}
253
-
254
-		return $result;
255
-
256
-	}
257
-
258
-	/**
259
-	 * Enables big mysql selects for reports, just once for this session.
260
-	 */
261
-	protected static function enable_big_selects() {
262
-		static $big_selects = false;
263
-
264
-		global $wpdb;
265
-
266
-		if ( ! $big_selects ) {
267
-			$wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
268
-			$big_selects = true;
269
-		}
270
-	}
271
-
272
-	/**
273
-	 * Get the cached query result or null if it's not in the cache.
274
-	 *
275
-	 * @param string $query_hash The query hash.
276
-	 *
277
-	 * @return mixed|false The cache contents on success, false on failure to retrieve contents.
278
-	 */
279
-	protected static function get_cached_query( $query_hash ) {
280
-
281
-		return wp_cache_get(
282
-			$query_hash,
283
-			strtolower( __CLASS__ )
284
-		);
285
-
286
-	}
287
-
288
-	/**
289
-	 * Set the cached query result.
290
-	 *
291
-	 * @param string $query_hash The query hash.
292
-	 * @param mixed  $data The data to cache.
293
-	 */
294
-	protected static function set_cached_query( $query_hash, $data ) {
295
-
296
-		wp_cache_set(
297
-			$query_hash,
298
-			$data,
299
-			strtolower( __CLASS__ ),
300
-			5 * MINUTE_IN_SECONDS
301
-		);
302
-
303
-	}
93
+                if ( strtolower( $value['operator'] ) == 'in' || strtolower( $value['operator'] ) == 'not in' ) {
94
+
95
+                    if ( is_array( $value['value'] ) ) {
96
+                        $value['value'] = implode( "','", $value['value'] );
97
+                    }
98
+
99
+                    if ( ! empty( $value['value'] ) ) {
100
+                        $where_value = "{$value['operator']} ('{$value['value']}')";
101
+                    }
102
+                } else {
103
+                    $where_value = "{$value['operator']} '{$value['value']}'";
104
+                }
105
+
106
+                if ( ! empty( $where_value ) ) {
107
+                    $query['where'] .= " AND {$value['key']} {$where_value}";
108
+                }
109
+            }
110
+        }
111
+
112
+        if ( $group_by ) {
113
+            $query['group_by'] = "GROUP BY {$group_by}";
114
+        }
115
+
116
+        if ( $order_by ) {
117
+            $query['order_by'] = "ORDER BY {$order_by}";
118
+        }
119
+
120
+        if ( $limit ) {
121
+            $query['limit'] = "LIMIT {$limit}";
122
+        }
123
+
124
+        $query = apply_filters( 'getpaid_reports_get_invoice_report_query', $query, $data );
125
+        $query = implode( ' ', $query );
126
+
127
+        return self::execute( $query_type, $query );
128
+
129
+    }
130
+
131
+    /**
132
+     * Prepares the data to select.
133
+     *
134
+     *
135
+     * @param  array $data
136
+     * @return array
137
+     */
138
+    public static function prepare_invoice_data( $data ) {
139
+
140
+        $prepared = array();
141
+
142
+        foreach ( $data as $raw_key => $value ) {
143
+            $key      = sanitize_key( $raw_key );
144
+            $distinct = '';
145
+
146
+            if ( isset( $value['distinct'] ) ) {
147
+                $distinct = 'DISTINCT';
148
+            }
149
+
150
+            $get_key = self::get_invoice_table_key( $key, $value['type'] );
151
+
152
+            if ( false === $get_key ) {
153
+                // Skip to the next foreach iteration else the query will be invalid.
154
+                continue;
155
+            }
156
+
157
+            if ( ! empty( $value['function'] ) ) {
158
+                $get = "{$value['function']}({$distinct} {$get_key})";
159
+            } else {
160
+                $get = "{$distinct} {$get_key}";
161
+            }
162
+
163
+            $prepared[] = "{$get} as {$value['name']}";
164
+        }
165
+
166
+        return $prepared;
167
+
168
+    }
169
+
170
+    /**
171
+     * Prepares the joins to use.
172
+     *
173
+     *
174
+     * @param  array $data
175
+     * @param  bool $with_parent
176
+     * @return array
177
+     */
178
+    public static function prepare_invoice_joins( $data, $with_parent ) {
179
+        global $wpdb;
180
+
181
+        $prepared = array();
182
+
183
+        foreach ( $data as $raw_key => $value ) {
184
+            $join_type = isset( $value['join_type'] ) ? $value['join_type'] : 'INNER';
185
+            $type      = isset( $value['type'] ) ? $value['type'] : false;
186
+            $key       = sanitize_key( $raw_key );
187
+
188
+            switch ( $type ) {
189
+                case 'meta':
190
+                    $prepared[ "meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )";
191
+                    break;
192
+                case 'parent_meta':
193
+                    $prepared[ "parent_meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')";
194
+                    break;
195
+                case 'invoice_data':
196
+                    $prepared['invoices'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoices AS invoices ON posts.ID = invoices.post_id";
197
+                    break;
198
+                case 'invoice_item':
199
+                    $prepared['invoice_items'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoice_items AS invoice_items ON posts.ID = invoice_items.post_id";
200
+                    break;
201
+            }
202
+        }
203
+
204
+        if ( $with_parent ) {
205
+            $prepared['parent'] = "LEFT JOIN {$wpdb->posts} AS parent ON posts.post_parent = parent.ID";
206
+        }
207
+
208
+        return $prepared;
209
+
210
+    }
211
+
212
+    /**
213
+     * Retrieves the appropriate table key to use.
214
+     *
215
+     *
216
+     * @param  string $key
217
+     * @param  string $table
218
+     * @return string|false
219
+     */
220
+    public static function get_invoice_table_key( $key, $table ) {
221
+
222
+        $keys = array(
223
+            'meta'         => "meta_{$key}.meta_value",
224
+            'parent_meta'  => "parent_meta_{$key}.meta_value",
225
+            'post_data'    => "posts.{$key}",
226
+            'invoice_data' => "invoices.{$key}",
227
+            'invoice_item' => "invoice_items.{$key}",
228
+        );
229
+
230
+        return isset( $keys[ $table ] ) ? $keys[ $table ] : false;
231
+
232
+    }
233
+
234
+    /**
235
+     * Executes a query and caches the result for a minute.
236
+     *
237
+     *
238
+     * @param  string $query_type
239
+     * @param  string $query
240
+     * @return mixed depending on query_type
241
+     */
242
+    public static function execute( $query_type, $query ) {
243
+        global $wpdb;
244
+
245
+        $query_hash = md5( $query_type . $query );
246
+        $result     = self::get_cached_query( $query_hash );
247
+        if ( $result === false ) {
248
+            self::enable_big_selects();
249
+
250
+            $result = $wpdb->$query_type( $query );
251
+            self::set_cached_query( $query_hash, $result );
252
+        }
253
+
254
+        return $result;
255
+
256
+    }
257
+
258
+    /**
259
+     * Enables big mysql selects for reports, just once for this session.
260
+     */
261
+    protected static function enable_big_selects() {
262
+        static $big_selects = false;
263
+
264
+        global $wpdb;
265
+
266
+        if ( ! $big_selects ) {
267
+            $wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' );
268
+            $big_selects = true;
269
+        }
270
+    }
271
+
272
+    /**
273
+     * Get the cached query result or null if it's not in the cache.
274
+     *
275
+     * @param string $query_hash The query hash.
276
+     *
277
+     * @return mixed|false The cache contents on success, false on failure to retrieve contents.
278
+     */
279
+    protected static function get_cached_query( $query_hash ) {
280
+
281
+        return wp_cache_get(
282
+            $query_hash,
283
+            strtolower( __CLASS__ )
284
+        );
285
+
286
+    }
287
+
288
+    /**
289
+     * Set the cached query result.
290
+     *
291
+     * @param string $query_hash The query hash.
292
+     * @param mixed  $data The data to cache.
293
+     */
294
+    protected static function set_cached_query( $query_hash, $data ) {
295
+
296
+        wp_cache_set(
297
+            $query_hash,
298
+            $data,
299
+            strtolower( __CLASS__ ),
300
+            5 * MINUTE_IN_SECONDS
301
+        );
302
+
303
+    }
304 304
 
305 305
 }
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-report-top-earners-controller.php 2 patches
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -18,50 +18,50 @@
 block discarded – undo
18 18
  */
19 19
 class GetPaid_REST_Report_Top_Earners_Controller extends GetPaid_REST_Report_Top_Sellers_Controller {
20 20
 
21
-	/**
22
-	 * Route base.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $rest_base = 'reports/top_earners';
21
+    /**
22
+     * Route base.
23
+     *
24
+     * @var string
25
+     */
26
+    protected $rest_base = 'reports/top_earners';
27 27
 
28
-	/**
29
-	 * Get all data needed for this report and store in the class.
30
-	 */
31
-	protected function query_report_data() {
28
+    /**
29
+     * Get all data needed for this report and store in the class.
30
+     */
31
+    protected function query_report_data() {
32 32
 
33
-		$this->report_data = GetPaid_Reports_Helper::get_invoice_report_data(
34
-			array(
35
-				'data'              => array(
36
-					'quantity'      => array(
37
-						'type'            => 'invoice_item',
38
-						'function'        => 'SUM',
39
-						'name'            => 'invoice_item_qty',
40
-					),
41
-					'item_id'             => array(
42
-						'type'            => 'invoice_item',
43
-						'function'        => '',
44
-						'name'            => 'invoice_item_id',
45
-					),
46
-					'item_name'           => array(
47
-						'type'            => 'invoice_item',
48
-						'function'        => '',
49
-						'name'            => 'invoice_item_name',
50
-					),
51
-					'price'               => array(
52
-						'type'            => 'invoice_item',
53
-						'function'        => 'SUM',
54
-						'name'            => 'invoice_item_price',
55
-					),
56
-				),
57
-				'group_by'       => 'invoice_item_id',
58
-				'order_by'       => 'invoice_item_price DESC',
59
-				'query_type'     => 'get_results',
60
-				'limit'          => 10,
61
-				'filter_range'   => $this->report_range,
62
-			)
63
-		);
33
+        $this->report_data = GetPaid_Reports_Helper::get_invoice_report_data(
34
+            array(
35
+                'data'              => array(
36
+                    'quantity'      => array(
37
+                        'type'            => 'invoice_item',
38
+                        'function'        => 'SUM',
39
+                        'name'            => 'invoice_item_qty',
40
+                    ),
41
+                    'item_id'             => array(
42
+                        'type'            => 'invoice_item',
43
+                        'function'        => '',
44
+                        'name'            => 'invoice_item_id',
45
+                    ),
46
+                    'item_name'           => array(
47
+                        'type'            => 'invoice_item',
48
+                        'function'        => '',
49
+                        'name'            => 'invoice_item_name',
50
+                    ),
51
+                    'price'               => array(
52
+                        'type'            => 'invoice_item',
53
+                        'function'        => 'SUM',
54
+                        'name'            => 'invoice_item_price',
55
+                    ),
56
+                ),
57
+                'group_by'       => 'invoice_item_id',
58
+                'order_by'       => 'invoice_item_price DESC',
59
+                'query_type'     => 'get_results',
60
+                'limit'          => 10,
61
+                'filter_range'   => $this->report_range,
62
+            )
63
+        );
64 64
 
65
-	}
65
+    }
66 66
 
67 67
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@
 block discarded – undo
9 9
  * @since   2.0.0
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 /**
15 15
  * GetPaid REST top earners controller class.
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-report-top-sellers-controller.php 2 patches
Indentation   +175 added lines, -175 removed lines patch added patch discarded remove patch
@@ -18,179 +18,179 @@
 block discarded – undo
18 18
  */
19 19
 class GetPaid_REST_Report_Top_Sellers_Controller extends GetPaid_REST_Report_Sales_Controller {
20 20
 
21
-	/**
22
-	 * Route base.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $rest_base = 'reports/top_sellers';
27
-
28
-	/**
29
-	 * Get top sellers report.
30
-	 *
31
-	 * @param WP_REST_Request $request
32
-	 * @return array|WP_Error
33
-	 */
34
-	public function get_items( $request ) {
35
-
36
-		// Prepare items.
37
-		$this->report_range = $this->get_date_range( $request );
38
-		$report_data        = $this->get_report_data();
39
-
40
-		$top_sellers = array();
41
-
42
-		foreach ( $report_data as $item ) {
43
-
44
-			$item_obj  = new WPInv_Item( $item );
45
-			$item_name = $item->invoice_item_name;
46
-			$item_qty  = absint( $item->invoice_item_qty );
47
-			$item_id   = absint( $item->invoice_item_id );
48
-			$price     = sanitize_text_field( wpinv_price( $item->invoice_item_price ) );
49
-
50
-			$item_obj  = new WPInv_Item( $item_id );
51
-
52
-			if ( $item_obj->exists() ) {
53
-				$item_name = $item_obj->get_name();
54
-			} else {
55
-				$item_id   = 0; 
56
-			}
57
-
58
-			$top_sellers[] = array(
59
-				'name'               =>sanitize_text_field( $item_name ),
60
-				'item_id'            => $item_id,
61
-				'quantity'           => $item_qty,
62
-				'earnings'           => wpinv_round_amount( $item->invoice_item_price ),
63
-				'earnings_formatted' => sanitize_text_field( wpinv_price( $price ) ),
64
-			);
65
-
66
-		}
67
-
68
-		$data = array();
69
-		foreach ( $top_sellers as $top_seller ) {
70
-			$item   = $this->prepare_item_for_response( (object) $top_seller, $request );
71
-			$data[] = $this->prepare_response_for_collection( $item );
72
-		}
73
-
74
-		return rest_ensure_response( $data );
75
-
76
-	}
77
-
78
-	/**
79
-	 * Prepare a report sales object for serialization.
80
-	 *
81
-	 * @param stdClass $top_seller
82
-	 * @param WP_REST_Request $request Request object.
83
-	 * @return WP_REST_Response $response Response data.
84
-	 */
85
-	public function prepare_item_for_response( $top_seller, $request ) {
86
-		$data    = (array) $top_seller;
87
-
88
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
89
-		$data    = $this->add_additional_fields_to_object( $data, $request );
90
-		$data    = $this->filter_response_by_context( $data, $context );
91
-
92
-		// Wrap the data in a response object.
93
-		$response = rest_ensure_response( $data );
94
-		$links = array(
95
-			'about' => array(
96
-				'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ),
97
-			),
98
-		);
99
-
100
-		if ( ! empty( $top_seller->item_id ) ) {
101
-			$links['item']   = array(
102
-				'href'       => rest_url( sprintf( '/%s/items/%s', $this->namespace, $top_seller->item_id ) ),
103
-				'embeddable' => true,
104
-			);
105
-		}
106
-
107
-		$response->add_links( $links );
108
-		return apply_filters( 'getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request );
109
-	}
110
-
111
-	/**
112
-	 * Get all data needed for this report and store in the class.
113
-	 */
114
-	protected function query_report_data() {
115
-
116
-		$this->report_data = GetPaid_Reports_Helper::get_invoice_report_data(
117
-			array(
118
-				'data'              => array(
119
-					'quantity'      => array(
120
-						'type'            => 'invoice_item',
121
-						'function'        => 'SUM',
122
-						'name'            => 'invoice_item_qty',
123
-					),
124
-					'item_id'             => array(
125
-						'type'            => 'invoice_item',
126
-						'function'        => '',
127
-						'name'            => 'invoice_item_id',
128
-					),
129
-					'item_name'           => array(
130
-						'type'            => 'invoice_item',
131
-						'function'        => '',
132
-						'name'            => 'invoice_item_name',
133
-					),
134
-					'price'               => array(
135
-						'type'            => 'invoice_item',
136
-						'function'        => 'SUM',
137
-						'name'            => 'invoice_item_price',
138
-					),
139
-				),
140
-				'group_by'       => 'invoice_item_id',
141
-				'order_by'       => 'invoice_item_qty DESC',
142
-				'query_type'     => 'get_results',
143
-				'limit'          => 10,
144
-				'filter_range'   => $this->report_range,
145
-			)
146
-		);
147
-
148
-	}
149
-
150
-	/**
151
-	 * Get the Report's schema, conforming to JSON Schema.
152
-	 *
153
-	 * @return array
154
-	 */
155
-	public function get_item_schema() {
156
-		$schema = array(
157
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
158
-			'title'      => $this->rest_base,
159
-			'type'       => 'object',
160
-			'properties' => array(
161
-				'name' => array(
162
-					'description' => __( 'Item name.', 'invoicing' ),
163
-					'type'        => 'string',
164
-					'context'     => array( 'view' ),
165
-					'readonly'    => true,
166
-				),
167
-				'item_id'         => array(
168
-					'description' => __( 'Item ID.', 'invoicing' ),
169
-					'type'        => 'integer',
170
-					'context'     => array( 'view' ),
171
-					'readonly'    => true,
172
-				),
173
-				'quantity' => array(
174
-					'description' => __( 'Total number of purchases.', 'invoicing' ),
175
-					'type'        => 'integer',
176
-					'context'     => array( 'view' ),
177
-					'readonly'    => true,
178
-				),
179
-				'earnings' => array(
180
-					'description' => __( 'Total earnings for the item.', 'invoicing' ),
181
-					'type'        => 'double',
182
-					'context'     => array( 'view' ),
183
-					'readonly'    => true,
184
-				),
185
-				'earnings_formatted"' => array(
186
-					'description' => __( 'Total earnings (formatted) for the item.', 'invoicing' ),
187
-					'type'        => 'string',
188
-					'context'     => array( 'view' ),
189
-					'readonly'    => true,
190
-				),
191
-			),
192
-		);
193
-
194
-		return $this->add_additional_fields_schema( $schema );
195
-	}
21
+    /**
22
+     * Route base.
23
+     *
24
+     * @var string
25
+     */
26
+    protected $rest_base = 'reports/top_sellers';
27
+
28
+    /**
29
+     * Get top sellers report.
30
+     *
31
+     * @param WP_REST_Request $request
32
+     * @return array|WP_Error
33
+     */
34
+    public function get_items( $request ) {
35
+
36
+        // Prepare items.
37
+        $this->report_range = $this->get_date_range( $request );
38
+        $report_data        = $this->get_report_data();
39
+
40
+        $top_sellers = array();
41
+
42
+        foreach ( $report_data as $item ) {
43
+
44
+            $item_obj  = new WPInv_Item( $item );
45
+            $item_name = $item->invoice_item_name;
46
+            $item_qty  = absint( $item->invoice_item_qty );
47
+            $item_id   = absint( $item->invoice_item_id );
48
+            $price     = sanitize_text_field( wpinv_price( $item->invoice_item_price ) );
49
+
50
+            $item_obj  = new WPInv_Item( $item_id );
51
+
52
+            if ( $item_obj->exists() ) {
53
+                $item_name = $item_obj->get_name();
54
+            } else {
55
+                $item_id   = 0; 
56
+            }
57
+
58
+            $top_sellers[] = array(
59
+                'name'               =>sanitize_text_field( $item_name ),
60
+                'item_id'            => $item_id,
61
+                'quantity'           => $item_qty,
62
+                'earnings'           => wpinv_round_amount( $item->invoice_item_price ),
63
+                'earnings_formatted' => sanitize_text_field( wpinv_price( $price ) ),
64
+            );
65
+
66
+        }
67
+
68
+        $data = array();
69
+        foreach ( $top_sellers as $top_seller ) {
70
+            $item   = $this->prepare_item_for_response( (object) $top_seller, $request );
71
+            $data[] = $this->prepare_response_for_collection( $item );
72
+        }
73
+
74
+        return rest_ensure_response( $data );
75
+
76
+    }
77
+
78
+    /**
79
+     * Prepare a report sales object for serialization.
80
+     *
81
+     * @param stdClass $top_seller
82
+     * @param WP_REST_Request $request Request object.
83
+     * @return WP_REST_Response $response Response data.
84
+     */
85
+    public function prepare_item_for_response( $top_seller, $request ) {
86
+        $data    = (array) $top_seller;
87
+
88
+        $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
89
+        $data    = $this->add_additional_fields_to_object( $data, $request );
90
+        $data    = $this->filter_response_by_context( $data, $context );
91
+
92
+        // Wrap the data in a response object.
93
+        $response = rest_ensure_response( $data );
94
+        $links = array(
95
+            'about' => array(
96
+                'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ),
97
+            ),
98
+        );
99
+
100
+        if ( ! empty( $top_seller->item_id ) ) {
101
+            $links['item']   = array(
102
+                'href'       => rest_url( sprintf( '/%s/items/%s', $this->namespace, $top_seller->item_id ) ),
103
+                'embeddable' => true,
104
+            );
105
+        }
106
+
107
+        $response->add_links( $links );
108
+        return apply_filters( 'getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request );
109
+    }
110
+
111
+    /**
112
+     * Get all data needed for this report and store in the class.
113
+     */
114
+    protected function query_report_data() {
115
+
116
+        $this->report_data = GetPaid_Reports_Helper::get_invoice_report_data(
117
+            array(
118
+                'data'              => array(
119
+                    'quantity'      => array(
120
+                        'type'            => 'invoice_item',
121
+                        'function'        => 'SUM',
122
+                        'name'            => 'invoice_item_qty',
123
+                    ),
124
+                    'item_id'             => array(
125
+                        'type'            => 'invoice_item',
126
+                        'function'        => '',
127
+                        'name'            => 'invoice_item_id',
128
+                    ),
129
+                    'item_name'           => array(
130
+                        'type'            => 'invoice_item',
131
+                        'function'        => '',
132
+                        'name'            => 'invoice_item_name',
133
+                    ),
134
+                    'price'               => array(
135
+                        'type'            => 'invoice_item',
136
+                        'function'        => 'SUM',
137
+                        'name'            => 'invoice_item_price',
138
+                    ),
139
+                ),
140
+                'group_by'       => 'invoice_item_id',
141
+                'order_by'       => 'invoice_item_qty DESC',
142
+                'query_type'     => 'get_results',
143
+                'limit'          => 10,
144
+                'filter_range'   => $this->report_range,
145
+            )
146
+        );
147
+
148
+    }
149
+
150
+    /**
151
+     * Get the Report's schema, conforming to JSON Schema.
152
+     *
153
+     * @return array
154
+     */
155
+    public function get_item_schema() {
156
+        $schema = array(
157
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
158
+            'title'      => $this->rest_base,
159
+            'type'       => 'object',
160
+            'properties' => array(
161
+                'name' => array(
162
+                    'description' => __( 'Item name.', 'invoicing' ),
163
+                    'type'        => 'string',
164
+                    'context'     => array( 'view' ),
165
+                    'readonly'    => true,
166
+                ),
167
+                'item_id'         => array(
168
+                    'description' => __( 'Item ID.', 'invoicing' ),
169
+                    'type'        => 'integer',
170
+                    'context'     => array( 'view' ),
171
+                    'readonly'    => true,
172
+                ),
173
+                'quantity' => array(
174
+                    'description' => __( 'Total number of purchases.', 'invoicing' ),
175
+                    'type'        => 'integer',
176
+                    'context'     => array( 'view' ),
177
+                    'readonly'    => true,
178
+                ),
179
+                'earnings' => array(
180
+                    'description' => __( 'Total earnings for the item.', 'invoicing' ),
181
+                    'type'        => 'double',
182
+                    'context'     => array( 'view' ),
183
+                    'readonly'    => true,
184
+                ),
185
+                'earnings_formatted"' => array(
186
+                    'description' => __( 'Total earnings (formatted) for the item.', 'invoicing' ),
187
+                    'type'        => 'string',
188
+                    'context'     => array( 'view' ),
189
+                    'readonly'    => true,
190
+                ),
191
+            ),
192
+        );
193
+
194
+        return $this->add_additional_fields_schema( $schema );
195
+    }
196 196
 }
Please login to merge, or discard this patch.
Spacing   +39 added lines, -39 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  * @since   2.0.0
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 /**
15 15
  * GetPaid REST top sellers controller class.
@@ -31,47 +31,47 @@  discard block
 block discarded – undo
31 31
 	 * @param WP_REST_Request $request
32 32
 	 * @return array|WP_Error
33 33
 	 */
34
-	public function get_items( $request ) {
34
+	public function get_items($request) {
35 35
 
36 36
 		// Prepare items.
37
-		$this->report_range = $this->get_date_range( $request );
37
+		$this->report_range = $this->get_date_range($request);
38 38
 		$report_data        = $this->get_report_data();
39 39
 
40 40
 		$top_sellers = array();
41 41
 
42
-		foreach ( $report_data as $item ) {
42
+		foreach ($report_data as $item) {
43 43
 
44
-			$item_obj  = new WPInv_Item( $item );
44
+			$item_obj  = new WPInv_Item($item);
45 45
 			$item_name = $item->invoice_item_name;
46
-			$item_qty  = absint( $item->invoice_item_qty );
47
-			$item_id   = absint( $item->invoice_item_id );
48
-			$price     = sanitize_text_field( wpinv_price( $item->invoice_item_price ) );
46
+			$item_qty  = absint($item->invoice_item_qty);
47
+			$item_id   = absint($item->invoice_item_id);
48
+			$price     = sanitize_text_field(wpinv_price($item->invoice_item_price));
49 49
 
50
-			$item_obj  = new WPInv_Item( $item_id );
50
+			$item_obj  = new WPInv_Item($item_id);
51 51
 
52
-			if ( $item_obj->exists() ) {
52
+			if ($item_obj->exists()) {
53 53
 				$item_name = $item_obj->get_name();
54 54
 			} else {
55 55
 				$item_id   = 0; 
56 56
 			}
57 57
 
58 58
 			$top_sellers[] = array(
59
-				'name'               =>sanitize_text_field( $item_name ),
59
+				'name'               =>sanitize_text_field($item_name),
60 60
 				'item_id'            => $item_id,
61 61
 				'quantity'           => $item_qty,
62
-				'earnings'           => wpinv_round_amount( $item->invoice_item_price ),
63
-				'earnings_formatted' => sanitize_text_field( wpinv_price( $price ) ),
62
+				'earnings'           => wpinv_round_amount($item->invoice_item_price),
63
+				'earnings_formatted' => sanitize_text_field(wpinv_price($price)),
64 64
 			);
65 65
 
66 66
 		}
67 67
 
68 68
 		$data = array();
69
-		foreach ( $top_sellers as $top_seller ) {
70
-			$item   = $this->prepare_item_for_response( (object) $top_seller, $request );
71
-			$data[] = $this->prepare_response_for_collection( $item );
69
+		foreach ($top_sellers as $top_seller) {
70
+			$item   = $this->prepare_item_for_response((object) $top_seller, $request);
71
+			$data[] = $this->prepare_response_for_collection($item);
72 72
 		}
73 73
 
74
-		return rest_ensure_response( $data );
74
+		return rest_ensure_response($data);
75 75
 
76 76
 	}
77 77
 
@@ -82,30 +82,30 @@  discard block
 block discarded – undo
82 82
 	 * @param WP_REST_Request $request Request object.
83 83
 	 * @return WP_REST_Response $response Response data.
84 84
 	 */
85
-	public function prepare_item_for_response( $top_seller, $request ) {
85
+	public function prepare_item_for_response($top_seller, $request) {
86 86
 		$data    = (array) $top_seller;
87 87
 
88
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
89
-		$data    = $this->add_additional_fields_to_object( $data, $request );
90
-		$data    = $this->filter_response_by_context( $data, $context );
88
+		$context = !empty($request['context']) ? $request['context'] : 'view';
89
+		$data    = $this->add_additional_fields_to_object($data, $request);
90
+		$data    = $this->filter_response_by_context($data, $context);
91 91
 
92 92
 		// Wrap the data in a response object.
93
-		$response = rest_ensure_response( $data );
93
+		$response = rest_ensure_response($data);
94 94
 		$links = array(
95 95
 			'about' => array(
96
-				'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ),
96
+				'href' => rest_url(sprintf('%s/reports', $this->namespace)),
97 97
 			),
98 98
 		);
99 99
 
100
-		if ( ! empty( $top_seller->item_id ) ) {
101
-			$links['item']   = array(
102
-				'href'       => rest_url( sprintf( '/%s/items/%s', $this->namespace, $top_seller->item_id ) ),
100
+		if (!empty($top_seller->item_id)) {
101
+			$links['item'] = array(
102
+				'href'       => rest_url(sprintf('/%s/items/%s', $this->namespace, $top_seller->item_id)),
103 103
 				'embeddable' => true,
104 104
 			);
105 105
 		}
106 106
 
107
-		$response->add_links( $links );
108
-		return apply_filters( 'getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request );
107
+		$response->add_links($links);
108
+		return apply_filters('getpaid_rest_prepare_report_' . $this->rest_base, $response, $top_seller, $request);
109 109
 	}
110 110
 
111 111
 	/**
@@ -159,38 +159,38 @@  discard block
 block discarded – undo
159 159
 			'type'       => 'object',
160 160
 			'properties' => array(
161 161
 				'name' => array(
162
-					'description' => __( 'Item name.', 'invoicing' ),
162
+					'description' => __('Item name.', 'invoicing'),
163 163
 					'type'        => 'string',
164
-					'context'     => array( 'view' ),
164
+					'context'     => array('view'),
165 165
 					'readonly'    => true,
166 166
 				),
167 167
 				'item_id'         => array(
168
-					'description' => __( 'Item ID.', 'invoicing' ),
168
+					'description' => __('Item ID.', 'invoicing'),
169 169
 					'type'        => 'integer',
170
-					'context'     => array( 'view' ),
170
+					'context'     => array('view'),
171 171
 					'readonly'    => true,
172 172
 				),
173 173
 				'quantity' => array(
174
-					'description' => __( 'Total number of purchases.', 'invoicing' ),
174
+					'description' => __('Total number of purchases.', 'invoicing'),
175 175
 					'type'        => 'integer',
176
-					'context'     => array( 'view' ),
176
+					'context'     => array('view'),
177 177
 					'readonly'    => true,
178 178
 				),
179 179
 				'earnings' => array(
180
-					'description' => __( 'Total earnings for the item.', 'invoicing' ),
180
+					'description' => __('Total earnings for the item.', 'invoicing'),
181 181
 					'type'        => 'double',
182
-					'context'     => array( 'view' ),
182
+					'context'     => array('view'),
183 183
 					'readonly'    => true,
184 184
 				),
185 185
 				'earnings_formatted"' => array(
186
-					'description' => __( 'Total earnings (formatted) for the item.', 'invoicing' ),
186
+					'description' => __('Total earnings (formatted) for the item.', 'invoicing'),
187 187
 					'type'        => 'string',
188
-					'context'     => array( 'view' ),
188
+					'context'     => array('view'),
189 189
 					'readonly'    => true,
190 190
 				),
191 191
 			),
192 192
 		);
193 193
 
194
-		return $this->add_additional_fields_schema( $schema );
194
+		return $this->add_additional_fields_schema($schema);
195 195
 	}
196 196
 }
Please login to merge, or discard this patch.
includes/class-wpinv-api.php 1 patch
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  * @since    1.0.19
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /**
12 12
  * The main API class
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
         $this->invoice_counts = new GetPaid_REST_Report_Invoice_Counts_Controller();
97 97
 
98 98
         // Fires after loading the rest api.
99
-        do_action( 'getpaid_rest_api_loaded', $this );
99
+        do_action('getpaid_rest_api_loaded', $this);
100 100
     }
101 101
 
102 102
 }
Please login to merge, or discard this patch.
includes/api/class-getpaid-rest-report-invoice-counts-controller.php 2 patches
Indentation   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -18,102 +18,102 @@
 block discarded – undo
18 18
  */
19 19
 class GetPaid_REST_Report_Invoice_Counts_Controller extends GetPaid_REST_Reports_Controller {
20 20
 
21
-	/**
22
-	 * Route base.
23
-	 *
24
-	 * @var string
25
-	 */
26
-	protected $rest_base = 'reports/invoices/counts';
27
-
28
-	/**
29
-	 * Prepare a report object for serialization.
30
-	 *
31
-	 * @param  stdClass        $report Report data.
32
-	 * @param  WP_REST_Request $request Request object.
33
-	 * @return WP_REST_Response $response Response data.
34
-	 */
35
-	public function prepare_item_for_response( $report, $request ) {
36
-
37
-		$data    = (array) $report;
38
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
39
-		$data    = $this->add_additional_fields_to_object( $data, $request );
40
-		$data    = $this->filter_response_by_context( $data, $context );
41
-
42
-		// Wrap the data in a response object.
43
-		$response = rest_ensure_response( $data );
44
-
45
-		$response->add_links(
46
-			array(
47
-				'about' => array(
48
-					'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ),
49
-				),
50
-			)
51
-		);
52
-
53
-		return apply_filters( 'getpaid_rest_prepare_report_invoices_count', $response, $report, $request );
54
-	}
55
-
56
-	/**
57
-	 * Get reports list.
58
-	 *
59
-	 * @since 2.0.0
60
-	 * @return array
61
-	 */
62
-	protected function get_reports() {
63
-
64
-		$counts = wp_count_posts( 'wpi_invoice' );
65
-		$data   = array();
66
-
67
-		foreach ( wpinv_get_invoice_statuses() as $slug => $name ) {
68
-
69
-			if ( ! isset( $counts->$slug ) ) {
70
-				continue;
71
-			}
72
-
73
-			$data[] = array(
74
-				'slug'  => $slug,
75
-				'name'  => $name,
76
-				'count' => (int) $counts->$slug,
77
-			);
78
-
79
-		}
80
-
81
-		return $data;
82
-
83
-	}
84
-
85
-	/**
86
-	 * Get the Report's schema, conforming to JSON Schema.
87
-	 *
88
-	 * @return array
89
-	 */
90
-	public function get_item_schema() {
91
-		$schema = array(
92
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
93
-			'title'      => 'report_invoice_counts',
94
-			'type'       => 'object',
95
-			'properties' => array(
96
-				'slug'  => array(
97
-					'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
98
-					'type'        => 'string',
99
-					'context'     => array( 'view' ),
100
-					'readonly'    => true,
101
-				),
102
-				'name'  => array(
103
-					'description' => __( 'Invoice status name.', 'invoicing' ),
104
-					'type'        => 'string',
105
-					'context'     => array( 'view' ),
106
-					'readonly'    => true,
107
-				),
108
-				'count' => array(
109
-					'description' => __( 'Number of invoices.', 'invoicing' ),
110
-					'type'        => 'string',
111
-					'context'     => array( 'view' ),
112
-					'readonly'    => true,
113
-				),
114
-			),
115
-		);
116
-
117
-		return $this->add_additional_fields_schema( $schema );
118
-	}
21
+    /**
22
+     * Route base.
23
+     *
24
+     * @var string
25
+     */
26
+    protected $rest_base = 'reports/invoices/counts';
27
+
28
+    /**
29
+     * Prepare a report object for serialization.
30
+     *
31
+     * @param  stdClass        $report Report data.
32
+     * @param  WP_REST_Request $request Request object.
33
+     * @return WP_REST_Response $response Response data.
34
+     */
35
+    public function prepare_item_for_response( $report, $request ) {
36
+
37
+        $data    = (array) $report;
38
+        $context = ! empty( $request['context'] ) ? $request['context'] : 'view';
39
+        $data    = $this->add_additional_fields_to_object( $data, $request );
40
+        $data    = $this->filter_response_by_context( $data, $context );
41
+
42
+        // Wrap the data in a response object.
43
+        $response = rest_ensure_response( $data );
44
+
45
+        $response->add_links(
46
+            array(
47
+                'about' => array(
48
+                    'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ),
49
+                ),
50
+            )
51
+        );
52
+
53
+        return apply_filters( 'getpaid_rest_prepare_report_invoices_count', $response, $report, $request );
54
+    }
55
+
56
+    /**
57
+     * Get reports list.
58
+     *
59
+     * @since 2.0.0
60
+     * @return array
61
+     */
62
+    protected function get_reports() {
63
+
64
+        $counts = wp_count_posts( 'wpi_invoice' );
65
+        $data   = array();
66
+
67
+        foreach ( wpinv_get_invoice_statuses() as $slug => $name ) {
68
+
69
+            if ( ! isset( $counts->$slug ) ) {
70
+                continue;
71
+            }
72
+
73
+            $data[] = array(
74
+                'slug'  => $slug,
75
+                'name'  => $name,
76
+                'count' => (int) $counts->$slug,
77
+            );
78
+
79
+        }
80
+
81
+        return $data;
82
+
83
+    }
84
+
85
+    /**
86
+     * Get the Report's schema, conforming to JSON Schema.
87
+     *
88
+     * @return array
89
+     */
90
+    public function get_item_schema() {
91
+        $schema = array(
92
+            '$schema'    => 'http://json-schema.org/draft-04/schema#',
93
+            'title'      => 'report_invoice_counts',
94
+            'type'       => 'object',
95
+            'properties' => array(
96
+                'slug'  => array(
97
+                    'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
98
+                    'type'        => 'string',
99
+                    'context'     => array( 'view' ),
100
+                    'readonly'    => true,
101
+                ),
102
+                'name'  => array(
103
+                    'description' => __( 'Invoice status name.', 'invoicing' ),
104
+                    'type'        => 'string',
105
+                    'context'     => array( 'view' ),
106
+                    'readonly'    => true,
107
+                ),
108
+                'count' => array(
109
+                    'description' => __( 'Number of invoices.', 'invoicing' ),
110
+                    'type'        => 'string',
111
+                    'context'     => array( 'view' ),
112
+                    'readonly'    => true,
113
+                ),
114
+            ),
115
+        );
116
+
117
+        return $this->add_additional_fields_schema( $schema );
118
+    }
119 119
 }
Please login to merge, or discard this patch.
Spacing   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  * @since   2.0.0
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 /**
15 15
  * GetPaid REST invoice counts controller class.
@@ -32,25 +32,25 @@  discard block
 block discarded – undo
32 32
 	 * @param  WP_REST_Request $request Request object.
33 33
 	 * @return WP_REST_Response $response Response data.
34 34
 	 */
35
-	public function prepare_item_for_response( $report, $request ) {
35
+	public function prepare_item_for_response($report, $request) {
36 36
 
37 37
 		$data    = (array) $report;
38
-		$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
39
-		$data    = $this->add_additional_fields_to_object( $data, $request );
40
-		$data    = $this->filter_response_by_context( $data, $context );
38
+		$context = !empty($request['context']) ? $request['context'] : 'view';
39
+		$data    = $this->add_additional_fields_to_object($data, $request);
40
+		$data    = $this->filter_response_by_context($data, $context);
41 41
 
42 42
 		// Wrap the data in a response object.
43
-		$response = rest_ensure_response( $data );
43
+		$response = rest_ensure_response($data);
44 44
 
45 45
 		$response->add_links(
46 46
 			array(
47 47
 				'about' => array(
48
-					'href' => rest_url( sprintf( '%s/reports', $this->namespace ) ),
48
+					'href' => rest_url(sprintf('%s/reports', $this->namespace)),
49 49
 				),
50 50
 			)
51 51
 		);
52 52
 
53
-		return apply_filters( 'getpaid_rest_prepare_report_invoices_count', $response, $report, $request );
53
+		return apply_filters('getpaid_rest_prepare_report_invoices_count', $response, $report, $request);
54 54
 	}
55 55
 
56 56
 	/**
@@ -61,12 +61,12 @@  discard block
 block discarded – undo
61 61
 	 */
62 62
 	protected function get_reports() {
63 63
 
64
-		$counts = wp_count_posts( 'wpi_invoice' );
64
+		$counts = wp_count_posts('wpi_invoice');
65 65
 		$data   = array();
66 66
 
67
-		foreach ( wpinv_get_invoice_statuses() as $slug => $name ) {
67
+		foreach (wpinv_get_invoice_statuses() as $slug => $name) {
68 68
 
69
-			if ( ! isset( $counts->$slug ) ) {
69
+			if (!isset($counts->$slug)) {
70 70
 				continue;
71 71
 			}
72 72
 
@@ -94,26 +94,26 @@  discard block
 block discarded – undo
94 94
 			'type'       => 'object',
95 95
 			'properties' => array(
96 96
 				'slug'  => array(
97
-					'description' => __( 'An alphanumeric identifier for the resource.', 'invoicing' ),
97
+					'description' => __('An alphanumeric identifier for the resource.', 'invoicing'),
98 98
 					'type'        => 'string',
99
-					'context'     => array( 'view' ),
99
+					'context'     => array('view'),
100 100
 					'readonly'    => true,
101 101
 				),
102 102
 				'name'  => array(
103
-					'description' => __( 'Invoice status name.', 'invoicing' ),
103
+					'description' => __('Invoice status name.', 'invoicing'),
104 104
 					'type'        => 'string',
105
-					'context'     => array( 'view' ),
105
+					'context'     => array('view'),
106 106
 					'readonly'    => true,
107 107
 				),
108 108
 				'count' => array(
109
-					'description' => __( 'Number of invoices.', 'invoicing' ),
109
+					'description' => __('Number of invoices.', 'invoicing'),
110 110
 					'type'        => 'string',
111
-					'context'     => array( 'view' ),
111
+					'context'     => array('view'),
112 112
 					'readonly'    => true,
113 113
 				),
114 114
 			),
115 115
 		);
116 116
 
117
-		return $this->add_additional_fields_schema( $schema );
117
+		return $this->add_additional_fields_schema($schema);
118 118
 	}
119 119
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php 2 patches
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -7,40 +7,40 @@
 block discarded – undo
7 7
  * Bail if we are not in WP.
8 8
  */
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit;
10
+    exit;
11 11
 }
12 12
 
13 13
 /**
14 14
  * Set the version only if its the current newest while loading.
15 15
  */
16 16
 add_action('after_setup_theme', function () {
17
-	global $ayecode_ui_version,$ayecode_ui_file_key;
18
-	$this_version = "0.1.38";
19
-	if(version_compare($this_version , $ayecode_ui_version, '>')){
20
-		$ayecode_ui_version = $this_version ;
21
-		$ayecode_ui_file_key = wp_hash( __FILE__ );
22
-	}
17
+    global $ayecode_ui_version,$ayecode_ui_file_key;
18
+    $this_version = "0.1.38";
19
+    if(version_compare($this_version , $ayecode_ui_version, '>')){
20
+        $ayecode_ui_version = $this_version ;
21
+        $ayecode_ui_file_key = wp_hash( __FILE__ );
22
+    }
23 23
 },0);
24 24
 
25 25
 /**
26 26
  * Load this version of WP Bootstrap Settings only if the file hash is the current one.
27 27
  */
28 28
 add_action('after_setup_theme', function () {
29
-	global $ayecode_ui_file_key;
30
-	if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
-		include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
-		include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
-	}
29
+    global $ayecode_ui_file_key;
30
+    if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
+        include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
+        include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
+    }
34 34
 },1);
35 35
 
36 36
 /**
37 37
  * Add the function that calls the class.
38 38
  */
39 39
 if(!function_exists('aui')){
40
-	function aui(){
41
-		if(!class_exists("AUI",false)){
42
-			return false;
43
-		}
44
-		return AUI::instance();
45
-	}
40
+    function aui(){
41
+        if(!class_exists("AUI",false)){
42
+            return false;
43
+        }
44
+        return AUI::instance();
45
+    }
46 46
 }
47 47
\ No newline at end of file
Please login to merge, or discard this patch.
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -6,39 +6,39 @@
 block discarded – undo
6 6
 /**
7 7
  * Bail if we are not in WP.
8 8
  */
9
-if ( ! defined( 'ABSPATH' ) ) {
9
+if (!defined('ABSPATH')) {
10 10
 	exit;
11 11
 }
12 12
 
13 13
 /**
14 14
  * Set the version only if its the current newest while loading.
15 15
  */
16
-add_action('after_setup_theme', function () {
17
-	global $ayecode_ui_version,$ayecode_ui_file_key;
16
+add_action('after_setup_theme', function() {
17
+	global $ayecode_ui_version, $ayecode_ui_file_key;
18 18
 	$this_version = "0.1.38";
19
-	if(version_compare($this_version , $ayecode_ui_version, '>')){
20
-		$ayecode_ui_version = $this_version ;
21
-		$ayecode_ui_file_key = wp_hash( __FILE__ );
19
+	if (version_compare($this_version, $ayecode_ui_version, '>')) {
20
+		$ayecode_ui_version = $this_version;
21
+		$ayecode_ui_file_key = wp_hash(__FILE__);
22 22
 	}
23 23
 },0);
24 24
 
25 25
 /**
26 26
  * Load this version of WP Bootstrap Settings only if the file hash is the current one.
27 27
  */
28
-add_action('after_setup_theme', function () {
28
+add_action('after_setup_theme', function() {
29 29
 	global $ayecode_ui_file_key;
30
-	if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
-		include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
-		include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
30
+	if ($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash(__FILE__)) {
31
+		include_once(dirname(__FILE__) . '/includes/class-aui.php');
32
+		include_once(dirname(__FILE__) . '/includes/ayecode-ui-settings.php');
33 33
 	}
34 34
 },1);
35 35
 
36 36
 /**
37 37
  * Add the function that calls the class.
38 38
  */
39
-if(!function_exists('aui')){
40
-	function aui(){
41
-		if(!class_exists("AUI",false)){
39
+if (!function_exists('aui')) {
40
+	function aui() {
41
+		if (!class_exists("AUI", false)) {
42 42
 			return false;
43 43
 		}
44 44
 		return AUI::instance();
Please login to merge, or discard this patch.