Passed
Pull Request — master (#375)
by Brian
82:58
created
includes/admin/meta-boxes/class-mb-invoice-items.php 1 patch
Spacing   +127 added lines, -127 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  *
8 8
  */
9 9
 
10
-if ( ! defined( 'ABSPATH' ) ) {
10
+if (!defined('ABSPATH')) {
11 11
 	exit; // Exit if accessed directly
12 12
 }
13 13
 
@@ -21,43 +21,43 @@  discard block
 block discarded – undo
21 21
 	 *
22 22
 	 * @param WP_Post $post
23 23
 	 */
24
-    public static function output( $post ) {
24
+    public static function output($post) {
25 25
         global $wpinv_euvat, $ajax_cart_details;
26 26
 
27
-        $post_id            = !empty( $post->ID ) ? $post->ID : 0;
28
-        $invoice            = new WPInv_Invoice( $post_id );
27
+        $post_id            = !empty($post->ID) ? $post->ID : 0;
28
+        $invoice            = new WPInv_Invoice($post_id);
29 29
         $ajax_cart_details  = $invoice->get_cart_details();
30
-        $subtotal           = $invoice->get_subtotal( true );
30
+        $subtotal           = $invoice->get_subtotal(true);
31 31
         $discount_raw       = $invoice->get_discount();
32
-        $discount           = wpinv_price( $discount_raw, $invoice->get_currency() );
32
+        $discount           = wpinv_price($discount_raw, $invoice->get_currency());
33 33
         $discounts          = $discount_raw > 0 ? $invoice->get_discounts() : '';
34
-        $tax                = $invoice->get_tax( true );
35
-        $total              = $invoice->get_total( true );
34
+        $tax                = $invoice->get_tax(true);
35
+        $total              = $invoice->get_total(true);
36 36
         $item_quantities    = wpinv_item_quantities_enabled();
37 37
         $use_taxes          = wpinv_use_taxes();
38
-        if ( !$use_taxes && (float)$invoice->get_tax() > 0 ) {
38
+        if (!$use_taxes && (float) $invoice->get_tax() > 0) {
39 39
             $use_taxes = true;
40 40
         }
41
-        $item_types         = apply_filters( 'wpinv_item_types_for_quick_add_item', wpinv_get_item_types(), $post );
41
+        $item_types         = apply_filters('wpinv_item_types_for_quick_add_item', wpinv_get_item_types(), $post);
42 42
         $is_recurring       = $invoice->is_recurring();
43 43
         $post_type_object   = get_post_type_object($invoice->post_type);
44 44
         $type_title         = $post_type_object->labels->singular_name;
45 45
 
46 46
         $cols = 5;
47
-        if ( $item_quantities ) {
47
+        if ($item_quantities) {
48 48
             $cols++;
49 49
         }
50
-        if ( $use_taxes ) {
50
+        if ($use_taxes) {
51 51
             $cols++;
52 52
         }
53 53
         $class = '';
54
-        if ( $invoice->is_paid() ) {
54
+        if ($invoice->is_paid()) {
55 55
             $class .= ' wpinv-paid';
56 56
         }
57
-        if ( $invoice->is_refunded() ) {
57
+        if ($invoice->is_refunded()) {
58 58
             $class .= ' wpinv-refunded';
59 59
         }
60
-        if ( $is_recurring ) {
60
+        if ($is_recurring) {
61 61
             $class .= ' wpi-recurring';
62 62
         }
63 63
         ?>
@@ -65,21 +65,21 @@  discard block
 block discarded – undo
65 65
             <table id="wpinv_items" class="wpinv-items" cellspacing="0" cellpadding="0">
66 66
                 <thead>
67 67
                     <tr>
68
-                        <th class="id"><?php _e( 'ID', 'invoicing' );?></th>
69
-                        <th class="title"><?php _e( 'Item', 'invoicing' );?></th>
70
-                        <th class="price"><?php _e( 'Price', 'invoicing' );?></th>
71
-                        <?php if ( $item_quantities ) { ?>
72
-                        <th class="qty"><?php _e( 'Qty', 'invoicing' );?></th>
68
+                        <th class="id"><?php _e('ID', 'invoicing'); ?></th>
69
+                        <th class="title"><?php _e('Item', 'invoicing'); ?></th>
70
+                        <th class="price"><?php _e('Price', 'invoicing'); ?></th>
71
+                        <?php if ($item_quantities) { ?>
72
+                        <th class="qty"><?php _e('Qty', 'invoicing'); ?></th>
73 73
                         <?php } ?>
74
-                        <th class="total"><?php _e( 'Total', 'invoicing' );?></th>
75
-                        <?php if ( $use_taxes ) { ?>
76
-                        <th class="tax"><?php _e( 'Tax (%)', 'invoicing' );?></th>
74
+                        <th class="total"><?php _e('Total', 'invoicing'); ?></th>
75
+                        <?php if ($use_taxes) { ?>
76
+                        <th class="tax"><?php _e('Tax (%)', 'invoicing'); ?></th>
77 77
                         <?php } ?>
78 78
                         <th class="action"></th>
79 79
                     </tr>
80 80
                 </thead>
81 81
                 <tbody class="wpinv-line-items">
82
-                    <?php echo wpinv_admin_get_line_items( $invoice ); ?>
82
+                    <?php echo wpinv_admin_get_line_items($invoice); ?>
83 83
                 </tbody>
84 84
                 <tfoot class="wpinv-totals">
85 85
                     <tr>
@@ -90,45 +90,45 @@  discard block
 block discarded – undo
90 90
                                         <td class="id">
91 91
                                         </td>
92 92
                                         <td class="title">
93
-                                            <input type="text" class="regular-text" placeholder="<?php _e( 'Item Name', 'invoicing' ); ?>" value="" name="_wpinv_quick[name]">
94
-                                            <?php if ( $wpinv_euvat->allow_vat_rules() ) { ?>
93
+                                            <input type="text" class="regular-text" placeholder="<?php _e('Item Name', 'invoicing'); ?>" value="" name="_wpinv_quick[name]">
94
+                                            <?php if ($wpinv_euvat->allow_vat_rules()) { ?>
95 95
                                             <div class="wp-clearfix">
96 96
                                                 <label class="wpi-vat-rule">
97
-                                                    <span class="title"><?php _e( 'VAT rule type', 'invoicing' );?></span>
97
+                                                    <span class="title"><?php _e('VAT rule type', 'invoicing'); ?></span>
98 98
                                                     <span class="input-text-wrap">
99
-                                                        <?php echo wpinv_html_select( array(
99
+                                                        <?php echo wpinv_html_select(array(
100 100
                                                             'options'          => $wpinv_euvat->get_rules(),
101 101
                                                             'name'             => '_wpinv_quick[vat_rule]',
102 102
                                                             'id'               => '_wpinv_quick_vat_rule',
103 103
                                                             'show_option_all'  => false,
104 104
                                                             'show_option_none' => false,
105 105
                                                             'class'            => 'gdmbx2-text-medium wpinv-quick-vat-rule wpi_select2',
106
-                                                        ) ); ?>
106
+                                                        )); ?>
107 107
                                                     </span>
108 108
                                                 </label>
109 109
                                             </div>
110
-                                            <?php } if ( $wpinv_euvat->allow_vat_classes() ) { ?>
110
+                                            <?php } if ($wpinv_euvat->allow_vat_classes()) { ?>
111 111
                                             <div class="wp-clearfix">
112 112
                                                 <label class="wpi-vat-class">
113
-                                                    <span class="title"><?php _e( 'VAT class', 'invoicing' );?></span>
113
+                                                    <span class="title"><?php _e('VAT class', 'invoicing'); ?></span>
114 114
                                                     <span class="input-text-wrap">
115
-                                                        <?php echo wpinv_html_select( array(
115
+                                                        <?php echo wpinv_html_select(array(
116 116
                                                             'options'          => $wpinv_euvat->get_all_classes(),
117 117
                                                             'name'             => '_wpinv_quick[vat_class]',
118 118
                                                             'id'               => '_wpinv_quick_vat_class',
119 119
                                                             'show_option_all'  => false,
120 120
                                                             'show_option_none' => false,
121 121
                                                             'class'            => 'gdmbx2-text-medium wpinv-quick-vat-class wpi_select2',
122
-                                                        ) ); ?>
122
+                                                        )); ?>
123 123
                                                     </span>
124 124
                                                 </label>
125 125
                                             </div>
126 126
                                             <?php } ?>
127 127
                                             <div class="wp-clearfix">
128 128
                                                 <label class="wpi-item-type">
129
-                                                    <span class="title"><?php _e( 'Item type', 'invoicing' );?></span>
129
+                                                    <span class="title"><?php _e('Item type', 'invoicing'); ?></span>
130 130
                                                     <span class="input-text-wrap">
131
-                                                        <?php echo wpinv_html_select( array(
131
+                                                        <?php echo wpinv_html_select(array(
132 132
                                                             'options'          => $item_types,
133 133
                                                             'name'             => '_wpinv_quick[type]',
134 134
                                                             'id'               => '_wpinv_quick_type',
@@ -136,37 +136,37 @@  discard block
 block discarded – undo
136 136
                                                             'show_option_all'  => false,
137 137
                                                             'show_option_none' => false,
138 138
                                                             'class'            => 'gdmbx2-text-medium wpinv-quick-type wpi_select2',
139
-                                                        ) ); ?>
139
+                                                        )); ?>
140 140
                                                     </span>
141 141
                                                 </label>
142 142
                                             </div>
143 143
 
144 144
                                             <div class="wp-clearfix">
145 145
                                                 <?php 
146
-                                                    echo wpinv_html_textarea( array(
146
+                                                    echo wpinv_html_textarea(array(
147 147
                                                         'name'  => '_wpinv_quick[excerpt]',
148 148
                                                         'id'    => '_wpinv_quick_excerpt',
149 149
                                                         'value' => '',
150 150
                                                         'class' => 'large-text',
151
-                                                        'label' => __( 'Item description', 'invoicing' ),
152
-                                                    ) ); 
151
+                                                        'label' => __('Item description', 'invoicing'),
152
+                                                    )); 
153 153
                                                 ?>
154 154
                                             </div>
155 155
 
156 156
                                             <div class="wp-clearfix">
157 157
                                                 <label class="wpi-item-actions">
158 158
                                                     <span class="input-text-wrap">
159
-                                                        <input type="button" value="<?php esc_attr_e( 'Add', 'invoicing' ); ?>" class="button button-primary" id="wpinv-save-item"><input type="button" value="Cancel" class="button button-secondary" id="wpinv-cancel-item">
159
+                                                        <input type="button" value="<?php esc_attr_e('Add', 'invoicing'); ?>" class="button button-primary" id="wpinv-save-item"><input type="button" value="Cancel" class="button button-secondary" id="wpinv-cancel-item">
160 160
                                                     </span>
161 161
                                                 </label>
162 162
                                             </div>
163 163
                                         </td>
164 164
                                         <td class="price"><input type="text" placeholder="0.00" class="wpi-field-price wpi-price" name="_wpinv_quick[price]" /></td>
165
-                                        <?php if ( $item_quantities ) { ?>
165
+                                        <?php if ($item_quantities) { ?>
166 166
                                         <td class="qty"><input type="number" class="small-text" step="1" min="1" value="1" name="_wpinv_quick[qty]" /></td>
167 167
                                         <?php } ?>
168 168
                                         <td class="total"></td>
169
-                                        <?php if ( $use_taxes ) { ?>
169
+                                        <?php if ($use_taxes) { ?>
170 170
                                         <td class="tax"></td>
171 171
                                         <?php } ?>
172 172
                                         <td class="action"></td>
@@ -179,29 +179,29 @@  discard block
 block discarded – undo
179 179
                         <td colspan="<?php echo $cols; ?>"></td>
180 180
                     </tr>
181 181
                     <tr class="totals">
182
-                        <td colspan="<?php echo ( $cols - 4 ); ?>"></td>
182
+                        <td colspan="<?php echo ($cols - 4); ?>"></td>
183 183
                         <td colspan="4">
184 184
                             <table cellspacing="0" cellpadding="0">
185 185
                                 <tr class="subtotal">
186
-                                    <td class="name"><?php _e( 'Sub Total:', 'invoicing' );?></td>
187
-                                    <td class="total"><?php echo $subtotal;?></td>
186
+                                    <td class="name"><?php _e('Sub Total:', 'invoicing'); ?></td>
187
+                                    <td class="total"><?php echo $subtotal; ?></td>
188 188
                                     <td class="action"></td>
189 189
                                 </tr>
190 190
                                 <tr class="discount">
191
-                                    <td class="name"><?php wpinv_get_discount_label( wpinv_discount_code( $invoice->ID ) ); ?>:</td>
192
-                                    <td class="total"><?php echo wpinv_discount( $invoice->ID, true, true ); ?></td>
191
+                                    <td class="name"><?php wpinv_get_discount_label(wpinv_discount_code($invoice->ID)); ?>:</td>
192
+                                    <td class="total"><?php echo wpinv_discount($invoice->ID, true, true); ?></td>
193 193
                                     <td class="action"></td>
194 194
                                 </tr>
195
-                                <?php if ( $use_taxes ) { ?>
195
+                                <?php if ($use_taxes) { ?>
196 196
                                 <tr class="tax">
197
-                                    <td class="name"><?php _e( 'Tax:', 'invoicing' );?></td>
198
-                                    <td class="total"><?php echo $tax;?></td>
197
+                                    <td class="name"><?php _e('Tax:', 'invoicing'); ?></td>
198
+                                    <td class="total"><?php echo $tax; ?></td>
199 199
                                     <td class="action"></td>
200 200
                                 </tr>
201 201
                                 <?php } ?>
202 202
                                 <tr class="total">
203
-                                    <td class="name"><?php echo apply_filters( 'wpinv_invoice_items_total_label', __( 'Invoice Total:', 'invoicing' ), $invoice );?></td>
204
-                                    <td class="total"><?php echo $total;?></td>
203
+                                    <td class="name"><?php echo apply_filters('wpinv_invoice_items_total_label', __('Invoice Total:', 'invoicing'), $invoice); ?></td>
204
+                                    <td class="total"><?php echo $total; ?></td>
205 205
                                     <td class="action"></td>
206 206
                                 </tr>
207 207
                             </table>
@@ -212,19 +212,19 @@  discard block
 block discarded – undo
212 212
             <div class="wpinv-actions">
213 213
                 <?php ob_start(); ?>
214 214
                 <?php
215
-                    if ( !$invoice->is_paid() && !$invoice->is_refunded() ) {
216
-                        if ( !$invoice->is_recurring() ) {
217
-                            echo wpinv_item_dropdown( array(
215
+                    if (!$invoice->is_paid() && !$invoice->is_refunded()) {
216
+                        if (!$invoice->is_recurring()) {
217
+                            echo wpinv_item_dropdown(array(
218 218
                                 'name'             => 'wpinv_invoice_item',
219 219
                                 'id'               => 'wpinv_invoice_item',
220 220
                                 'show_recurring'   => true,
221 221
                                 'class'            => 'wpi_select2',
222
-                            ) );
222
+                            ));
223 223
                     ?>
224
-                <input type="button" value="<?php echo sprintf(esc_attr__( 'Add item to %s', 'invoicing'), $type_title); ?>" class="button button-primary" id="wpinv-add-item"><input type="button" value="<?php esc_attr_e( 'Create new item', 'invoicing' );?>" class="button button-primary" id="wpinv-new-item"><?php } ?><input type="button" value="<?php esc_attr_e( 'Recalculate Totals', 'invoicing' );?>" class="button button-primary wpinv-flr" id="wpinv-recalc-totals">
224
+                <input type="button" value="<?php echo sprintf(esc_attr__('Add item to %s', 'invoicing'), $type_title); ?>" class="button button-primary" id="wpinv-add-item"><input type="button" value="<?php esc_attr_e('Create new item', 'invoicing'); ?>" class="button button-primary" id="wpinv-new-item"><?php } ?><input type="button" value="<?php esc_attr_e('Recalculate Totals', 'invoicing'); ?>" class="button button-primary wpinv-flr" id="wpinv-recalc-totals">
225 225
                     <?php } ?>
226
-                <?php do_action( 'wpinv_invoice_items_actions', $invoice ); ?>
227
-                <?php $item_actions = ob_get_clean(); echo apply_filters( 'wpinv_invoice_items_actions_content', $item_actions, $invoice, $post ); ?>
226
+                <?php do_action('wpinv_invoice_items_actions', $invoice); ?>
227
+                <?php $item_actions = ob_get_clean(); echo apply_filters('wpinv_invoice_items_actions_content', $item_actions, $invoice, $post); ?>
228 228
             </div>
229 229
         </div>
230 230
         <?php
@@ -233,101 +233,101 @@  discard block
 block discarded – undo
233 233
     /**
234 234
      * Display the items buy now shortcode.
235 235
      */
236
-    public static function shortcode( $post ) {
236
+    public static function shortcode($post) {
237 237
 
238
-        if ( ! is_numeric( $post ) ) {
238
+        if (!is_numeric($post)) {
239 239
             $post = $post->ID;
240 240
         }
241 241
 
242 242
         echo "<input type='text' style='min-width: 100%; font-size: small;' value='[getpaid item=$post]' disabled>";
243 243
     }
244 244
 
245
-    public static function save( $post_id, $data, $post ) {
245
+    public static function save($post_id, $data, $post) {
246 246
 
247
-        if ( empty( $_POST['wpinv_save_invoice'] ) || ! wp_verify_nonce( $_POST['wpinv_save_invoice'], 'wpinv_save_invoice' ) ) {
247
+        if (empty($_POST['wpinv_save_invoice']) || !wp_verify_nonce($_POST['wpinv_save_invoice'], 'wpinv_save_invoice')) {
248 248
             return;
249 249
         }
250 250
 
251
-        $invoice        = new WPInv_Invoice( $post_id );
251
+        $invoice        = new WPInv_Invoice($post_id);
252 252
 
253 253
         // Billing
254
-        $first_name     = sanitize_text_field( $data['wpinv_first_name'] );
255
-        $last_name      = sanitize_text_field( $data['wpinv_last_name'] );
256
-        $company        = sanitize_text_field( $data['wpinv_company'] );
257
-        $vat_number     = sanitize_text_field( $data['wpinv_vat_number'] );
258
-        $phone          = sanitize_text_field( $data['wpinv_phone'] );
259
-        $address        = sanitize_text_field( $data['wpinv_address'] );
260
-        $city           = sanitize_text_field( $data['wpinv_city'] );
261
-        $zip            = sanitize_text_field( $data['wpinv_zip'] );
262
-        $country        = sanitize_text_field( $data['wpinv_country'] );
263
-        $state          = sanitize_text_field( $data['wpinv_state'] );
254
+        $first_name     = sanitize_text_field($data['wpinv_first_name']);
255
+        $last_name      = sanitize_text_field($data['wpinv_last_name']);
256
+        $company        = sanitize_text_field($data['wpinv_company']);
257
+        $vat_number     = sanitize_text_field($data['wpinv_vat_number']);
258
+        $phone          = sanitize_text_field($data['wpinv_phone']);
259
+        $address        = sanitize_text_field($data['wpinv_address']);
260
+        $city           = sanitize_text_field($data['wpinv_city']);
261
+        $zip            = sanitize_text_field($data['wpinv_zip']);
262
+        $country        = sanitize_text_field($data['wpinv_country']);
263
+        $state          = sanitize_text_field($data['wpinv_state']);
264 264
 
265 265
         // Details
266
-        $status         = sanitize_text_field( $data['wpinv_status'] );
267
-        $old_status     = !empty( $data['original_post_status'] ) ? sanitize_text_field( $data['original_post_status'] ) : $status;
268
-        $number         = sanitize_text_field( $data['wpinv_number'] );
269
-        $due_date       = isset( $data['wpinv_due_date'] ) ? sanitize_text_field( $data['wpinv_due_date'] ) : '';
270
-        $date_created   = isset( $data['date_created'] ) ? sanitize_text_field( $data['date_created'] ) : '';
266
+        $status         = sanitize_text_field($data['wpinv_status']);
267
+        $old_status     = !empty($data['original_post_status']) ? sanitize_text_field($data['original_post_status']) : $status;
268
+        $number         = sanitize_text_field($data['wpinv_number']);
269
+        $due_date       = isset($data['wpinv_due_date']) ? sanitize_text_field($data['wpinv_due_date']) : '';
270
+        $date_created   = isset($data['date_created']) ? sanitize_text_field($data['date_created']) : '';
271 271
         //$discounts      = sanitize_text_field( $data['wpinv_discounts'] );
272 272
         //$discount       = sanitize_text_field( $data['wpinv_discount'] );
273 273
 
274 274
         $disable_taxes = 0;
275 275
 
276
-        if ( ! empty( $data['disable_taxes'] ) ) {
276
+        if (!empty($data['disable_taxes'])) {
277 277
             $disable_taxes = 1;
278 278
         }
279 279
 
280
-        $ip             = $invoice->get_ip() ? $invoice->get_ip() : wpinv_get_ip();
281
-
282
-        $invoice->set( 'due_date', $due_date );
283
-        $invoice->set( 'first_name', $first_name );
284
-        $invoice->set( 'last_name', $last_name );
285
-        $invoice->set( 'company', $company );
286
-        $invoice->set( 'vat_number', $vat_number );
287
-        $invoice->set( 'phone', $phone );
288
-        $invoice->set( 'address', $address );
289
-        $invoice->set( 'city', $city );
290
-        $invoice->set( 'zip', $zip );
291
-        $invoice->set( 'country', $country );
292
-        $invoice->set( 'state', $state );
293
-        $invoice->set( 'status', $status );
294
-        $invoice->set( 'set', $status );
280
+        $ip = $invoice->get_ip() ? $invoice->get_ip() : wpinv_get_ip();
281
+
282
+        $invoice->set('due_date', $due_date);
283
+        $invoice->set('first_name', $first_name);
284
+        $invoice->set('last_name', $last_name);
285
+        $invoice->set('company', $company);
286
+        $invoice->set('vat_number', $vat_number);
287
+        $invoice->set('phone', $phone);
288
+        $invoice->set('address', $address);
289
+        $invoice->set('city', $city);
290
+        $invoice->set('zip', $zip);
291
+        $invoice->set('country', $country);
292
+        $invoice->set('state', $state);
293
+        $invoice->set('status', $status);
294
+        $invoice->set('set', $status);
295 295
         //$invoice->set( 'number', $number );
296 296
         //$invoice->set( 'discounts', $discounts );
297 297
         //$invoice->set( 'discount', $discount );
298
-        $invoice->set( 'disable_taxes', $disable_taxes );
299
-        $invoice->set( 'ip', $ip );
298
+        $invoice->set('disable_taxes', $disable_taxes);
299
+        $invoice->set('ip', $ip);
300 300
         $invoice->old_status = $_POST['original_post_status'];
301 301
         
302 302
         $currency = $invoice->get_currency();
303
-        if ( ! empty( $data['wpinv_currency'] ) ) {
304
-            $currency = sanitize_text_field( $data['wpinv_currency'] );
303
+        if (!empty($data['wpinv_currency'])) {
304
+            $currency = sanitize_text_field($data['wpinv_currency']);
305 305
         }
306 306
 
307
-        if ( empty( $currency ) ) {
307
+        if (empty($currency)) {
308 308
             $currency = wpinv_get_currency();
309 309
         }
310 310
 
311
-        if ( ! $invoice->is_paid() ) {
311
+        if (!$invoice->is_paid()) {
312 312
             $invoice->currency = $currency;
313 313
         }
314 314
 
315
-        if ( !empty( $data['wpinv_gateway'] ) ) {
316
-            $invoice->set( 'gateway', sanitize_text_field( $data['wpinv_gateway'] ) );
315
+        if (!empty($data['wpinv_gateway'])) {
316
+            $invoice->set('gateway', sanitize_text_field($data['wpinv_gateway']));
317 317
         }
318 318
         $saved = $invoice->save();
319 319
 
320 320
         $emails = '';
321
-        if ( ! empty( $data['wpinv_cc'] ) ) {
322
-            $emails = wpinv_clean( $data['wpinv_cc'] );
321
+        if (!empty($data['wpinv_cc'])) {
322
+            $emails = wpinv_clean($data['wpinv_cc']);
323 323
         }
324
-        update_post_meta( $invoice->ID, 'wpinv_email_cc', $emails );
324
+        update_post_meta($invoice->ID, 'wpinv_email_cc', $emails);
325 325
 
326
-        if ( ! empty( $date_created ) && strtotime( $date_created, current_time( 'timestamp' ) ) ) {
326
+        if (!empty($date_created) && strtotime($date_created, current_time('timestamp'))) {
327 327
 
328
-            $time = strtotime( $date_created, current_time( 'timestamp' ) );
329
-            $date = date( 'Y-m-d H:i:s', $time );
330
-            $date_gmt = get_gmt_from_date( $date );
328
+            $time = strtotime($date_created, current_time('timestamp'));
329
+            $date = date('Y-m-d H:i:s', $time);
330
+            $date_gmt = get_gmt_from_date($date);
331 331
 
332 332
             wp_update_post(
333 333
                 array(
@@ -342,37 +342,37 @@  discard block
 block discarded – undo
342 342
         }
343 343
 
344 344
         // Check for payment notes
345
-        if ( !empty( $data['invoice_note'] ) ) {
346
-            $note               = wp_kses( $data['invoice_note'], array() );
347
-            $note_type          = sanitize_text_field( $data['invoice_note_type'] );
345
+        if (!empty($data['invoice_note'])) {
346
+            $note               = wp_kses($data['invoice_note'], array());
347
+            $note_type          = sanitize_text_field($data['invoice_note_type']);
348 348
             $is_customer_note   = $note_type == 'customer' ? 1 : 0;
349 349
 
350
-            wpinv_insert_payment_note( $invoice->ID, $note, $is_customer_note );
350
+            wpinv_insert_payment_note($invoice->ID, $note, $is_customer_note);
351 351
         }
352 352
 
353 353
         // Update user address if empty.
354
-        if ( $saved && !empty( $invoice ) ) {
355
-            if ( $user_id = $invoice->get_user_id() ) {
356
-                $user_address = wpinv_get_user_address( $user_id, false );
354
+        if ($saved && !empty($invoice)) {
355
+            if ($user_id = $invoice->get_user_id()) {
356
+                $user_address = wpinv_get_user_address($user_id, false);
357 357
 
358 358
                 if (empty($user_address['first_name'])) {
359
-                    update_user_meta( $user_id, '_wpinv_first_name', $first_name );
360
-                    update_user_meta( $user_id, '_wpinv_last_name', $last_name );
359
+                    update_user_meta($user_id, '_wpinv_first_name', $first_name);
360
+                    update_user_meta($user_id, '_wpinv_last_name', $last_name);
361 361
                 } else if (empty($user_address['last_name']) && $user_address['first_name'] == $first_name) {
362
-                    update_user_meta( $user_id, '_wpinv_last_name', $last_name );
362
+                    update_user_meta($user_id, '_wpinv_last_name', $last_name);
363 363
                 }
364 364
 
365 365
                 if (empty($user_address['address']) || empty($user_address['city']) || empty($user_address['state']) || empty($user_address['country'])) {
366
-                    update_user_meta( $user_id, '_wpinv_address', $address );
367
-                    update_user_meta( $user_id, '_wpinv_city', $city );
368
-                    update_user_meta( $user_id, '_wpinv_state', $state );
369
-                    update_user_meta( $user_id, '_wpinv_country', $country );
370
-                    update_user_meta( $user_id, '_wpinv_zip', $zip );
371
-                    update_user_meta( $user_id, '_wpinv_phone', $phone );
366
+                    update_user_meta($user_id, '_wpinv_address', $address);
367
+                    update_user_meta($user_id, '_wpinv_city', $city);
368
+                    update_user_meta($user_id, '_wpinv_state', $state);
369
+                    update_user_meta($user_id, '_wpinv_country', $country);
370
+                    update_user_meta($user_id, '_wpinv_zip', $zip);
371
+                    update_user_meta($user_id, '_wpinv_phone', $phone);
372 372
                 }
373 373
             }
374 374
 
375
-            do_action( 'wpinv_invoice_metabox_saved', $invoice );
375
+            do_action('wpinv_invoice_metabox_saved', $invoice);
376 376
         }
377 377
 
378 378
         return $saved;
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-mb-payment-form.php 1 patch
Spacing   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 // MUST have WordPress.
3
-if ( !defined( 'WPINC' ) ) {
4
-    exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) );
3
+if (!defined('WPINC')) {
4
+    exit('Do NOT access this file directly: ' . basename(__FILE__));
5 5
 }
6 6
 
7 7
 class WPInv_Meta_Box_Payment_Form {
@@ -11,23 +11,23 @@  discard block
 block discarded – undo
11 11
      *
12 12
      * @param WP_Post $post
13 13
      */
14
-    public static function output_details( $post ) {
15
-        $details = get_post_meta( $post->ID, 'payment_form_data', true );
14
+    public static function output_details($post) {
15
+        $details = get_post_meta($post->ID, 'payment_form_data', true);
16 16
 
17
-        if ( ! is_array( $details ) ) {
17
+        if (!is_array($details)) {
18 18
             return;
19 19
         }
20 20
 
21 21
         echo '<div class="gdmbx2-wrap form-table"> <div class="gdmbx2-metabox gdmbx-field-list">';
22 22
 
23
-        foreach ( $details as $key => $value ) {
24
-            $key = sanitize_text_field( $key );
23
+        foreach ($details as $key => $value) {
24
+            $key = sanitize_text_field($key);
25 25
 
26
-            if ( is_array( $value ) ) {
27
-                $value = implode( ',', $value );
26
+            if (is_array($value)) {
27
+                $value = implode(',', $value);
28 28
             }
29 29
 
30
-            $value = esc_html( $value );
30
+            $value = esc_html($value);
31 31
 
32 32
             echo "<div class='gdmbx-row gdmbx-type-select'>";
33 33
             echo "<div class='gdmbx-th'><label>$key:</label></div>";
@@ -43,13 +43,13 @@  discard block
 block discarded – undo
43 43
      *
44 44
      * @param WP_Post $post
45 45
      */
46
-    public static function output_shortcode( $post ) {
46
+    public static function output_shortcode($post) {
47 47
 
48
-        if ( ! is_numeric( $post ) ) {
48
+        if (!is_numeric($post)) {
49 49
             $post = $post->ID;
50 50
         }
51 51
 
52
-        if ( $post == wpinv_get_default_payment_form() ) {
52
+        if ($post == wpinv_get_default_payment_form()) {
53 53
             echo '&mdash;';
54 54
             return;
55 55
         }
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-getpaid-meta-box-payment-form.php 2 patches
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -7,7 +7,7 @@  discard block
 block discarded – undo
7 7
  */
8 8
 
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit; // Exit if accessed directly
10
+    exit; // Exit if accessed directly
11 11
 }
12 12
 
13 13
 /**
@@ -16,10 +16,10 @@  discard block
 block discarded – undo
16 16
 class GetPaid_Meta_Box_Payment_Form {
17 17
 
18 18
     /**
19
-	 * Output the metabox.
20
-	 *
21
-	 * @param WP_Post $post
22
-	 */
19
+     * Output the metabox.
20
+     *
21
+     * @param WP_Post $post
22
+     */
23 23
     public static function output( $post ) {
24 24
         ?>
25 25
         <div id="wpinv-form-builder" class="bsui">
@@ -82,11 +82,11 @@  discard block
 block discarded – undo
82 82
     }
83 83
 
84 84
     /**
85
-	 * Save meta box data.
86
-	 *
87
-	 * @param int $post_id
88
-	 */
89
-	public static function save( $post_id ) {
85
+     * Save meta box data.
86
+     *
87
+     * @param int $post_id
88
+     */
89
+    public static function save( $post_id ) {
90 90
 
91 91
         // verify nonce
92 92
         if ( ! isset( $_POST['wpinv_save_payment_form'] ) || ! wp_verify_nonce( $_POST['wpinv_save_payment_form'], 'wpinv_save_payment_form' ) ) {
Please login to merge, or discard this patch.
Spacing   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  *
7 7
  */
8 8
 
9
-if ( ! defined( 'ABSPATH' ) ) {
9
+if (!defined('ABSPATH')) {
10 10
 	exit; // Exit if accessed directly
11 11
 }
12 12
 
@@ -20,14 +20,14 @@  discard block
 block discarded – undo
20 20
 	 *
21 21
 	 * @param WP_Post $post
22 22
 	 */
23
-    public static function output( $post ) {
23
+    public static function output($post) {
24 24
         ?>
25 25
         <div id="wpinv-form-builder" class="bsui">
26 26
             <div class="row">
27 27
                 <div class="col-sm-4">
28 28
 
29 29
                     <!-- Builder tabs -->
30
-                    <button class="button button-primary" v-if="active_tab!='new_item'" @click.prevent="active_tab='new_item'"><?php _e( 'Go Back', 'invoicing' ); ?></button>
30
+                    <button class="button button-primary" v-if="active_tab!='new_item'" @click.prevent="active_tab='new_item'"><?php _e('Go Back', 'invoicing'); ?></button>
31 31
 
32 32
                     <!-- Builder tab content -->
33 33
                     <div class="mt-4">
@@ -35,7 +35,7 @@  discard block
 block discarded – undo
35 35
                         <!-- Available builder elements -->
36 36
                         <div class="wpinv-form-builder-tab-pane" v-if="active_tab=='new_item'">
37 37
                             <div class="wpinv-form-builder-add-field-types">
38
-                                <small class='form-text text-muted'><?php _e( 'Add an element by dragging it to the payment form.', 'invoicing' ); ?></small>
38
+                                <small class='form-text text-muted'><?php _e('Add an element by dragging it to the payment form.', 'invoicing'); ?></small>
39 39
                                 <draggable class="section mt-2" style="display: flex; flex-flow: wrap; justify-content: space-between;" v-model="elements" :group="{ name: 'fields', pull: 'clone', put: false }" :sort="false" :clone="addDraggedField" tag="ul" filter=".wpinv-undraggable">
40 40
                                     <li v-for="element in elements" class= "wpinv-payment-form-left-fields-field" @click.prevent="addField(element)" :class="{ 'd-none': element.defaults.premade }">
41 41
                                         <button class="button btn">
@@ -50,9 +50,9 @@  discard block
 block discarded – undo
50 50
                         <!-- Edit an element -->
51 51
                         <div class="wpinv-form-builder-tab-pane" v-if="active_tab=='edit_item'" style="font-size: 16px;">
52 52
                             <div class="wpinv-form-builder-edit-field-wrapper">
53
-                                <?php do_action( 'wpinv_payment_form_edit_element_template', 'active_form_element', $post ); ?>
53
+                                <?php do_action('wpinv_payment_form_edit_element_template', 'active_form_element', $post); ?>
54 54
                                 <div>
55
-                                    <button type="button" class="button button-link button-link-delete" @click.prevent="removeField(active_form_element)" v-show="! active_form_element.premade"><?php _e( 'Delete Element', 'invoicing' ); ?></button>
55
+                                    <button type="button" class="button button-link button-link-delete" @click.prevent="removeField(active_form_element)" v-show="! active_form_element.premade"><?php _e('Delete Element', 'invoicing'); ?></button>
56 56
                                 </div>
57 57
                             </div>
58 58
                         </div>
@@ -61,12 +61,12 @@  discard block
 block discarded – undo
61 61
 
62 62
                 </div>
63 63
                 <div class="col-sm-8 border-left">
64
-                    <small class='form-text text-muted' v-if='form_elements.length'><?php _e( 'Click on any element to edit or delete it.', 'invoicing' ); ?></small>
65
-                    <p class='form-text text-muted' v-if='! form_elements.length'><?php _e( 'This form is empty. Add new elements by dragging them from the right.', 'invoicing' ); ?></p>
64
+                    <small class='form-text text-muted' v-if='form_elements.length'><?php _e('Click on any element to edit or delete it.', 'invoicing'); ?></small>
65
+                    <p class='form-text text-muted' v-if='! form_elements.length'><?php _e('This form is empty. Add new elements by dragging them from the right.', 'invoicing'); ?></p>
66 66
 
67 67
                     <draggable class="section bsui" v-model="form_elements" @add="highlightLastDroppedField" group="fields" tag="div" style="min-height: 100%; font-size: 16px;">
68 68
                         <div v-for="form_element in form_elements" class="wpinv-form-builder-element-preview" :class="{ active: active_form_element==form_element &&  active_tab=='edit_item' }" @click="active_tab = 'edit_item'; active_form_element = form_element">
69
-                            <?php do_action( 'wpinv_payment_form_render_element_template', 'form_element', $post ); ?>
69
+                            <?php do_action('wpinv_payment_form_render_element_template', 'form_element', $post); ?>
70 70
                         </div>
71 71
                     </draggable>
72 72
 
@@ -78,7 +78,7 @@  discard block
 block discarded – undo
78 78
         </div>
79 79
         <?php
80 80
 
81
-        wp_nonce_field( 'wpinv_save_payment_form', 'wpinv_save_payment_form' ) ;
81
+        wp_nonce_field('wpinv_save_payment_form', 'wpinv_save_payment_form');
82 82
     }
83 83
 
84 84
     /**
@@ -86,54 +86,54 @@  discard block
 block discarded – undo
86 86
 	 *
87 87
 	 * @param int $post_id
88 88
 	 */
89
-	public static function save( $post_id ) {
89
+	public static function save($post_id) {
90 90
 
91 91
         // verify nonce
92
-        if ( ! isset( $_POST['wpinv_save_payment_form'] ) || ! wp_verify_nonce( $_POST['wpinv_save_payment_form'], 'wpinv_save_payment_form' ) ) {
92
+        if (!isset($_POST['wpinv_save_payment_form']) || !wp_verify_nonce($_POST['wpinv_save_payment_form'], 'wpinv_save_payment_form')) {
93 93
             return;
94 94
         }
95 95
 
96 96
         // Prepare the form.
97
-        $form = new GetPaid_Payment_Form( $post_id );
97
+        $form = new GetPaid_Payment_Form($post_id);
98 98
 
99 99
         // Fetch form items.
100
-        $form_items = json_decode( wp_unslash( $_POST['wpinv_form_items'] ), true );
100
+        $form_items = json_decode(wp_unslash($_POST['wpinv_form_items']), true);
101 101
 
102 102
         // Ensure that we have an array...
103
-        if ( empty( $form_items ) ) {
103
+        if (empty($form_items)) {
104 104
             $form_items = array();
105 105
         }
106 106
 
107 107
         // ... and that new items are saved to the db.
108
-        $form_items = self::maybe_save_items( $form_items );
108
+        $form_items = self::maybe_save_items($form_items);
109 109
 
110 110
         // Add it to the form.
111
-        $form->set_items( $form_items );
111
+        $form->set_items($form_items);
112 112
 
113 113
         // Save form elements.
114
-        $form_elements = json_decode( wp_unslash( $_POST['wpinv_form_elements'] ), true );
115
-        if ( empty( $form_elements ) ) {
114
+        $form_elements = json_decode(wp_unslash($_POST['wpinv_form_elements']), true);
115
+        if (empty($form_elements)) {
116 116
             $form_elements = array();
117 117
         }
118 118
 
119
-        $form->set_elements( $form_elements );
119
+        $form->set_elements($form_elements);
120 120
 
121 121
         // Persist data to the datastore.
122 122
         $form->save();
123
-        do_action( 'getpaid_payment_form_metabox_save', $post_id, $form );
123
+        do_action('getpaid_payment_form_metabox_save', $post_id, $form);
124 124
 
125 125
     }
126 126
 
127 127
     /**
128 128
      * Saves unsaved form items.
129 129
      */
130
-    public static function maybe_save_items( $items ) {
130
+    public static function maybe_save_items($items) {
131 131
 
132 132
         $saved = array();
133 133
 
134
-        foreach( $items as $item ) {
134
+        foreach ($items as $item) {
135 135
 
136
-            if ( is_numeric( $item['id'] ) ) {
136
+            if (is_numeric($item['id'])) {
137 137
                 $saved[] = $item;
138 138
                 continue;
139 139
             }
@@ -143,32 +143,32 @@  discard block
 block discarded – undo
143 143
             // Save post data.
144 144
             $new_item->set_props(
145 145
                 array(
146
-                    'name'               => sanitize_text_field( $item['title'] ),
147
-                    'description'        => wp_kses_post( $item['description'] ),
146
+                    'name'               => sanitize_text_field($item['title']),
147
+                    'description'        => wp_kses_post($item['description']),
148 148
                     'status'             => 'publish',
149
-                    'type'               => empty( $item['type'] ) ? 'custom' : $item['type'],
150
-                    'price'              => wpinv_sanitize_amount( $item['price'] ),
151
-                    'vat_rule'           => empty( $item['rule'] ) ? 'digital' : $item['rule'],
152
-                    'vat_class'          => empty( $item['class'] ) ? '_standard' : $item['class'],
153
-                    'is_dynamic_pricing' => empty( $item['custom_price'] ) ? 0 : (int) $item['custom_price'],
154
-                    'minimum_price'      => empty( $item['minimum_price'] ) ? 0 : (float) $item['minimum_price'],
149
+                    'type'               => empty($item['type']) ? 'custom' : $item['type'],
150
+                    'price'              => wpinv_sanitize_amount($item['price']),
151
+                    'vat_rule'           => empty($item['rule']) ? 'digital' : $item['rule'],
152
+                    'vat_class'          => empty($item['class']) ? '_standard' : $item['class'],
153
+                    'is_dynamic_pricing' => empty($item['custom_price']) ? 0 : (int) $item['custom_price'],
154
+                    'minimum_price'      => empty($item['minimum_price']) ? 0 : (float) $item['minimum_price'],
155 155
                 )
156 156
             );
157 157
 
158 158
             // Save the item.
159 159
             $new_item->save();
160 160
 
161
-            if ( $new_item->get_id() ) {
161
+            if ($new_item->get_id()) {
162 162
                 $item['id'] = $new_item->get_id();
163 163
                 $saved[] = $item;
164 164
             }
165 165
 
166 166
         }
167 167
 
168
-        foreach ( $saved as $i => $item ) {
169
-            foreach ( array( 'new', 'type', 'class', 'rule', 'price', 'title', 'custom_price', 'minimum_price', 'recurring' ) as $key ) {
170
-                if ( isset( $item[ $key ] ) ) {
171
-                    unset( $saved[ $i ][ $key ] );
168
+        foreach ($saved as $i => $item) {
169
+            foreach (array('new', 'type', 'class', 'rule', 'price', 'title', 'custom_price', 'minimum_price', 'recurring') as $key) {
170
+                if (isset($item[$key])) {
171
+                    unset($saved[$i][$key]);
172 172
                 }
173 173
             }
174 174
         }
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-item-data-store.php 2 patches
Indentation   +193 added lines, -193 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 if ( ! defined( 'ABSPATH' ) ) {
7
-	exit;
7
+    exit;
8 8
 }
9 9
 
10 10
 /**
@@ -14,212 +14,212 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Item_Data_Store extends GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Data stored in meta keys, but not considered "meta" for an item.
19
-	 *
20
-	 * @since 1.0.19
21
-	 * @var array
22
-	 */
23
-	protected $internal_meta_keys = array(
24
-		'_wpinv_price',
25
-		'_wpinv_vat_rule',
26
-		'_wpinv_vat_class',
27
-		'_wpinv_type',
28
-		'_wpinv_custom_id',
29
-		'_wpinv_custom_name',
30
-		'_wpinv_custom_singular_name',
31
-		'_wpinv_editable',
32
-		'_wpinv_dynamic_pricing',
33
-		'_minimum_price',
34
-		'_wpinv_is_recurring',
35
-		'_wpinv_recurring_period',
36
-		'_wpinv_recurring_interval',
37
-		'_wpinv_recurring_limit',
38
-		'_wpinv_free_trial',
39
-		'_wpinv_trial_period',
40
-		'_wpinv_trial_interval'
41
-	);
42
-
43
-	/**
44
-	 * A map of meta keys to data props.
45
-	 *
46
-	 * @since 1.0.19
47
-	 *
48
-	 * @var array
49
-	 */
50
-	protected $meta_key_to_props = array(
51
-		'_wpinv_price'                => 'price',
52
-		'_wpinv_vat_rule'             => 'vat_rule',
53
-		'_wpinv_vat_class'            => 'vat_class',
54
-		'_wpinv_type'                 => 'type',
55
-		'_wpinv_custom_id'            => 'custom_id',
56
-		'_wpinv_custom_name'          => 'custom_name',
57
-		'_wpinv_custom_singular_name' => 'custom_singular_name',
58
-		'_wpinv_editable'             => 'is_editable',
59
-		'_wpinv_dynamic_pricing'      => 'is_dynamic_pricing',
60
-		'_minimum_price'              => 'minimum_price',
61
-		'_wpinv_custom_name'          => 'custom_name',
62
-		'_wpinv_is_recurring'         => 'is_recurring',
63
-		'_wpinv_recurring_period'     => 'recurring_period',
64
-		'_wpinv_recurring_interval'   => 'recurring_interval',
65
-		'_wpinv_recurring_limit'      => 'recurring_limit',
66
-		'_wpinv_free_trial'           => 'is_free_trial',
67
-		'_wpinv_trial_period'         => 'trial_period',
68
-		'_wpinv_trial_interval'       => 'trial_interval',
69
-		'_wpinv_version'              => 'version',
70
-	);
71
-
72
-	/*
17
+    /**
18
+     * Data stored in meta keys, but not considered "meta" for an item.
19
+     *
20
+     * @since 1.0.19
21
+     * @var array
22
+     */
23
+    protected $internal_meta_keys = array(
24
+        '_wpinv_price',
25
+        '_wpinv_vat_rule',
26
+        '_wpinv_vat_class',
27
+        '_wpinv_type',
28
+        '_wpinv_custom_id',
29
+        '_wpinv_custom_name',
30
+        '_wpinv_custom_singular_name',
31
+        '_wpinv_editable',
32
+        '_wpinv_dynamic_pricing',
33
+        '_minimum_price',
34
+        '_wpinv_is_recurring',
35
+        '_wpinv_recurring_period',
36
+        '_wpinv_recurring_interval',
37
+        '_wpinv_recurring_limit',
38
+        '_wpinv_free_trial',
39
+        '_wpinv_trial_period',
40
+        '_wpinv_trial_interval'
41
+    );
42
+
43
+    /**
44
+     * A map of meta keys to data props.
45
+     *
46
+     * @since 1.0.19
47
+     *
48
+     * @var array
49
+     */
50
+    protected $meta_key_to_props = array(
51
+        '_wpinv_price'                => 'price',
52
+        '_wpinv_vat_rule'             => 'vat_rule',
53
+        '_wpinv_vat_class'            => 'vat_class',
54
+        '_wpinv_type'                 => 'type',
55
+        '_wpinv_custom_id'            => 'custom_id',
56
+        '_wpinv_custom_name'          => 'custom_name',
57
+        '_wpinv_custom_singular_name' => 'custom_singular_name',
58
+        '_wpinv_editable'             => 'is_editable',
59
+        '_wpinv_dynamic_pricing'      => 'is_dynamic_pricing',
60
+        '_minimum_price'              => 'minimum_price',
61
+        '_wpinv_custom_name'          => 'custom_name',
62
+        '_wpinv_is_recurring'         => 'is_recurring',
63
+        '_wpinv_recurring_period'     => 'recurring_period',
64
+        '_wpinv_recurring_interval'   => 'recurring_interval',
65
+        '_wpinv_recurring_limit'      => 'recurring_limit',
66
+        '_wpinv_free_trial'           => 'is_free_trial',
67
+        '_wpinv_trial_period'         => 'trial_period',
68
+        '_wpinv_trial_interval'       => 'trial_interval',
69
+        '_wpinv_version'              => 'version',
70
+    );
71
+
72
+    /*
73 73
 	|--------------------------------------------------------------------------
74 74
 	| CRUD Methods
75 75
 	|--------------------------------------------------------------------------
76 76
 	*/
77 77
 
78
-	/**
79
-	 * Method to create a new item in the database.
80
-	 *
81
-	 * @param WPInv_Item $item Item object.
82
-	 */
83
-	public function create( &$item ) {
84
-		$item->set_version( WPINV_VERSION );
85
-		$item->set_date_created( current_time('mysql') );
86
-
87
-		// Create a new post.
88
-		$id = wp_insert_post(
89
-			apply_filters(
90
-				'getpaid_new_item_data',
91
-				array(
92
-					'post_date'     => $item->get_date_created( 'edit' ),
93
-					'post_type'     => 'wpi_item',
94
-					'post_status'   => $this->get_post_status( $item ),
95
-					'ping_status'   => 'closed',
96
-					'post_author'   => $item->get_author( 'edit' ),
97
-					'post_title'    => $item->get_name( 'edit' ),
98
-					'post_parent'   => 0,
99
-					'post_excerpt'  => $item->get_description( 'edit' ),
100
-				)
101
-			),
102
-			true
103
-		);
104
-
105
-		if ( $id && ! is_wp_error( $id ) ) {
106
-			$item->set_id( $id );
107
-			$this->update_post_meta( $item );
108
-			$item->save_meta_data();
109
-			$item->apply_changes();
110
-			$this->clear_caches( $item );
111
-			return true;
112
-		}
113
-
114
-		if ( is_wp_error( $id ) ) {
115
-			$item->last_error = $id->get_error_message();
116
-		}
78
+    /**
79
+     * Method to create a new item in the database.
80
+     *
81
+     * @param WPInv_Item $item Item object.
82
+     */
83
+    public function create( &$item ) {
84
+        $item->set_version( WPINV_VERSION );
85
+        $item->set_date_created( current_time('mysql') );
86
+
87
+        // Create a new post.
88
+        $id = wp_insert_post(
89
+            apply_filters(
90
+                'getpaid_new_item_data',
91
+                array(
92
+                    'post_date'     => $item->get_date_created( 'edit' ),
93
+                    'post_type'     => 'wpi_item',
94
+                    'post_status'   => $this->get_post_status( $item ),
95
+                    'ping_status'   => 'closed',
96
+                    'post_author'   => $item->get_author( 'edit' ),
97
+                    'post_title'    => $item->get_name( 'edit' ),
98
+                    'post_parent'   => 0,
99
+                    'post_excerpt'  => $item->get_description( 'edit' ),
100
+                )
101
+            ),
102
+            true
103
+        );
104
+
105
+        if ( $id && ! is_wp_error( $id ) ) {
106
+            $item->set_id( $id );
107
+            $this->update_post_meta( $item );
108
+            $item->save_meta_data();
109
+            $item->apply_changes();
110
+            $this->clear_caches( $item );
111
+            return true;
112
+        }
113
+
114
+        if ( is_wp_error( $id ) ) {
115
+            $item->last_error = $id->get_error_message();
116
+        }
117 117
 		
118
-		return false;
119
-	}
120
-
121
-	/**
122
-	 * Method to read an item from the database.
123
-	 *
124
-	 * @param WPInv_Item $item Item object.
125
-	 *
126
-	 */
127
-	public function read( &$item ) {
128
-
129
-		$item->set_defaults();
130
-		$item_object = get_post( $item->get_id() );
131
-
132
-		if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
133
-			$item->last_error = __( 'Invalid item.', 'invoicing' );
134
-			return false;
135
-		}
136
-
137
-		$item->set_props(
138
-			array(
139
-				'parent_id'     => $item_object->post_parent,
140
-				'date_created'  => 0 < $item_object->post_date_gmt ? $item_object->post_date_gmt : null,
141
-				'date_modified' => 0 < $item_object->post_modified_gmt ? $item_object->post_modified_gmt : null,
142
-				'status'        => $item_object->post_status,
143
-				'name'          => $item_object->post_title,
144
-				'description'   => $item_object->post_excerpt,
145
-				'author'        => $item_object->post_author,
146
-			)
147
-		);
148
-
149
-		$this->read_object_data( $item, $item_object );
150
-		$item->read_meta_data();
151
-		$item->set_object_read( true );
152
-
153
-	}
154
-
155
-	/**
156
-	 * Method to update an item in the database.
157
-	 *
158
-	 * @param WPInv_Item $item Item object.
159
-	 */
160
-	public function update( &$item ) {
161
-		$item->save_meta_data();
162
-		$item->set_version( WPINV_VERSION );
163
-
164
-		if ( null === $item->get_date_created( 'edit' ) ) {
165
-			$item->set_date_created(  current_time('mysql') );
166
-		}
167
-
168
-		$changes = $item->get_changes();
169
-
170
-		// Only update the post when the post data changes.
171
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'post_excerpt', 'name', 'author' ), array_keys( $changes ) ) ) {
172
-			$post_data = array(
173
-				'post_date'         => $item->get_date_created( 'edit' ),
174
-				'post_status'       => $item->get_status( 'edit' ),
175
-				'post_parent'       => $item->get_parent_id( 'edit' ),
176
-				'post_excerpt'      => $item->get_description( 'edit' ),
177
-				'post_modified'     => $item->get_date_modified( 'edit' ),
178
-				'post_title'        => $item->get_name( 'edit' ),
179
-				'post_author'       => $item->get_author( 'edit' ),
180
-			);
181
-
182
-			/**
183
-			 * When updating this object, to prevent infinite loops, use $wpdb
184
-			 * to update data, since wp_update_post spawns more calls to the
185
-			 * save_post action.
186
-			 *
187
-			 * This ensures hooks are fired by either WP itself (admin screen save),
188
-			 * or an update purely from CRUD.
189
-			 */
190
-			if ( doing_action( 'save_post' ) ) {
191
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
192
-				clean_post_cache( $item->get_id() );
193
-			} else {
194
-				wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
195
-			}
196
-			$item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
197
-		}
198
-		$this->update_post_meta( $item );
199
-		$item->apply_changes();
200
-		$this->clear_caches( $item );
201
-	}
202
-
203
-	/*
118
+        return false;
119
+    }
120
+
121
+    /**
122
+     * Method to read an item from the database.
123
+     *
124
+     * @param WPInv_Item $item Item object.
125
+     *
126
+     */
127
+    public function read( &$item ) {
128
+
129
+        $item->set_defaults();
130
+        $item_object = get_post( $item->get_id() );
131
+
132
+        if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
133
+            $item->last_error = __( 'Invalid item.', 'invoicing' );
134
+            return false;
135
+        }
136
+
137
+        $item->set_props(
138
+            array(
139
+                'parent_id'     => $item_object->post_parent,
140
+                'date_created'  => 0 < $item_object->post_date_gmt ? $item_object->post_date_gmt : null,
141
+                'date_modified' => 0 < $item_object->post_modified_gmt ? $item_object->post_modified_gmt : null,
142
+                'status'        => $item_object->post_status,
143
+                'name'          => $item_object->post_title,
144
+                'description'   => $item_object->post_excerpt,
145
+                'author'        => $item_object->post_author,
146
+            )
147
+        );
148
+
149
+        $this->read_object_data( $item, $item_object );
150
+        $item->read_meta_data();
151
+        $item->set_object_read( true );
152
+
153
+    }
154
+
155
+    /**
156
+     * Method to update an item in the database.
157
+     *
158
+     * @param WPInv_Item $item Item object.
159
+     */
160
+    public function update( &$item ) {
161
+        $item->save_meta_data();
162
+        $item->set_version( WPINV_VERSION );
163
+
164
+        if ( null === $item->get_date_created( 'edit' ) ) {
165
+            $item->set_date_created(  current_time('mysql') );
166
+        }
167
+
168
+        $changes = $item->get_changes();
169
+
170
+        // Only update the post when the post data changes.
171
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'post_excerpt', 'name', 'author' ), array_keys( $changes ) ) ) {
172
+            $post_data = array(
173
+                'post_date'         => $item->get_date_created( 'edit' ),
174
+                'post_status'       => $item->get_status( 'edit' ),
175
+                'post_parent'       => $item->get_parent_id( 'edit' ),
176
+                'post_excerpt'      => $item->get_description( 'edit' ),
177
+                'post_modified'     => $item->get_date_modified( 'edit' ),
178
+                'post_title'        => $item->get_name( 'edit' ),
179
+                'post_author'       => $item->get_author( 'edit' ),
180
+            );
181
+
182
+            /**
183
+             * When updating this object, to prevent infinite loops, use $wpdb
184
+             * to update data, since wp_update_post spawns more calls to the
185
+             * save_post action.
186
+             *
187
+             * This ensures hooks are fired by either WP itself (admin screen save),
188
+             * or an update purely from CRUD.
189
+             */
190
+            if ( doing_action( 'save_post' ) ) {
191
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
192
+                clean_post_cache( $item->get_id() );
193
+            } else {
194
+                wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
195
+            }
196
+            $item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
197
+        }
198
+        $this->update_post_meta( $item );
199
+        $item->apply_changes();
200
+        $this->clear_caches( $item );
201
+    }
202
+
203
+    /*
204 204
 	|--------------------------------------------------------------------------
205 205
 	| Additional Methods
206 206
 	|--------------------------------------------------------------------------
207 207
 	*/
208 208
 
209
-	/**
210
-	 * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class.
211
-	 *
212
-	 * @param WPInv_Item $item WPInv_Item object.
213
-	 * @since 1.0.19
214
-	 */
215
-	protected function update_post_meta( &$item ) {
209
+    /**
210
+     * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class.
211
+     *
212
+     * @param WPInv_Item $item WPInv_Item object.
213
+     * @since 1.0.19
214
+     */
215
+    protected function update_post_meta( &$item ) {
216 216
 
217
-		// Ensure that we have a custom id.
217
+        // Ensure that we have a custom id.
218 218
         if ( ! $item->get_custom_id() ) {
219 219
             $item->set_custom_id( $item->get_id() );
220
-		}
220
+        }
221 221
 
222
-		parent::update_post_meta( $item );
223
-	}
222
+        parent::update_post_meta( $item );
223
+    }
224 224
 
225 225
 }
Please login to merge, or discard this patch.
Spacing   +43 added lines, -43 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * GetPaid_Item_Data_Store class file.
4 4
  *
5 5
  */
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
 	exit;
8 8
 }
9 9
 
@@ -80,38 +80,38 @@  discard block
 block discarded – undo
80 80
 	 *
81 81
 	 * @param WPInv_Item $item Item object.
82 82
 	 */
83
-	public function create( &$item ) {
84
-		$item->set_version( WPINV_VERSION );
85
-		$item->set_date_created( current_time('mysql') );
83
+	public function create(&$item) {
84
+		$item->set_version(WPINV_VERSION);
85
+		$item->set_date_created(current_time('mysql'));
86 86
 
87 87
 		// Create a new post.
88 88
 		$id = wp_insert_post(
89 89
 			apply_filters(
90 90
 				'getpaid_new_item_data',
91 91
 				array(
92
-					'post_date'     => $item->get_date_created( 'edit' ),
92
+					'post_date'     => $item->get_date_created('edit'),
93 93
 					'post_type'     => 'wpi_item',
94
-					'post_status'   => $this->get_post_status( $item ),
94
+					'post_status'   => $this->get_post_status($item),
95 95
 					'ping_status'   => 'closed',
96
-					'post_author'   => $item->get_author( 'edit' ),
97
-					'post_title'    => $item->get_name( 'edit' ),
96
+					'post_author'   => $item->get_author('edit'),
97
+					'post_title'    => $item->get_name('edit'),
98 98
 					'post_parent'   => 0,
99
-					'post_excerpt'  => $item->get_description( 'edit' ),
99
+					'post_excerpt'  => $item->get_description('edit'),
100 100
 				)
101 101
 			),
102 102
 			true
103 103
 		);
104 104
 
105
-		if ( $id && ! is_wp_error( $id ) ) {
106
-			$item->set_id( $id );
107
-			$this->update_post_meta( $item );
105
+		if ($id && !is_wp_error($id)) {
106
+			$item->set_id($id);
107
+			$this->update_post_meta($item);
108 108
 			$item->save_meta_data();
109 109
 			$item->apply_changes();
110
-			$this->clear_caches( $item );
110
+			$this->clear_caches($item);
111 111
 			return true;
112 112
 		}
113 113
 
114
-		if ( is_wp_error( $id ) ) {
114
+		if (is_wp_error($id)) {
115 115
 			$item->last_error = $id->get_error_message();
116 116
 		}
117 117
 		
@@ -124,13 +124,13 @@  discard block
 block discarded – undo
124 124
 	 * @param WPInv_Item $item Item object.
125 125
 	 *
126 126
 	 */
127
-	public function read( &$item ) {
127
+	public function read(&$item) {
128 128
 
129 129
 		$item->set_defaults();
130
-		$item_object = get_post( $item->get_id() );
130
+		$item_object = get_post($item->get_id());
131 131
 
132
-		if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
133
-			$item->last_error = __( 'Invalid item.', 'invoicing' );
132
+		if (!$item->get_id() || !$item_object || $item_object->post_type != 'wpi_item') {
133
+			$item->last_error = __('Invalid item.', 'invoicing');
134 134
 			return false;
135 135
 		}
136 136
 
@@ -146,9 +146,9 @@  discard block
 block discarded – undo
146 146
 			)
147 147
 		);
148 148
 
149
-		$this->read_object_data( $item, $item_object );
149
+		$this->read_object_data($item, $item_object);
150 150
 		$item->read_meta_data();
151
-		$item->set_object_read( true );
151
+		$item->set_object_read(true);
152 152
 
153 153
 	}
154 154
 
@@ -157,26 +157,26 @@  discard block
 block discarded – undo
157 157
 	 *
158 158
 	 * @param WPInv_Item $item Item object.
159 159
 	 */
160
-	public function update( &$item ) {
160
+	public function update(&$item) {
161 161
 		$item->save_meta_data();
162
-		$item->set_version( WPINV_VERSION );
162
+		$item->set_version(WPINV_VERSION);
163 163
 
164
-		if ( null === $item->get_date_created( 'edit' ) ) {
165
-			$item->set_date_created(  current_time('mysql') );
164
+		if (null === $item->get_date_created('edit')) {
165
+			$item->set_date_created(current_time('mysql'));
166 166
 		}
167 167
 
168 168
 		$changes = $item->get_changes();
169 169
 
170 170
 		// Only update the post when the post data changes.
171
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'post_excerpt', 'name', 'author' ), array_keys( $changes ) ) ) {
171
+		if (array_intersect(array('date_created', 'date_modified', 'status', 'parent_id', 'post_excerpt', 'name', 'author'), array_keys($changes))) {
172 172
 			$post_data = array(
173
-				'post_date'         => $item->get_date_created( 'edit' ),
174
-				'post_status'       => $item->get_status( 'edit' ),
175
-				'post_parent'       => $item->get_parent_id( 'edit' ),
176
-				'post_excerpt'      => $item->get_description( 'edit' ),
177
-				'post_modified'     => $item->get_date_modified( 'edit' ),
178
-				'post_title'        => $item->get_name( 'edit' ),
179
-				'post_author'       => $item->get_author( 'edit' ),
173
+				'post_date'         => $item->get_date_created('edit'),
174
+				'post_status'       => $item->get_status('edit'),
175
+				'post_parent'       => $item->get_parent_id('edit'),
176
+				'post_excerpt'      => $item->get_description('edit'),
177
+				'post_modified'     => $item->get_date_modified('edit'),
178
+				'post_title'        => $item->get_name('edit'),
179
+				'post_author'       => $item->get_author('edit'),
180 180
 			);
181 181
 
182 182
 			/**
@@ -187,17 +187,17 @@  discard block
 block discarded – undo
187 187
 			 * This ensures hooks are fired by either WP itself (admin screen save),
188 188
 			 * or an update purely from CRUD.
189 189
 			 */
190
-			if ( doing_action( 'save_post' ) ) {
191
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
192
-				clean_post_cache( $item->get_id() );
190
+			if (doing_action('save_post')) {
191
+				$GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $item->get_id()));
192
+				clean_post_cache($item->get_id());
193 193
 			} else {
194
-				wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
194
+				wp_update_post(array_merge(array('ID' => $item->get_id()), $post_data));
195 195
 			}
196
-			$item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
196
+			$item->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
197 197
 		}
198
-		$this->update_post_meta( $item );
198
+		$this->update_post_meta($item);
199 199
 		$item->apply_changes();
200
-		$this->clear_caches( $item );
200
+		$this->clear_caches($item);
201 201
 	}
202 202
 
203 203
 	/*
@@ -212,14 +212,14 @@  discard block
 block discarded – undo
212 212
 	 * @param WPInv_Item $item WPInv_Item object.
213 213
 	 * @since 1.0.19
214 214
 	 */
215
-	protected function update_post_meta( &$item ) {
215
+	protected function update_post_meta(&$item) {
216 216
 
217 217
 		// Ensure that we have a custom id.
218
-        if ( ! $item->get_custom_id() ) {
219
-            $item->set_custom_id( $item->get_id() );
218
+        if (!$item->get_custom_id()) {
219
+            $item->set_custom_id($item->get_id());
220 220
 		}
221 221
 
222
-		parent::update_post_meta( $item );
222
+		parent::update_post_meta($item);
223 223
 	}
224 224
 
225 225
 }
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-payment-form-data-store.php 2 patches
Indentation   +153 added lines, -153 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 if ( ! defined( 'ABSPATH' ) ) {
7
-	exit;
7
+    exit;
8 8
 }
9 9
 
10 10
 /**
@@ -14,163 +14,163 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Payment_Form_Data_Store extends GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Data stored in meta keys, but not considered "meta" for a form.
19
-	 *
20
-	 * @since 1.0.19
21
-	 * @var array
22
-	 */
23
-	protected $internal_meta_keys = array(
24
-		'wpinv_form_elements',
25
-		'wpinv_form_items',
26
-		'wpinv_form_earned',
27
-		'wpinv_form_refunded',
28
-		'wpinv_form_cancelled',
29
-		'wpinv_form_failed'
30
-	);
31
-
32
-	/**
33
-	 * A map of meta keys to data props.
34
-	 *
35
-	 * @since 1.0.19
36
-	 *
37
-	 * @var array
38
-	 */
39
-	protected $meta_key_to_props = array(
40
-		'wpinv_form_elements'  => 'elements',
41
-		'wpinv_form_items'     => 'items',
42
-		'wpinv_form_earned'    => 'earned',
43
-		'wpinv_form_refunded'  => 'refunded',
44
-		'wpinv_form_cancelled' => 'cancelled',
45
-		'wpinv_form_failed'    => 'failed',
46
-	);
47
-
48
-	/*
17
+    /**
18
+     * Data stored in meta keys, but not considered "meta" for a form.
19
+     *
20
+     * @since 1.0.19
21
+     * @var array
22
+     */
23
+    protected $internal_meta_keys = array(
24
+        'wpinv_form_elements',
25
+        'wpinv_form_items',
26
+        'wpinv_form_earned',
27
+        'wpinv_form_refunded',
28
+        'wpinv_form_cancelled',
29
+        'wpinv_form_failed'
30
+    );
31
+
32
+    /**
33
+     * A map of meta keys to data props.
34
+     *
35
+     * @since 1.0.19
36
+     *
37
+     * @var array
38
+     */
39
+    protected $meta_key_to_props = array(
40
+        'wpinv_form_elements'  => 'elements',
41
+        'wpinv_form_items'     => 'items',
42
+        'wpinv_form_earned'    => 'earned',
43
+        'wpinv_form_refunded'  => 'refunded',
44
+        'wpinv_form_cancelled' => 'cancelled',
45
+        'wpinv_form_failed'    => 'failed',
46
+    );
47
+
48
+    /*
49 49
 	|--------------------------------------------------------------------------
50 50
 	| CRUD Methods
51 51
 	|--------------------------------------------------------------------------
52 52
 	*/
53 53
 
54
-	/**
55
-	 * Method to create a new form in the database.
56
-	 *
57
-	 * @param GetPaid_Payment_Form $form Form object.
58
-	 */
59
-	public function create( &$form ) {
60
-		$form->set_version( WPINV_VERSION );
61
-		$form->set_date_created( current_time('mysql') );
62
-
63
-		// Create a new post.
64
-		$id = wp_insert_post(
65
-			apply_filters(
66
-				'getpaid_new_payment_form_data',
67
-				array(
68
-					'post_date'     => $form->get_date_created( 'edit' ),
69
-					'post_type'     => 'wpi_payment_form',
70
-					'post_status'   => $this->get_post_status( $form ),
71
-					'ping_status'   => 'closed',
72
-					'post_author'   => $form->get_author( 'edit' ),
73
-					'post_title'    => $form->get_name( 'edit' ),
74
-				)
75
-			),
76
-			true
77
-		);
78
-
79
-		if ( $id && ! is_wp_error( $id ) ) {
80
-			$form->set_id( $id );
81
-			$this->update_post_meta( $form );
82
-			$form->save_meta_data();
83
-			$form->apply_changes();
84
-			$this->clear_caches( $form );
85
-			return true;
86
-		}
87
-
88
-		if ( is_wp_error( $id ) ) {
89
-			$form->last_error = $id->get_error_message();
90
-		}
91
-
92
-		return false;
93
-	}
94
-
95
-	/**
96
-	 * Method to read a form from the database.
97
-	 *
98
-	 * @param GetPaid_Payment_Form $form Form object.
99
-	 *
100
-	 */
101
-	public function read( &$form ) {
102
-
103
-		$form->set_defaults();
104
-		$form_object = get_post( $form->get_id() );
105
-
106
-		if ( ! $form->get_id() || ! $form_object || $form_object->post_type != 'wpi_payment_form' ) {
107
-			$form->last_error = __( 'Invalid form.', 'invoicing' );
108
-			return false;
109
-		}
110
-
111
-		$form->set_props(
112
-			array(
113
-				'date_created'  => 0 < $form_object->post_date_gmt ? $form_object->post_date_gmt : null,
114
-				'date_modified' => 0 < $form_object->post_modified_gmt ? $form_object->post_modified_gmt : null,
115
-				'status'        => $form_object->post_status,
116
-				'name'          => $form_object->post_title,
117
-				'author'        => $form_object->post_author,
118
-			)
119
-		);
120
-
121
-		$this->read_object_data( $form, $form_object );
122
-		$form->read_meta_data();
123
-		$form->set_object_read( true );
124
-
125
-	}
126
-
127
-	/**
128
-	 * Method to update a form in the database.
129
-	 *
130
-	 * @param GetPaid_Payment_Form $form Form object.
131
-	 */
132
-	public function update( &$form ) {
133
-		$form->save_meta_data();
134
-		$form->set_version( WPINV_VERSION );
135
-
136
-		if ( null === $form->get_date_created( 'edit' ) ) {
137
-			$form->set_date_created(  current_time('mysql') );
138
-		}
139
-
140
-		$changes = $form->get_changes();
141
-
142
-		// Only update the post when the post data changes.
143
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author' ), array_keys( $changes ) ) ) {
144
-			$post_data = array(
145
-				'post_date'         => $form->get_date_created( 'edit' ),
146
-				'post_status'       => $form->get_status( 'edit' ),
147
-				'post_title'        => $form->get_name( 'edit' ),
148
-				'post_author'       => $form->get_author( 'edit' ),
149
-				'post_modified'     => $form->get_date_modified( 'edit' ),
150
-			);
151
-
152
-			/**
153
-			 * When updating this object, to prevent infinite loops, use $wpdb
154
-			 * to update data, since wp_update_post spawns more calls to the
155
-			 * save_post action.
156
-			 *
157
-			 * This ensures hooks are fired by either WP itself (admin screen save),
158
-			 * or an update purely from CRUD.
159
-			 */
160
-			if ( doing_action( 'save_post' ) ) {
161
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $form->get_id() ) );
162
-				clean_post_cache( $form->get_id() );
163
-			} else {
164
-				wp_update_post( array_merge( array( 'ID' => $form->get_id() ), $post_data ) );
165
-			}
166
-			$form->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
167
-		}
168
-		$this->update_post_meta( $form );
169
-		$form->apply_changes();
170
-		$this->clear_caches( $form );
171
-	}
172
-
173
-	/*
54
+    /**
55
+     * Method to create a new form in the database.
56
+     *
57
+     * @param GetPaid_Payment_Form $form Form object.
58
+     */
59
+    public function create( &$form ) {
60
+        $form->set_version( WPINV_VERSION );
61
+        $form->set_date_created( current_time('mysql') );
62
+
63
+        // Create a new post.
64
+        $id = wp_insert_post(
65
+            apply_filters(
66
+                'getpaid_new_payment_form_data',
67
+                array(
68
+                    'post_date'     => $form->get_date_created( 'edit' ),
69
+                    'post_type'     => 'wpi_payment_form',
70
+                    'post_status'   => $this->get_post_status( $form ),
71
+                    'ping_status'   => 'closed',
72
+                    'post_author'   => $form->get_author( 'edit' ),
73
+                    'post_title'    => $form->get_name( 'edit' ),
74
+                )
75
+            ),
76
+            true
77
+        );
78
+
79
+        if ( $id && ! is_wp_error( $id ) ) {
80
+            $form->set_id( $id );
81
+            $this->update_post_meta( $form );
82
+            $form->save_meta_data();
83
+            $form->apply_changes();
84
+            $this->clear_caches( $form );
85
+            return true;
86
+        }
87
+
88
+        if ( is_wp_error( $id ) ) {
89
+            $form->last_error = $id->get_error_message();
90
+        }
91
+
92
+        return false;
93
+    }
94
+
95
+    /**
96
+     * Method to read a form from the database.
97
+     *
98
+     * @param GetPaid_Payment_Form $form Form object.
99
+     *
100
+     */
101
+    public function read( &$form ) {
102
+
103
+        $form->set_defaults();
104
+        $form_object = get_post( $form->get_id() );
105
+
106
+        if ( ! $form->get_id() || ! $form_object || $form_object->post_type != 'wpi_payment_form' ) {
107
+            $form->last_error = __( 'Invalid form.', 'invoicing' );
108
+            return false;
109
+        }
110
+
111
+        $form->set_props(
112
+            array(
113
+                'date_created'  => 0 < $form_object->post_date_gmt ? $form_object->post_date_gmt : null,
114
+                'date_modified' => 0 < $form_object->post_modified_gmt ? $form_object->post_modified_gmt : null,
115
+                'status'        => $form_object->post_status,
116
+                'name'          => $form_object->post_title,
117
+                'author'        => $form_object->post_author,
118
+            )
119
+        );
120
+
121
+        $this->read_object_data( $form, $form_object );
122
+        $form->read_meta_data();
123
+        $form->set_object_read( true );
124
+
125
+    }
126
+
127
+    /**
128
+     * Method to update a form in the database.
129
+     *
130
+     * @param GetPaid_Payment_Form $form Form object.
131
+     */
132
+    public function update( &$form ) {
133
+        $form->save_meta_data();
134
+        $form->set_version( WPINV_VERSION );
135
+
136
+        if ( null === $form->get_date_created( 'edit' ) ) {
137
+            $form->set_date_created(  current_time('mysql') );
138
+        }
139
+
140
+        $changes = $form->get_changes();
141
+
142
+        // Only update the post when the post data changes.
143
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author' ), array_keys( $changes ) ) ) {
144
+            $post_data = array(
145
+                'post_date'         => $form->get_date_created( 'edit' ),
146
+                'post_status'       => $form->get_status( 'edit' ),
147
+                'post_title'        => $form->get_name( 'edit' ),
148
+                'post_author'       => $form->get_author( 'edit' ),
149
+                'post_modified'     => $form->get_date_modified( 'edit' ),
150
+            );
151
+
152
+            /**
153
+             * When updating this object, to prevent infinite loops, use $wpdb
154
+             * to update data, since wp_update_post spawns more calls to the
155
+             * save_post action.
156
+             *
157
+             * This ensures hooks are fired by either WP itself (admin screen save),
158
+             * or an update purely from CRUD.
159
+             */
160
+            if ( doing_action( 'save_post' ) ) {
161
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $form->get_id() ) );
162
+                clean_post_cache( $form->get_id() );
163
+            } else {
164
+                wp_update_post( array_merge( array( 'ID' => $form->get_id() ), $post_data ) );
165
+            }
166
+            $form->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
167
+        }
168
+        $this->update_post_meta( $form );
169
+        $form->apply_changes();
170
+        $this->clear_caches( $form );
171
+    }
172
+
173
+    /*
174 174
 	|--------------------------------------------------------------------------
175 175
 	| Additional Methods
176 176
 	|--------------------------------------------------------------------------
Please login to merge, or discard this patch.
Spacing   +36 added lines, -36 removed lines patch added patch discarded remove patch
@@ -3,7 +3,7 @@  discard block
 block discarded – undo
3 3
  * GetPaid_Payment_Form_Data_Store class file.
4 4
  *
5 5
  */
6
-if ( ! defined( 'ABSPATH' ) ) {
6
+if (!defined('ABSPATH')) {
7 7
 	exit;
8 8
 }
9 9
 
@@ -56,36 +56,36 @@  discard block
 block discarded – undo
56 56
 	 *
57 57
 	 * @param GetPaid_Payment_Form $form Form object.
58 58
 	 */
59
-	public function create( &$form ) {
60
-		$form->set_version( WPINV_VERSION );
61
-		$form->set_date_created( current_time('mysql') );
59
+	public function create(&$form) {
60
+		$form->set_version(WPINV_VERSION);
61
+		$form->set_date_created(current_time('mysql'));
62 62
 
63 63
 		// Create a new post.
64 64
 		$id = wp_insert_post(
65 65
 			apply_filters(
66 66
 				'getpaid_new_payment_form_data',
67 67
 				array(
68
-					'post_date'     => $form->get_date_created( 'edit' ),
68
+					'post_date'     => $form->get_date_created('edit'),
69 69
 					'post_type'     => 'wpi_payment_form',
70
-					'post_status'   => $this->get_post_status( $form ),
70
+					'post_status'   => $this->get_post_status($form),
71 71
 					'ping_status'   => 'closed',
72
-					'post_author'   => $form->get_author( 'edit' ),
73
-					'post_title'    => $form->get_name( 'edit' ),
72
+					'post_author'   => $form->get_author('edit'),
73
+					'post_title'    => $form->get_name('edit'),
74 74
 				)
75 75
 			),
76 76
 			true
77 77
 		);
78 78
 
79
-		if ( $id && ! is_wp_error( $id ) ) {
80
-			$form->set_id( $id );
81
-			$this->update_post_meta( $form );
79
+		if ($id && !is_wp_error($id)) {
80
+			$form->set_id($id);
81
+			$this->update_post_meta($form);
82 82
 			$form->save_meta_data();
83 83
 			$form->apply_changes();
84
-			$this->clear_caches( $form );
84
+			$this->clear_caches($form);
85 85
 			return true;
86 86
 		}
87 87
 
88
-		if ( is_wp_error( $id ) ) {
88
+		if (is_wp_error($id)) {
89 89
 			$form->last_error = $id->get_error_message();
90 90
 		}
91 91
 
@@ -98,13 +98,13 @@  discard block
 block discarded – undo
98 98
 	 * @param GetPaid_Payment_Form $form Form object.
99 99
 	 *
100 100
 	 */
101
-	public function read( &$form ) {
101
+	public function read(&$form) {
102 102
 
103 103
 		$form->set_defaults();
104
-		$form_object = get_post( $form->get_id() );
104
+		$form_object = get_post($form->get_id());
105 105
 
106
-		if ( ! $form->get_id() || ! $form_object || $form_object->post_type != 'wpi_payment_form' ) {
107
-			$form->last_error = __( 'Invalid form.', 'invoicing' );
106
+		if (!$form->get_id() || !$form_object || $form_object->post_type != 'wpi_payment_form') {
107
+			$form->last_error = __('Invalid form.', 'invoicing');
108 108
 			return false;
109 109
 		}
110 110
 
@@ -118,9 +118,9 @@  discard block
 block discarded – undo
118 118
 			)
119 119
 		);
120 120
 
121
-		$this->read_object_data( $form, $form_object );
121
+		$this->read_object_data($form, $form_object);
122 122
 		$form->read_meta_data();
123
-		$form->set_object_read( true );
123
+		$form->set_object_read(true);
124 124
 
125 125
 	}
126 126
 
@@ -129,24 +129,24 @@  discard block
 block discarded – undo
129 129
 	 *
130 130
 	 * @param GetPaid_Payment_Form $form Form object.
131 131
 	 */
132
-	public function update( &$form ) {
132
+	public function update(&$form) {
133 133
 		$form->save_meta_data();
134
-		$form->set_version( WPINV_VERSION );
134
+		$form->set_version(WPINV_VERSION);
135 135
 
136
-		if ( null === $form->get_date_created( 'edit' ) ) {
137
-			$form->set_date_created(  current_time('mysql') );
136
+		if (null === $form->get_date_created('edit')) {
137
+			$form->set_date_created(current_time('mysql'));
138 138
 		}
139 139
 
140 140
 		$changes = $form->get_changes();
141 141
 
142 142
 		// Only update the post when the post data changes.
143
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'name', 'author' ), array_keys( $changes ) ) ) {
143
+		if (array_intersect(array('date_created', 'date_modified', 'status', 'name', 'author'), array_keys($changes))) {
144 144
 			$post_data = array(
145
-				'post_date'         => $form->get_date_created( 'edit' ),
146
-				'post_status'       => $form->get_status( 'edit' ),
147
-				'post_title'        => $form->get_name( 'edit' ),
148
-				'post_author'       => $form->get_author( 'edit' ),
149
-				'post_modified'     => $form->get_date_modified( 'edit' ),
145
+				'post_date'         => $form->get_date_created('edit'),
146
+				'post_status'       => $form->get_status('edit'),
147
+				'post_title'        => $form->get_name('edit'),
148
+				'post_author'       => $form->get_author('edit'),
149
+				'post_modified'     => $form->get_date_modified('edit'),
150 150
 			);
151 151
 
152 152
 			/**
@@ -157,17 +157,17 @@  discard block
 block discarded – undo
157 157
 			 * This ensures hooks are fired by either WP itself (admin screen save),
158 158
 			 * or an update purely from CRUD.
159 159
 			 */
160
-			if ( doing_action( 'save_post' ) ) {
161
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $form->get_id() ) );
162
-				clean_post_cache( $form->get_id() );
160
+			if (doing_action('save_post')) {
161
+				$GLOBALS['wpdb']->update($GLOBALS['wpdb']->posts, $post_data, array('ID' => $form->get_id()));
162
+				clean_post_cache($form->get_id());
163 163
 			} else {
164
-				wp_update_post( array_merge( array( 'ID' => $form->get_id() ), $post_data ) );
164
+				wp_update_post(array_merge(array('ID' => $form->get_id()), $post_data));
165 165
 			}
166
-			$form->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
166
+			$form->read_meta_data(true); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
167 167
 		}
168
-		$this->update_post_meta( $form );
168
+		$this->update_post_meta($form);
169 169
 		$form->apply_changes();
170
-		$this->clear_caches( $form );
170
+		$this->clear_caches($form);
171 171
 	}
172 172
 
173 173
 	/*
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-data.php 2 patches
Indentation   +807 added lines, -807 removed lines patch added patch discarded remove patch
@@ -9,7 +9,7 @@  discard block
 block discarded – undo
9 9
  */
10 10
 
11 11
 if ( ! defined( 'ABSPATH' ) ) {
12
-	exit;
12
+    exit;
13 13
 }
14 14
 
15 15
 /**
@@ -21,814 +21,814 @@  discard block
 block discarded – undo
21 21
  */
22 22
 abstract class GetPaid_Data {
23 23
 
24
-	/**
25
-	 * ID for this object.
26
-	 *
27
-	 * @since 1.0.19
28
-	 * @var int
29
-	 */
30
-	protected $id = 0;
31
-
32
-	/**
33
-	 * Core data for this object. Name value pairs (name + default value).
34
-	 *
35
-	 * @since 1.0.19
36
-	 * @var array
37
-	 */
38
-	protected $data = array();
39
-
40
-	/**
41
-	 * Core data changes for this object.
42
-	 *
43
-	 * @since 1.0.19
44
-	 * @var array
45
-	 */
46
-	protected $changes = array();
47
-
48
-	/**
49
-	 * This is false until the object is read from the DB.
50
-	 *
51
-	 * @since 1.0.19
52
-	 * @var bool
53
-	 */
54
-	protected $object_read = false;
55
-
56
-	/**
57
-	 * This is the name of this object type.
58
-	 *
59
-	 * @since 1.0.19
60
-	 * @var string
61
-	 */
62
-	protected $object_type = 'data';
63
-
64
-	/**
65
-	 * Extra data for this object. Name value pairs (name + default value).
66
-	 * Used as a standard way for sub classes (like item types) to add
67
-	 * additional information to an inherited class.
68
-	 *
69
-	 * @since 1.0.19
70
-	 * @var array
71
-	 */
72
-	protected $extra_data = array();
73
-
74
-	/**
75
-	 * Set to _data on construct so we can track and reset data if needed.
76
-	 *
77
-	 * @since 1.0.19
78
-	 * @var array
79
-	 */
80
-	protected $default_data = array();
81
-
82
-	/**
83
-	 * Contains a reference to the data store for this class.
84
-	 *
85
-	 * @since 1.0.19
86
-	 * @var GetPaid_Data_Store
87
-	 */
88
-	protected $data_store;
89
-
90
-	/**
91
-	 * Stores meta in cache for future reads.
92
-	 * A group must be set to to enable caching.
93
-	 *
94
-	 * @since 1.0.19
95
-	 * @var string
96
-	 */
97
-	protected $cache_group = '';
98
-
99
-	/**
100
-	 * Stores the last error.
101
-	 *
102
-	 * @since 1.0.19
103
-	 * @var string
104
-	 */
105
-	public $last_error = '';
106
-
107
-	/**
108
-	 * Stores additional meta data.
109
-	 *
110
-	 * @since 1.0.19
111
-	 * @var array
112
-	 */
113
-	protected $meta_data = null;
114
-
115
-	/**
116
-	 * Default constructor.
117
-	 *
118
-	 * @param int|object|array $read ID to load from the DB (optional) or already queried data.
119
-	 */
120
-	public function __construct( $read = 0 ) {
121
-		$this->data         = array_merge( $this->data, $this->extra_data );
122
-		$this->default_data = $this->data;
123
-	}
124
-
125
-	/**
126
-	 * Only store the object ID to avoid serializing the data object instance.
127
-	 *
128
-	 * @return array
129
-	 */
130
-	public function __sleep() {
131
-		return array( 'id' );
132
-	}
133
-
134
-	/**
135
-	 * Re-run the constructor with the object ID.
136
-	 *
137
-	 * If the object no longer exists, remove the ID.
138
-	 */
139
-	public function __wakeup() {
140
-		try {
141
-			$this->__construct( absint( $this->id ) );
142
-		} catch ( Exception $e ) {
143
-			$this->set_id( 0 );
144
-			$this->set_object_read( true );
145
-		}
146
-	}
147
-
148
-	/**
149
-	 * When the object is cloned, make sure meta is duplicated correctly.
150
-	 *
151
-	 * @since 1.0.19
152
-	 */
153
-	public function __clone() {
154
-		$this->maybe_read_meta_data();
155
-		if ( ! empty( $this->meta_data ) ) {
156
-			foreach ( $this->meta_data as $array_key => $meta ) {
157
-				$this->meta_data[ $array_key ] = clone $meta;
158
-				if ( ! empty( $meta->id ) ) {
159
-					$this->meta_data[ $array_key ]->id = null;
160
-				}
161
-			}
162
-		}
163
-	}
164
-
165
-	/**
166
-	 * Get the data store.
167
-	 *
168
-	 * @since  1.0.19
169
-	 * @return object
170
-	 */
171
-	public function get_data_store() {
172
-		return $this->data_store;
173
-	}
174
-
175
-	/**
176
-	 * Get the object type.
177
-	 *
178
-	 * @since  1.0.19
179
-	 * @return string
180
-	 */
181
-	public function get_object_type() {
182
-		return $this->object_type;
183
-	}
184
-
185
-	/**
186
-	 * Returns the unique ID for this object.
187
-	 *
188
-	 * @since  1.0.19
189
-	 * @return int
190
-	 */
191
-	public function get_id() {
192
-		return $this->id;
193
-	}
194
-
195
-	/**
196
-	 * Get form status.
197
-	 *
198
-	 * @since 1.0.19
199
-	 * @param  string $context View or edit context.
200
-	 * @return string
201
-	 */
202
-	public function get_status( $context = 'view' ) {
203
-		return $this->get_prop( 'status', $context );
204
-    }
205
-
206
-	/**
207
-	 * Delete an object, set the ID to 0, and return result.
208
-	 *
209
-	 * @since  1.0.19
210
-	 * @param  bool $force_delete Should the data be deleted permanently.
211
-	 * @return bool result
212
-	 */
213
-	public function delete( $force_delete = false ) {
214
-		if ( $this->data_store ) {
215
-			$this->data_store->delete( $this, array( 'force_delete' => $force_delete ) );
216
-			$this->set_id( 0 );
217
-			return true;
218
-		}
219
-		return false;
220
-	}
221
-
222
-	/**
223
-	 * Save should create or update based on object existence.
224
-	 *
225
-	 * @since  1.0.19
226
-	 * @return int
227
-	 */
228
-	public function save() {
229
-		if ( ! $this->data_store ) {
230
-			return $this->get_id();
231
-		}
232
-
233
-		/**
234
-		 * Trigger action before saving to the DB. Allows you to adjust object props before save.
235
-		 *
236
-		 * @param GetPaid_Data          $this The object being saved.
237
-		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
238
-		 */
239
-		do_action( 'getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store );
240
-
241
-		if ( $this->get_id() ) {
242
-			$this->data_store->update( $this );
243
-		} else {
244
-			$this->data_store->create( $this );
245
-		}
246
-
247
-		/**
248
-		 * Trigger action after saving to the DB.
249
-		 *
250
-		 * @param GetPaid_Data          $this The object being saved.
251
-		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
252
-		 */
253
-		do_action( 'getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store );
254
-
255
-		return $this->get_id();
256
-	}
257
-
258
-	/**
259
-	 * Change data to JSON format.
260
-	 *
261
-	 * @since  1.0.19
262
-	 * @return string Data in JSON format.
263
-	 */
264
-	public function __toString() {
265
-		return wp_json_encode( $this->get_data() );
266
-	}
267
-
268
-	/**
269
-	 * Returns all data for this object.
270
-	 *
271
-	 * @since  1.0.19
272
-	 * @return array
273
-	 */
274
-	public function get_data() {
275
-		return array_merge( array( 'id' => $this->get_id() ), $this->data, array( 'meta_data' => $this->get_meta_data() ) );
276
-	}
277
-
278
-	/**
279
-	 * Returns array of expected data keys for this object.
280
-	 *
281
-	 * @since   1.0.19
282
-	 * @return array
283
-	 */
284
-	public function get_data_keys() {
285
-		return array_keys( $this->data );
286
-	}
287
-
288
-	/**
289
-	 * Returns all "extra" data keys for an object (for sub objects like item types).
290
-	 *
291
-	 * @since  1.0.19
292
-	 * @return array
293
-	 */
294
-	public function get_extra_data_keys() {
295
-		return array_keys( $this->extra_data );
296
-	}
297
-
298
-	/**
299
-	 * Filter null meta values from array.
300
-	 *
301
-	 * @since  1.0.19
302
-	 * @param mixed $meta Meta value to check.
303
-	 * @return bool
304
-	 */
305
-	protected function filter_null_meta( $meta ) {
306
-		return ! is_null( $meta->value );
307
-	}
308
-
309
-	/**
310
-	 * Get All Meta Data.
311
-	 *
312
-	 * @since 1.0.19
313
-	 * @return array of objects.
314
-	 */
315
-	public function get_meta_data() {
316
-		$this->maybe_read_meta_data();
317
-		return array_values( array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ) );
318
-	}
319
-
320
-	/**
321
-	 * Check if the key is an internal one.
322
-	 *
323
-	 * @since  1.0.19
324
-	 * @param  string $key Key to check.
325
-	 * @return bool   true if it's an internal key, false otherwise
326
-	 */
327
-	protected function is_internal_meta_key( $key ) {
328
-		$internal_meta_key = ! empty( $key ) && $this->data_store && in_array( $key, $this->data_store->get_internal_meta_keys(), true );
329
-
330
-		if ( ! $internal_meta_key ) {
331
-			return false;
332
-		}
333
-
334
-		$has_setter_or_getter = is_callable( array( $this, 'set_' . $key ) ) || is_callable( array( $this, 'get_' . $key ) );
335
-
336
-		if ( ! $has_setter_or_getter ) {
337
-			return false;
338
-		}
339
-
340
-		/* translators: %s: $key Key to check */
341
-		getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'getpaid' ), $key ), '1.0.19' );
342
-
343
-		return true;
344
-	}
345
-
346
-	/**
347
-	 * Get Meta Data by Key.
348
-	 *
349
-	 * @since  1.0.19
350
-	 * @param  string $key Meta Key.
351
-	 * @param  bool   $single return first found meta with key, or all with $key.
352
-	 * @param  string $context What the value is for. Valid values are view and edit.
353
-	 * @return mixed
354
-	 */
355
-	public function get_meta( $key = '', $single = true, $context = 'view' ) {
356
-
357
-		// Check if this is an internal meta key.
358
-		if ( $this->is_internal_meta_key( $key ) ) {
359
-			$function = 'get_' . $key;
360
-
361
-			if ( is_callable( array( $this, $function ) ) ) {
362
-				return $this->{$function}();
363
-			}
364
-		}
365
-
366
-		// Read the meta data if not yet read.
367
-		$this->maybe_read_meta_data();
368
-		$meta_data  = $this->get_meta_data();
369
-		$array_keys = array_keys( wp_list_pluck( $meta_data, 'key' ), $key, true );
370
-		$value      = $single ? '' : array();
371
-
372
-		if ( ! empty( $array_keys ) ) {
373
-			// We don't use the $this->meta_data property directly here because we don't want meta with a null value (i.e. meta which has been deleted via $this->delete_meta_data()).
374
-			if ( $single ) {
375
-				$value = $meta_data[ current( $array_keys ) ]->value;
376
-			} else {
377
-				$value = array_intersect_key( $meta_data, array_flip( $array_keys ) );
378
-			}
379
-		}
380
-
381
-		if ( 'view' === $context ) {
382
-			$value = apply_filters( $this->get_hook_prefix() . $key, $value, $this );
383
-		}
384
-
385
-		return $value;
386
-	}
387
-
388
-	/**
389
-	 * See if meta data exists, since get_meta always returns a '' or array().
390
-	 *
391
-	 * @since  1.0.19
392
-	 * @param  string $key Meta Key.
393
-	 * @return boolean
394
-	 */
395
-	public function meta_exists( $key = '' ) {
396
-		$this->maybe_read_meta_data();
397
-		$array_keys = wp_list_pluck( $this->get_meta_data(), 'key' );
398
-		return in_array( $key, $array_keys, true );
399
-	}
400
-
401
-	/**
402
-	 * Set all meta data from array.
403
-	 *
404
-	 * @since 1.0.19
405
-	 * @param array $data Key/Value pairs.
406
-	 */
407
-	public function set_meta_data( $data ) {
408
-		if ( ! empty( $data ) && is_array( $data ) ) {
409
-			$this->maybe_read_meta_data();
410
-			foreach ( $data as $meta ) {
411
-				$meta = (array) $meta;
412
-				if ( isset( $meta['key'], $meta['value'], $meta['id'] ) ) {
413
-					$this->meta_data[] = new GetPaid_Meta_Data(
414
-						array(
415
-							'id'    => $meta['id'],
416
-							'key'   => $meta['key'],
417
-							'value' => $meta['value'],
418
-						)
419
-					);
420
-				}
421
-			}
422
-		}
423
-	}
424
-
425
-	/**
426
-	 * Add meta data.
427
-	 *
428
-	 * @since 1.0.19
429
-	 *
430
-	 * @param string       $key Meta key.
431
-	 * @param string|array $value Meta value.
432
-	 * @param bool         $unique Should this be a unique key?.
433
-	 */
434
-	public function add_meta_data( $key, $value, $unique = false ) {
435
-		if ( $this->is_internal_meta_key( $key ) ) {
436
-			$function = 'set_' . $key;
437
-
438
-			if ( is_callable( array( $this, $function ) ) ) {
439
-				return $this->{$function}( $value );
440
-			}
441
-		}
442
-
443
-		$this->maybe_read_meta_data();
444
-		if ( $unique ) {
445
-			$this->delete_meta_data( $key );
446
-		}
447
-		$this->meta_data[] = new GetPaid_Meta_Data(
448
-			array(
449
-				'key'   => $key,
450
-				'value' => $value,
451
-			)
452
-		);
453
-	}
454
-
455
-	/**
456
-	 * Update meta data by key or ID, if provided.
457
-	 *
458
-	 * @since  1.0.19
459
-	 *
460
-	 * @param  string       $key Meta key.
461
-	 * @param  string|array $value Meta value.
462
-	 * @param  int          $meta_id Meta ID.
463
-	 */
464
-	public function update_meta_data( $key, $value, $meta_id = 0 ) {
465
-		if ( $this->is_internal_meta_key( $key ) ) {
466
-			$function = 'set_' . $key;
467
-
468
-			if ( is_callable( array( $this, $function ) ) ) {
469
-				return $this->{$function}( $value );
470
-			}
471
-		}
472
-
473
-		$this->maybe_read_meta_data();
474
-
475
-		$array_key = false;
476
-
477
-		if ( $meta_id ) {
478
-			$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
479
-			$array_key  = $array_keys ? current( $array_keys ) : false;
480
-		} else {
481
-			// Find matches by key.
482
-			$matches = array();
483
-			foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
484
-				if ( $meta->key === $key ) {
485
-					$matches[] = $meta_data_array_key;
486
-				}
487
-			}
488
-
489
-			if ( ! empty( $matches ) ) {
490
-				// Set matches to null so only one key gets the new value.
491
-				foreach ( $matches as $meta_data_array_key ) {
492
-					$this->meta_data[ $meta_data_array_key ]->value = null;
493
-				}
494
-				$array_key = current( $matches );
495
-			}
496
-		}
497
-
498
-		if ( false !== $array_key ) {
499
-			$meta        = $this->meta_data[ $array_key ];
500
-			$meta->key   = $key;
501
-			$meta->value = $value;
502
-		} else {
503
-			$this->add_meta_data( $key, $value, true );
504
-		}
505
-	}
506
-
507
-	/**
508
-	 * Delete meta data.
509
-	 *
510
-	 * @since 1.0.19
511
-	 * @param string $key Meta key.
512
-	 */
513
-	public function delete_meta_data( $key ) {
514
-		$this->maybe_read_meta_data();
515
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'key' ), $key, true );
516
-
517
-		if ( $array_keys ) {
518
-			foreach ( $array_keys as $array_key ) {
519
-				$this->meta_data[ $array_key ]->value = null;
520
-			}
521
-		}
522
-	}
523
-
524
-	/**
525
-	 * Delete meta data.
526
-	 *
527
-	 * @since 1.0.19
528
-	 * @param int $mid Meta ID.
529
-	 */
530
-	public function delete_meta_data_by_mid( $mid ) {
531
-		$this->maybe_read_meta_data();
532
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), (int) $mid, true );
533
-
534
-		if ( $array_keys ) {
535
-			foreach ( $array_keys as $array_key ) {
536
-				$this->meta_data[ $array_key ]->value = null;
537
-			}
538
-		}
539
-	}
540
-
541
-	/**
542
-	 * Read meta data if null.
543
-	 *
544
-	 * @since 1.0.19
545
-	 */
546
-	protected function maybe_read_meta_data() {
547
-		if ( is_null( $this->meta_data ) ) {
548
-			$this->read_meta_data();
549
-		}
550
-	}
551
-
552
-	/**
553
-	 * Read Meta Data from the database. Ignore any internal properties.
554
-	 * Uses it's own caches because get_metadata does not provide meta_ids.
555
-	 *
556
-	 * @since 1.0.19
557
-	 * @param bool $force_read True to force a new DB read (and update cache).
558
-	 */
559
-	public function read_meta_data( $force_read = false ) {
560
-		$this->meta_data = array();
561
-		$cache_loaded    = false;
562
-
563
-		if ( ! $this->get_id() ) {
564
-			return;
565
-		}
566
-
567
-		if ( ! $this->data_store ) {
568
-			return;
569
-		}
570
-
571
-		if ( ! empty( $this->cache_group ) ) {
572
-			$cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
573
-		}
574
-
575
-		if ( ! $force_read ) {
576
-			if ( ! empty( $this->cache_group ) ) {
577
-				$cached_meta  = wp_cache_get( $cache_key, $this->cache_group );
578
-				$cache_loaded = ! empty( $cached_meta );
579
-			}
580
-		}
581
-
582
-		$raw_meta_data = $cache_loaded ? $cached_meta : $this->data_store->read_meta( $this );
583
-		if ( $raw_meta_data ) {
584
-			foreach ( $raw_meta_data as $meta ) {
585
-				$this->meta_data[] = new GetPaid_Meta_Data(
586
-					array(
587
-						'id'    => (int) $meta->meta_id,
588
-						'key'   => $meta->meta_key,
589
-						'value' => maybe_unserialize( $meta->meta_value ),
590
-					)
591
-				);
592
-			}
593
-
594
-			if ( ! $cache_loaded && ! empty( $this->cache_group ) ) {
595
-				wp_cache_set( $cache_key, $raw_meta_data, $this->cache_group );
596
-			}
597
-		}
598
-	}
599
-
600
-	/**
601
-	 * Update Meta Data in the database.
602
-	 *
603
-	 * @since 1.0.19
604
-	 */
605
-	public function save_meta_data() {
606
-		if ( ! $this->data_store || is_null( $this->meta_data ) ) {
607
-			return;
608
-		}
609
-		foreach ( $this->meta_data as $array_key => $meta ) {
610
-			if ( is_null( $meta->value ) ) {
611
-				if ( ! empty( $meta->id ) ) {
612
-					$this->data_store->delete_meta( $this, $meta );
613
-					unset( $this->meta_data[ $array_key ] );
614
-				}
615
-			} elseif ( empty( $meta->id ) ) {
616
-				$meta->id = $this->data_store->add_meta( $this, $meta );
617
-				$meta->apply_changes();
618
-			} else {
619
-				if ( $meta->get_changes() ) {
620
-					$this->data_store->update_meta( $this, $meta );
621
-					$meta->apply_changes();
622
-				}
623
-			}
624
-		}
625
-		if ( ! empty( $this->cache_group ) ) {
626
-			$cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
627
-			wp_cache_delete( $cache_key, $this->cache_group );
628
-		}
629
-	}
630
-
631
-	/**
632
-	 * Set ID.
633
-	 *
634
-	 * @since 1.0.19
635
-	 * @param int $id ID.
636
-	 */
637
-	public function set_id( $id ) {
638
-		$this->id = absint( $id );
639
-	}
640
-
641
-	/**
642
-	 * Sets item status.
643
-	 *
644
-	 * @since 1.0.19
645
-	 * @param  string $status New status.
646
-	 * @return array details of change.
647
-	 */
648
-	public function set_status( $status ) {
24
+    /**
25
+     * ID for this object.
26
+     *
27
+     * @since 1.0.19
28
+     * @var int
29
+     */
30
+    protected $id = 0;
31
+
32
+    /**
33
+     * Core data for this object. Name value pairs (name + default value).
34
+     *
35
+     * @since 1.0.19
36
+     * @var array
37
+     */
38
+    protected $data = array();
39
+
40
+    /**
41
+     * Core data changes for this object.
42
+     *
43
+     * @since 1.0.19
44
+     * @var array
45
+     */
46
+    protected $changes = array();
47
+
48
+    /**
49
+     * This is false until the object is read from the DB.
50
+     *
51
+     * @since 1.0.19
52
+     * @var bool
53
+     */
54
+    protected $object_read = false;
55
+
56
+    /**
57
+     * This is the name of this object type.
58
+     *
59
+     * @since 1.0.19
60
+     * @var string
61
+     */
62
+    protected $object_type = 'data';
63
+
64
+    /**
65
+     * Extra data for this object. Name value pairs (name + default value).
66
+     * Used as a standard way for sub classes (like item types) to add
67
+     * additional information to an inherited class.
68
+     *
69
+     * @since 1.0.19
70
+     * @var array
71
+     */
72
+    protected $extra_data = array();
73
+
74
+    /**
75
+     * Set to _data on construct so we can track and reset data if needed.
76
+     *
77
+     * @since 1.0.19
78
+     * @var array
79
+     */
80
+    protected $default_data = array();
81
+
82
+    /**
83
+     * Contains a reference to the data store for this class.
84
+     *
85
+     * @since 1.0.19
86
+     * @var GetPaid_Data_Store
87
+     */
88
+    protected $data_store;
89
+
90
+    /**
91
+     * Stores meta in cache for future reads.
92
+     * A group must be set to to enable caching.
93
+     *
94
+     * @since 1.0.19
95
+     * @var string
96
+     */
97
+    protected $cache_group = '';
98
+
99
+    /**
100
+     * Stores the last error.
101
+     *
102
+     * @since 1.0.19
103
+     * @var string
104
+     */
105
+    public $last_error = '';
106
+
107
+    /**
108
+     * Stores additional meta data.
109
+     *
110
+     * @since 1.0.19
111
+     * @var array
112
+     */
113
+    protected $meta_data = null;
114
+
115
+    /**
116
+     * Default constructor.
117
+     *
118
+     * @param int|object|array $read ID to load from the DB (optional) or already queried data.
119
+     */
120
+    public function __construct( $read = 0 ) {
121
+        $this->data         = array_merge( $this->data, $this->extra_data );
122
+        $this->default_data = $this->data;
123
+    }
124
+
125
+    /**
126
+     * Only store the object ID to avoid serializing the data object instance.
127
+     *
128
+     * @return array
129
+     */
130
+    public function __sleep() {
131
+        return array( 'id' );
132
+    }
133
+
134
+    /**
135
+     * Re-run the constructor with the object ID.
136
+     *
137
+     * If the object no longer exists, remove the ID.
138
+     */
139
+    public function __wakeup() {
140
+        try {
141
+            $this->__construct( absint( $this->id ) );
142
+        } catch ( Exception $e ) {
143
+            $this->set_id( 0 );
144
+            $this->set_object_read( true );
145
+        }
146
+    }
147
+
148
+    /**
149
+     * When the object is cloned, make sure meta is duplicated correctly.
150
+     *
151
+     * @since 1.0.19
152
+     */
153
+    public function __clone() {
154
+        $this->maybe_read_meta_data();
155
+        if ( ! empty( $this->meta_data ) ) {
156
+            foreach ( $this->meta_data as $array_key => $meta ) {
157
+                $this->meta_data[ $array_key ] = clone $meta;
158
+                if ( ! empty( $meta->id ) ) {
159
+                    $this->meta_data[ $array_key ]->id = null;
160
+                }
161
+            }
162
+        }
163
+    }
164
+
165
+    /**
166
+     * Get the data store.
167
+     *
168
+     * @since  1.0.19
169
+     * @return object
170
+     */
171
+    public function get_data_store() {
172
+        return $this->data_store;
173
+    }
174
+
175
+    /**
176
+     * Get the object type.
177
+     *
178
+     * @since  1.0.19
179
+     * @return string
180
+     */
181
+    public function get_object_type() {
182
+        return $this->object_type;
183
+    }
184
+
185
+    /**
186
+     * Returns the unique ID for this object.
187
+     *
188
+     * @since  1.0.19
189
+     * @return int
190
+     */
191
+    public function get_id() {
192
+        return $this->id;
193
+    }
194
+
195
+    /**
196
+     * Get form status.
197
+     *
198
+     * @since 1.0.19
199
+     * @param  string $context View or edit context.
200
+     * @return string
201
+     */
202
+    public function get_status( $context = 'view' ) {
203
+        return $this->get_prop( 'status', $context );
204
+    }
205
+
206
+    /**
207
+     * Delete an object, set the ID to 0, and return result.
208
+     *
209
+     * @since  1.0.19
210
+     * @param  bool $force_delete Should the data be deleted permanently.
211
+     * @return bool result
212
+     */
213
+    public function delete( $force_delete = false ) {
214
+        if ( $this->data_store ) {
215
+            $this->data_store->delete( $this, array( 'force_delete' => $force_delete ) );
216
+            $this->set_id( 0 );
217
+            return true;
218
+        }
219
+        return false;
220
+    }
221
+
222
+    /**
223
+     * Save should create or update based on object existence.
224
+     *
225
+     * @since  1.0.19
226
+     * @return int
227
+     */
228
+    public function save() {
229
+        if ( ! $this->data_store ) {
230
+            return $this->get_id();
231
+        }
232
+
233
+        /**
234
+         * Trigger action before saving to the DB. Allows you to adjust object props before save.
235
+         *
236
+         * @param GetPaid_Data          $this The object being saved.
237
+         * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
238
+         */
239
+        do_action( 'getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store );
240
+
241
+        if ( $this->get_id() ) {
242
+            $this->data_store->update( $this );
243
+        } else {
244
+            $this->data_store->create( $this );
245
+        }
246
+
247
+        /**
248
+         * Trigger action after saving to the DB.
249
+         *
250
+         * @param GetPaid_Data          $this The object being saved.
251
+         * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
252
+         */
253
+        do_action( 'getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store );
254
+
255
+        return $this->get_id();
256
+    }
257
+
258
+    /**
259
+     * Change data to JSON format.
260
+     *
261
+     * @since  1.0.19
262
+     * @return string Data in JSON format.
263
+     */
264
+    public function __toString() {
265
+        return wp_json_encode( $this->get_data() );
266
+    }
267
+
268
+    /**
269
+     * Returns all data for this object.
270
+     *
271
+     * @since  1.0.19
272
+     * @return array
273
+     */
274
+    public function get_data() {
275
+        return array_merge( array( 'id' => $this->get_id() ), $this->data, array( 'meta_data' => $this->get_meta_data() ) );
276
+    }
277
+
278
+    /**
279
+     * Returns array of expected data keys for this object.
280
+     *
281
+     * @since   1.0.19
282
+     * @return array
283
+     */
284
+    public function get_data_keys() {
285
+        return array_keys( $this->data );
286
+    }
287
+
288
+    /**
289
+     * Returns all "extra" data keys for an object (for sub objects like item types).
290
+     *
291
+     * @since  1.0.19
292
+     * @return array
293
+     */
294
+    public function get_extra_data_keys() {
295
+        return array_keys( $this->extra_data );
296
+    }
297
+
298
+    /**
299
+     * Filter null meta values from array.
300
+     *
301
+     * @since  1.0.19
302
+     * @param mixed $meta Meta value to check.
303
+     * @return bool
304
+     */
305
+    protected function filter_null_meta( $meta ) {
306
+        return ! is_null( $meta->value );
307
+    }
308
+
309
+    /**
310
+     * Get All Meta Data.
311
+     *
312
+     * @since 1.0.19
313
+     * @return array of objects.
314
+     */
315
+    public function get_meta_data() {
316
+        $this->maybe_read_meta_data();
317
+        return array_values( array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ) );
318
+    }
319
+
320
+    /**
321
+     * Check if the key is an internal one.
322
+     *
323
+     * @since  1.0.19
324
+     * @param  string $key Key to check.
325
+     * @return bool   true if it's an internal key, false otherwise
326
+     */
327
+    protected function is_internal_meta_key( $key ) {
328
+        $internal_meta_key = ! empty( $key ) && $this->data_store && in_array( $key, $this->data_store->get_internal_meta_keys(), true );
329
+
330
+        if ( ! $internal_meta_key ) {
331
+            return false;
332
+        }
333
+
334
+        $has_setter_or_getter = is_callable( array( $this, 'set_' . $key ) ) || is_callable( array( $this, 'get_' . $key ) );
335
+
336
+        if ( ! $has_setter_or_getter ) {
337
+            return false;
338
+        }
339
+
340
+        /* translators: %s: $key Key to check */
341
+        getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'getpaid' ), $key ), '1.0.19' );
342
+
343
+        return true;
344
+    }
345
+
346
+    /**
347
+     * Get Meta Data by Key.
348
+     *
349
+     * @since  1.0.19
350
+     * @param  string $key Meta Key.
351
+     * @param  bool   $single return first found meta with key, or all with $key.
352
+     * @param  string $context What the value is for. Valid values are view and edit.
353
+     * @return mixed
354
+     */
355
+    public function get_meta( $key = '', $single = true, $context = 'view' ) {
356
+
357
+        // Check if this is an internal meta key.
358
+        if ( $this->is_internal_meta_key( $key ) ) {
359
+            $function = 'get_' . $key;
360
+
361
+            if ( is_callable( array( $this, $function ) ) ) {
362
+                return $this->{$function}();
363
+            }
364
+        }
365
+
366
+        // Read the meta data if not yet read.
367
+        $this->maybe_read_meta_data();
368
+        $meta_data  = $this->get_meta_data();
369
+        $array_keys = array_keys( wp_list_pluck( $meta_data, 'key' ), $key, true );
370
+        $value      = $single ? '' : array();
371
+
372
+        if ( ! empty( $array_keys ) ) {
373
+            // We don't use the $this->meta_data property directly here because we don't want meta with a null value (i.e. meta which has been deleted via $this->delete_meta_data()).
374
+            if ( $single ) {
375
+                $value = $meta_data[ current( $array_keys ) ]->value;
376
+            } else {
377
+                $value = array_intersect_key( $meta_data, array_flip( $array_keys ) );
378
+            }
379
+        }
380
+
381
+        if ( 'view' === $context ) {
382
+            $value = apply_filters( $this->get_hook_prefix() . $key, $value, $this );
383
+        }
384
+
385
+        return $value;
386
+    }
387
+
388
+    /**
389
+     * See if meta data exists, since get_meta always returns a '' or array().
390
+     *
391
+     * @since  1.0.19
392
+     * @param  string $key Meta Key.
393
+     * @return boolean
394
+     */
395
+    public function meta_exists( $key = '' ) {
396
+        $this->maybe_read_meta_data();
397
+        $array_keys = wp_list_pluck( $this->get_meta_data(), 'key' );
398
+        return in_array( $key, $array_keys, true );
399
+    }
400
+
401
+    /**
402
+     * Set all meta data from array.
403
+     *
404
+     * @since 1.0.19
405
+     * @param array $data Key/Value pairs.
406
+     */
407
+    public function set_meta_data( $data ) {
408
+        if ( ! empty( $data ) && is_array( $data ) ) {
409
+            $this->maybe_read_meta_data();
410
+            foreach ( $data as $meta ) {
411
+                $meta = (array) $meta;
412
+                if ( isset( $meta['key'], $meta['value'], $meta['id'] ) ) {
413
+                    $this->meta_data[] = new GetPaid_Meta_Data(
414
+                        array(
415
+                            'id'    => $meta['id'],
416
+                            'key'   => $meta['key'],
417
+                            'value' => $meta['value'],
418
+                        )
419
+                    );
420
+                }
421
+            }
422
+        }
423
+    }
424
+
425
+    /**
426
+     * Add meta data.
427
+     *
428
+     * @since 1.0.19
429
+     *
430
+     * @param string       $key Meta key.
431
+     * @param string|array $value Meta value.
432
+     * @param bool         $unique Should this be a unique key?.
433
+     */
434
+    public function add_meta_data( $key, $value, $unique = false ) {
435
+        if ( $this->is_internal_meta_key( $key ) ) {
436
+            $function = 'set_' . $key;
437
+
438
+            if ( is_callable( array( $this, $function ) ) ) {
439
+                return $this->{$function}( $value );
440
+            }
441
+        }
442
+
443
+        $this->maybe_read_meta_data();
444
+        if ( $unique ) {
445
+            $this->delete_meta_data( $key );
446
+        }
447
+        $this->meta_data[] = new GetPaid_Meta_Data(
448
+            array(
449
+                'key'   => $key,
450
+                'value' => $value,
451
+            )
452
+        );
453
+    }
454
+
455
+    /**
456
+     * Update meta data by key or ID, if provided.
457
+     *
458
+     * @since  1.0.19
459
+     *
460
+     * @param  string       $key Meta key.
461
+     * @param  string|array $value Meta value.
462
+     * @param  int          $meta_id Meta ID.
463
+     */
464
+    public function update_meta_data( $key, $value, $meta_id = 0 ) {
465
+        if ( $this->is_internal_meta_key( $key ) ) {
466
+            $function = 'set_' . $key;
467
+
468
+            if ( is_callable( array( $this, $function ) ) ) {
469
+                return $this->{$function}( $value );
470
+            }
471
+        }
472
+
473
+        $this->maybe_read_meta_data();
474
+
475
+        $array_key = false;
476
+
477
+        if ( $meta_id ) {
478
+            $array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
479
+            $array_key  = $array_keys ? current( $array_keys ) : false;
480
+        } else {
481
+            // Find matches by key.
482
+            $matches = array();
483
+            foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
484
+                if ( $meta->key === $key ) {
485
+                    $matches[] = $meta_data_array_key;
486
+                }
487
+            }
488
+
489
+            if ( ! empty( $matches ) ) {
490
+                // Set matches to null so only one key gets the new value.
491
+                foreach ( $matches as $meta_data_array_key ) {
492
+                    $this->meta_data[ $meta_data_array_key ]->value = null;
493
+                }
494
+                $array_key = current( $matches );
495
+            }
496
+        }
497
+
498
+        if ( false !== $array_key ) {
499
+            $meta        = $this->meta_data[ $array_key ];
500
+            $meta->key   = $key;
501
+            $meta->value = $value;
502
+        } else {
503
+            $this->add_meta_data( $key, $value, true );
504
+        }
505
+    }
506
+
507
+    /**
508
+     * Delete meta data.
509
+     *
510
+     * @since 1.0.19
511
+     * @param string $key Meta key.
512
+     */
513
+    public function delete_meta_data( $key ) {
514
+        $this->maybe_read_meta_data();
515
+        $array_keys = array_keys( wp_list_pluck( $this->meta_data, 'key' ), $key, true );
516
+
517
+        if ( $array_keys ) {
518
+            foreach ( $array_keys as $array_key ) {
519
+                $this->meta_data[ $array_key ]->value = null;
520
+            }
521
+        }
522
+    }
523
+
524
+    /**
525
+     * Delete meta data.
526
+     *
527
+     * @since 1.0.19
528
+     * @param int $mid Meta ID.
529
+     */
530
+    public function delete_meta_data_by_mid( $mid ) {
531
+        $this->maybe_read_meta_data();
532
+        $array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), (int) $mid, true );
533
+
534
+        if ( $array_keys ) {
535
+            foreach ( $array_keys as $array_key ) {
536
+                $this->meta_data[ $array_key ]->value = null;
537
+            }
538
+        }
539
+    }
540
+
541
+    /**
542
+     * Read meta data if null.
543
+     *
544
+     * @since 1.0.19
545
+     */
546
+    protected function maybe_read_meta_data() {
547
+        if ( is_null( $this->meta_data ) ) {
548
+            $this->read_meta_data();
549
+        }
550
+    }
551
+
552
+    /**
553
+     * Read Meta Data from the database. Ignore any internal properties.
554
+     * Uses it's own caches because get_metadata does not provide meta_ids.
555
+     *
556
+     * @since 1.0.19
557
+     * @param bool $force_read True to force a new DB read (and update cache).
558
+     */
559
+    public function read_meta_data( $force_read = false ) {
560
+        $this->meta_data = array();
561
+        $cache_loaded    = false;
562
+
563
+        if ( ! $this->get_id() ) {
564
+            return;
565
+        }
566
+
567
+        if ( ! $this->data_store ) {
568
+            return;
569
+        }
570
+
571
+        if ( ! empty( $this->cache_group ) ) {
572
+            $cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
573
+        }
574
+
575
+        if ( ! $force_read ) {
576
+            if ( ! empty( $this->cache_group ) ) {
577
+                $cached_meta  = wp_cache_get( $cache_key, $this->cache_group );
578
+                $cache_loaded = ! empty( $cached_meta );
579
+            }
580
+        }
581
+
582
+        $raw_meta_data = $cache_loaded ? $cached_meta : $this->data_store->read_meta( $this );
583
+        if ( $raw_meta_data ) {
584
+            foreach ( $raw_meta_data as $meta ) {
585
+                $this->meta_data[] = new GetPaid_Meta_Data(
586
+                    array(
587
+                        'id'    => (int) $meta->meta_id,
588
+                        'key'   => $meta->meta_key,
589
+                        'value' => maybe_unserialize( $meta->meta_value ),
590
+                    )
591
+                );
592
+            }
593
+
594
+            if ( ! $cache_loaded && ! empty( $this->cache_group ) ) {
595
+                wp_cache_set( $cache_key, $raw_meta_data, $this->cache_group );
596
+            }
597
+        }
598
+    }
599
+
600
+    /**
601
+     * Update Meta Data in the database.
602
+     *
603
+     * @since 1.0.19
604
+     */
605
+    public function save_meta_data() {
606
+        if ( ! $this->data_store || is_null( $this->meta_data ) ) {
607
+            return;
608
+        }
609
+        foreach ( $this->meta_data as $array_key => $meta ) {
610
+            if ( is_null( $meta->value ) ) {
611
+                if ( ! empty( $meta->id ) ) {
612
+                    $this->data_store->delete_meta( $this, $meta );
613
+                    unset( $this->meta_data[ $array_key ] );
614
+                }
615
+            } elseif ( empty( $meta->id ) ) {
616
+                $meta->id = $this->data_store->add_meta( $this, $meta );
617
+                $meta->apply_changes();
618
+            } else {
619
+                if ( $meta->get_changes() ) {
620
+                    $this->data_store->update_meta( $this, $meta );
621
+                    $meta->apply_changes();
622
+                }
623
+            }
624
+        }
625
+        if ( ! empty( $this->cache_group ) ) {
626
+            $cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
627
+            wp_cache_delete( $cache_key, $this->cache_group );
628
+        }
629
+    }
630
+
631
+    /**
632
+     * Set ID.
633
+     *
634
+     * @since 1.0.19
635
+     * @param int $id ID.
636
+     */
637
+    public function set_id( $id ) {
638
+        $this->id = absint( $id );
639
+    }
640
+
641
+    /**
642
+     * Sets item status.
643
+     *
644
+     * @since 1.0.19
645
+     * @param  string $status New status.
646
+     * @return array details of change.
647
+     */
648
+    public function set_status( $status ) {
649 649
         $old_status = $this->get_status();
650 650
 
651 651
         $this->set_prop( 'status', $status );
652 652
 
653
-		return array(
654
-			'from' => $old_status,
655
-			'to'   => $status,
656
-		);
657
-    }
658
-
659
-	/**
660
-	 * Set all props to default values.
661
-	 *
662
-	 * @since 1.0.19
663
-	 */
664
-	public function set_defaults() {
665
-		$this->data    = $this->default_data;
666
-		$this->changes = array();
667
-		$this->set_object_read( false );
668
-	}
669
-
670
-	/**
671
-	 * Set object read property.
672
-	 *
673
-	 * @since 1.0.19
674
-	 * @param boolean $read Should read?.
675
-	 */
676
-	public function set_object_read( $read = true ) {
677
-		$this->object_read = (bool) $read;
678
-	}
679
-
680
-	/**
681
-	 * Get object read property.
682
-	 *
683
-	 * @since  1.0.19
684
-	 * @return boolean
685
-	 */
686
-	public function get_object_read() {
687
-		return (bool) $this->object_read;
688
-	}
689
-
690
-	/**
691
-	 * Set a collection of props in one go, collect any errors, and return the result.
692
-	 * Only sets using public methods.
693
-	 *
694
-	 * @since  1.0.19
695
-	 *
696
-	 * @param array  $props Key value pairs to set. Key is the prop and should map to a setter function name.
697
-	 * @param string $context In what context to run this.
698
-	 *
699
-	 * @return bool|WP_Error
700
-	 */
701
-	public function set_props( $props, $context = 'set' ) {
702
-		$errors = false;
703
-
704
-		foreach ( $props as $prop => $value ) {
705
-			try {
706
-				/**
707
-				 * Checks if the prop being set is allowed, and the value is not null.
708
-				 */
709
-				if ( is_null( $value ) || in_array( $prop, array( 'prop', 'date_prop', 'meta_data' ), true ) ) {
710
-					continue;
711
-				}
712
-				$setter = "set_$prop";
713
-
714
-				if ( is_callable( array( $this, $setter ) ) ) {
715
-					$this->{$setter}( $value );
716
-				}
717
-			} catch ( Exception $e ) {
718
-				if ( ! $errors ) {
719
-					$errors = new WP_Error();
720
-				}
721
-				$errors->add( $e->getCode(), $e->getMessage() );
722
-				$this->last_error = $e->getMessage();
723
-			}
724
-		}
725
-
726
-		return $errors && count( $errors->get_error_codes() ) ? $errors : true;
727
-	}
728
-
729
-	/**
730
-	 * Sets a prop for a setter method.
731
-	 *
732
-	 * This stores changes in a special array so we can track what needs saving
733
-	 * the the DB later.
734
-	 *
735
-	 * @since 1.0.19
736
-	 * @param string $prop Name of prop to set.
737
-	 * @param mixed  $value Value of the prop.
738
-	 */
739
-	protected function set_prop( $prop, $value ) {
740
-		if ( array_key_exists( $prop, $this->data ) ) {
741
-			if ( true === $this->object_read ) {
742
-				if ( $value !== $this->data[ $prop ] || array_key_exists( $prop, $this->changes ) ) {
743
-					$this->changes[ $prop ] = $value;
744
-				}
745
-			} else {
746
-				$this->data[ $prop ] = $value;
747
-			}
748
-		}
749
-	}
750
-
751
-	/**
752
-	 * Return data changes only.
753
-	 *
754
-	 * @since 1.0.19
755
-	 * @return array
756
-	 */
757
-	public function get_changes() {
758
-		return $this->changes;
759
-	}
760
-
761
-	/**
762
-	 * Merge changes with data and clear.
763
-	 *
764
-	 * @since 1.0.19
765
-	 */
766
-	public function apply_changes() {
767
-		$this->data    = array_replace_recursive( $this->data, $this->changes );
768
-		$this->changes = array();
769
-	}
770
-
771
-	/**
772
-	 * Prefix for action and filter hooks on data.
773
-	 *
774
-	 * @since  1.0.19
775
-	 * @return string
776
-	 */
777
-	protected function get_hook_prefix() {
778
-		return 'wpinv_get_' . $this->object_type . '_';
779
-	}
780
-
781
-	/**
782
-	 * Gets a prop for a getter method.
783
-	 *
784
-	 * Gets the value from either current pending changes, or the data itself.
785
-	 * Context controls what happens to the value before it's returned.
786
-	 *
787
-	 * @since  1.0.19
788
-	 * @param  string $prop Name of prop to get.
789
-	 * @param  string $context What the value is for. Valid values are view and edit.
790
-	 * @return mixed
791
-	 */
792
-	protected function get_prop( $prop, $context = 'view' ) {
793
-		$value = null;
794
-
795
-		if ( array_key_exists( $prop, $this->data ) ) {
796
-			$value = array_key_exists( $prop, $this->changes ) ? $this->changes[ $prop ] : $this->data[ $prop ];
797
-
798
-			if ( 'view' === $context ) {
799
-				$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
800
-			}
801
-		}
802
-
803
-		return $value;
804
-	}
805
-
806
-	/**
807
-	 * Sets a date prop whilst handling formatting and datetime objects.
808
-	 *
809
-	 * @since 1.0.19
810
-	 * @param string         $prop Name of prop to set.
811
-	 * @param string|integer $value Value of the prop.
812
-	 */
813
-	protected function set_date_prop( $prop, $value ) {
814
-
815
-		if ( empty( $value ) ) {
816
-			$this->set_prop( $prop, null );
817
-			return;
818
-		}
819
-		$this->set_prop( $prop, $value );
820
-
821
-	}
822
-
823
-	/**
824
-	 * When invalid data is found, throw an exception unless reading from the DB.
825
-	 *
826
-	 * @throws Exception Data Exception.
827
-	 * @since 1.0.19
828
-	 * @param string $code             Error code.
829
-	 * @param string $message          Error message.
830
-	 */
831
-	protected function error( $code, $message ) {
832
-		throw new Exception( $message, $code );
833
-	}
653
+        return array(
654
+            'from' => $old_status,
655
+            'to'   => $status,
656
+        );
657
+    }
658
+
659
+    /**
660
+     * Set all props to default values.
661
+     *
662
+     * @since 1.0.19
663
+     */
664
+    public function set_defaults() {
665
+        $this->data    = $this->default_data;
666
+        $this->changes = array();
667
+        $this->set_object_read( false );
668
+    }
669
+
670
+    /**
671
+     * Set object read property.
672
+     *
673
+     * @since 1.0.19
674
+     * @param boolean $read Should read?.
675
+     */
676
+    public function set_object_read( $read = true ) {
677
+        $this->object_read = (bool) $read;
678
+    }
679
+
680
+    /**
681
+     * Get object read property.
682
+     *
683
+     * @since  1.0.19
684
+     * @return boolean
685
+     */
686
+    public function get_object_read() {
687
+        return (bool) $this->object_read;
688
+    }
689
+
690
+    /**
691
+     * Set a collection of props in one go, collect any errors, and return the result.
692
+     * Only sets using public methods.
693
+     *
694
+     * @since  1.0.19
695
+     *
696
+     * @param array  $props Key value pairs to set. Key is the prop and should map to a setter function name.
697
+     * @param string $context In what context to run this.
698
+     *
699
+     * @return bool|WP_Error
700
+     */
701
+    public function set_props( $props, $context = 'set' ) {
702
+        $errors = false;
703
+
704
+        foreach ( $props as $prop => $value ) {
705
+            try {
706
+                /**
707
+                 * Checks if the prop being set is allowed, and the value is not null.
708
+                 */
709
+                if ( is_null( $value ) || in_array( $prop, array( 'prop', 'date_prop', 'meta_data' ), true ) ) {
710
+                    continue;
711
+                }
712
+                $setter = "set_$prop";
713
+
714
+                if ( is_callable( array( $this, $setter ) ) ) {
715
+                    $this->{$setter}( $value );
716
+                }
717
+            } catch ( Exception $e ) {
718
+                if ( ! $errors ) {
719
+                    $errors = new WP_Error();
720
+                }
721
+                $errors->add( $e->getCode(), $e->getMessage() );
722
+                $this->last_error = $e->getMessage();
723
+            }
724
+        }
725
+
726
+        return $errors && count( $errors->get_error_codes() ) ? $errors : true;
727
+    }
728
+
729
+    /**
730
+     * Sets a prop for a setter method.
731
+     *
732
+     * This stores changes in a special array so we can track what needs saving
733
+     * the the DB later.
734
+     *
735
+     * @since 1.0.19
736
+     * @param string $prop Name of prop to set.
737
+     * @param mixed  $value Value of the prop.
738
+     */
739
+    protected function set_prop( $prop, $value ) {
740
+        if ( array_key_exists( $prop, $this->data ) ) {
741
+            if ( true === $this->object_read ) {
742
+                if ( $value !== $this->data[ $prop ] || array_key_exists( $prop, $this->changes ) ) {
743
+                    $this->changes[ $prop ] = $value;
744
+                }
745
+            } else {
746
+                $this->data[ $prop ] = $value;
747
+            }
748
+        }
749
+    }
750
+
751
+    /**
752
+     * Return data changes only.
753
+     *
754
+     * @since 1.0.19
755
+     * @return array
756
+     */
757
+    public function get_changes() {
758
+        return $this->changes;
759
+    }
760
+
761
+    /**
762
+     * Merge changes with data and clear.
763
+     *
764
+     * @since 1.0.19
765
+     */
766
+    public function apply_changes() {
767
+        $this->data    = array_replace_recursive( $this->data, $this->changes );
768
+        $this->changes = array();
769
+    }
770
+
771
+    /**
772
+     * Prefix for action and filter hooks on data.
773
+     *
774
+     * @since  1.0.19
775
+     * @return string
776
+     */
777
+    protected function get_hook_prefix() {
778
+        return 'wpinv_get_' . $this->object_type . '_';
779
+    }
780
+
781
+    /**
782
+     * Gets a prop for a getter method.
783
+     *
784
+     * Gets the value from either current pending changes, or the data itself.
785
+     * Context controls what happens to the value before it's returned.
786
+     *
787
+     * @since  1.0.19
788
+     * @param  string $prop Name of prop to get.
789
+     * @param  string $context What the value is for. Valid values are view and edit.
790
+     * @return mixed
791
+     */
792
+    protected function get_prop( $prop, $context = 'view' ) {
793
+        $value = null;
794
+
795
+        if ( array_key_exists( $prop, $this->data ) ) {
796
+            $value = array_key_exists( $prop, $this->changes ) ? $this->changes[ $prop ] : $this->data[ $prop ];
797
+
798
+            if ( 'view' === $context ) {
799
+                $value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
800
+            }
801
+        }
802
+
803
+        return $value;
804
+    }
805
+
806
+    /**
807
+     * Sets a date prop whilst handling formatting and datetime objects.
808
+     *
809
+     * @since 1.0.19
810
+     * @param string         $prop Name of prop to set.
811
+     * @param string|integer $value Value of the prop.
812
+     */
813
+    protected function set_date_prop( $prop, $value ) {
814
+
815
+        if ( empty( $value ) ) {
816
+            $this->set_prop( $prop, null );
817
+            return;
818
+        }
819
+        $this->set_prop( $prop, $value );
820
+
821
+    }
822
+
823
+    /**
824
+     * When invalid data is found, throw an exception unless reading from the DB.
825
+     *
826
+     * @throws Exception Data Exception.
827
+     * @since 1.0.19
828
+     * @param string $code             Error code.
829
+     * @param string $message          Error message.
830
+     */
831
+    protected function error( $code, $message ) {
832
+        throw new Exception( $message, $code );
833
+    }
834 834
 }
Please login to merge, or discard this patch.
Spacing   +149 added lines, -149 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  *
9 9
  */
10 10
 
11
-if ( ! defined( 'ABSPATH' ) ) {
11
+if (!defined('ABSPATH')) {
12 12
 	exit;
13 13
 }
14 14
 
@@ -117,8 +117,8 @@  discard block
 block discarded – undo
117 117
 	 *
118 118
 	 * @param int|object|array $read ID to load from the DB (optional) or already queried data.
119 119
 	 */
120
-	public function __construct( $read = 0 ) {
121
-		$this->data         = array_merge( $this->data, $this->extra_data );
120
+	public function __construct($read = 0) {
121
+		$this->data         = array_merge($this->data, $this->extra_data);
122 122
 		$this->default_data = $this->data;
123 123
 	}
124 124
 
@@ -128,7 +128,7 @@  discard block
 block discarded – undo
128 128
 	 * @return array
129 129
 	 */
130 130
 	public function __sleep() {
131
-		return array( 'id' );
131
+		return array('id');
132 132
 	}
133 133
 
134 134
 	/**
@@ -138,10 +138,10 @@  discard block
 block discarded – undo
138 138
 	 */
139 139
 	public function __wakeup() {
140 140
 		try {
141
-			$this->__construct( absint( $this->id ) );
142
-		} catch ( Exception $e ) {
143
-			$this->set_id( 0 );
144
-			$this->set_object_read( true );
141
+			$this->__construct(absint($this->id));
142
+		} catch (Exception $e) {
143
+			$this->set_id(0);
144
+			$this->set_object_read(true);
145 145
 		}
146 146
 	}
147 147
 
@@ -152,11 +152,11 @@  discard block
 block discarded – undo
152 152
 	 */
153 153
 	public function __clone() {
154 154
 		$this->maybe_read_meta_data();
155
-		if ( ! empty( $this->meta_data ) ) {
156
-			foreach ( $this->meta_data as $array_key => $meta ) {
157
-				$this->meta_data[ $array_key ] = clone $meta;
158
-				if ( ! empty( $meta->id ) ) {
159
-					$this->meta_data[ $array_key ]->id = null;
155
+		if (!empty($this->meta_data)) {
156
+			foreach ($this->meta_data as $array_key => $meta) {
157
+				$this->meta_data[$array_key] = clone $meta;
158
+				if (!empty($meta->id)) {
159
+					$this->meta_data[$array_key]->id = null;
160 160
 				}
161 161
 			}
162 162
 		}
@@ -199,8 +199,8 @@  discard block
 block discarded – undo
199 199
 	 * @param  string $context View or edit context.
200 200
 	 * @return string
201 201
 	 */
202
-	public function get_status( $context = 'view' ) {
203
-		return $this->get_prop( 'status', $context );
202
+	public function get_status($context = 'view') {
203
+		return $this->get_prop('status', $context);
204 204
     }
205 205
 
206 206
 	/**
@@ -210,10 +210,10 @@  discard block
 block discarded – undo
210 210
 	 * @param  bool $force_delete Should the data be deleted permanently.
211 211
 	 * @return bool result
212 212
 	 */
213
-	public function delete( $force_delete = false ) {
214
-		if ( $this->data_store ) {
215
-			$this->data_store->delete( $this, array( 'force_delete' => $force_delete ) );
216
-			$this->set_id( 0 );
213
+	public function delete($force_delete = false) {
214
+		if ($this->data_store) {
215
+			$this->data_store->delete($this, array('force_delete' => $force_delete));
216
+			$this->set_id(0);
217 217
 			return true;
218 218
 		}
219 219
 		return false;
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
 	 * @return int
227 227
 	 */
228 228
 	public function save() {
229
-		if ( ! $this->data_store ) {
229
+		if (!$this->data_store) {
230 230
 			return $this->get_id();
231 231
 		}
232 232
 
@@ -236,12 +236,12 @@  discard block
 block discarded – undo
236 236
 		 * @param GetPaid_Data          $this The object being saved.
237 237
 		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
238 238
 		 */
239
-		do_action( 'getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store );
239
+		do_action('getpaid_before_' . $this->object_type . '_object_save', $this, $this->data_store);
240 240
 
241
-		if ( $this->get_id() ) {
242
-			$this->data_store->update( $this );
241
+		if ($this->get_id()) {
242
+			$this->data_store->update($this);
243 243
 		} else {
244
-			$this->data_store->create( $this );
244
+			$this->data_store->create($this);
245 245
 		}
246 246
 
247 247
 		/**
@@ -250,7 +250,7 @@  discard block
 block discarded – undo
250 250
 		 * @param GetPaid_Data          $this The object being saved.
251 251
 		 * @param GetPaid_Data_Store_WP $data_store The data store persisting the data.
252 252
 		 */
253
-		do_action( 'getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store );
253
+		do_action('getpaid_after_' . $this->object_type . '_object_save', $this, $this->data_store);
254 254
 
255 255
 		return $this->get_id();
256 256
 	}
@@ -262,7 +262,7 @@  discard block
 block discarded – undo
262 262
 	 * @return string Data in JSON format.
263 263
 	 */
264 264
 	public function __toString() {
265
-		return wp_json_encode( $this->get_data() );
265
+		return wp_json_encode($this->get_data());
266 266
 	}
267 267
 
268 268
 	/**
@@ -272,7 +272,7 @@  discard block
 block discarded – undo
272 272
 	 * @return array
273 273
 	 */
274 274
 	public function get_data() {
275
-		return array_merge( array( 'id' => $this->get_id() ), $this->data, array( 'meta_data' => $this->get_meta_data() ) );
275
+		return array_merge(array('id' => $this->get_id()), $this->data, array('meta_data' => $this->get_meta_data()));
276 276
 	}
277 277
 
278 278
 	/**
@@ -282,7 +282,7 @@  discard block
 block discarded – undo
282 282
 	 * @return array
283 283
 	 */
284 284
 	public function get_data_keys() {
285
-		return array_keys( $this->data );
285
+		return array_keys($this->data);
286 286
 	}
287 287
 
288 288
 	/**
@@ -292,7 +292,7 @@  discard block
 block discarded – undo
292 292
 	 * @return array
293 293
 	 */
294 294
 	public function get_extra_data_keys() {
295
-		return array_keys( $this->extra_data );
295
+		return array_keys($this->extra_data);
296 296
 	}
297 297
 
298 298
 	/**
@@ -302,8 +302,8 @@  discard block
 block discarded – undo
302 302
 	 * @param mixed $meta Meta value to check.
303 303
 	 * @return bool
304 304
 	 */
305
-	protected function filter_null_meta( $meta ) {
306
-		return ! is_null( $meta->value );
305
+	protected function filter_null_meta($meta) {
306
+		return !is_null($meta->value);
307 307
 	}
308 308
 
309 309
 	/**
@@ -314,7 +314,7 @@  discard block
 block discarded – undo
314 314
 	 */
315 315
 	public function get_meta_data() {
316 316
 		$this->maybe_read_meta_data();
317
-		return array_values( array_filter( $this->meta_data, array( $this, 'filter_null_meta' ) ) );
317
+		return array_values(array_filter($this->meta_data, array($this, 'filter_null_meta')));
318 318
 	}
319 319
 
320 320
 	/**
@@ -324,21 +324,21 @@  discard block
 block discarded – undo
324 324
 	 * @param  string $key Key to check.
325 325
 	 * @return bool   true if it's an internal key, false otherwise
326 326
 	 */
327
-	protected function is_internal_meta_key( $key ) {
328
-		$internal_meta_key = ! empty( $key ) && $this->data_store && in_array( $key, $this->data_store->get_internal_meta_keys(), true );
327
+	protected function is_internal_meta_key($key) {
328
+		$internal_meta_key = !empty($key) && $this->data_store && in_array($key, $this->data_store->get_internal_meta_keys(), true);
329 329
 
330
-		if ( ! $internal_meta_key ) {
330
+		if (!$internal_meta_key) {
331 331
 			return false;
332 332
 		}
333 333
 
334
-		$has_setter_or_getter = is_callable( array( $this, 'set_' . $key ) ) || is_callable( array( $this, 'get_' . $key ) );
334
+		$has_setter_or_getter = is_callable(array($this, 'set_' . $key)) || is_callable(array($this, 'get_' . $key));
335 335
 
336
-		if ( ! $has_setter_or_getter ) {
336
+		if (!$has_setter_or_getter) {
337 337
 			return false;
338 338
 		}
339 339
 
340 340
 		/* translators: %s: $key Key to check */
341
-		getpaid_doing_it_wrong( __FUNCTION__, sprintf( __( 'Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'getpaid' ), $key ), '1.0.19' );
341
+		getpaid_doing_it_wrong(__FUNCTION__, sprintf(__('Generic add/update/get meta methods should not be used for internal meta data, including "%s". Use getters and setters.', 'getpaid'), $key), '1.0.19');
342 342
 
343 343
 		return true;
344 344
 	}
@@ -352,13 +352,13 @@  discard block
 block discarded – undo
352 352
 	 * @param  string $context What the value is for. Valid values are view and edit.
353 353
 	 * @return mixed
354 354
 	 */
355
-	public function get_meta( $key = '', $single = true, $context = 'view' ) {
355
+	public function get_meta($key = '', $single = true, $context = 'view') {
356 356
 
357 357
 		// Check if this is an internal meta key.
358
-		if ( $this->is_internal_meta_key( $key ) ) {
358
+		if ($this->is_internal_meta_key($key)) {
359 359
 			$function = 'get_' . $key;
360 360
 
361
-			if ( is_callable( array( $this, $function ) ) ) {
361
+			if (is_callable(array($this, $function))) {
362 362
 				return $this->{$function}();
363 363
 			}
364 364
 		}
@@ -366,20 +366,20 @@  discard block
 block discarded – undo
366 366
 		// Read the meta data if not yet read.
367 367
 		$this->maybe_read_meta_data();
368 368
 		$meta_data  = $this->get_meta_data();
369
-		$array_keys = array_keys( wp_list_pluck( $meta_data, 'key' ), $key, true );
369
+		$array_keys = array_keys(wp_list_pluck($meta_data, 'key'), $key, true);
370 370
 		$value      = $single ? '' : array();
371 371
 
372
-		if ( ! empty( $array_keys ) ) {
372
+		if (!empty($array_keys)) {
373 373
 			// We don't use the $this->meta_data property directly here because we don't want meta with a null value (i.e. meta which has been deleted via $this->delete_meta_data()).
374
-			if ( $single ) {
375
-				$value = $meta_data[ current( $array_keys ) ]->value;
374
+			if ($single) {
375
+				$value = $meta_data[current($array_keys)]->value;
376 376
 			} else {
377
-				$value = array_intersect_key( $meta_data, array_flip( $array_keys ) );
377
+				$value = array_intersect_key($meta_data, array_flip($array_keys));
378 378
 			}
379 379
 		}
380 380
 
381
-		if ( 'view' === $context ) {
382
-			$value = apply_filters( $this->get_hook_prefix() . $key, $value, $this );
381
+		if ('view' === $context) {
382
+			$value = apply_filters($this->get_hook_prefix() . $key, $value, $this);
383 383
 		}
384 384
 
385 385
 		return $value;
@@ -392,10 +392,10 @@  discard block
 block discarded – undo
392 392
 	 * @param  string $key Meta Key.
393 393
 	 * @return boolean
394 394
 	 */
395
-	public function meta_exists( $key = '' ) {
395
+	public function meta_exists($key = '') {
396 396
 		$this->maybe_read_meta_data();
397
-		$array_keys = wp_list_pluck( $this->get_meta_data(), 'key' );
398
-		return in_array( $key, $array_keys, true );
397
+		$array_keys = wp_list_pluck($this->get_meta_data(), 'key');
398
+		return in_array($key, $array_keys, true);
399 399
 	}
400 400
 
401 401
 	/**
@@ -404,12 +404,12 @@  discard block
 block discarded – undo
404 404
 	 * @since 1.0.19
405 405
 	 * @param array $data Key/Value pairs.
406 406
 	 */
407
-	public function set_meta_data( $data ) {
408
-		if ( ! empty( $data ) && is_array( $data ) ) {
407
+	public function set_meta_data($data) {
408
+		if (!empty($data) && is_array($data)) {
409 409
 			$this->maybe_read_meta_data();
410
-			foreach ( $data as $meta ) {
410
+			foreach ($data as $meta) {
411 411
 				$meta = (array) $meta;
412
-				if ( isset( $meta['key'], $meta['value'], $meta['id'] ) ) {
412
+				if (isset($meta['key'], $meta['value'], $meta['id'])) {
413 413
 					$this->meta_data[] = new GetPaid_Meta_Data(
414 414
 						array(
415 415
 							'id'    => $meta['id'],
@@ -431,18 +431,18 @@  discard block
 block discarded – undo
431 431
 	 * @param string|array $value Meta value.
432 432
 	 * @param bool         $unique Should this be a unique key?.
433 433
 	 */
434
-	public function add_meta_data( $key, $value, $unique = false ) {
435
-		if ( $this->is_internal_meta_key( $key ) ) {
434
+	public function add_meta_data($key, $value, $unique = false) {
435
+		if ($this->is_internal_meta_key($key)) {
436 436
 			$function = 'set_' . $key;
437 437
 
438
-			if ( is_callable( array( $this, $function ) ) ) {
439
-				return $this->{$function}( $value );
438
+			if (is_callable(array($this, $function))) {
439
+				return $this->{$function}($value);
440 440
 			}
441 441
 		}
442 442
 
443 443
 		$this->maybe_read_meta_data();
444
-		if ( $unique ) {
445
-			$this->delete_meta_data( $key );
444
+		if ($unique) {
445
+			$this->delete_meta_data($key);
446 446
 		}
447 447
 		$this->meta_data[] = new GetPaid_Meta_Data(
448 448
 			array(
@@ -461,12 +461,12 @@  discard block
 block discarded – undo
461 461
 	 * @param  string|array $value Meta value.
462 462
 	 * @param  int          $meta_id Meta ID.
463 463
 	 */
464
-	public function update_meta_data( $key, $value, $meta_id = 0 ) {
465
-		if ( $this->is_internal_meta_key( $key ) ) {
464
+	public function update_meta_data($key, $value, $meta_id = 0) {
465
+		if ($this->is_internal_meta_key($key)) {
466 466
 			$function = 'set_' . $key;
467 467
 
468
-			if ( is_callable( array( $this, $function ) ) ) {
469
-				return $this->{$function}( $value );
468
+			if (is_callable(array($this, $function))) {
469
+				return $this->{$function}($value);
470 470
 			}
471 471
 		}
472 472
 
@@ -474,33 +474,33 @@  discard block
 block discarded – undo
474 474
 
475 475
 		$array_key = false;
476 476
 
477
-		if ( $meta_id ) {
478
-			$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), $meta_id, true );
479
-			$array_key  = $array_keys ? current( $array_keys ) : false;
477
+		if ($meta_id) {
478
+			$array_keys = array_keys(wp_list_pluck($this->meta_data, 'id'), $meta_id, true);
479
+			$array_key  = $array_keys ? current($array_keys) : false;
480 480
 		} else {
481 481
 			// Find matches by key.
482 482
 			$matches = array();
483
-			foreach ( $this->meta_data as $meta_data_array_key => $meta ) {
484
-				if ( $meta->key === $key ) {
483
+			foreach ($this->meta_data as $meta_data_array_key => $meta) {
484
+				if ($meta->key === $key) {
485 485
 					$matches[] = $meta_data_array_key;
486 486
 				}
487 487
 			}
488 488
 
489
-			if ( ! empty( $matches ) ) {
489
+			if (!empty($matches)) {
490 490
 				// Set matches to null so only one key gets the new value.
491
-				foreach ( $matches as $meta_data_array_key ) {
492
-					$this->meta_data[ $meta_data_array_key ]->value = null;
491
+				foreach ($matches as $meta_data_array_key) {
492
+					$this->meta_data[$meta_data_array_key]->value = null;
493 493
 				}
494
-				$array_key = current( $matches );
494
+				$array_key = current($matches);
495 495
 			}
496 496
 		}
497 497
 
498
-		if ( false !== $array_key ) {
499
-			$meta        = $this->meta_data[ $array_key ];
498
+		if (false !== $array_key) {
499
+			$meta        = $this->meta_data[$array_key];
500 500
 			$meta->key   = $key;
501 501
 			$meta->value = $value;
502 502
 		} else {
503
-			$this->add_meta_data( $key, $value, true );
503
+			$this->add_meta_data($key, $value, true);
504 504
 		}
505 505
 	}
506 506
 
@@ -510,13 +510,13 @@  discard block
 block discarded – undo
510 510
 	 * @since 1.0.19
511 511
 	 * @param string $key Meta key.
512 512
 	 */
513
-	public function delete_meta_data( $key ) {
513
+	public function delete_meta_data($key) {
514 514
 		$this->maybe_read_meta_data();
515
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'key' ), $key, true );
515
+		$array_keys = array_keys(wp_list_pluck($this->meta_data, 'key'), $key, true);
516 516
 
517
-		if ( $array_keys ) {
518
-			foreach ( $array_keys as $array_key ) {
519
-				$this->meta_data[ $array_key ]->value = null;
517
+		if ($array_keys) {
518
+			foreach ($array_keys as $array_key) {
519
+				$this->meta_data[$array_key]->value = null;
520 520
 			}
521 521
 		}
522 522
 	}
@@ -527,13 +527,13 @@  discard block
 block discarded – undo
527 527
 	 * @since 1.0.19
528 528
 	 * @param int $mid Meta ID.
529 529
 	 */
530
-	public function delete_meta_data_by_mid( $mid ) {
530
+	public function delete_meta_data_by_mid($mid) {
531 531
 		$this->maybe_read_meta_data();
532
-		$array_keys = array_keys( wp_list_pluck( $this->meta_data, 'id' ), (int) $mid, true );
532
+		$array_keys = array_keys(wp_list_pluck($this->meta_data, 'id'), (int) $mid, true);
533 533
 
534
-		if ( $array_keys ) {
535
-			foreach ( $array_keys as $array_key ) {
536
-				$this->meta_data[ $array_key ]->value = null;
534
+		if ($array_keys) {
535
+			foreach ($array_keys as $array_key) {
536
+				$this->meta_data[$array_key]->value = null;
537 537
 			}
538 538
 		}
539 539
 	}
@@ -544,7 +544,7 @@  discard block
 block discarded – undo
544 544
 	 * @since 1.0.19
545 545
 	 */
546 546
 	protected function maybe_read_meta_data() {
547
-		if ( is_null( $this->meta_data ) ) {
547
+		if (is_null($this->meta_data)) {
548 548
 			$this->read_meta_data();
549 549
 		}
550 550
 	}
@@ -556,43 +556,43 @@  discard block
 block discarded – undo
556 556
 	 * @since 1.0.19
557 557
 	 * @param bool $force_read True to force a new DB read (and update cache).
558 558
 	 */
559
-	public function read_meta_data( $force_read = false ) {
559
+	public function read_meta_data($force_read = false) {
560 560
 		$this->meta_data = array();
561 561
 		$cache_loaded    = false;
562 562
 
563
-		if ( ! $this->get_id() ) {
563
+		if (!$this->get_id()) {
564 564
 			return;
565 565
 		}
566 566
 
567
-		if ( ! $this->data_store ) {
567
+		if (!$this->data_store) {
568 568
 			return;
569 569
 		}
570 570
 
571
-		if ( ! empty( $this->cache_group ) ) {
572
-			$cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
571
+		if (!empty($this->cache_group)) {
572
+			$cache_key = GetPaid_Cache_Helper::get_cache_prefix($this->cache_group) . GetPaid_Cache_Helper::get_cache_prefix('object_' . $this->get_id()) . 'object_meta_' . $this->get_id();
573 573
 		}
574 574
 
575
-		if ( ! $force_read ) {
576
-			if ( ! empty( $this->cache_group ) ) {
577
-				$cached_meta  = wp_cache_get( $cache_key, $this->cache_group );
578
-				$cache_loaded = ! empty( $cached_meta );
575
+		if (!$force_read) {
576
+			if (!empty($this->cache_group)) {
577
+				$cached_meta  = wp_cache_get($cache_key, $this->cache_group);
578
+				$cache_loaded = !empty($cached_meta);
579 579
 			}
580 580
 		}
581 581
 
582
-		$raw_meta_data = $cache_loaded ? $cached_meta : $this->data_store->read_meta( $this );
583
-		if ( $raw_meta_data ) {
584
-			foreach ( $raw_meta_data as $meta ) {
582
+		$raw_meta_data = $cache_loaded ? $cached_meta : $this->data_store->read_meta($this);
583
+		if ($raw_meta_data) {
584
+			foreach ($raw_meta_data as $meta) {
585 585
 				$this->meta_data[] = new GetPaid_Meta_Data(
586 586
 					array(
587 587
 						'id'    => (int) $meta->meta_id,
588 588
 						'key'   => $meta->meta_key,
589
-						'value' => maybe_unserialize( $meta->meta_value ),
589
+						'value' => maybe_unserialize($meta->meta_value),
590 590
 					)
591 591
 				);
592 592
 			}
593 593
 
594
-			if ( ! $cache_loaded && ! empty( $this->cache_group ) ) {
595
-				wp_cache_set( $cache_key, $raw_meta_data, $this->cache_group );
594
+			if (!$cache_loaded && !empty($this->cache_group)) {
595
+				wp_cache_set($cache_key, $raw_meta_data, $this->cache_group);
596 596
 			}
597 597
 		}
598 598
 	}
@@ -603,28 +603,28 @@  discard block
 block discarded – undo
603 603
 	 * @since 1.0.19
604 604
 	 */
605 605
 	public function save_meta_data() {
606
-		if ( ! $this->data_store || is_null( $this->meta_data ) ) {
606
+		if (!$this->data_store || is_null($this->meta_data)) {
607 607
 			return;
608 608
 		}
609
-		foreach ( $this->meta_data as $array_key => $meta ) {
610
-			if ( is_null( $meta->value ) ) {
611
-				if ( ! empty( $meta->id ) ) {
612
-					$this->data_store->delete_meta( $this, $meta );
613
-					unset( $this->meta_data[ $array_key ] );
609
+		foreach ($this->meta_data as $array_key => $meta) {
610
+			if (is_null($meta->value)) {
611
+				if (!empty($meta->id)) {
612
+					$this->data_store->delete_meta($this, $meta);
613
+					unset($this->meta_data[$array_key]);
614 614
 				}
615
-			} elseif ( empty( $meta->id ) ) {
616
-				$meta->id = $this->data_store->add_meta( $this, $meta );
615
+			} elseif (empty($meta->id)) {
616
+				$meta->id = $this->data_store->add_meta($this, $meta);
617 617
 				$meta->apply_changes();
618 618
 			} else {
619
-				if ( $meta->get_changes() ) {
620
-					$this->data_store->update_meta( $this, $meta );
619
+				if ($meta->get_changes()) {
620
+					$this->data_store->update_meta($this, $meta);
621 621
 					$meta->apply_changes();
622 622
 				}
623 623
 			}
624 624
 		}
625
-		if ( ! empty( $this->cache_group ) ) {
626
-			$cache_key = GetPaid_Cache_Helper::get_cache_prefix( $this->cache_group ) . GetPaid_Cache_Helper::get_cache_prefix( 'object_' . $this->get_id() ) . 'object_meta_' . $this->get_id();
627
-			wp_cache_delete( $cache_key, $this->cache_group );
625
+		if (!empty($this->cache_group)) {
626
+			$cache_key = GetPaid_Cache_Helper::get_cache_prefix($this->cache_group) . GetPaid_Cache_Helper::get_cache_prefix('object_' . $this->get_id()) . 'object_meta_' . $this->get_id();
627
+			wp_cache_delete($cache_key, $this->cache_group);
628 628
 		}
629 629
 	}
630 630
 
@@ -634,8 +634,8 @@  discard block
 block discarded – undo
634 634
 	 * @since 1.0.19
635 635
 	 * @param int $id ID.
636 636
 	 */
637
-	public function set_id( $id ) {
638
-		$this->id = absint( $id );
637
+	public function set_id($id) {
638
+		$this->id = absint($id);
639 639
 	}
640 640
 
641 641
 	/**
@@ -645,10 +645,10 @@  discard block
 block discarded – undo
645 645
 	 * @param  string $status New status.
646 646
 	 * @return array details of change.
647 647
 	 */
648
-	public function set_status( $status ) {
648
+	public function set_status($status) {
649 649
         $old_status = $this->get_status();
650 650
 
651
-        $this->set_prop( 'status', $status );
651
+        $this->set_prop('status', $status);
652 652
 
653 653
 		return array(
654 654
 			'from' => $old_status,
@@ -664,7 +664,7 @@  discard block
 block discarded – undo
664 664
 	public function set_defaults() {
665 665
 		$this->data    = $this->default_data;
666 666
 		$this->changes = array();
667
-		$this->set_object_read( false );
667
+		$this->set_object_read(false);
668 668
 	}
669 669
 
670 670
 	/**
@@ -673,7 +673,7 @@  discard block
 block discarded – undo
673 673
 	 * @since 1.0.19
674 674
 	 * @param boolean $read Should read?.
675 675
 	 */
676
-	public function set_object_read( $read = true ) {
676
+	public function set_object_read($read = true) {
677 677
 		$this->object_read = (bool) $read;
678 678
 	}
679 679
 
@@ -698,32 +698,32 @@  discard block
 block discarded – undo
698 698
 	 *
699 699
 	 * @return bool|WP_Error
700 700
 	 */
701
-	public function set_props( $props, $context = 'set' ) {
701
+	public function set_props($props, $context = 'set') {
702 702
 		$errors = false;
703 703
 
704
-		foreach ( $props as $prop => $value ) {
704
+		foreach ($props as $prop => $value) {
705 705
 			try {
706 706
 				/**
707 707
 				 * Checks if the prop being set is allowed, and the value is not null.
708 708
 				 */
709
-				if ( is_null( $value ) || in_array( $prop, array( 'prop', 'date_prop', 'meta_data' ), true ) ) {
709
+				if (is_null($value) || in_array($prop, array('prop', 'date_prop', 'meta_data'), true)) {
710 710
 					continue;
711 711
 				}
712 712
 				$setter = "set_$prop";
713 713
 
714
-				if ( is_callable( array( $this, $setter ) ) ) {
715
-					$this->{$setter}( $value );
714
+				if (is_callable(array($this, $setter))) {
715
+					$this->{$setter}($value);
716 716
 				}
717
-			} catch ( Exception $e ) {
718
-				if ( ! $errors ) {
717
+			} catch (Exception $e) {
718
+				if (!$errors) {
719 719
 					$errors = new WP_Error();
720 720
 				}
721
-				$errors->add( $e->getCode(), $e->getMessage() );
721
+				$errors->add($e->getCode(), $e->getMessage());
722 722
 				$this->last_error = $e->getMessage();
723 723
 			}
724 724
 		}
725 725
 
726
-		return $errors && count( $errors->get_error_codes() ) ? $errors : true;
726
+		return $errors && count($errors->get_error_codes()) ? $errors : true;
727 727
 	}
728 728
 
729 729
 	/**
@@ -736,14 +736,14 @@  discard block
 block discarded – undo
736 736
 	 * @param string $prop Name of prop to set.
737 737
 	 * @param mixed  $value Value of the prop.
738 738
 	 */
739
-	protected function set_prop( $prop, $value ) {
740
-		if ( array_key_exists( $prop, $this->data ) ) {
741
-			if ( true === $this->object_read ) {
742
-				if ( $value !== $this->data[ $prop ] || array_key_exists( $prop, $this->changes ) ) {
743
-					$this->changes[ $prop ] = $value;
739
+	protected function set_prop($prop, $value) {
740
+		if (array_key_exists($prop, $this->data)) {
741
+			if (true === $this->object_read) {
742
+				if ($value !== $this->data[$prop] || array_key_exists($prop, $this->changes)) {
743
+					$this->changes[$prop] = $value;
744 744
 				}
745 745
 			} else {
746
-				$this->data[ $prop ] = $value;
746
+				$this->data[$prop] = $value;
747 747
 			}
748 748
 		}
749 749
 	}
@@ -764,7 +764,7 @@  discard block
 block discarded – undo
764 764
 	 * @since 1.0.19
765 765
 	 */
766 766
 	public function apply_changes() {
767
-		$this->data    = array_replace_recursive( $this->data, $this->changes );
767
+		$this->data    = array_replace_recursive($this->data, $this->changes);
768 768
 		$this->changes = array();
769 769
 	}
770 770
 
@@ -789,14 +789,14 @@  discard block
 block discarded – undo
789 789
 	 * @param  string $context What the value is for. Valid values are view and edit.
790 790
 	 * @return mixed
791 791
 	 */
792
-	protected function get_prop( $prop, $context = 'view' ) {
792
+	protected function get_prop($prop, $context = 'view') {
793 793
 		$value = null;
794 794
 
795
-		if ( array_key_exists( $prop, $this->data ) ) {
796
-			$value = array_key_exists( $prop, $this->changes ) ? $this->changes[ $prop ] : $this->data[ $prop ];
795
+		if (array_key_exists($prop, $this->data)) {
796
+			$value = array_key_exists($prop, $this->changes) ? $this->changes[$prop] : $this->data[$prop];
797 797
 
798
-			if ( 'view' === $context ) {
799
-				$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
798
+			if ('view' === $context) {
799
+				$value = apply_filters($this->get_hook_prefix() . $prop, $value, $this);
800 800
 			}
801 801
 		}
802 802
 
@@ -810,13 +810,13 @@  discard block
 block discarded – undo
810 810
 	 * @param string         $prop Name of prop to set.
811 811
 	 * @param string|integer $value Value of the prop.
812 812
 	 */
813
-	protected function set_date_prop( $prop, $value ) {
813
+	protected function set_date_prop($prop, $value) {
814 814
 
815
-		if ( empty( $value ) ) {
816
-			$this->set_prop( $prop, null );
815
+		if (empty($value)) {
816
+			$this->set_prop($prop, null);
817 817
 			return;
818 818
 		}
819
-		$this->set_prop( $prop, $value );
819
+		$this->set_prop($prop, $value);
820 820
 
821 821
 	}
822 822
 
@@ -828,7 +828,7 @@  discard block
 block discarded – undo
828 828
 	 * @param string $code             Error code.
829 829
 	 * @param string $message          Error message.
830 830
 	 */
831
-	protected function error( $code, $message ) {
832
-		throw new Exception( $message, $code );
831
+	protected function error($code, $message) {
832
+		throw new Exception($message, $code);
833 833
 	}
834 834
 }
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-data-store-wp.php 2 patches
Indentation   +333 added lines, -333 removed lines patch added patch discarded remove patch
@@ -14,341 +14,341 @@
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Meta type. This should match up with
19
-	 * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
20
-	 * WP defines 'post', 'user', 'comment', and 'term'.
21
-	 *
22
-	 * @var string
23
-	 */
24
-	protected $meta_type = 'post';
25
-
26
-	/**
27
-	 * This only needs set if you are using a custom metadata type.
28
-	 *
29
-	 * @var string
30
-	 */
31
-	protected $object_id_field_for_meta = '';
32
-
33
-	/**
34
-	 * Data stored in meta keys, but not considered "meta" for an object.
35
-	 *
36
-	 * @since 1.0.19
37
-	 *
38
-	 * @var array
39
-	 */
40
-	protected $internal_meta_keys = array();
41
-
42
-	/**
43
-	 * Meta data which should exist in the DB, even if empty.
44
-	 *
45
-	 * @since 1.0.19
46
-	 *
47
-	 * @var array
48
-	 */
49
-	protected $must_exist_meta_keys = array();
50
-
51
-	/**
52
-	 * A map of meta keys to data props.
53
-	 *
54
-	 * @since 1.0.19
55
-	 *
56
-	 * @var array
57
-	 */
58
-	protected $meta_key_to_props = array();
59
-
60
-	/**
61
-	 * Returns an array of meta for an object.
62
-	 *
63
-	 * @since  1.0.19
64
-	 * @param  GetPaid_Data $object GetPaid_Data object.
65
-	 * @return array
66
-	 */
67
-	public function read_meta( &$object ) {
68
-		global $wpdb;
69
-		$db_info       = $this->get_db_info();
70
-		$raw_meta_data = $wpdb->get_results(
71
-			$wpdb->prepare(
72
-				"SELECT {$db_info['meta_id_field']} as meta_id, meta_key, meta_value
17
+    /**
18
+     * Meta type. This should match up with
19
+     * the types available at https://developer.wordpress.org/reference/functions/add_metadata/.
20
+     * WP defines 'post', 'user', 'comment', and 'term'.
21
+     *
22
+     * @var string
23
+     */
24
+    protected $meta_type = 'post';
25
+
26
+    /**
27
+     * This only needs set if you are using a custom metadata type.
28
+     *
29
+     * @var string
30
+     */
31
+    protected $object_id_field_for_meta = '';
32
+
33
+    /**
34
+     * Data stored in meta keys, but not considered "meta" for an object.
35
+     *
36
+     * @since 1.0.19
37
+     *
38
+     * @var array
39
+     */
40
+    protected $internal_meta_keys = array();
41
+
42
+    /**
43
+     * Meta data which should exist in the DB, even if empty.
44
+     *
45
+     * @since 1.0.19
46
+     *
47
+     * @var array
48
+     */
49
+    protected $must_exist_meta_keys = array();
50
+
51
+    /**
52
+     * A map of meta keys to data props.
53
+     *
54
+     * @since 1.0.19
55
+     *
56
+     * @var array
57
+     */
58
+    protected $meta_key_to_props = array();
59
+
60
+    /**
61
+     * Returns an array of meta for an object.
62
+     *
63
+     * @since  1.0.19
64
+     * @param  GetPaid_Data $object GetPaid_Data object.
65
+     * @return array
66
+     */
67
+    public function read_meta( &$object ) {
68
+        global $wpdb;
69
+        $db_info       = $this->get_db_info();
70
+        $raw_meta_data = $wpdb->get_results(
71
+            $wpdb->prepare(
72
+                "SELECT {$db_info['meta_id_field']} as meta_id, meta_key, meta_value
73 73
 				FROM {$db_info['table']}
74 74
 				WHERE {$db_info['object_id_field']} = %d
75 75
 				ORDER BY {$db_info['meta_id_field']}",
76
-				$object->get_id()
77
-			)
78
-		);
79
-
80
-		$this->internal_meta_keys = array_merge( array_map( array( $this, 'prefix_key' ), $object->get_data_keys() ), $this->internal_meta_keys );
81
-		$meta_data                = array_filter( $raw_meta_data, array( $this, 'exclude_internal_meta_keys' ) );
82
-		return apply_filters( "getpaid_data_store_wp_{$this->meta_type}_read_meta", $meta_data, $object, $this );
83
-	}
84
-
85
-	/**
86
-	 * Deletes meta based on meta ID.
87
-	 *
88
-	 * @since  1.0.19
89
-	 * @param  GetPaid_Data  $object GetPaid_Data object.
90
-	 * @param  stdClass $meta (containing at least ->id).
91
-	 */
92
-	public function delete_meta( &$object, $meta ) {
93
-		delete_metadata_by_mid( $this->meta_type, $meta->id );
94
-	}
95
-
96
-	/**
97
-	 * Add new piece of meta.
98
-	 *
99
-	 * @since  1.0.19
100
-	 * @param  GetPaid_Data  $object GetPaid_Data object.
101
-	 * @param  stdClass $meta (containing ->key and ->value).
102
-	 * @return int meta ID
103
-	 */
104
-	public function add_meta( &$object, $meta ) {
105
-		return add_metadata( $this->meta_type, $object->get_id(), $meta->key, is_string( $meta->value ) ? wp_slash( $meta->value ) : $meta->value, false );
106
-	}
107
-
108
-	/**
109
-	 * Update meta.
110
-	 *
111
-	 * @since  1.0.19
112
-	 * @param  GetPaid_Data  $object GetPaid_Data object.
113
-	 * @param  stdClass $meta (containing ->id, ->key and ->value).
114
-	 */
115
-	public function update_meta( &$object, $meta ) {
116
-		update_metadata_by_mid( $this->meta_type, $meta->id, $meta->value, $meta->key );
117
-	}
118
-
119
-	/**
120
-	 * Table structure is slightly different between meta types, this function will return what we need to know.
121
-	 *
122
-	 * @since  1.0.19
123
-	 * @return array Array elements: table, object_id_field, meta_id_field
124
-	 */
125
-	protected function get_db_info() {
126
-		global $wpdb;
127
-
128
-		$meta_id_field = 'meta_id'; // users table calls this umeta_id so we need to track this as well.
129
-		$table         = $wpdb->prefix;
130
-
131
-		// If we are dealing with a type of metadata that is not a core type, the table should be prefixed.
132
-		if ( ! in_array( $this->meta_type, array( 'post', 'user', 'comment', 'term' ), true ) ) {
133
-			$table .= 'getpaid_';
134
-		}
135
-
136
-		$table          .= $this->meta_type . 'meta';
137
-		$object_id_field = $this->meta_type . '_id';
138
-
139
-		// Figure out our field names.
140
-		if ( 'user' === $this->meta_type ) {
141
-			$meta_id_field = 'umeta_id';
142
-			$table         = $wpdb->usermeta;
143
-		}
144
-
145
-		if ( ! empty( $this->object_id_field_for_meta ) ) {
146
-			$object_id_field = $this->object_id_field_for_meta;
147
-		}
148
-
149
-		return array(
150
-			'table'           => $table,
151
-			'object_id_field' => $object_id_field,
152
-			'meta_id_field'   => $meta_id_field,
153
-		);
154
-	}
155
-
156
-	/**
157
-	 * Internal meta keys we don't want exposed as part of meta_data. This is in
158
-	 * addition to all data props with _ prefix.
159
-	 *
160
-	 * @since 1.0.19
161
-	 *
162
-	 * @param string $key Prefix to be added to meta keys.
163
-	 * @return string
164
-	 */
165
-	protected function prefix_key( $key ) {
166
-		return '_' === substr( $key, 0, 1 ) ? $key : '_' . $key;
167
-	}
168
-
169
-	/**
170
-	 * Callback to remove unwanted meta data.
171
-	 *
172
-	 * @param object $meta Meta object to check if it should be excluded or not.
173
-	 * @return bool
174
-	 */
175
-	protected function exclude_internal_meta_keys( $meta ) {
176
-		return ! in_array( $meta->meta_key, $this->internal_meta_keys, true ) && 0 !== stripos( $meta->meta_key, 'wp_' );
177
-	}
178
-
179
-	/**
180
-	 * Gets a list of props and meta keys that need updated based on change state
181
-	 * or if they are present in the database or not.
182
-	 *
183
-	 * @param  GetPaid_Data $object         The GetPaid_Data object.
184
-	 * @param  array   $meta_key_to_props   A mapping of meta keys => prop names.
185
-	 * @param  string  $meta_type           The internal WP meta type (post, user, etc).
186
-	 * @return array                        A mapping of meta keys => prop names, filtered by ones that should be updated.
187
-	 */
188
-	protected function get_props_to_update( $object, $meta_key_to_props, $meta_type = 'post' ) {
189
-		$props_to_update = array();
190
-		$changed_props   = $object->get_changes();
191
-
192
-		// Props should be updated if they are a part of the $changed array or don't exist yet.
193
-		foreach ( $meta_key_to_props as $meta_key => $prop ) {
194
-			if ( array_key_exists( $prop, $changed_props ) || ! metadata_exists( $meta_type, $object->get_id(), $meta_key ) ) {
195
-				$props_to_update[ $meta_key ] = $prop;
196
-			}
197
-		}
198
-
199
-		return $props_to_update;
200
-	}
201
-
202
-	/**
203
-	 * Read object data.
204
-	 *
205
-	 * @param GetPaid_Data $object GetPaid_Data object.
206
-	 * @param WP_Post   $post_object Post object.
207
-	 * @since 1.0.19
208
-	 */
209
-	protected function read_object_data( &$object, $post_object ) {
210
-		$id    = $object->get_id();
211
-		$props = array();
212
-
213
-		foreach ( $this->meta_key_to_props as $meta_key => $prop ) {
214
-			$props[ $prop ] = get_post_meta( $id, $meta_key, true );
215
-		}
216
-
217
-		// Set object properties.
218
-		$object->set_props( $props );
219
-
220
-		// Gets extra data associated with the object if needed.
221
-		foreach ( $object->get_extra_data_keys() as $key ) {
222
-			$function = 'set_' . $key;
223
-			if ( is_callable( array( $object, $function ) ) ) {
224
-				$object->{$function}( get_post_meta( $object->get_id(), $key, true ) );
225
-			}
226
-		}
227
-	}
228
-
229
-	/**
230
-	 * Helper method that updates all the post meta for an object based on it's settings in the GetPaid_Data class.
231
-	 *
232
-	 * @param GetPaid_Data $object GetPaid_Data object.
233
-	 * @since 1.0.19
234
-	 */
235
-	protected function update_post_meta( &$object ) {
236
-
237
-		$updated_props   = array();
238
-		$props_to_update = $this->get_props_to_update( $object, $this->meta_key_to_props );
239
-		$object_type     = $object->get_object_type();
240
-
241
-		foreach ( $props_to_update as $meta_key => $prop ) {
242
-			$value = $object->{"get_$prop"}( 'edit' );
243
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
244
-
245
-			$updated = $this->update_or_delete_post_meta( $object, $meta_key, $value );
246
-
247
-			if ( $updated ) {
248
-				$updated_props[] = $prop;
249
-			}
250
-		}
251
-
252
-		do_action( "getpaid_{$object_type}_object_updated_props", $object, $updated_props );
253
-	}
254
-
255
-	/**
256
-	 * Update meta data in, or delete it from, the database.
257
-	 *
258
-	 * Avoids storing meta when it's either an empty string or empty array or null.
259
-	 * Other empty values such as numeric 0 should still be stored.
260
-	 * Data-stores can force meta to exist using `must_exist_meta_keys`.
261
-	 *
262
-	 * Note: WordPress `get_metadata` function returns an empty string when meta data does not exist.
263
-	 *
264
-	 * @param GetPaid_Data $object The GetPaid_Data object.
265
-	 * @param string  $meta_key Meta key to update.
266
-	 * @param mixed   $meta_value Value to save.
267
-	 *
268
-	 * @since 1.0.19 Added to prevent empty meta being stored unless required.
269
-	 *
270
-	 * @return bool True if updated/deleted.
271
-	 */
272
-	protected function update_or_delete_post_meta( $object, $meta_key, $meta_value ) {
273
-		if ( in_array( $meta_value, array( array(), '', null ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
274
-			$updated = delete_post_meta( $object->get_id(), $meta_key );
275
-		} else {
276
-			$updated = update_post_meta( $object->get_id(), $meta_key, $meta_value );
277
-		}
278
-
279
-		return (bool) $updated;
280
-	}
281
-
282
-	/**
283
-	 * Return list of internal meta keys.
284
-	 *
285
-	 * @since 1.0.19
286
-	 * @return array
287
-	 */
288
-	public function get_internal_meta_keys() {
289
-		return $this->internal_meta_keys;
290
-	}
291
-
292
-	/**
293
-	 * Clear any caches.
294
-	 *
295
-	 * @param GetPaid_Data $object GetPaid_Data object.
296
-	 * @since 1.0.19
297
-	 */
298
-	protected function clear_caches( &$object ) {
299
-		clean_post_cache( $object->get_id() );
300
-	}
301
-
302
-	/**
303
-	 * Method to delete a data object from the database.
304
-	 *
305
-	 * @param GetPaid_Data $object GetPaid_Data object.
306
-	 * @param array    $args Array of args to pass to the delete method.
307
-	 *
308
-	 * @return void
309
-	 */
310
-	public function delete( &$object, $args = array() ) {
311
-		$id          = $object->get_id();
312
-		$object_type = $object->get_object_type();
313
-		$args        = wp_parse_args(
314
-			$args,
315
-			array(
316
-				'force_delete' => false,
317
-			)
318
-		);
319
-
320
-		if ( ! $id ) {
321
-			return;
322
-		}
323
-
324
-		if ( $args['force_delete'] ) {
325
-			wp_delete_post( $id, true );
326
-			$object->set_id( 0 );
327
-			do_action( "getpaid_delete_$object_type", $id );
328
-		} else {
329
-			wp_trash_post( $id );
330
-			$object->set_status( 'trash' );
331
-			do_action( "getpaid_trash_$object_type", $id );
332
-		}
333
-	}
334
-
335
-	/**
336
-	 * Get the status to save to the post object.
337
-	 *
338
-	 *
339
-	 * @since 1.0.19
340
-	 * @param  GetPaid_Data $object GetPaid_Data object.
341
-	 * @return string
342
-	 */
343
-	protected function get_post_status( $object ) {
344
-		$object_status = $object->get_status( 'edit' );
345
-		$object_type   = $object->get_object_type();
346
-
347
-		if ( ! $object_status ) {
348
-			$object_status = apply_filters( "getpaid_default_{$object_type}_status", 'draft' );
349
-		}
350
-
351
-		return $object_status;
352
-	}
76
+                $object->get_id()
77
+            )
78
+        );
79
+
80
+        $this->internal_meta_keys = array_merge( array_map( array( $this, 'prefix_key' ), $object->get_data_keys() ), $this->internal_meta_keys );
81
+        $meta_data                = array_filter( $raw_meta_data, array( $this, 'exclude_internal_meta_keys' ) );
82
+        return apply_filters( "getpaid_data_store_wp_{$this->meta_type}_read_meta", $meta_data, $object, $this );
83
+    }
84
+
85
+    /**
86
+     * Deletes meta based on meta ID.
87
+     *
88
+     * @since  1.0.19
89
+     * @param  GetPaid_Data  $object GetPaid_Data object.
90
+     * @param  stdClass $meta (containing at least ->id).
91
+     */
92
+    public function delete_meta( &$object, $meta ) {
93
+        delete_metadata_by_mid( $this->meta_type, $meta->id );
94
+    }
95
+
96
+    /**
97
+     * Add new piece of meta.
98
+     *
99
+     * @since  1.0.19
100
+     * @param  GetPaid_Data  $object GetPaid_Data object.
101
+     * @param  stdClass $meta (containing ->key and ->value).
102
+     * @return int meta ID
103
+     */
104
+    public function add_meta( &$object, $meta ) {
105
+        return add_metadata( $this->meta_type, $object->get_id(), $meta->key, is_string( $meta->value ) ? wp_slash( $meta->value ) : $meta->value, false );
106
+    }
107
+
108
+    /**
109
+     * Update meta.
110
+     *
111
+     * @since  1.0.19
112
+     * @param  GetPaid_Data  $object GetPaid_Data object.
113
+     * @param  stdClass $meta (containing ->id, ->key and ->value).
114
+     */
115
+    public function update_meta( &$object, $meta ) {
116
+        update_metadata_by_mid( $this->meta_type, $meta->id, $meta->value, $meta->key );
117
+    }
118
+
119
+    /**
120
+     * Table structure is slightly different between meta types, this function will return what we need to know.
121
+     *
122
+     * @since  1.0.19
123
+     * @return array Array elements: table, object_id_field, meta_id_field
124
+     */
125
+    protected function get_db_info() {
126
+        global $wpdb;
127
+
128
+        $meta_id_field = 'meta_id'; // users table calls this umeta_id so we need to track this as well.
129
+        $table         = $wpdb->prefix;
130
+
131
+        // If we are dealing with a type of metadata that is not a core type, the table should be prefixed.
132
+        if ( ! in_array( $this->meta_type, array( 'post', 'user', 'comment', 'term' ), true ) ) {
133
+            $table .= 'getpaid_';
134
+        }
135
+
136
+        $table          .= $this->meta_type . 'meta';
137
+        $object_id_field = $this->meta_type . '_id';
138
+
139
+        // Figure out our field names.
140
+        if ( 'user' === $this->meta_type ) {
141
+            $meta_id_field = 'umeta_id';
142
+            $table         = $wpdb->usermeta;
143
+        }
144
+
145
+        if ( ! empty( $this->object_id_field_for_meta ) ) {
146
+            $object_id_field = $this->object_id_field_for_meta;
147
+        }
148
+
149
+        return array(
150
+            'table'           => $table,
151
+            'object_id_field' => $object_id_field,
152
+            'meta_id_field'   => $meta_id_field,
153
+        );
154
+    }
155
+
156
+    /**
157
+     * Internal meta keys we don't want exposed as part of meta_data. This is in
158
+     * addition to all data props with _ prefix.
159
+     *
160
+     * @since 1.0.19
161
+     *
162
+     * @param string $key Prefix to be added to meta keys.
163
+     * @return string
164
+     */
165
+    protected function prefix_key( $key ) {
166
+        return '_' === substr( $key, 0, 1 ) ? $key : '_' . $key;
167
+    }
168
+
169
+    /**
170
+     * Callback to remove unwanted meta data.
171
+     *
172
+     * @param object $meta Meta object to check if it should be excluded or not.
173
+     * @return bool
174
+     */
175
+    protected function exclude_internal_meta_keys( $meta ) {
176
+        return ! in_array( $meta->meta_key, $this->internal_meta_keys, true ) && 0 !== stripos( $meta->meta_key, 'wp_' );
177
+    }
178
+
179
+    /**
180
+     * Gets a list of props and meta keys that need updated based on change state
181
+     * or if they are present in the database or not.
182
+     *
183
+     * @param  GetPaid_Data $object         The GetPaid_Data object.
184
+     * @param  array   $meta_key_to_props   A mapping of meta keys => prop names.
185
+     * @param  string  $meta_type           The internal WP meta type (post, user, etc).
186
+     * @return array                        A mapping of meta keys => prop names, filtered by ones that should be updated.
187
+     */
188
+    protected function get_props_to_update( $object, $meta_key_to_props, $meta_type = 'post' ) {
189
+        $props_to_update = array();
190
+        $changed_props   = $object->get_changes();
191
+
192
+        // Props should be updated if they are a part of the $changed array or don't exist yet.
193
+        foreach ( $meta_key_to_props as $meta_key => $prop ) {
194
+            if ( array_key_exists( $prop, $changed_props ) || ! metadata_exists( $meta_type, $object->get_id(), $meta_key ) ) {
195
+                $props_to_update[ $meta_key ] = $prop;
196
+            }
197
+        }
198
+
199
+        return $props_to_update;
200
+    }
201
+
202
+    /**
203
+     * Read object data.
204
+     *
205
+     * @param GetPaid_Data $object GetPaid_Data object.
206
+     * @param WP_Post   $post_object Post object.
207
+     * @since 1.0.19
208
+     */
209
+    protected function read_object_data( &$object, $post_object ) {
210
+        $id    = $object->get_id();
211
+        $props = array();
212
+
213
+        foreach ( $this->meta_key_to_props as $meta_key => $prop ) {
214
+            $props[ $prop ] = get_post_meta( $id, $meta_key, true );
215
+        }
216
+
217
+        // Set object properties.
218
+        $object->set_props( $props );
219
+
220
+        // Gets extra data associated with the object if needed.
221
+        foreach ( $object->get_extra_data_keys() as $key ) {
222
+            $function = 'set_' . $key;
223
+            if ( is_callable( array( $object, $function ) ) ) {
224
+                $object->{$function}( get_post_meta( $object->get_id(), $key, true ) );
225
+            }
226
+        }
227
+    }
228
+
229
+    /**
230
+     * Helper method that updates all the post meta for an object based on it's settings in the GetPaid_Data class.
231
+     *
232
+     * @param GetPaid_Data $object GetPaid_Data object.
233
+     * @since 1.0.19
234
+     */
235
+    protected function update_post_meta( &$object ) {
236
+
237
+        $updated_props   = array();
238
+        $props_to_update = $this->get_props_to_update( $object, $this->meta_key_to_props );
239
+        $object_type     = $object->get_object_type();
240
+
241
+        foreach ( $props_to_update as $meta_key => $prop ) {
242
+            $value = $object->{"get_$prop"}( 'edit' );
243
+            $value = is_string( $value ) ? wp_slash( $value ) : $value;
244
+
245
+            $updated = $this->update_or_delete_post_meta( $object, $meta_key, $value );
246
+
247
+            if ( $updated ) {
248
+                $updated_props[] = $prop;
249
+            }
250
+        }
251
+
252
+        do_action( "getpaid_{$object_type}_object_updated_props", $object, $updated_props );
253
+    }
254
+
255
+    /**
256
+     * Update meta data in, or delete it from, the database.
257
+     *
258
+     * Avoids storing meta when it's either an empty string or empty array or null.
259
+     * Other empty values such as numeric 0 should still be stored.
260
+     * Data-stores can force meta to exist using `must_exist_meta_keys`.
261
+     *
262
+     * Note: WordPress `get_metadata` function returns an empty string when meta data does not exist.
263
+     *
264
+     * @param GetPaid_Data $object The GetPaid_Data object.
265
+     * @param string  $meta_key Meta key to update.
266
+     * @param mixed   $meta_value Value to save.
267
+     *
268
+     * @since 1.0.19 Added to prevent empty meta being stored unless required.
269
+     *
270
+     * @return bool True if updated/deleted.
271
+     */
272
+    protected function update_or_delete_post_meta( $object, $meta_key, $meta_value ) {
273
+        if ( in_array( $meta_value, array( array(), '', null ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
274
+            $updated = delete_post_meta( $object->get_id(), $meta_key );
275
+        } else {
276
+            $updated = update_post_meta( $object->get_id(), $meta_key, $meta_value );
277
+        }
278
+
279
+        return (bool) $updated;
280
+    }
281
+
282
+    /**
283
+     * Return list of internal meta keys.
284
+     *
285
+     * @since 1.0.19
286
+     * @return array
287
+     */
288
+    public function get_internal_meta_keys() {
289
+        return $this->internal_meta_keys;
290
+    }
291
+
292
+    /**
293
+     * Clear any caches.
294
+     *
295
+     * @param GetPaid_Data $object GetPaid_Data object.
296
+     * @since 1.0.19
297
+     */
298
+    protected function clear_caches( &$object ) {
299
+        clean_post_cache( $object->get_id() );
300
+    }
301
+
302
+    /**
303
+     * Method to delete a data object from the database.
304
+     *
305
+     * @param GetPaid_Data $object GetPaid_Data object.
306
+     * @param array    $args Array of args to pass to the delete method.
307
+     *
308
+     * @return void
309
+     */
310
+    public function delete( &$object, $args = array() ) {
311
+        $id          = $object->get_id();
312
+        $object_type = $object->get_object_type();
313
+        $args        = wp_parse_args(
314
+            $args,
315
+            array(
316
+                'force_delete' => false,
317
+            )
318
+        );
319
+
320
+        if ( ! $id ) {
321
+            return;
322
+        }
323
+
324
+        if ( $args['force_delete'] ) {
325
+            wp_delete_post( $id, true );
326
+            $object->set_id( 0 );
327
+            do_action( "getpaid_delete_$object_type", $id );
328
+        } else {
329
+            wp_trash_post( $id );
330
+            $object->set_status( 'trash' );
331
+            do_action( "getpaid_trash_$object_type", $id );
332
+        }
333
+    }
334
+
335
+    /**
336
+     * Get the status to save to the post object.
337
+     *
338
+     *
339
+     * @since 1.0.19
340
+     * @param  GetPaid_Data $object GetPaid_Data object.
341
+     * @return string
342
+     */
343
+    protected function get_post_status( $object ) {
344
+        $object_status = $object->get_status( 'edit' );
345
+        $object_type   = $object->get_object_type();
346
+
347
+        if ( ! $object_status ) {
348
+            $object_status = apply_filters( "getpaid_default_{$object_type}_status", 'draft' );
349
+        }
350
+
351
+        return $object_status;
352
+    }
353 353
 
354 354
 }
Please login to merge, or discard this patch.
Spacing   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -5,7 +5,7 @@  discard block
 block discarded – undo
5 5
  * @version 1.0.19
6 6
  */
7 7
 
8
-defined( 'ABSPATH' ) || exit;
8
+defined('ABSPATH') || exit;
9 9
 
10 10
 /**
11 11
  * GetPaid_Data_Store_WP class.
@@ -64,7 +64,7 @@  discard block
 block discarded – undo
64 64
 	 * @param  GetPaid_Data $object GetPaid_Data object.
65 65
 	 * @return array
66 66
 	 */
67
-	public function read_meta( &$object ) {
67
+	public function read_meta(&$object) {
68 68
 		global $wpdb;
69 69
 		$db_info       = $this->get_db_info();
70 70
 		$raw_meta_data = $wpdb->get_results(
@@ -77,9 +77,9 @@  discard block
 block discarded – undo
77 77
 			)
78 78
 		);
79 79
 
80
-		$this->internal_meta_keys = array_merge( array_map( array( $this, 'prefix_key' ), $object->get_data_keys() ), $this->internal_meta_keys );
81
-		$meta_data                = array_filter( $raw_meta_data, array( $this, 'exclude_internal_meta_keys' ) );
82
-		return apply_filters( "getpaid_data_store_wp_{$this->meta_type}_read_meta", $meta_data, $object, $this );
80
+		$this->internal_meta_keys = array_merge(array_map(array($this, 'prefix_key'), $object->get_data_keys()), $this->internal_meta_keys);
81
+		$meta_data                = array_filter($raw_meta_data, array($this, 'exclude_internal_meta_keys'));
82
+		return apply_filters("getpaid_data_store_wp_{$this->meta_type}_read_meta", $meta_data, $object, $this);
83 83
 	}
84 84
 
85 85
 	/**
@@ -89,8 +89,8 @@  discard block
 block discarded – undo
89 89
 	 * @param  GetPaid_Data  $object GetPaid_Data object.
90 90
 	 * @param  stdClass $meta (containing at least ->id).
91 91
 	 */
92
-	public function delete_meta( &$object, $meta ) {
93
-		delete_metadata_by_mid( $this->meta_type, $meta->id );
92
+	public function delete_meta(&$object, $meta) {
93
+		delete_metadata_by_mid($this->meta_type, $meta->id);
94 94
 	}
95 95
 
96 96
 	/**
@@ -101,8 +101,8 @@  discard block
 block discarded – undo
101 101
 	 * @param  stdClass $meta (containing ->key and ->value).
102 102
 	 * @return int meta ID
103 103
 	 */
104
-	public function add_meta( &$object, $meta ) {
105
-		return add_metadata( $this->meta_type, $object->get_id(), $meta->key, is_string( $meta->value ) ? wp_slash( $meta->value ) : $meta->value, false );
104
+	public function add_meta(&$object, $meta) {
105
+		return add_metadata($this->meta_type, $object->get_id(), $meta->key, is_string($meta->value) ? wp_slash($meta->value) : $meta->value, false);
106 106
 	}
107 107
 
108 108
 	/**
@@ -112,8 +112,8 @@  discard block
 block discarded – undo
112 112
 	 * @param  GetPaid_Data  $object GetPaid_Data object.
113 113
 	 * @param  stdClass $meta (containing ->id, ->key and ->value).
114 114
 	 */
115
-	public function update_meta( &$object, $meta ) {
116
-		update_metadata_by_mid( $this->meta_type, $meta->id, $meta->value, $meta->key );
115
+	public function update_meta(&$object, $meta) {
116
+		update_metadata_by_mid($this->meta_type, $meta->id, $meta->value, $meta->key);
117 117
 	}
118 118
 
119 119
 	/**
@@ -129,7 +129,7 @@  discard block
 block discarded – undo
129 129
 		$table         = $wpdb->prefix;
130 130
 
131 131
 		// If we are dealing with a type of metadata that is not a core type, the table should be prefixed.
132
-		if ( ! in_array( $this->meta_type, array( 'post', 'user', 'comment', 'term' ), true ) ) {
132
+		if (!in_array($this->meta_type, array('post', 'user', 'comment', 'term'), true)) {
133 133
 			$table .= 'getpaid_';
134 134
 		}
135 135
 
@@ -137,12 +137,12 @@  discard block
 block discarded – undo
137 137
 		$object_id_field = $this->meta_type . '_id';
138 138
 
139 139
 		// Figure out our field names.
140
-		if ( 'user' === $this->meta_type ) {
140
+		if ('user' === $this->meta_type) {
141 141
 			$meta_id_field = 'umeta_id';
142 142
 			$table         = $wpdb->usermeta;
143 143
 		}
144 144
 
145
-		if ( ! empty( $this->object_id_field_for_meta ) ) {
145
+		if (!empty($this->object_id_field_for_meta)) {
146 146
 			$object_id_field = $this->object_id_field_for_meta;
147 147
 		}
148 148
 
@@ -162,8 +162,8 @@  discard block
 block discarded – undo
162 162
 	 * @param string $key Prefix to be added to meta keys.
163 163
 	 * @return string
164 164
 	 */
165
-	protected function prefix_key( $key ) {
166
-		return '_' === substr( $key, 0, 1 ) ? $key : '_' . $key;
165
+	protected function prefix_key($key) {
166
+		return '_' === substr($key, 0, 1) ? $key : '_' . $key;
167 167
 	}
168 168
 
169 169
 	/**
@@ -172,8 +172,8 @@  discard block
 block discarded – undo
172 172
 	 * @param object $meta Meta object to check if it should be excluded or not.
173 173
 	 * @return bool
174 174
 	 */
175
-	protected function exclude_internal_meta_keys( $meta ) {
176
-		return ! in_array( $meta->meta_key, $this->internal_meta_keys, true ) && 0 !== stripos( $meta->meta_key, 'wp_' );
175
+	protected function exclude_internal_meta_keys($meta) {
176
+		return !in_array($meta->meta_key, $this->internal_meta_keys, true) && 0 !== stripos($meta->meta_key, 'wp_');
177 177
 	}
178 178
 
179 179
 	/**
@@ -185,14 +185,14 @@  discard block
 block discarded – undo
185 185
 	 * @param  string  $meta_type           The internal WP meta type (post, user, etc).
186 186
 	 * @return array                        A mapping of meta keys => prop names, filtered by ones that should be updated.
187 187
 	 */
188
-	protected function get_props_to_update( $object, $meta_key_to_props, $meta_type = 'post' ) {
188
+	protected function get_props_to_update($object, $meta_key_to_props, $meta_type = 'post') {
189 189
 		$props_to_update = array();
190 190
 		$changed_props   = $object->get_changes();
191 191
 
192 192
 		// Props should be updated if they are a part of the $changed array or don't exist yet.
193
-		foreach ( $meta_key_to_props as $meta_key => $prop ) {
194
-			if ( array_key_exists( $prop, $changed_props ) || ! metadata_exists( $meta_type, $object->get_id(), $meta_key ) ) {
195
-				$props_to_update[ $meta_key ] = $prop;
193
+		foreach ($meta_key_to_props as $meta_key => $prop) {
194
+			if (array_key_exists($prop, $changed_props) || !metadata_exists($meta_type, $object->get_id(), $meta_key)) {
195
+				$props_to_update[$meta_key] = $prop;
196 196
 			}
197 197
 		}
198 198
 
@@ -206,22 +206,22 @@  discard block
 block discarded – undo
206 206
 	 * @param WP_Post   $post_object Post object.
207 207
 	 * @since 1.0.19
208 208
 	 */
209
-	protected function read_object_data( &$object, $post_object ) {
209
+	protected function read_object_data(&$object, $post_object) {
210 210
 		$id    = $object->get_id();
211 211
 		$props = array();
212 212
 
213
-		foreach ( $this->meta_key_to_props as $meta_key => $prop ) {
214
-			$props[ $prop ] = get_post_meta( $id, $meta_key, true );
213
+		foreach ($this->meta_key_to_props as $meta_key => $prop) {
214
+			$props[$prop] = get_post_meta($id, $meta_key, true);
215 215
 		}
216 216
 
217 217
 		// Set object properties.
218
-		$object->set_props( $props );
218
+		$object->set_props($props);
219 219
 
220 220
 		// Gets extra data associated with the object if needed.
221
-		foreach ( $object->get_extra_data_keys() as $key ) {
221
+		foreach ($object->get_extra_data_keys() as $key) {
222 222
 			$function = 'set_' . $key;
223
-			if ( is_callable( array( $object, $function ) ) ) {
224
-				$object->{$function}( get_post_meta( $object->get_id(), $key, true ) );
223
+			if (is_callable(array($object, $function))) {
224
+				$object->{$function}(get_post_meta($object->get_id(), $key, true));
225 225
 			}
226 226
 		}
227 227
 	}
@@ -232,24 +232,24 @@  discard block
 block discarded – undo
232 232
 	 * @param GetPaid_Data $object GetPaid_Data object.
233 233
 	 * @since 1.0.19
234 234
 	 */
235
-	protected function update_post_meta( &$object ) {
235
+	protected function update_post_meta(&$object) {
236 236
 
237 237
 		$updated_props   = array();
238
-		$props_to_update = $this->get_props_to_update( $object, $this->meta_key_to_props );
238
+		$props_to_update = $this->get_props_to_update($object, $this->meta_key_to_props);
239 239
 		$object_type     = $object->get_object_type();
240 240
 
241
-		foreach ( $props_to_update as $meta_key => $prop ) {
242
-			$value = $object->{"get_$prop"}( 'edit' );
243
-			$value = is_string( $value ) ? wp_slash( $value ) : $value;
241
+		foreach ($props_to_update as $meta_key => $prop) {
242
+			$value = $object->{"get_$prop"}('edit');
243
+			$value = is_string($value) ? wp_slash($value) : $value;
244 244
 
245
-			$updated = $this->update_or_delete_post_meta( $object, $meta_key, $value );
245
+			$updated = $this->update_or_delete_post_meta($object, $meta_key, $value);
246 246
 
247
-			if ( $updated ) {
247
+			if ($updated) {
248 248
 				$updated_props[] = $prop;
249 249
 			}
250 250
 		}
251 251
 
252
-		do_action( "getpaid_{$object_type}_object_updated_props", $object, $updated_props );
252
+		do_action("getpaid_{$object_type}_object_updated_props", $object, $updated_props);
253 253
 	}
254 254
 
255 255
 	/**
@@ -269,11 +269,11 @@  discard block
 block discarded – undo
269 269
 	 *
270 270
 	 * @return bool True if updated/deleted.
271 271
 	 */
272
-	protected function update_or_delete_post_meta( $object, $meta_key, $meta_value ) {
273
-		if ( in_array( $meta_value, array( array(), '', null ), true ) && ! in_array( $meta_key, $this->must_exist_meta_keys, true ) ) {
274
-			$updated = delete_post_meta( $object->get_id(), $meta_key );
272
+	protected function update_or_delete_post_meta($object, $meta_key, $meta_value) {
273
+		if (in_array($meta_value, array(array(), '', null), true) && !in_array($meta_key, $this->must_exist_meta_keys, true)) {
274
+			$updated = delete_post_meta($object->get_id(), $meta_key);
275 275
 		} else {
276
-			$updated = update_post_meta( $object->get_id(), $meta_key, $meta_value );
276
+			$updated = update_post_meta($object->get_id(), $meta_key, $meta_value);
277 277
 		}
278 278
 
279 279
 		return (bool) $updated;
@@ -295,8 +295,8 @@  discard block
 block discarded – undo
295 295
 	 * @param GetPaid_Data $object GetPaid_Data object.
296 296
 	 * @since 1.0.19
297 297
 	 */
298
-	protected function clear_caches( &$object ) {
299
-		clean_post_cache( $object->get_id() );
298
+	protected function clear_caches(&$object) {
299
+		clean_post_cache($object->get_id());
300 300
 	}
301 301
 
302 302
 	/**
@@ -307,7 +307,7 @@  discard block
 block discarded – undo
307 307
 	 *
308 308
 	 * @return void
309 309
 	 */
310
-	public function delete( &$object, $args = array() ) {
310
+	public function delete(&$object, $args = array()) {
311 311
 		$id          = $object->get_id();
312 312
 		$object_type = $object->get_object_type();
313 313
 		$args        = wp_parse_args(
@@ -317,18 +317,18 @@  discard block
 block discarded – undo
317 317
 			)
318 318
 		);
319 319
 
320
-		if ( ! $id ) {
320
+		if (!$id) {
321 321
 			return;
322 322
 		}
323 323
 
324
-		if ( $args['force_delete'] ) {
325
-			wp_delete_post( $id, true );
326
-			$object->set_id( 0 );
327
-			do_action( "getpaid_delete_$object_type", $id );
324
+		if ($args['force_delete']) {
325
+			wp_delete_post($id, true);
326
+			$object->set_id(0);
327
+			do_action("getpaid_delete_$object_type", $id);
328 328
 		} else {
329
-			wp_trash_post( $id );
330
-			$object->set_status( 'trash' );
331
-			do_action( "getpaid_trash_$object_type", $id );
329
+			wp_trash_post($id);
330
+			$object->set_status('trash');
331
+			do_action("getpaid_trash_$object_type", $id);
332 332
 		}
333 333
 	}
334 334
 
@@ -340,12 +340,12 @@  discard block
 block discarded – undo
340 340
 	 * @param  GetPaid_Data $object GetPaid_Data object.
341 341
 	 * @return string
342 342
 	 */
343
-	protected function get_post_status( $object ) {
344
-		$object_status = $object->get_status( 'edit' );
343
+	protected function get_post_status($object) {
344
+		$object_status = $object->get_status('edit');
345 345
 		$object_type   = $object->get_object_type();
346 346
 
347
-		if ( ! $object_status ) {
348
-			$object_status = apply_filters( "getpaid_default_{$object_type}_status", 'draft' );
347
+		if (!$object_status) {
348
+			$object_status = apply_filters("getpaid_default_{$object_type}_status", 'draft');
349 349
 		}
350 350
 
351 351
 		return $object_status;
Please login to merge, or discard this patch.
includes/data-stores/class-getpaid-data-store.php 2 patches
Indentation   +178 added lines, -178 removed lines patch added patch discarded remove patch
@@ -11,183 +11,183 @@
 block discarded – undo
11 11
  */
12 12
 class GetPaid_Data_Store {
13 13
 
14
-	/**
15
-	 * Contains an instance of the data store class that we are working with.
16
-	 *
17
-	 * @var GetPaid_Data_Store
18
-	 */
19
-	private $instance = null;
20
-
21
-	/**
22
-	 * Contains an array of default supported data stores.
23
-	 * Format of object name => class name.
24
-	 * Example: 'item' => 'GetPaid_Item_Data_Store'
25
-	 * You can also pass something like item-<type> for item stores and
26
-	 * that type will be used first when available, if a store is requested like
27
-	 * this and doesn't exist, then the store would fall back to 'item'.
28
-	 * Ran through `getpaid_data_stores`.
29
-	 *
30
-	 * @var array
31
-	 */
32
-	private $stores = array(
33
-		'item'         => 'GetPaid_Item_Data_Store',
34
-		'payment_form' => 'GetPaid_Payment_Form_Data_Store',
35
-	);
36
-
37
-	/**
38
-	 * Contains the name of the current data store's class name.
39
-	 *
40
-	 * @var string
41
-	 */
42
-	private $current_class_name = '';
43
-
44
-	/**
45
-	 * The object type this store works with.
46
-	 *
47
-	 * @var string
48
-	 */
49
-	private $object_type = '';
50
-
51
-	/**
52
-	 * Tells GetPaid_Data_Store which object
53
-	 * store we want to work with.
54
-	 *
55
-	 * @param string $object_type Name of object.
56
-	 */
57
-	public function __construct( $object_type ) {
58
-		$this->object_type = $object_type;
59
-		$this->stores      = apply_filters( 'getpaid_data_stores', $this->stores );
60
-
61
-		// If this object type can't be found, check to see if we can load one
62
-		// level up (so if item-type isn't found, we try item).
63
-		if ( ! array_key_exists( $object_type, $this->stores ) ) {
64
-			$pieces      = explode( '-', $object_type );
65
-			$object_type = $pieces[0];
66
-		}
67
-
68
-		if ( array_key_exists( $object_type, $this->stores ) ) {
69
-			$store = apply_filters( 'getpaid_' . $object_type . '_data_store', $this->stores[ $object_type ] );
70
-			if ( is_object( $store ) ) {
71
-				$this->current_class_name = get_class( $store );
72
-				$this->instance           = $store;
73
-			} else {
74
-				if ( ! class_exists( $store ) ) {
75
-					throw new Exception( __( 'Data store class does not exist.', 'invoicing' ) );
76
-				}
77
-				$this->current_class_name = $store;
78
-				$this->instance           = new $store();
79
-			}
80
-		} else {
81
-			throw new Exception( __( 'Invalid data store.', 'invoicing' ) );
82
-		}
83
-	}
84
-
85
-	/**
86
-	 * Only store the object type to avoid serializing the data store instance.
87
-	 *
88
-	 * @return array
89
-	 */
90
-	public function __sleep() {
91
-		return array( 'object_type' );
92
-	}
93
-
94
-	/**
95
-	 * Re-run the constructor with the object type.
96
-	 *
97
-	 * @throws Exception When validation fails.
98
-	 */
99
-	public function __wakeup() {
100
-		$this->__construct( $this->object_type );
101
-	}
102
-
103
-	/**
104
-	 * Loads a data store.
105
-	 *
106
-	 * @param string $object_type Name of object.
107
-	 *
108
-	 * @since 1.0.19
109
-	 * @throws Exception When validation fails.
110
-	 * @return GetPaid_Data_Store
111
-	 */
112
-	public static function load( $object_type ) {
113
-		return new GetPaid_Data_Store( $object_type );
114
-	}
115
-
116
-	/**
117
-	 * Returns the class name of the current data store.
118
-	 *
119
-	 * @since 1.0.19
120
-	 * @return string
121
-	 */
122
-	public function get_current_class_name() {
123
-		return $this->current_class_name;
124
-	}
125
-
126
-	/**
127
-	 * Returns the object type of the current data store.
128
-	 *
129
-	 * @since 1.0.19
130
-	 * @return string
131
-	 */
132
-	public function get_object_type() {
133
-		return $this->object_type;
134
-	}
135
-
136
-	/**
137
-	 * Reads an object from the data store.
138
-	 *
139
-	 * @since 1.0.19
140
-	 * @param GetPaid_Data $data GetPaid data instance.
141
-	 */
142
-	public function read( &$data ) {
143
-		$this->instance->read( $data );
144
-	}
145
-
146
-	/**
147
-	 * Create an object in the data store.
148
-	 *
149
-	 * @since 1.0.19
150
-	 * @param GetPaid_Data $data GetPaid data instance.
151
-	 */
152
-	public function create( &$data ) {
153
-		$this->instance->create( $data );
154
-	}
155
-
156
-	/**
157
-	 * Update an object in the data store.
158
-	 *
159
-	 * @since 1.0.19
160
-	 * @param GetPaid_Data $data GetPaid data instance.
161
-	 */
162
-	public function update( &$data ) {
163
-		$this->instance->update( $data );
164
-	}
165
-
166
-	/**
167
-	 * Delete an object from the data store.
168
-	 *
169
-	 * @since 1.0.19
170
-	 * @param GetPaid_Data $data GetPaid data instance.
171
-	 * @param array   $args Array of args to pass to the delete method.
172
-	 */
173
-	public function delete( &$data, $args = array() ) {
174
-		$this->instance->delete( $data, $args );
175
-	}
176
-
177
-	/**
178
-	 * Data stores can define additional function. This passes
179
-	 * through to the instance if that function exists.
180
-	 *
181
-	 * @since 1.0.19
182
-	 * @param string $method     Method.
183
-	 * @return mixed
184
-	 */
185
-	public function __call( $method, $parameters ) {
186
-		if ( is_callable( array( $this->instance, $method ) ) ) {
187
-			$object     = array_shift( $parameters );
188
-			$parameters = array_merge( array( &$object ), $parameters );
189
-			return call_user_func_array( array( $this->instance, $method ), $parameters );
190
-		}
191
-	}
14
+    /**
15
+     * Contains an instance of the data store class that we are working with.
16
+     *
17
+     * @var GetPaid_Data_Store
18
+     */
19
+    private $instance = null;
20
+
21
+    /**
22
+     * Contains an array of default supported data stores.
23
+     * Format of object name => class name.
24
+     * Example: 'item' => 'GetPaid_Item_Data_Store'
25
+     * You can also pass something like item-<type> for item stores and
26
+     * that type will be used first when available, if a store is requested like
27
+     * this and doesn't exist, then the store would fall back to 'item'.
28
+     * Ran through `getpaid_data_stores`.
29
+     *
30
+     * @var array
31
+     */
32
+    private $stores = array(
33
+        'item'         => 'GetPaid_Item_Data_Store',
34
+        'payment_form' => 'GetPaid_Payment_Form_Data_Store',
35
+    );
36
+
37
+    /**
38
+     * Contains the name of the current data store's class name.
39
+     *
40
+     * @var string
41
+     */
42
+    private $current_class_name = '';
43
+
44
+    /**
45
+     * The object type this store works with.
46
+     *
47
+     * @var string
48
+     */
49
+    private $object_type = '';
50
+
51
+    /**
52
+     * Tells GetPaid_Data_Store which object
53
+     * store we want to work with.
54
+     *
55
+     * @param string $object_type Name of object.
56
+     */
57
+    public function __construct( $object_type ) {
58
+        $this->object_type = $object_type;
59
+        $this->stores      = apply_filters( 'getpaid_data_stores', $this->stores );
60
+
61
+        // If this object type can't be found, check to see if we can load one
62
+        // level up (so if item-type isn't found, we try item).
63
+        if ( ! array_key_exists( $object_type, $this->stores ) ) {
64
+            $pieces      = explode( '-', $object_type );
65
+            $object_type = $pieces[0];
66
+        }
67
+
68
+        if ( array_key_exists( $object_type, $this->stores ) ) {
69
+            $store = apply_filters( 'getpaid_' . $object_type . '_data_store', $this->stores[ $object_type ] );
70
+            if ( is_object( $store ) ) {
71
+                $this->current_class_name = get_class( $store );
72
+                $this->instance           = $store;
73
+            } else {
74
+                if ( ! class_exists( $store ) ) {
75
+                    throw new Exception( __( 'Data store class does not exist.', 'invoicing' ) );
76
+                }
77
+                $this->current_class_name = $store;
78
+                $this->instance           = new $store();
79
+            }
80
+        } else {
81
+            throw new Exception( __( 'Invalid data store.', 'invoicing' ) );
82
+        }
83
+    }
84
+
85
+    /**
86
+     * Only store the object type to avoid serializing the data store instance.
87
+     *
88
+     * @return array
89
+     */
90
+    public function __sleep() {
91
+        return array( 'object_type' );
92
+    }
93
+
94
+    /**
95
+     * Re-run the constructor with the object type.
96
+     *
97
+     * @throws Exception When validation fails.
98
+     */
99
+    public function __wakeup() {
100
+        $this->__construct( $this->object_type );
101
+    }
102
+
103
+    /**
104
+     * Loads a data store.
105
+     *
106
+     * @param string $object_type Name of object.
107
+     *
108
+     * @since 1.0.19
109
+     * @throws Exception When validation fails.
110
+     * @return GetPaid_Data_Store
111
+     */
112
+    public static function load( $object_type ) {
113
+        return new GetPaid_Data_Store( $object_type );
114
+    }
115
+
116
+    /**
117
+     * Returns the class name of the current data store.
118
+     *
119
+     * @since 1.0.19
120
+     * @return string
121
+     */
122
+    public function get_current_class_name() {
123
+        return $this->current_class_name;
124
+    }
125
+
126
+    /**
127
+     * Returns the object type of the current data store.
128
+     *
129
+     * @since 1.0.19
130
+     * @return string
131
+     */
132
+    public function get_object_type() {
133
+        return $this->object_type;
134
+    }
135
+
136
+    /**
137
+     * Reads an object from the data store.
138
+     *
139
+     * @since 1.0.19
140
+     * @param GetPaid_Data $data GetPaid data instance.
141
+     */
142
+    public function read( &$data ) {
143
+        $this->instance->read( $data );
144
+    }
145
+
146
+    /**
147
+     * Create an object in the data store.
148
+     *
149
+     * @since 1.0.19
150
+     * @param GetPaid_Data $data GetPaid data instance.
151
+     */
152
+    public function create( &$data ) {
153
+        $this->instance->create( $data );
154
+    }
155
+
156
+    /**
157
+     * Update an object in the data store.
158
+     *
159
+     * @since 1.0.19
160
+     * @param GetPaid_Data $data GetPaid data instance.
161
+     */
162
+    public function update( &$data ) {
163
+        $this->instance->update( $data );
164
+    }
165
+
166
+    /**
167
+     * Delete an object from the data store.
168
+     *
169
+     * @since 1.0.19
170
+     * @param GetPaid_Data $data GetPaid data instance.
171
+     * @param array   $args Array of args to pass to the delete method.
172
+     */
173
+    public function delete( &$data, $args = array() ) {
174
+        $this->instance->delete( $data, $args );
175
+    }
176
+
177
+    /**
178
+     * Data stores can define additional function. This passes
179
+     * through to the instance if that function exists.
180
+     *
181
+     * @since 1.0.19
182
+     * @param string $method     Method.
183
+     * @return mixed
184
+     */
185
+    public function __call( $method, $parameters ) {
186
+        if ( is_callable( array( $this->instance, $method ) ) ) {
187
+            $object     = array_shift( $parameters );
188
+            $parameters = array_merge( array( &$object ), $parameters );
189
+            return call_user_func_array( array( $this->instance, $method ), $parameters );
190
+        }
191
+    }
192 192
 
193 193
 }
Please login to merge, or discard this patch.
Spacing   +29 added lines, -29 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
  * Data store class.
@@ -54,31 +54,31 @@  discard block
 block discarded – undo
54 54
 	 *
55 55
 	 * @param string $object_type Name of object.
56 56
 	 */
57
-	public function __construct( $object_type ) {
57
+	public function __construct($object_type) {
58 58
 		$this->object_type = $object_type;
59
-		$this->stores      = apply_filters( 'getpaid_data_stores', $this->stores );
59
+		$this->stores      = apply_filters('getpaid_data_stores', $this->stores);
60 60
 
61 61
 		// If this object type can't be found, check to see if we can load one
62 62
 		// level up (so if item-type isn't found, we try item).
63
-		if ( ! array_key_exists( $object_type, $this->stores ) ) {
64
-			$pieces      = explode( '-', $object_type );
63
+		if (!array_key_exists($object_type, $this->stores)) {
64
+			$pieces      = explode('-', $object_type);
65 65
 			$object_type = $pieces[0];
66 66
 		}
67 67
 
68
-		if ( array_key_exists( $object_type, $this->stores ) ) {
69
-			$store = apply_filters( 'getpaid_' . $object_type . '_data_store', $this->stores[ $object_type ] );
70
-			if ( is_object( $store ) ) {
71
-				$this->current_class_name = get_class( $store );
68
+		if (array_key_exists($object_type, $this->stores)) {
69
+			$store = apply_filters('getpaid_' . $object_type . '_data_store', $this->stores[$object_type]);
70
+			if (is_object($store)) {
71
+				$this->current_class_name = get_class($store);
72 72
 				$this->instance           = $store;
73 73
 			} else {
74
-				if ( ! class_exists( $store ) ) {
75
-					throw new Exception( __( 'Data store class does not exist.', 'invoicing' ) );
74
+				if (!class_exists($store)) {
75
+					throw new Exception(__('Data store class does not exist.', 'invoicing'));
76 76
 				}
77 77
 				$this->current_class_name = $store;
78 78
 				$this->instance           = new $store();
79 79
 			}
80 80
 		} else {
81
-			throw new Exception( __( 'Invalid data store.', 'invoicing' ) );
81
+			throw new Exception(__('Invalid data store.', 'invoicing'));
82 82
 		}
83 83
 	}
84 84
 
@@ -88,7 +88,7 @@  discard block
 block discarded – undo
88 88
 	 * @return array
89 89
 	 */
90 90
 	public function __sleep() {
91
-		return array( 'object_type' );
91
+		return array('object_type');
92 92
 	}
93 93
 
94 94
 	/**
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
 	 * @throws Exception When validation fails.
98 98
 	 */
99 99
 	public function __wakeup() {
100
-		$this->__construct( $this->object_type );
100
+		$this->__construct($this->object_type);
101 101
 	}
102 102
 
103 103
 	/**
@@ -109,8 +109,8 @@  discard block
 block discarded – undo
109 109
 	 * @throws Exception When validation fails.
110 110
 	 * @return GetPaid_Data_Store
111 111
 	 */
112
-	public static function load( $object_type ) {
113
-		return new GetPaid_Data_Store( $object_type );
112
+	public static function load($object_type) {
113
+		return new GetPaid_Data_Store($object_type);
114 114
 	}
115 115
 
116 116
 	/**
@@ -139,8 +139,8 @@  discard block
 block discarded – undo
139 139
 	 * @since 1.0.19
140 140
 	 * @param GetPaid_Data $data GetPaid data instance.
141 141
 	 */
142
-	public function read( &$data ) {
143
-		$this->instance->read( $data );
142
+	public function read(&$data) {
143
+		$this->instance->read($data);
144 144
 	}
145 145
 
146 146
 	/**
@@ -149,8 +149,8 @@  discard block
 block discarded – undo
149 149
 	 * @since 1.0.19
150 150
 	 * @param GetPaid_Data $data GetPaid data instance.
151 151
 	 */
152
-	public function create( &$data ) {
153
-		$this->instance->create( $data );
152
+	public function create(&$data) {
153
+		$this->instance->create($data);
154 154
 	}
155 155
 
156 156
 	/**
@@ -159,8 +159,8 @@  discard block
 block discarded – undo
159 159
 	 * @since 1.0.19
160 160
 	 * @param GetPaid_Data $data GetPaid data instance.
161 161
 	 */
162
-	public function update( &$data ) {
163
-		$this->instance->update( $data );
162
+	public function update(&$data) {
163
+		$this->instance->update($data);
164 164
 	}
165 165
 
166 166
 	/**
@@ -170,8 +170,8 @@  discard block
 block discarded – undo
170 170
 	 * @param GetPaid_Data $data GetPaid data instance.
171 171
 	 * @param array   $args Array of args to pass to the delete method.
172 172
 	 */
173
-	public function delete( &$data, $args = array() ) {
174
-		$this->instance->delete( $data, $args );
173
+	public function delete(&$data, $args = array()) {
174
+		$this->instance->delete($data, $args);
175 175
 	}
176 176
 
177 177
 	/**
@@ -182,11 +182,11 @@  discard block
 block discarded – undo
182 182
 	 * @param string $method     Method.
183 183
 	 * @return mixed
184 184
 	 */
185
-	public function __call( $method, $parameters ) {
186
-		if ( is_callable( array( $this->instance, $method ) ) ) {
187
-			$object     = array_shift( $parameters );
188
-			$parameters = array_merge( array( &$object ), $parameters );
189
-			return call_user_func_array( array( $this->instance, $method ), $parameters );
185
+	public function __call($method, $parameters) {
186
+		if (is_callable(array($this->instance, $method))) {
187
+			$object     = array_shift($parameters);
188
+			$parameters = array_merge(array(&$object), $parameters);
189
+			return call_user_func_array(array($this->instance, $method), $parameters);
190 190
 		}
191 191
 	}
192 192
 
Please login to merge, or discard this patch.
includes/class-wpinv.php 2 patches
Indentation   +56 added lines, -56 removed lines patch added patch discarded remove patch
@@ -161,10 +161,10 @@  discard block
 block discarded – undo
161 161
         require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-error-functions.php' );
162 162
 
163 163
         // Register autoloader.
164
-		try {
165
-			spl_autoload_register( array( $this, 'autoload' ), true );
166
-		} catch ( Exception $e ) {
167
-			wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
164
+        try {
165
+            spl_autoload_register( array( $this, 'autoload' ), true );
166
+        } catch ( Exception $e ) {
167
+            wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
168 168
         }
169 169
 
170 170
         require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-post-types.php' );
@@ -188,11 +188,11 @@  discard block
 block discarded – undo
188 188
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php' );
189 189
         require_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php' );
190 190
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php' );
191
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
192
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
193
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
194
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
195
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
191
+        require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
192
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
193
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
194
+        require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
195
+        require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
196 196
         require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' );
197 197
         require_once( WPINV_PLUGIN_DIR . 'widgets/getpaid.php' );
198 198
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-payment-form-elements.php' );
@@ -254,47 +254,47 @@  discard block
 block discarded – undo
254 254
     }
255 255
 
256 256
     /**
257
-	 * Class autoloader
258
-	 *
259
-	 * @param       string $class_name The name of the class to load.
260
-	 * @access      public
261
-	 * @since       1.0.19
262
-	 * @return      void
263
-	 */
264
-	public function autoload( $class_name ) {
265
-
266
-		// Normalize the class name...
267
-		$class_name  = strtolower( $class_name );
268
-
269
-		// ... and make sure it is our class.
270
-		if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
271
-			return;
272
-		}
273
-
274
-		// Next, prepare the file name from the class.
275
-		$file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
276
-
277
-		// And an array of possible locations in order of importance.
278
-		$locations = array(
279
-			'includes',
280
-			'includes/data-stores',
257
+     * Class autoloader
258
+     *
259
+     * @param       string $class_name The name of the class to load.
260
+     * @access      public
261
+     * @since       1.0.19
262
+     * @return      void
263
+     */
264
+    public function autoload( $class_name ) {
265
+
266
+        // Normalize the class name...
267
+        $class_name  = strtolower( $class_name );
268
+
269
+        // ... and make sure it is our class.
270
+        if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
271
+            return;
272
+        }
273
+
274
+        // Next, prepare the file name from the class.
275
+        $file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
276
+
277
+        // And an array of possible locations in order of importance.
278
+        $locations = array(
279
+            'includes',
280
+            'includes/data-stores',
281 281
             'includes/admin',
282 282
             'includes/admin/meta-boxes'
283
-		);
283
+        );
284 284
 
285
-		// Base path of the classes.
286
-		$plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
285
+        // Base path of the classes.
286
+        $plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
287 287
 
288
-		foreach ( $locations as $location ) {
288
+        foreach ( $locations as $location ) {
289 289
 
290
-			if ( file_exists( "$plugin_path/$location/$file_name" ) ) {
291
-				include "$plugin_path/$location/$file_name";
292
-				break;
293
-			}
290
+            if ( file_exists( "$plugin_path/$location/$file_name" ) ) {
291
+                include "$plugin_path/$location/$file_name";
292
+                break;
293
+            }
294 294
 
295
-		}
295
+        }
296 296
 
297
-	}
297
+    }
298 298
 
299 299
     public function init() {
300 300
     }
@@ -384,7 +384,7 @@  discard block
 block discarded – undo
384 384
             wp_register_style( 'jquery-ui-css', WPINV_PLUGIN_URL . 'assets/css/jquery-ui' . $suffix . '.css', array(), '1.8.16' );
385 385
             wp_enqueue_style( 'jquery-ui-css' );
386 386
             wp_deregister_style( 'yoast-seo-select2' );
387
-	        wp_deregister_style( 'yoast-seo-monorepo' );
387
+            wp_deregister_style( 'yoast-seo-monorepo' );
388 388
         }
389 389
 
390 390
         wp_register_style( 'wpinv_meta_box_style', WPINV_PLUGIN_URL . 'assets/css/meta-box.css', array(), WPINV_VERSION );
@@ -398,7 +398,7 @@  discard block
 block discarded – undo
398 398
         if ( $page == 'wpinv-subscriptions' ) {
399 399
             wp_enqueue_script( 'jquery-ui-datepicker' );
400 400
             wp_deregister_style( 'yoast-seo-select2' );
401
-	        wp_deregister_style( 'yoast-seo-monorepo' );
401
+            wp_deregister_style( 'yoast-seo-monorepo' );
402 402
         }
403 403
         
404 404
         if ( $enqueue_datepicker = apply_filters( 'wpinv_admin_enqueue_jquery_ui_datepicker', $enqueue ) ) {
@@ -564,19 +564,19 @@  discard block
 block discarded – undo
564 564
         require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' );
565 565
     }
566 566
 
567
-	/**
568
-	 * Register widgets
569
-	 *
570
-	 */
571
-	public function register_widgets() {
572
-		register_widget( "WPInv_Checkout_Widget" );
573
-		register_widget( "WPInv_History_Widget" );
574
-		register_widget( "WPInv_Receipt_Widget" );
575
-		register_widget( "WPInv_Subscriptions_Widget" );
576
-		register_widget( "WPInv_Buy_Item_Widget" );
567
+    /**
568
+     * Register widgets
569
+     *
570
+     */
571
+    public function register_widgets() {
572
+        register_widget( "WPInv_Checkout_Widget" );
573
+        register_widget( "WPInv_History_Widget" );
574
+        register_widget( "WPInv_Receipt_Widget" );
575
+        register_widget( "WPInv_Subscriptions_Widget" );
576
+        register_widget( "WPInv_Buy_Item_Widget" );
577 577
         register_widget( "WPInv_Messages_Widget" );
578 578
         register_widget( 'WPInv_GetPaid_Widget' );
579
-	}
579
+    }
580 580
     
581 581
     /**
582 582
      * Remove our pages from yoast sitemaps.
Please login to merge, or discard this patch.
Spacing   +268 added lines, -268 removed lines patch added patch discarded remove patch
@@ -7,15 +7,15 @@  discard block
 block discarded – undo
7 7
  */
8 8
  
9 9
 // MUST have WordPress.
10
-if ( !defined( 'WPINC' ) ) {
11
-    exit( 'Do NOT access this file directly: ' . basename( __FILE__ ) );
10
+if (!defined('WPINC')) {
11
+    exit('Do NOT access this file directly: ' . basename(__FILE__));
12 12
 }
13 13
 
14 14
 class WPInv_Plugin {
15 15
     private static $instance;
16 16
     
17 17
     public static function run() {
18
-        if ( !isset( self::$instance ) && !( self::$instance instanceof WPInv_Plugin ) ) {
18
+        if (!isset(self::$instance) && !(self::$instance instanceof WPInv_Plugin)) {
19 19
             self::$instance = new WPInv_Plugin;
20 20
             self::$instance->includes();
21 21
             self::$instance->actions();
@@ -33,35 +33,35 @@  discard block
 block discarded – undo
33 33
     }
34 34
     
35 35
     public function define_constants() {
36
-        define( 'WPINV_PLUGIN_DIR', plugin_dir_path( WPINV_PLUGIN_FILE ) );
37
-        define( 'WPINV_PLUGIN_URL', plugin_dir_url( WPINV_PLUGIN_FILE ) );
36
+        define('WPINV_PLUGIN_DIR', plugin_dir_path(WPINV_PLUGIN_FILE));
37
+        define('WPINV_PLUGIN_URL', plugin_dir_url(WPINV_PLUGIN_FILE));
38 38
     }
39 39
 
40 40
     private function actions() {
41 41
         /* Internationalize the text strings used. */
42
-        add_action( 'plugins_loaded', array( &$this, 'plugins_loaded' ) );
42
+        add_action('plugins_loaded', array(&$this, 'plugins_loaded'));
43 43
         
44 44
         /* Perform actions on admin initialization. */
45
-        add_action( 'admin_init', array( &$this, 'admin_init') );
46
-        add_action( 'init', array( &$this, 'init' ), 3 );
47
-        add_action( 'init', array( &$this, 'wpinv_actions' ) );
45
+        add_action('admin_init', array(&$this, 'admin_init'));
46
+        add_action('init', array(&$this, 'init'), 3);
47
+        add_action('init', array(&$this, 'wpinv_actions'));
48 48
         
49
-        if ( class_exists( 'BuddyPress' ) ) {
50
-            add_action( 'bp_include', array( &$this, 'bp_invoicing_init' ) );
49
+        if (class_exists('BuddyPress')) {
50
+            add_action('bp_include', array(&$this, 'bp_invoicing_init'));
51 51
         }
52 52
 
53
-        add_action( 'wp_enqueue_scripts', array( &$this, 'enqueue_scripts' ) );
54
-        add_action( 'wp_footer', array( &$this, 'wp_footer' ) );
55
-        add_action( 'widgets_init', array( &$this, 'register_widgets' ) );
56
-        add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'wpseo_exclude_from_sitemap_by_post_ids' ) );
53
+        add_action('wp_enqueue_scripts', array(&$this, 'enqueue_scripts'));
54
+        add_action('wp_footer', array(&$this, 'wp_footer'));
55
+        add_action('widgets_init', array(&$this, 'register_widgets'));
56
+        add_filter('wpseo_exclude_from_sitemap_by_post_ids', array($this, 'wpseo_exclude_from_sitemap_by_post_ids'));
57 57
 
58
-        if ( is_admin() ) {
59
-            add_action( 'admin_enqueue_scripts', array( &$this, 'admin_enqueue_scripts' ) );
60
-            add_filter( 'admin_body_class', array( &$this, 'admin_body_class' ) );
61
-            add_action( 'admin_init', array( &$this, 'init_ayecode_connect_helper' ) );
58
+        if (is_admin()) {
59
+            add_action('admin_enqueue_scripts', array(&$this, 'admin_enqueue_scripts'));
60
+            add_filter('admin_body_class', array(&$this, 'admin_body_class'));
61
+            add_action('admin_init', array(&$this, 'init_ayecode_connect_helper'));
62 62
 
63 63
         } else {
64
-            add_filter( 'pre_get_posts', array( &$this, 'pre_get_posts' ) );
64
+            add_filter('pre_get_posts', array(&$this, 'pre_get_posts'));
65 65
         }
66 66
         
67 67
         /**
@@ -71,28 +71,28 @@  discard block
 block discarded – undo
71 71
          *
72 72
          * @param WPInv_Plugin $this. Current WPInv_Plugin instance. Passed by reference.
73 73
          */
74
-        do_action_ref_array( 'wpinv_actions', array( &$this ) );
74
+        do_action_ref_array('wpinv_actions', array(&$this));
75 75
 
76
-        add_action( 'admin_init', array( &$this, 'activation_redirect') );
76
+        add_action('admin_init', array(&$this, 'activation_redirect'));
77 77
     }
78 78
 
79 79
     /**
80 80
      * Maybe show the AyeCode Connect Notice.
81 81
      */
82
-    public function init_ayecode_connect_helper(){
82
+    public function init_ayecode_connect_helper() {
83 83
         // AyeCode Connect notice
84
-        if ( is_admin() ){
84
+        if (is_admin()) {
85 85
             // set the strings so they can be translated
86 86
             $strings = array(
87
-                'connect_title' => __("WP Invoicing - an AyeCode product!","invoicing"),
88
-                'connect_external'  => __( "Please confirm you wish to connect your site?","invoicing" ),
89
-                'connect'           => sprintf( __( "<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s","invoicing" ),"<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>","</a>" ),
90
-                'connect_button'    => __("Connect Site","invoicing"),
91
-                'connecting_button'    => __("Connecting...","invoicing"),
92
-                'error_localhost'   => __( "This service will only work with a live domain, not a localhost.","invoicing" ),
93
-                'error'             => __( "Something went wrong, please refresh and try again.","invoicing" ),
87
+                'connect_title' => __("WP Invoicing - an AyeCode product!", "invoicing"),
88
+                'connect_external'  => __("Please confirm you wish to connect your site?", "invoicing"),
89
+                'connect'           => sprintf(__("<strong>Have a license?</strong> Forget about entering license keys or downloading zip files, connect your site for instant access. %slearn more%s", "invoicing"), "<a href='https://ayecode.io/introducing-ayecode-connect/' target='_blank'>", "</a>"),
90
+                'connect_button'    => __("Connect Site", "invoicing"),
91
+                'connecting_button'    => __("Connecting...", "invoicing"),
92
+                'error_localhost'   => __("This service will only work with a live domain, not a localhost.", "invoicing"),
93
+                'error'             => __("Something went wrong, please refresh and try again.", "invoicing"),
94 94
             );
95
-            new AyeCode_Connect_Helper($strings,array('wpi-addons'));
95
+            new AyeCode_Connect_Helper($strings, array('wpi-addons'));
96 96
         }
97 97
     }
98 98
     
@@ -100,10 +100,10 @@  discard block
 block discarded – undo
100 100
         /* Internationalize the text strings used. */
101 101
         $this->load_textdomain();
102 102
 
103
-        do_action( 'wpinv_loaded' );
103
+        do_action('wpinv_loaded');
104 104
 
105 105
         // Fix oxygen page builder conflict
106
-        if ( function_exists( 'ct_css_output' ) ) {
106
+        if (function_exists('ct_css_output')) {
107 107
             wpinv_oxygen_fix_conflict();
108 108
         }
109 109
     }
@@ -113,144 +113,144 @@  discard block
 block discarded – undo
113 113
      *
114 114
      * @since 1.0
115 115
      */
116
-    public function load_textdomain( $locale = NULL ) {
117
-        if ( empty( $locale ) ) {
118
-            $locale = is_admin() && function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale();
116
+    public function load_textdomain($locale = NULL) {
117
+        if (empty($locale)) {
118
+            $locale = is_admin() && function_exists('get_user_locale') ? get_user_locale() : get_locale();
119 119
         }
120 120
 
121
-        $locale = apply_filters( 'plugin_locale', $locale, 'invoicing' );
121
+        $locale = apply_filters('plugin_locale', $locale, 'invoicing');
122 122
         
123
-        unload_textdomain( 'invoicing' );
124
-        load_textdomain( 'invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo' );
125
-        load_plugin_textdomain( 'invoicing', false, WPINV_PLUGIN_DIR . 'languages' );
123
+        unload_textdomain('invoicing');
124
+        load_textdomain('invoicing', WP_LANG_DIR . '/invoicing/invoicing-' . $locale . '.mo');
125
+        load_plugin_textdomain('invoicing', false, WPINV_PLUGIN_DIR . 'languages');
126 126
         
127 127
         /**
128 128
          * Define language constants.
129 129
          */
130
-        require_once( WPINV_PLUGIN_DIR . 'language.php' );
130
+        require_once(WPINV_PLUGIN_DIR . 'language.php');
131 131
     }
132 132
 
133 133
     public function includes() {
134 134
         global $wpinv_options;
135 135
 
136
-        require_once( WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php' );
136
+        require_once(WPINV_PLUGIN_DIR . 'includes/admin/register-settings.php');
137 137
         $wpinv_options = wpinv_get_settings();
138 138
 
139 139
         // Load composer packages.
140
-        require_once( WPINV_PLUGIN_DIR . 'vendor/autoload.php' );
140
+        require_once(WPINV_PLUGIN_DIR . 'vendor/autoload.php');
141 141
 
142 142
         // load AUI
143
-        require_once( WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php' );
143
+        require_once(WPINV_PLUGIN_DIR . 'vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php');
144 144
 
145 145
         // Load the action scheduler.
146
-        require_once( WPINV_PLUGIN_DIR . 'includes/libraries/action-scheduler/action-scheduler.php' );
146
+        require_once(WPINV_PLUGIN_DIR . 'includes/libraries/action-scheduler/action-scheduler.php');
147 147
 
148 148
         // Load functions.
149
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php' );
150
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php' );
151
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php' );
152
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php' );
153
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php' );
154
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php' );
155
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-invoice-functions.php' );
156
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php' );
157
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php' );
158
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php' );
159
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php' );
160
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-user-functions.php' );
161
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-error-functions.php' );
149
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-email-functions.php');
150
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-general-functions.php');
151
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-helper-functions.php');
152
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-tax-functions.php');
153
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-template-functions.php');
154
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-address-functions.php');
155
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-invoice-functions.php');
156
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-item-functions.php');
157
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-discount-functions.php');
158
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-gateway-functions.php');
159
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-payment-functions.php');
160
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-user-functions.php');
161
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-error-functions.php');
162 162
 
163 163
         // Register autoloader.
164 164
 		try {
165
-			spl_autoload_register( array( $this, 'autoload' ), true );
166
-		} catch ( Exception $e ) {
167
-			wpinv_error_log( $e->getMessage(), '', __FILE__, 149, true );
168
-        }
169
-
170
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-post-types.php' );
171
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-invoice.php' );
172
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-discount.php' );
173
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-item.php' );
174
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-notes.php' );
175
-        require_once( WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php' );
176
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php' );
177
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php' );
178
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php' );
179
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-reports.php' );
180
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php' );
181
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php' );
182
-        require_once( WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php' );
183
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php' );
184
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions.php' );
185
-        require_once( WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php' );
186
-        require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-subscriptions-list-table.php' );
187
-        require_once( WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php' );
188
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php' );
189
-        require_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php' );
190
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php' );
191
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/checkout.php' );
192
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-history.php' );
193
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php' );
194
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php' );
195
-	    require_once( WPINV_PLUGIN_DIR . 'widgets/subscriptions.php' );
196
-        require_once( WPINV_PLUGIN_DIR . 'widgets/buy-item.php' );
197
-        require_once( WPINV_PLUGIN_DIR . 'widgets/getpaid.php' );
198
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-payment-form-elements.php' );
199
-
200
-        if ( !class_exists( 'WPInv_EUVat' ) ) {
201
-            require_once( WPINV_PLUGIN_DIR . 'includes/libraries/wpinv-euvat/class-wpinv-euvat.php' );
165
+			spl_autoload_register(array($this, 'autoload'), true);
166
+		} catch (Exception $e) {
167
+			wpinv_error_log($e->getMessage(), '', __FILE__, 149, true);
168
+        }
169
+
170
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-post-types.php');
171
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-invoice.php');
172
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-discount.php');
173
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-item.php');
174
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-notes.php');
175
+        require_once(WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-session.php');
176
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-session-handler.php');
177
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-ajax.php');
178
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-api.php');
179
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-reports.php');
180
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-cache-helper.php');
181
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-db.php');
182
+        require_once(WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php');
183
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions-db.php');
184
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-subscriptions.php');
185
+        require_once(WPINV_PLUGIN_DIR . 'includes/wpinv-subscription.php');
186
+        require_once(WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-subscriptions-list-table.php');
187
+        require_once(WPINV_PLUGIN_DIR . 'includes/abstracts/abstract-wpinv-privacy.php');
188
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-privacy.php');
189
+        require_once(WPINV_PLUGIN_DIR . 'includes/libraries/class-ayecode-addons.php');
190
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-addons.php');
191
+	    require_once(WPINV_PLUGIN_DIR . 'widgets/checkout.php');
192
+	    require_once(WPINV_PLUGIN_DIR . 'widgets/invoice-history.php');
193
+	    require_once(WPINV_PLUGIN_DIR . 'widgets/invoice-receipt.php');
194
+	    require_once(WPINV_PLUGIN_DIR . 'widgets/invoice-messages.php');
195
+	    require_once(WPINV_PLUGIN_DIR . 'widgets/subscriptions.php');
196
+        require_once(WPINV_PLUGIN_DIR . 'widgets/buy-item.php');
197
+        require_once(WPINV_PLUGIN_DIR . 'widgets/getpaid.php');
198
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-payment-form-elements.php');
199
+
200
+        if (!class_exists('WPInv_EUVat')) {
201
+            require_once(WPINV_PLUGIN_DIR . 'includes/libraries/wpinv-euvat/class-wpinv-euvat.php');
202 202
         }
203 203
         
204
-        $gateways = array_keys( wpinv_get_enabled_payment_gateways() );
205
-        if ( !empty( $gateways ) ) {
206
-            foreach ( $gateways as $gateway ) {
207
-                if ( $gateway == 'manual' ) {
204
+        $gateways = array_keys(wpinv_get_enabled_payment_gateways());
205
+        if (!empty($gateways)) {
206
+            foreach ($gateways as $gateway) {
207
+                if ($gateway == 'manual') {
208 208
                     continue;
209 209
                 }
210 210
                 
211 211
                 $gateway_file = WPINV_PLUGIN_DIR . 'includes/gateways/' . $gateway . '.php';
212 212
                 
213
-                if ( file_exists( $gateway_file ) ) {
214
-                    require_once( $gateway_file );
213
+                if (file_exists($gateway_file)) {
214
+                    require_once($gateway_file);
215 215
                 }
216 216
             }
217 217
         }
218
-        require_once( WPINV_PLUGIN_DIR . 'includes/gateways/manual.php' );
218
+        require_once(WPINV_PLUGIN_DIR . 'includes/gateways/manual.php');
219 219
         
220
-        if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
221
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-upgrade-functions.php' );
222
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php' );
223
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/admin-meta-boxes.php' );
220
+        if (is_admin() || (defined('WP_CLI') && WP_CLI)) {
221
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/wpinv-upgrade-functions.php');
222
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/wpinv-admin-functions.php');
223
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/admin-meta-boxes.php');
224 224
             //require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-recurring-admin.php' );
225
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-details.php' );
226
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-items.php' );
227
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php' );
228
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php' );
229
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-address.php' );
230
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php' );
231
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php' );
232
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php' );
233
-            require_once( WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php' );
225
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-details.php');
226
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-items.php');
227
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-payment-form.php');
228
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-notes.php');
229
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/meta-boxes/class-mb-invoice-address.php');
230
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/admin-pages.php');
231
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-admin-menus.php');
232
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/class-wpinv-users.php');
233
+            require_once(WPINV_PLUGIN_DIR . 'includes/admin/class-getpaid-admin-profile.php');
234 234
             //require_once( WPINV_PLUGIN_DIR . 'includes/admin/subscriptions.php' );
235 235
             // load the user class only on the users.php page
236 236
             global $pagenow;
237
-            if($pagenow=='users.php'){
237
+            if ($pagenow == 'users.php') {
238 238
                 new WPInv_Admin_Users();
239 239
             }
240 240
         }
241 241
 
242 242
         // Register cli commands
243
-        if ( defined( 'WP_CLI' ) && WP_CLI ) {
244
-            require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php' );
245
-            WP_CLI::add_command( 'invoicing', 'WPInv_CLI' );
243
+        if (defined('WP_CLI') && WP_CLI) {
244
+            require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-cli.php');
245
+            WP_CLI::add_command('invoicing', 'WPInv_CLI');
246 246
         }
247 247
         
248 248
         // include css inliner
249
-        if ( ! class_exists( 'Emogrifier' ) && class_exists( 'DOMDocument' ) ) {
250
-            include_once( WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php' );
249
+        if (!class_exists('Emogrifier') && class_exists('DOMDocument')) {
250
+            include_once(WPINV_PLUGIN_DIR . 'includes/libraries/class-emogrifier.php');
251 251
         }
252 252
         
253
-        require_once( WPINV_PLUGIN_DIR . 'includes/admin/install.php' );
253
+        require_once(WPINV_PLUGIN_DIR . 'includes/admin/install.php');
254 254
     }
255 255
 
256 256
     /**
@@ -261,18 +261,18 @@  discard block
 block discarded – undo
261 261
 	 * @since       1.0.19
262 262
 	 * @return      void
263 263
 	 */
264
-	public function autoload( $class_name ) {
264
+	public function autoload($class_name) {
265 265
 
266 266
 		// Normalize the class name...
267
-		$class_name  = strtolower( $class_name );
267
+		$class_name = strtolower($class_name);
268 268
 
269 269
 		// ... and make sure it is our class.
270
-		if ( false === strpos( $class_name, 'getpaid_' ) && false === strpos( $class_name, 'wpinv_' ) ) {
270
+		if (false === strpos($class_name, 'getpaid_') && false === strpos($class_name, 'wpinv_')) {
271 271
 			return;
272 272
 		}
273 273
 
274 274
 		// Next, prepare the file name from the class.
275
-		$file_name = 'class-' . str_replace( '_', '-', $class_name ) . '.php';
275
+		$file_name = 'class-' . str_replace('_', '-', $class_name) . '.php';
276 276
 
277 277
 		// And an array of possible locations in order of importance.
278 278
 		$locations = array(
@@ -283,11 +283,11 @@  discard block
 block discarded – undo
283 283
 		);
284 284
 
285 285
 		// Base path of the classes.
286
-		$plugin_path = untrailingslashit( WPINV_PLUGIN_DIR );
286
+		$plugin_path = untrailingslashit(WPINV_PLUGIN_DIR);
287 287
 
288
-		foreach ( $locations as $location ) {
288
+		foreach ($locations as $location) {
289 289
 
290
-			if ( file_exists( "$plugin_path/$location/$file_name" ) ) {
290
+			if (file_exists("$plugin_path/$location/$file_name")) {
291 291
 				include "$plugin_path/$location/$file_name";
292 292
 				break;
293 293
 			}
@@ -301,115 +301,115 @@  discard block
 block discarded – undo
301 301
     
302 302
     public function admin_init() {
303 303
         self::$instance->default_payment_form = wpinv_get_default_payment_form();
304
-        add_action( 'admin_print_scripts-edit.php', array( &$this, 'admin_print_scripts_edit_php' ) );
304
+        add_action('admin_print_scripts-edit.php', array(&$this, 'admin_print_scripts_edit_php'));
305 305
     }
306 306
 
307 307
     public function activation_redirect() {
308 308
         // Bail if no activation redirect
309
-        if ( !get_transient( '_wpinv_activation_redirect' ) ) {
309
+        if (!get_transient('_wpinv_activation_redirect')) {
310 310
             return;
311 311
         }
312 312
 
313 313
         // Delete the redirect transient
314
-        delete_transient( '_wpinv_activation_redirect' );
314
+        delete_transient('_wpinv_activation_redirect');
315 315
 
316 316
         // Bail if activating from network, or bulk
317
-        if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
317
+        if (is_network_admin() || isset($_GET['activate-multi'])) {
318 318
             return;
319 319
         }
320 320
 
321
-        wp_safe_redirect( admin_url( 'admin.php?page=wpinv-settings&tab=general' ) );
321
+        wp_safe_redirect(admin_url('admin.php?page=wpinv-settings&tab=general'));
322 322
         exit;
323 323
     }
324 324
     
325 325
     public function enqueue_scripts() {
326
-        $suffix       = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
326
+        $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
327 327
         
328
-        $version = filemtime( WPINV_PLUGIN_DIR . 'assets/css/invoice-front.css' );
329
-        wp_register_style( 'wpinv_front_style', WPINV_PLUGIN_URL . 'assets/css/invoice-front.css', array(), $version );
330
-        wp_enqueue_style( 'wpinv_front_style' );
328
+        $version = filemtime(WPINV_PLUGIN_DIR . 'assets/css/invoice-front.css');
329
+        wp_register_style('wpinv_front_style', WPINV_PLUGIN_URL . 'assets/css/invoice-front.css', array(), $version);
330
+        wp_enqueue_style('wpinv_front_style');
331 331
                
332 332
         // Register scripts
333
-        wp_register_script( 'jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array( 'jquery' ), '2.70', true );
334
-        wp_register_script( 'wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/invoice-front.js', array( 'jquery' ),  filemtime( WPINV_PLUGIN_DIR . 'assets/js/invoice-front.js' ) );
333
+        wp_register_script('jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array('jquery'), '2.70', true);
334
+        wp_register_script('wpinv-front-script', WPINV_PLUGIN_URL . 'assets/js/invoice-front.js', array('jquery'), filemtime(WPINV_PLUGIN_DIR . 'assets/js/invoice-front.js'));
335 335
 
336 336
         $localize                         = array();
337
-        $localize['ajax_url']             = admin_url( 'admin-ajax.php' );
338
-        $localize['nonce']                = wp_create_nonce( 'wpinv-nonce' );
337
+        $localize['ajax_url']             = admin_url('admin-ajax.php');
338
+        $localize['nonce']                = wp_create_nonce('wpinv-nonce');
339 339
         $localize['currency_symbol']      = wpinv_currency_symbol();
340 340
         $localize['currency_pos']         = wpinv_currency_position();
341 341
         $localize['thousand_sep']         = wpinv_thousands_separator();
342 342
         $localize['decimal_sep']          = wpinv_decimal_separator();
343 343
         $localize['decimals']             = wpinv_decimals();
344
-        $localize['txtComplete']          = __( 'Continue', 'invoicing' );
344
+        $localize['txtComplete']          = __('Continue', 'invoicing');
345 345
         $localize['UseTaxes']             = wpinv_use_taxes();
346
-        $localize['checkoutNonce']        = wp_create_nonce( 'wpinv_checkout_nonce' );
346
+        $localize['checkoutNonce']        = wp_create_nonce('wpinv_checkout_nonce');
347 347
 
348
-        $localize = apply_filters( 'wpinv_front_js_localize', $localize );
348
+        $localize = apply_filters('wpinv_front_js_localize', $localize);
349 349
         
350
-        wp_enqueue_script( 'jquery-blockui' );
350
+        wp_enqueue_script('jquery-blockui');
351 351
         $autofill_api = wpinv_get_option('address_autofill_api');
352 352
         $autofill_active = wpinv_get_option('address_autofill_active');
353
-        if ( isset( $autofill_active ) && 1 == $autofill_active && !empty( $autofill_api ) && wpinv_is_checkout() ) {
354
-            if ( wp_script_is( 'google-maps-api', 'enqueued' ) ) {
355
-                wp_dequeue_script( 'google-maps-api' );
353
+        if (isset($autofill_active) && 1 == $autofill_active && !empty($autofill_api) && wpinv_is_checkout()) {
354
+            if (wp_script_is('google-maps-api', 'enqueued')) {
355
+                wp_dequeue_script('google-maps-api');
356 356
             }
357
-            wp_enqueue_script( 'google-maps-api', 'https://maps.googleapis.com/maps/api/js?key=' . $autofill_api . '&libraries=places', array( 'jquery' ), '', false );
358
-            wp_enqueue_script( 'google-maps-init', WPINV_PLUGIN_URL . 'assets/js/gaaf.js', array( 'jquery', 'google-maps-api' ), '', true );
357
+            wp_enqueue_script('google-maps-api', 'https://maps.googleapis.com/maps/api/js?key=' . $autofill_api . '&libraries=places', array('jquery'), '', false);
358
+            wp_enqueue_script('google-maps-init', WPINV_PLUGIN_URL . 'assets/js/gaaf.js', array('jquery', 'google-maps-api'), '', true);
359 359
         }
360 360
 
361
-        wp_enqueue_style( "select2", WPINV_PLUGIN_URL . 'assets/css/select2/select2.css', array(), WPINV_VERSION, 'all' );
362
-        wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full' . $suffix . '.js', array( 'jquery' ), WPINV_VERSION );
361
+        wp_enqueue_style("select2", WPINV_PLUGIN_URL . 'assets/css/select2/select2.css', array(), WPINV_VERSION, 'all');
362
+        wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full' . $suffix . '.js', array('jquery'), WPINV_VERSION);
363 363
 
364
-        wp_enqueue_script( 'wpinv-front-script' );
365
-        wp_localize_script( 'wpinv-front-script', 'WPInv', $localize );
364
+        wp_enqueue_script('wpinv-front-script');
365
+        wp_localize_script('wpinv-front-script', 'WPInv', $localize);
366 366
 
367
-        $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js' );
368
-        wp_enqueue_script( 'wpinv-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array( 'wpinv-front-script', 'wp-hooks' ),  $version, true );
367
+        $version = filemtime(WPINV_PLUGIN_DIR . 'assets/js/payment-forms.js');
368
+        wp_enqueue_script('wpinv-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/payment-forms.js', array('wpinv-front-script', 'wp-hooks'), $version, true);
369 369
     }
370 370
 
371
-    public function admin_enqueue_scripts( $hook ) {
371
+    public function admin_enqueue_scripts($hook) {
372 372
         global $post, $pagenow;
373 373
         
374 374
         $post_type  = wpinv_admin_post_type();
375
-        $suffix     = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
376
-        $page       = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : '';
375
+        $suffix     = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min';
376
+        $page       = isset($_GET['page']) ? strtolower($_GET['page']) : '';
377 377
 
378 378
         $jquery_ui_css = false;
379
-        if ( ( $post_type == 'wpi_invoice' || $post_type == 'wpi_quote' || $post_type == 'wpi_discount' ) && ( $pagenow == 'post-new.php' || $pagenow == 'post.php' ) ) {
379
+        if (($post_type == 'wpi_invoice' || $post_type == 'wpi_quote' || $post_type == 'wpi_discount') && ($pagenow == 'post-new.php' || $pagenow == 'post.php')) {
380 380
             $jquery_ui_css = true;
381
-        } else if ( $page == 'wpinv-settings' || $page == 'wpinv-reports' ) {
381
+        } else if ($page == 'wpinv-settings' || $page == 'wpinv-reports') {
382 382
             $jquery_ui_css = true;
383 383
         }
384
-        if ( $jquery_ui_css ) {
385
-            wp_register_style( 'jquery-ui-css', WPINV_PLUGIN_URL . 'assets/css/jquery-ui' . $suffix . '.css', array(), '1.8.16' );
386
-            wp_enqueue_style( 'jquery-ui-css' );
387
-            wp_deregister_style( 'yoast-seo-select2' );
388
-	        wp_deregister_style( 'yoast-seo-monorepo' );
384
+        if ($jquery_ui_css) {
385
+            wp_register_style('jquery-ui-css', WPINV_PLUGIN_URL . 'assets/css/jquery-ui' . $suffix . '.css', array(), '1.8.16');
386
+            wp_enqueue_style('jquery-ui-css');
387
+            wp_deregister_style('yoast-seo-select2');
388
+	        wp_deregister_style('yoast-seo-monorepo');
389 389
         }
390 390
 
391
-        wp_register_style( 'wpinv_meta_box_style', WPINV_PLUGIN_URL . 'assets/css/meta-box.css', array(), WPINV_VERSION );
392
-        wp_enqueue_style( 'wpinv_meta_box_style' );
391
+        wp_register_style('wpinv_meta_box_style', WPINV_PLUGIN_URL . 'assets/css/meta-box.css', array(), WPINV_VERSION);
392
+        wp_enqueue_style('wpinv_meta_box_style');
393 393
         
394
-        $version = filemtime( WPINV_PLUGIN_DIR . 'assets/css/admin.css' );
395
-        wp_register_style( 'wpinv_admin_style', WPINV_PLUGIN_URL . 'assets/css/admin.css', array(), $version );
396
-        wp_enqueue_style( 'wpinv_admin_style' );
394
+        $version = filemtime(WPINV_PLUGIN_DIR . 'assets/css/admin.css');
395
+        wp_register_style('wpinv_admin_style', WPINV_PLUGIN_URL . 'assets/css/admin.css', array(), $version);
396
+        wp_enqueue_style('wpinv_admin_style');
397 397
 
398
-        $enqueue = ( $post_type == 'wpi_discount' || $post_type == 'wpi_invoice' && ( $pagenow == 'post-new.php' || $pagenow == 'post.php' ) );
399
-        if ( $page == 'wpinv-subscriptions' ) {
400
-            wp_enqueue_script( 'jquery-ui-datepicker' );
401
-            wp_deregister_style( 'yoast-seo-select2' );
402
-	        wp_deregister_style( 'yoast-seo-monorepo' );
398
+        $enqueue = ($post_type == 'wpi_discount' || $post_type == 'wpi_invoice' && ($pagenow == 'post-new.php' || $pagenow == 'post.php'));
399
+        if ($page == 'wpinv-subscriptions') {
400
+            wp_enqueue_script('jquery-ui-datepicker');
401
+            wp_deregister_style('yoast-seo-select2');
402
+	        wp_deregister_style('yoast-seo-monorepo');
403 403
         }
404 404
         
405
-        if ( $enqueue_datepicker = apply_filters( 'wpinv_admin_enqueue_jquery_ui_datepicker', $enqueue ) ) {
406
-            wp_enqueue_script( 'jquery-ui-datepicker' );
405
+        if ($enqueue_datepicker = apply_filters('wpinv_admin_enqueue_jquery_ui_datepicker', $enqueue)) {
406
+            wp_enqueue_script('jquery-ui-datepicker');
407 407
         }
408 408
 
409
-        wp_enqueue_style( 'wp-color-picker' );
410
-        wp_enqueue_script( 'wp-color-picker' );
409
+        wp_enqueue_style('wp-color-picker');
410
+        wp_enqueue_script('wp-color-picker');
411 411
         
412
-        wp_register_script( 'jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array( 'jquery' ), '2.70', true );
412
+        wp_register_script('jquery-blockui', WPINV_PLUGIN_URL . 'assets/js/jquery.blockUI.min.js', array('jquery'), '2.70', true);
413 413
 
414 414
         if (($post_type == 'wpi_invoice' || $post_type == 'wpi_quote') && ($pagenow == 'post-new.php' || $pagenow == 'post.php')) {
415 415
             $autofill_api = wpinv_get_option('address_autofill_api');
@@ -420,21 +420,21 @@  discard block
 block discarded – undo
420 420
             }
421 421
         }
422 422
 
423
-        wp_enqueue_style( "select2", WPINV_PLUGIN_URL . 'assets/css/select2/select2.css', array(), WPINV_VERSION, 'all' );
424
-        wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full' . $suffix . '.js', array( 'jquery' ), WPINV_VERSION );
423
+        wp_enqueue_style("select2", WPINV_PLUGIN_URL . 'assets/css/select2/select2.css', array(), WPINV_VERSION, 'all');
424
+        wp_enqueue_script('select2', WPINV_PLUGIN_URL . 'assets/js/select2/select2.full' . $suffix . '.js', array('jquery'), WPINV_VERSION);
425 425
 
426
-        $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin.js' );
427
-        wp_register_script( 'wpinv-admin-script', WPINV_PLUGIN_URL . 'assets/js/admin.js', array( 'jquery', 'jquery-blockui','jquery-ui-tooltip' ),  $version );
428
-        wp_enqueue_script( 'wpinv-admin-script' );
426
+        $version = filemtime(WPINV_PLUGIN_DIR . 'assets/js/admin.js');
427
+        wp_register_script('wpinv-admin-script', WPINV_PLUGIN_URL . 'assets/js/admin.js', array('jquery', 'jquery-blockui', 'jquery-ui-tooltip'), $version);
428
+        wp_enqueue_script('wpinv-admin-script');
429 429
         
430 430
         $localize                               = array();
431
-        $localize['ajax_url']                   = admin_url( 'admin-ajax.php' );
432
-        $localize['post_ID']                    = isset( $post->ID ) ? $post->ID : '';
433
-        $localize['wpinv_nonce']                = wp_create_nonce( 'wpinv-nonce' );
434
-        $localize['add_invoice_note_nonce']     = wp_create_nonce( 'add-invoice-note' );
435
-        $localize['delete_invoice_note_nonce']  = wp_create_nonce( 'delete-invoice-note' );
436
-        $localize['invoice_item_nonce']         = wp_create_nonce( 'invoice-item' );
437
-        $localize['billing_details_nonce']      = wp_create_nonce( 'get-billing-details' );
431
+        $localize['ajax_url']                   = admin_url('admin-ajax.php');
432
+        $localize['post_ID']                    = isset($post->ID) ? $post->ID : '';
433
+        $localize['wpinv_nonce']                = wp_create_nonce('wpinv-nonce');
434
+        $localize['add_invoice_note_nonce']     = wp_create_nonce('add-invoice-note');
435
+        $localize['delete_invoice_note_nonce']  = wp_create_nonce('delete-invoice-note');
436
+        $localize['invoice_item_nonce']         = wp_create_nonce('invoice-item');
437
+        $localize['billing_details_nonce']      = wp_create_nonce('get-billing-details');
438 438
         $localize['tax']                        = wpinv_tax_amount();
439 439
         $localize['discount']                   = wpinv_discount_amount();
440 440
         $localize['currency_symbol']            = wpinv_currency_symbol();
@@ -442,101 +442,101 @@  discard block
 block discarded – undo
442 442
         $localize['thousand_sep']               = wpinv_thousands_separator();
443 443
         $localize['decimal_sep']                = wpinv_decimal_separator();
444 444
         $localize['decimals']                   = wpinv_decimals();
445
-        $localize['save_invoice']               = __( 'Save Invoice', 'invoicing' );
446
-        $localize['status_publish']             = wpinv_status_nicename( 'publish' );
447
-        $localize['status_pending']             = wpinv_status_nicename( 'wpi-pending' );
448
-        $localize['delete_tax_rate']            = __( 'Are you sure you wish to delete this tax rate?', 'invoicing' );
449
-        $localize['OneItemMin']                 = __( 'Invoice must contain at least one item', 'invoicing' );
450
-        $localize['DeleteInvoiceItem']          = __( 'Are you sure you wish to delete this item?', 'invoicing' );
451
-        $localize['FillBillingDetails']         = __( 'Fill the user\'s billing information? This will remove any currently entered billing information', 'invoicing' );
452
-        $localize['confirmCalcTotals']          = __( 'Recalculate totals? This will recalculate totals based on the user billing country. If no billing country is set it will use the base country.', 'invoicing' );
453
-        $localize['AreYouSure']                 = __( 'Are you sure?', 'invoicing' );
454
-        $localize['emptyInvoice']               = __( 'Add at least one item to save invoice!', 'invoicing' );
455
-        $localize['errDeleteItem']              = __( 'This item is in use! Before delete this item, you need to delete all the invoice(s) using this item.', 'invoicing' );
456
-        $localize['delete_subscription']        = __( 'Are you sure you want to delete this subscription?', 'invoicing' );
457
-        $localize['action_edit']                = __( 'Edit', 'invoicing' );
458
-        $localize['action_cancel']              = __( 'Cancel', 'invoicing' );
459
-        $localize['item_description']           = __( 'Item Description', 'invoicing' );
460
-
461
-        $localize = apply_filters( 'wpinv_admin_js_localize', $localize );
462
-
463
-        wp_localize_script( 'wpinv-admin-script', 'WPInv_Admin', $localize );
445
+        $localize['save_invoice']               = __('Save Invoice', 'invoicing');
446
+        $localize['status_publish']             = wpinv_status_nicename('publish');
447
+        $localize['status_pending']             = wpinv_status_nicename('wpi-pending');
448
+        $localize['delete_tax_rate']            = __('Are you sure you wish to delete this tax rate?', 'invoicing');
449
+        $localize['OneItemMin']                 = __('Invoice must contain at least one item', 'invoicing');
450
+        $localize['DeleteInvoiceItem']          = __('Are you sure you wish to delete this item?', 'invoicing');
451
+        $localize['FillBillingDetails']         = __('Fill the user\'s billing information? This will remove any currently entered billing information', 'invoicing');
452
+        $localize['confirmCalcTotals']          = __('Recalculate totals? This will recalculate totals based on the user billing country. If no billing country is set it will use the base country.', 'invoicing');
453
+        $localize['AreYouSure']                 = __('Are you sure?', 'invoicing');
454
+        $localize['emptyInvoice']               = __('Add at least one item to save invoice!', 'invoicing');
455
+        $localize['errDeleteItem']              = __('This item is in use! Before delete this item, you need to delete all the invoice(s) using this item.', 'invoicing');
456
+        $localize['delete_subscription']        = __('Are you sure you want to delete this subscription?', 'invoicing');
457
+        $localize['action_edit']                = __('Edit', 'invoicing');
458
+        $localize['action_cancel']              = __('Cancel', 'invoicing');
459
+        $localize['item_description']           = __('Item Description', 'invoicing');
460
+
461
+        $localize = apply_filters('wpinv_admin_js_localize', $localize);
462
+
463
+        wp_localize_script('wpinv-admin-script', 'WPInv_Admin', $localize);
464 464
 
465 465
         // Load payment form scripts on our admin pages only.
466
-        if ( ( $hook == 'post-new.php' || $hook == 'post.php' ) && 'wpi_payment_form' === $post->post_type ) {
466
+        if (($hook == 'post-new.php' || $hook == 'post.php') && 'wpi_payment_form' === $post->post_type) {
467 467
 
468
-            wp_enqueue_script( 'vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.js', array(), WPINV_VERSION );
469
-            wp_enqueue_script( 'sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION );
470
-            wp_enqueue_script( 'vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array( 'sortable', 'vue' ), WPINV_VERSION );
468
+            wp_enqueue_script('vue', WPINV_PLUGIN_URL . 'assets/js/vue/vue.js', array(), WPINV_VERSION);
469
+            wp_enqueue_script('sortable', WPINV_PLUGIN_URL . 'assets/js/sortable.min.js', array(), WPINV_VERSION);
470
+            wp_enqueue_script('vue_draggable', WPINV_PLUGIN_URL . 'assets/js/vue/vuedraggable.min.js', array('sortable', 'vue'), WPINV_VERSION);
471 471
 
472
-            $version = filemtime( WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js' );
473
-            wp_register_script( 'wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array( 'wpinv-admin-script', 'vue_draggable' ),  $version );
472
+            $version = filemtime(WPINV_PLUGIN_DIR . 'assets/js/admin-payment-forms.js');
473
+            wp_register_script('wpinv-admin-payment-form-script', WPINV_PLUGIN_URL . 'assets/js/admin-payment-forms.js', array('wpinv-admin-script', 'vue_draggable'), $version);
474 474
         
475
-            wp_localize_script( 'wpinv-admin-payment-form-script', 'wpinvPaymentFormAdmin', array(
475
+            wp_localize_script('wpinv-admin-payment-form-script', 'wpinvPaymentFormAdmin', array(
476 476
                 'elements'      => $this->form_elements->get_elements(),
477
-                'form_elements' => $this->form_elements->get_form_elements( $post->ID ),
477
+                'form_elements' => $this->form_elements->get_form_elements($post->ID),
478 478
                 'all_items'     => $this->form_elements->get_published_items(),
479 479
                 'currency'      => wpinv_currency_symbol(),
480 480
                 'position'      => wpinv_currency_position(),
481 481
                 'decimals'      => (int) wpinv_decimals(),
482 482
                 'thousands_sep' => wpinv_thousands_separator(),
483 483
                 'decimals_sep'  => wpinv_decimal_separator(),
484
-                'form_items'    => $this->form_elements->get_form_items( $post->ID ),
484
+                'form_items'    => $this->form_elements->get_form_items($post->ID),
485 485
                 'is_default'    => $post->ID == $this->default_payment_form,
486
-            ) );
486
+            ));
487 487
 
488
-            wp_enqueue_script( 'wpinv-admin-payment-form-script' );
488
+            wp_enqueue_script('wpinv-admin-payment-form-script');
489 489
         }
490 490
 
491
-        if ( $page == 'wpinv-subscriptions' ) {
492
-            wp_register_script( 'wpinv-sub-admin-script', WPINV_PLUGIN_URL . 'assets/js/subscriptions.js', array( 'wpinv-admin-script' ),  WPINV_VERSION );
493
-            wp_enqueue_script( 'wpinv-sub-admin-script' );
491
+        if ($page == 'wpinv-subscriptions') {
492
+            wp_register_script('wpinv-sub-admin-script', WPINV_PLUGIN_URL . 'assets/js/subscriptions.js', array('wpinv-admin-script'), WPINV_VERSION);
493
+            wp_enqueue_script('wpinv-sub-admin-script');
494 494
         }
495 495
 
496
-        if ( $page == 'wpinv-reports' ) {
497
-            wp_enqueue_script( 'jquery-flot', WPINV_PLUGIN_URL . 'assets/js/jquery.flot.min.js', array( 'jquery' ), '0.7' );
496
+        if ($page == 'wpinv-reports') {
497
+            wp_enqueue_script('jquery-flot', WPINV_PLUGIN_URL . 'assets/js/jquery.flot.min.js', array('jquery'), '0.7');
498 498
         }
499 499
 
500 500
     }
501 501
 
502
-    public function admin_body_class( $classes ) {
502
+    public function admin_body_class($classes) {
503 503
         global $pagenow, $post, $current_screen;
504 504
         
505
-        if ( !empty( $current_screen->post_type ) && ( $current_screen->post_type == 'wpi_invoice' || $current_screen->post_type == 'wpi_payment_form' || $current_screen->post_type == 'wpi_quote' ) ) {
505
+        if (!empty($current_screen->post_type) && ($current_screen->post_type == 'wpi_invoice' || $current_screen->post_type == 'wpi_payment_form' || $current_screen->post_type == 'wpi_quote')) {
506 506
             $classes .= ' wpinv-cpt';
507 507
         }
508 508
         
509
-        $page = isset( $_GET['page'] ) ? strtolower( $_GET['page'] ) : false;
509
+        $page = isset($_GET['page']) ? strtolower($_GET['page']) : false;
510 510
 
511
-        $add_class = $page && $pagenow == 'admin.php' && strpos( $page, 'wpinv-' ) === 0 ? true : false;
512
-        if ( $add_class ) {
513
-            $classes .= ' wpi-' . wpinv_sanitize_key( $page );
511
+        $add_class = $page && $pagenow == 'admin.php' && strpos($page, 'wpinv-') === 0 ? true : false;
512
+        if ($add_class) {
513
+            $classes .= ' wpi-' . wpinv_sanitize_key($page);
514 514
         }
515 515
         
516 516
         $settings_class = array();
517
-        if ( $page == 'wpinv-settings' ) {
518
-            if ( !empty( $_REQUEST['tab'] ) ) {
519
-                $settings_class[] = sanitize_text_field( $_REQUEST['tab'] );
517
+        if ($page == 'wpinv-settings') {
518
+            if (!empty($_REQUEST['tab'])) {
519
+                $settings_class[] = sanitize_text_field($_REQUEST['tab']);
520 520
             }
521 521
             
522
-            if ( !empty( $_REQUEST['section'] ) ) {
523
-                $settings_class[] = sanitize_text_field( $_REQUEST['section'] );
522
+            if (!empty($_REQUEST['section'])) {
523
+                $settings_class[] = sanitize_text_field($_REQUEST['section']);
524 524
             }
525 525
             
526
-            $settings_class[] = isset( $_REQUEST['wpi_sub'] ) && $_REQUEST['wpi_sub'] !== '' ? sanitize_text_field( $_REQUEST['wpi_sub'] ) : 'main';
526
+            $settings_class[] = isset($_REQUEST['wpi_sub']) && $_REQUEST['wpi_sub'] !== '' ? sanitize_text_field($_REQUEST['wpi_sub']) : 'main';
527 527
         }
528 528
         
529
-        if ( !empty( $settings_class ) ) {
530
-            $classes .= ' wpi-' . wpinv_sanitize_key( implode( $settings_class, '-' ) );
529
+        if (!empty($settings_class)) {
530
+            $classes .= ' wpi-' . wpinv_sanitize_key(implode($settings_class, '-'));
531 531
         }
532 532
         
533 533
         $post_type = wpinv_admin_post_type();
534 534
 
535
-        if ( $post_type == 'wpi_invoice' || $post_type == 'wpi_quote' || $add_class !== false ) {
535
+        if ($post_type == 'wpi_invoice' || $post_type == 'wpi_quote' || $add_class !== false) {
536 536
             return $classes .= ' wpinv';
537 537
         }
538 538
         
539
-        if ( $pagenow == 'post.php' && $post_type == 'wpi_item' && !empty( $post ) && !wpinv_item_is_editable( $post ) ) {
539
+        if ($pagenow == 'post.php' && $post_type == 'wpi_item' && !empty($post) && !wpinv_item_is_editable($post)) {
540 540
             $classes .= ' wpi-editable-n';
541 541
         }
542 542
 
@@ -548,21 +548,21 @@  discard block
 block discarded – undo
548 548
     }
549 549
     
550 550
     public function wpinv_actions() {
551
-        if ( isset( $_REQUEST['wpi_action'] ) ) {
552
-            do_action( 'wpinv_' . wpinv_sanitize_key( $_REQUEST['wpi_action'] ), $_REQUEST );
551
+        if (isset($_REQUEST['wpi_action'])) {
552
+            do_action('wpinv_' . wpinv_sanitize_key($_REQUEST['wpi_action']), $_REQUEST);
553 553
         }
554 554
     }
555 555
     
556
-    public function pre_get_posts( $wp_query ) {
557
-        if ( !empty( $wp_query->query_vars['post_type'] ) && $wp_query->query_vars['post_type'] == 'wpi_invoice' && is_user_logged_in() && is_single() && $wp_query->is_main_query() ) {
558
-            $wp_query->query_vars['post_status'] = array_keys( wpinv_get_invoice_statuses() );
556
+    public function pre_get_posts($wp_query) {
557
+        if (!empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] == 'wpi_invoice' && is_user_logged_in() && is_single() && $wp_query->is_main_query()) {
558
+            $wp_query->query_vars['post_status'] = array_keys(wpinv_get_invoice_statuses());
559 559
         }
560 560
         
561 561
         return $wp_query;
562 562
     }
563 563
     
564 564
     public function bp_invoicing_init() {
565
-        require_once( WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php' );
565
+        require_once(WPINV_PLUGIN_DIR . 'includes/class-wpinv-bp-core.php');
566 566
     }
567 567
 
568 568
 	/**
@@ -570,13 +570,13 @@  discard block
 block discarded – undo
570 570
 	 *
571 571
 	 */
572 572
 	public function register_widgets() {
573
-		register_widget( "WPInv_Checkout_Widget" );
574
-		register_widget( "WPInv_History_Widget" );
575
-		register_widget( "WPInv_Receipt_Widget" );
576
-		register_widget( "WPInv_Subscriptions_Widget" );
577
-		register_widget( "WPInv_Buy_Item_Widget" );
578
-        register_widget( "WPInv_Messages_Widget" );
579
-        register_widget( 'WPInv_GetPaid_Widget' );
573
+		register_widget("WPInv_Checkout_Widget");
574
+		register_widget("WPInv_History_Widget");
575
+		register_widget("WPInv_Receipt_Widget");
576
+		register_widget("WPInv_Subscriptions_Widget");
577
+		register_widget("WPInv_Buy_Item_Widget");
578
+        register_widget("WPInv_Messages_Widget");
579
+        register_widget('WPInv_GetPaid_Widget');
580 580
 	}
581 581
     
582 582
     /**
@@ -585,10 +585,10 @@  discard block
 block discarded – undo
585 585
      * @since 1.0.19
586 586
      * @param int[] $excluded_posts_ids
587 587
      */
588
-    public function wpseo_exclude_from_sitemap_by_post_ids( $excluded_posts_ids ){
588
+    public function wpseo_exclude_from_sitemap_by_post_ids($excluded_posts_ids) {
589 589
 
590 590
         // Ensure that we have an array.
591
-        if ( ! is_array( $excluded_posts_ids ) ) {
591
+        if (!is_array($excluded_posts_ids)) {
592 592
             $excluded_posts_ids = array();
593 593
         }
594 594
 
@@ -596,24 +596,24 @@  discard block
 block discarded – undo
596 596
         $our_pages = array();
597 597
     
598 598
         // Checkout page.
599
-        $our_pages[] = wpinv_get_option( 'checkout_page', false );
599
+        $our_pages[] = wpinv_get_option('checkout_page', false);
600 600
 
601 601
         // Success page.
602
-        $our_pages[] = wpinv_get_option( 'success_page', false );
602
+        $our_pages[] = wpinv_get_option('success_page', false);
603 603
 
604 604
         // Failure page.
605
-        $our_pages[] = wpinv_get_option( 'failure_page', false );
605
+        $our_pages[] = wpinv_get_option('failure_page', false);
606 606
 
607 607
         // History page.
608
-        $our_pages[] = wpinv_get_option( 'invoice_history_page', false );
608
+        $our_pages[] = wpinv_get_option('invoice_history_page', false);
609 609
 
610 610
         // Subscriptions page.
611
-        $our_pages[] = wpinv_get_option( 'invoice_subscription_page', false );
611
+        $our_pages[] = wpinv_get_option('invoice_subscription_page', false);
612 612
 
613
-        $our_pages   = array_map( 'intval', array_filter( $our_pages ) );
613
+        $our_pages   = array_map('intval', array_filter($our_pages));
614 614
 
615 615
         $excluded_posts_ids = $excluded_posts_ids + $our_pages;
616
-        return array_unique( $excluded_posts_ids );
616
+        return array_unique($excluded_posts_ids);
617 617
 
618 618
     }
619 619
 
Please login to merge, or discard this patch.