Passed
Push — master ( 98a9e1...506bd5 )
by Brian
07:05
created
templates/invoice/invoice-meta.php 1 patch
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -7,50 +7,50 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12
-$class = ! is_singular( 'page' ) ? 'px-1' : '';
12
+$class = !is_singular('page') ? 'px-1' : '';
13 13
 ?>
14 14
 
15
-        <?php do_action( 'getpaid_before_invoice_meta', $invoice ); ?>
15
+        <?php do_action('getpaid_before_invoice_meta', $invoice); ?>
16 16
         <div class="getpaid-invoice-meta-data">
17 17
 
18
-            <?php do_action( 'getpaid_before_invoice_meta_table', $invoice ); ?>
18
+            <?php do_action('getpaid_before_invoice_meta_table', $invoice); ?>
19 19
             <table class="table table-bordered">
20 20
                 <tbody>
21 21
 
22
-                    <?php do_action( 'getpaid_before_invoice_meta_rows', $invoice ); ?>
23
-                    <?php foreach ( $meta as $key => $data ) : ?>
22
+                    <?php do_action('getpaid_before_invoice_meta_rows', $invoice); ?>
23
+                    <?php foreach ($meta as $key => $data) : ?>
24 24
 
25
-                        <?php if ( ! empty( $data['value'] ) ) : ?>
25
+                        <?php if (!empty($data['value'])) : ?>
26 26
 
27
-                            <?php do_action( "getpaid_before_invoice_meta_$key", $invoice, $data ); ?>
27
+                            <?php do_action("getpaid_before_invoice_meta_$key", $invoice, $data); ?>
28 28
 
29
-                            <tr class="getpaid-invoice-meta-<?php echo esc_attr( $key ); ?>">
29
+                            <tr class="getpaid-invoice-meta-<?php echo esc_attr($key); ?>">
30 30
 
31
-                                <th class="<?php echo esc_attr( $class ); ?> font-weight-bold" style="width: 40%">
32
-                                    <?php echo esc_html( $data['label'] ); ?>
31
+                                <th class="<?php echo esc_attr($class); ?> font-weight-bold" style="width: 40%">
32
+                                    <?php echo esc_html($data['label']); ?>
33 33
                                 </th>
34 34
 
35
-                                <td class="<?php echo esc_attr( $class ); ?> <?php echo 'invoice_total' === $key ? 'font-weight-bold' : 'font-weight-normal'; ?> text-break" style="width: 60%">
36
-                                    <span class="getpaid-invoice-meta-<?php echo esc_attr( $key ); ?>-value"><?php echo wp_kses_post( $data['value'] ); ?></span>
35
+                                <td class="<?php echo esc_attr($class); ?> <?php echo 'invoice_total' === $key ? 'font-weight-bold' : 'font-weight-normal'; ?> text-break" style="width: 60%">
36
+                                    <span class="getpaid-invoice-meta-<?php echo esc_attr($key); ?>-value"><?php echo wp_kses_post($data['value']); ?></span>
37 37
                                 </td>
38 38
 
39 39
                             </tr>
40 40
 
41
-                            <?php do_action( "getpaid_after_invoice_meta_$key", $invoice, $data ); ?>
41
+                            <?php do_action("getpaid_after_invoice_meta_$key", $invoice, $data); ?>
42 42
 
43 43
                         <?php endif; ?>
44 44
 
45 45
                     <?php endforeach; ?>
46
-                    <?php do_action( 'getpaid_after_invoice_meta_rows', $invoice ); ?>
46
+                    <?php do_action('getpaid_after_invoice_meta_rows', $invoice); ?>
47 47
 
48 48
                 </tbody>
49 49
             </table>
50
-            <?php do_action( 'getpaid_after_invoice_meta_table', $invoice ); ?>
50
+            <?php do_action('getpaid_after_invoice_meta_table', $invoice); ?>
51 51
 
52 52
 
53 53
         </div>
54
-        <?php do_action( 'getpaid_after_invoice_meta', $invoice ); ?>
54
+        <?php do_action('getpaid_after_invoice_meta', $invoice); ?>
55 55
 
56 56
 <?php
Please login to merge, or discard this patch.
templates/invoice/line-totals.php 2 patches
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -39,40 +39,40 @@
 block discarded – undo
39 39
                                 if ( 'tax' === $key ) {
40 40
                                     wpinv_the_price( $invoice->get_total_tax(), $invoice->get_currency() );
41 41
 
42
-								if ( wpinv_use_taxes() && ! $invoice->get_disable_taxes() ) {
42
+                                if ( wpinv_use_taxes() && ! $invoice->get_disable_taxes() ) {
43 43
 
44
-									$taxes = $invoice->get_total_tax();
45
-									if ( empty( $taxes ) && GetPaid_Payment_Form_Submission_Taxes::is_eu_transaction( $invoice->get_country() ) ) {
46
-										echo ' <em class="text-muted small">';
47
-										_x( '(Reverse charged)', 'This is a legal term for reverse charging tax in the EU', 'invoicing' );
48
-										echo '</em>';
44
+                                    $taxes = $invoice->get_total_tax();
45
+                                    if ( empty( $taxes ) && GetPaid_Payment_Form_Submission_Taxes::is_eu_transaction( $invoice->get_country() ) ) {
46
+                                        echo ' <em class="text-muted small">';
47
+                                        _x( '(Reverse charged)', 'This is a legal term for reverse charging tax in the EU', 'invoicing' );
48
+                                        echo '</em>';
49 49
                                     }
50 50
 }
51 51
 }
52 52
 
53 53
                                 // Total Fee.
54 54
                                 if ( 'fee' === $key ) {
55
-								wpinv_the_price( $invoice->get_total_fees(), $invoice->get_currency() );
55
+                                wpinv_the_price( $invoice->get_total_fees(), $invoice->get_currency() );
56 56
                                 }
57 57
 
58 58
                                 // Total discount.
59 59
                                 if ( 'discount' === $key ) {
60
-								wpinv_the_price( $invoice->get_total_discount(), $invoice->get_currency() );
60
+                                wpinv_the_price( $invoice->get_total_discount(), $invoice->get_currency() );
61 61
                                 }
62 62
 
63 63
                                 // Shipping.
64 64
                                 if ( 'shipping' === $key ) {
65
-								wpinv_the_price( $invoice->get_shipping(), $invoice->get_currency() );
65
+                                wpinv_the_price( $invoice->get_shipping(), $invoice->get_currency() );
66 66
                                 }
67 67
 
68 68
                                 // Sub total.
69 69
                                 if ( 'subtotal' === $key ) {
70
-								wpinv_the_price( $invoice->get_subtotal(), $invoice->get_currency() );
70
+                                wpinv_the_price( $invoice->get_subtotal(), $invoice->get_currency() );
71 71
                                 }
72 72
 
73 73
                                 // Total.
74 74
                                 if ( 'total' === $key ) {
75
-								wpinv_the_price( $invoice->get_total(), $invoice->get_currency() );
75
+                                wpinv_the_price( $invoice->get_total(), $invoice->get_currency() );
76 76
                                 }
77 77
 
78 78
                                 // Fires when printing a cart total.
Please login to merge, or discard this patch.
Spacing   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -9,26 +9,26 @@  discard block
 block discarded – undo
9 9
  * @var WPInv_Invoice $invoice
10 10
  */
11 11
 
12
-defined( 'ABSPATH' ) || exit;
12
+defined('ABSPATH') || exit;
13 13
 
14 14
 // Totals rows.
15
-$totals = getpaid_invoice_totals_rows( $invoice );
15
+$totals = getpaid_invoice_totals_rows($invoice);
16 16
 
17
-do_action( 'getpaid_before_invoice_line_totals', $invoice, $totals );
17
+do_action('getpaid_before_invoice_line_totals', $invoice, $totals);
18 18
 
19 19
 ?>
20 20
 <div class='getpaid-invoice-line-totals'>
21 21
     <div class="row">
22 22
         <div class="col-12 offset-sm-6 col-sm-6 border-sm-left pl-sm-0">
23 23
 
24
-            <?php foreach ( $totals as $key => $label ) : ?>
24
+            <?php foreach ($totals as $key => $label) : ?>
25 25
 
26
-                <div class="getpaid-invoice-line-totals-col <?php echo esc_attr( $key ); ?>">
26
+                <div class="getpaid-invoice-line-totals-col <?php echo esc_attr($key); ?>">
27 27
 
28 28
                     <div class="form-row row">
29 29
 
30 30
                         <div class="col-8 getpaid-invoice-line-totals-label">
31
-                            <?php echo esc_html( $label ); ?>
31
+                            <?php echo esc_html($label); ?>
32 32
                         </div>
33 33
 
34 34
                         <div class="col-4 getpaid-invoice-line-totals-value pl-0">
@@ -36,47 +36,47 @@  discard block
 block discarded – undo
36 36
                             <?php
37 37
 
38 38
                                 // Total tax.
39
-                                if ( 'tax' === $key ) {
40
-                                    wpinv_the_price( $invoice->get_total_tax(), $invoice->get_currency() );
39
+                                if ('tax' === $key) {
40
+                                    wpinv_the_price($invoice->get_total_tax(), $invoice->get_currency());
41 41
 
42
-								if ( wpinv_use_taxes() && ! $invoice->get_disable_taxes() ) {
42
+								if (wpinv_use_taxes() && !$invoice->get_disable_taxes()) {
43 43
 
44 44
 									$taxes = $invoice->get_total_tax();
45
-									if ( empty( $taxes ) && GetPaid_Payment_Form_Submission_Taxes::is_eu_transaction( $invoice->get_country() ) ) {
45
+									if (empty($taxes) && GetPaid_Payment_Form_Submission_Taxes::is_eu_transaction($invoice->get_country())) {
46 46
 										echo ' <em class="text-muted small">';
47
-										_x( '(Reverse charged)', 'This is a legal term for reverse charging tax in the EU', 'invoicing' );
47
+										_x('(Reverse charged)', 'This is a legal term for reverse charging tax in the EU', 'invoicing');
48 48
 										echo '</em>';
49 49
                                     }
50 50
 }
51 51
 }
52 52
 
53 53
                                 // Total Fee.
54
-                                if ( 'fee' === $key ) {
55
-								wpinv_the_price( $invoice->get_total_fees(), $invoice->get_currency() );
54
+                                if ('fee' === $key) {
55
+								wpinv_the_price($invoice->get_total_fees(), $invoice->get_currency());
56 56
                                 }
57 57
 
58 58
                                 // Total discount.
59
-                                if ( 'discount' === $key ) {
60
-								wpinv_the_price( $invoice->get_total_discount(), $invoice->get_currency() );
59
+                                if ('discount' === $key) {
60
+								wpinv_the_price($invoice->get_total_discount(), $invoice->get_currency());
61 61
                                 }
62 62
 
63 63
                                 // Shipping.
64
-                                if ( 'shipping' === $key ) {
65
-								wpinv_the_price( $invoice->get_shipping(), $invoice->get_currency() );
64
+                                if ('shipping' === $key) {
65
+								wpinv_the_price($invoice->get_shipping(), $invoice->get_currency());
66 66
                                 }
67 67
 
68 68
                                 // Sub total.
69
-                                if ( 'subtotal' === $key ) {
70
-								wpinv_the_price( $invoice->get_subtotal(), $invoice->get_currency() );
69
+                                if ('subtotal' === $key) {
70
+								wpinv_the_price($invoice->get_subtotal(), $invoice->get_currency());
71 71
                                 }
72 72
 
73 73
                                 // Total.
74
-                                if ( 'total' === $key ) {
75
-								wpinv_the_price( $invoice->get_total(), $invoice->get_currency() );
74
+                                if ('total' === $key) {
75
+								wpinv_the_price($invoice->get_total(), $invoice->get_currency());
76 76
                                 }
77 77
 
78 78
                                 // Fires when printing a cart total.
79
-                                do_action( "getpaid_invoice_cart_totals_$key", $invoice );
79
+                                do_action("getpaid_invoice_cart_totals_$key", $invoice);
80 80
 
81 81
                             ?>
82 82
 
@@ -90,4 +90,4 @@  discard block
 block discarded – undo
90 90
     </div>
91 91
 </div> <!-- end .getpaid-invoice-line-totals -->
92 92
 
93
-<?php do_action( 'getpaid_after_invoice_line_totals', $invoice, $totals ); ?>
93
+<?php do_action('getpaid_after_invoice_line_totals', $invoice, $totals); ?>
Please login to merge, or discard this patch.
includes/admin/class-wpinv-customers-table.php 2 patches
Indentation   +368 added lines, -368 removed lines patch added patch discarded remove patch
@@ -11,7 +11,7 @@  discard block
 block discarded – undo
11 11
 
12 12
 // Load WP_List_Table if not loaded
13 13
 if ( ! class_exists( 'WP_List_Table' ) ) {
14
-	require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
14
+    require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
15 15
 }
16 16
 
17 17
 /**
@@ -23,375 +23,375 @@  discard block
 block discarded – undo
23 23
  */
24 24
 class WPInv_Customers_Table extends WP_List_Table {
25 25
 
26
-	/**
27
-	 * @var int Number of items per page
28
-	 * @since 1.0.19
29
-	 */
30
-	public $per_page = 10;
31
-
32
-	/**
33
-	 * @var int Number of items
34
-	 * @since 1.0.19
35
-	 */
36
-	public $total = 0;
37
-
38
-	/**
39
-	 * Get things started
40
-	 *
41
-	 * @since 1.0.19
42
-	 * @see WP_List_Table::__construct()
43
-	 */
44
-	public function __construct() {
45
-
46
-		// Set parent defaults
47
-		parent::__construct(
26
+    /**
27
+     * @var int Number of items per page
28
+     * @since 1.0.19
29
+     */
30
+    public $per_page = 10;
31
+
32
+    /**
33
+     * @var int Number of items
34
+     * @since 1.0.19
35
+     */
36
+    public $total = 0;
37
+
38
+    /**
39
+     * Get things started
40
+     *
41
+     * @since 1.0.19
42
+     * @see WP_List_Table::__construct()
43
+     */
44
+    public function __construct() {
45
+
46
+        // Set parent defaults
47
+        parent::__construct(
48 48
             array(
49
-				'singular' => 'id',
50
-				'plural'   => 'ids',
51
-				'ajax'     => false,
49
+                'singular' => 'id',
50
+                'plural'   => 'ids',
51
+                'ajax'     => false,
52 52
             )
53 53
         );
54 54
 
55
-	}
56
-
57
-	/**
58
-	 * Gets the name of the primary column.
59
-	 *
60
-	 * @since 1.0.19
61
-	 * @access protected
62
-	 *
63
-	 * @return string Name of the primary column.
64
-	 */
65
-	protected function get_primary_column_name() {
66
-		return 'name';
67
-	}
68
-
69
-	/**
70
-	 * This function renders most of the columns in the list table.
71
-	 *
72
-	 * @since 1.0.19
73
-	 *
74
-	 * @param WP_User $item
75
-	 * @param string $column_name The name of the column
76
-	 *
77
-	 * @return string Column Name
78
-	 */
79
-	public function column_default( $item, $column_name ) {
80
-		$value = esc_html( get_user_meta( $item->ID, '_wpinv_' . $column_name, true ) );
81
-		return apply_filters( 'wpinv_customers_table_column' . $column_name, $value, $item );
82
-	}
83
-
84
-	/**
85
-	 * Displays the country column.
86
-	 *
87
-	 * @since 1.0.19
88
-	 *
89
-	 * @param WP_User $user
90
-	 *
91
-	 * @return string Column Name
92
-	 */
93
-	public function column_country( $user ) {
94
-		$country = wpinv_sanitize_country( $user->_wpinv_country );
95
-		if ( $country ) {
96
-			$country = wpinv_country_name( $country );
97
-		}
98
-		return esc_html( $country );
99
-	}
100
-
101
-	/**
102
-	 * Displays the state column.
103
-	 *
104
-	 * @since 1.0.19
105
-	 *
106
-	 * @param WP_User $user
107
-	 *
108
-	 * @return string Column Name
109
-	 */
110
-	public function column_state( $user ) {
111
-		$country = wpinv_sanitize_country( $user->_wpinv_country );
112
-		$state   = $user->_wpinv_state;
113
-		if ( $state ) {
114
-			$state = wpinv_state_name( $state, $country );
115
-		}
116
-
117
-		return esc_html( $state );
118
-	}
119
-
120
-	/**
121
-	 * Displays the signup column.
122
-	 *
123
-	 * @since 1.0.19
124
-	 *
125
-	 * @param WP_User $user
126
-	 *
127
-	 * @return string Column Name
128
-	 */
129
-	public function column_signup( $user ) {
130
-		return getpaid_format_date_value( $user->user_registered );
131
-	}
132
-
133
-	/**
134
-	 * Displays the total spent column.
135
-	 *
136
-	 * @since 1.0.19
137
-	 *
138
-	 * @param WP_User $user
139
-	 *
140
-	 * @return string Column Name
141
-	 */
142
-	public function column_total( $user ) {
143
-		return wpinv_price( $this->column_total_raw( $user ) );
144
-	}
145
-
146
-	/**
147
-	 * Displays the total spent column.
148
-	 *
149
-	 * @since 1.0.19
150
-	 *
151
-	 * @param WP_User $user
152
-	 *
153
-	 * @return float
154
-	 */
155
-	public function column_total_raw( $user ) {
156
-
157
-		$args = array(
158
-			'data'           => array(
159
-
160
-				'total' => array(
161
-					'type'     => 'invoice_data',
162
-					'function' => 'SUM',
163
-					'name'     => 'total_sales',
164
-				),
165
-
166
-			),
167
-			'where'          => array(
168
-
169
-				'author' => array(
170
-					'type'     => 'post_data',
171
-					'value'    => absint( $user->ID ),
172
-					'key'      => 'posts.post_author',
173
-					'operator' => '=',
174
-				),
175
-
176
-			),
177
-			'query_type'     => 'get_var',
178
-			'invoice_status' => array( 'wpi-renewal', 'wpi-processing', 'publish' ),
179
-		);
180
-
181
-		return wpinv_round_amount( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
182
-
183
-	}
184
-
185
-	/**
186
-	 * Displays the total spent column.
187
-	 *
188
-	 * @since 1.0.19
189
-	 *
190
-	 * @param WP_User $user
191
-	 *
192
-	 * @return string Column Name
193
-	 */
194
-	public function column_invoices( $user ) {
195
-
196
-		$args = array(
197
-			'data'           => array(
198
-
199
-				'ID' => array(
200
-					'type'     => 'post_data',
201
-					'function' => 'COUNT',
202
-					'name'     => 'count',
203
-					'distinct' => true,
204
-				),
205
-
206
-			),
207
-			'where'          => array(
208
-
209
-				'author' => array(
210
-					'type'     => 'post_data',
211
-					'value'    => absint( $user->ID ),
212
-					'key'      => 'posts.post_author',
213
-					'operator' => '=',
214
-				),
215
-
216
-			),
217
-			'query_type'     => 'get_var',
218
-			'invoice_status' => array_keys( wpinv_get_invoice_statuses() ),
219
-		);
220
-
221
-		$value = absint( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
222
-		$url   = add_query_arg( array( 'post_type' => 'wpi_invoice', 'author' => $user->ID ), admin_url( 'edit.php' ) );
223
-		return empty( $value ) ? '0' : '<a href="' . esc_url( $url ) . '">' . absint( $value ) . '</a>';
224
-
225
-	}
226
-
227
-	/**
228
-	 * Generates content for a single row of the table
229
-	 * @since 1.0.19
230
-	 *
231
-	 * @param int $item The user id.
232
-	 */
233
-	public function single_row( $item ) {
234
-		$item = get_user_by( 'id', $item );
235
-
236
-		if ( empty( $item ) ) {
237
-			return;
238
-		}
239
-
240
-		echo '<tr>';
241
-		$this->single_row_columns( $item );
242
-		echo '</tr>';
243
-	}
244
-
245
-	/**
246
-	 * Displays the customers name
247
-	 *
248
-	 * @param  WP_User $customer customer.
249
-	 * @return string
250
-	 */
251
-	public function column_name( $customer ) {
252
-
253
-		// Customer view URL.
254
-		$view_url    = esc_url( add_query_arg( 'user_id', $customer->ID, admin_url( 'user-edit.php' ) ) );
255
-		$row_actions = $this->row_actions(
256
-			array(
257
-				'view' => '<a href="' . $view_url . '#getpaid-fieldset-billing">' . __( 'Edit Details', 'invoicing' ) . '</a>',
258
-			)
259
-		);
260
-
261
-		// Get user's address.
262
-		$address = wpinv_get_user_address( $customer->ID );
263
-
264
-		// Customer email address.
265
-		$email       = sanitize_email( $customer->user_email );
266
-
267
-		// Customer's avatar.
268
-		$avatar = esc_url( get_avatar_url( $email ) );
269
-		$avatar = "<img src='$avatar' height='32' width='32'/>";
270
-
271
-		// Customer's name.
272
-		$name   = esc_html( "{$address['first_name']} {$address['last_name']}" );
273
-
274
-		if ( empty( trim( $name ) ) ) {
275
-			$name = esc_html( $address['display_name'] );
276
-		}
277
-
278
-		if ( ! empty( $name ) ) {
279
-			$name = "<div style='overflow: hidden;height: 18px;'>$name</div>";
280
-		}
281
-
282
-		$email = "<div class='row-title'><a href='$view_url'>$email</a></div>";
283
-
284
-		return "<div style='display: flex;'><div>$avatar</div><div style='margin-left: 10px;'>$name<strong>$email</strong>$row_actions</div></div>";
285
-
286
-	}
287
-
288
-	/**
289
-	 * Retrieve the table columns
290
-	 *
291
-	 * @since 1.0.19
292
-	 * @return array $columns Array of all the list table columns
293
-	 */
294
-	public function get_columns() {
295
-
296
-		$columns = array(
297
-			'name'     => __( 'Name', 'invoicing' ),
298
-			'country'  => __( 'Country', 'invoicing' ),
299
-			'state'    => __( 'State', 'invoicing' ),
300
-			'city'     => __( 'City', 'invoicing' ),
301
-			'zip'      => __( 'ZIP', 'invoicing' ),
302
-			'address'  => __( 'Address', 'invoicing' ),
303
-			'phone'    => __( 'Phone', 'invoicing' ),
304
-			'company'  => __( 'Company', 'invoicing' ),
305
-			'invoices' => __( 'Invoices', 'invoicing' ),
306
-			'total'    => __( 'Total Spend', 'invoicing' ),
307
-			'signup'   => __( 'Date created', 'invoicing' ),
308
-		);
309
-		return apply_filters( 'wpinv_customers_table_columns', $columns );
310
-
311
-	}
312
-
313
-	/**
314
-	 * Retrieve the current page number
315
-	 *
316
-	 * @since 1.0.19
317
-	 * @return int Current page number
318
-	 */
319
-	public function get_paged() {
320
-		return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
321
-	}
322
-
323
-	/**
324
-	 * Returns bulk actions.
325
-	 *
326
-	 * @since 1.0.19
327
-	 * @return void
328
-	 */
329
-	public function bulk_actions( $which = '' ) {
330
-		return array();
331
-	}
332
-
333
-	/**
334
-	 *  Prepares the display query
335
-	 */
336
-	public function prepare_query() {
337
-		global $wpdb;
338
-
339
-		$post_types = '';
340
-
341
-		foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) {
342
-			$post_types .= $wpdb->prepare( 'post_type=%s OR ', $post_type );
343
-		}
344
-
345
-		$post_types = rtrim( $post_types, ' OR' );
346
-
347
-		// Maybe search.
348
-		if ( ! empty( $_POST['s'] ) ) {
349
-			$users = get_users(
350
-				array(
351
-					'search'         => '*' . sanitize_text_field( urldecode( $_POST['s'] ) ) . '*',
352
-					'search_columns' => array( 'user_login', 'user_email', 'display_name' ),
353
-					'fields'         => 'ID',
354
-				)
355
-			);
356
-
357
-			$users      = implode( ', ', $users );
358
-			$post_types = "($post_types) AND ( post_author IN ( $users ) )";
359
-		}
360
-
361
-		// Users with invoices.
362
-    	$customers = $wpdb->get_col(
363
-			$wpdb->prepare(
364
-				"SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types LIMIT %d,%d",
365
-				$this->get_paged() * 10 - 10,
366
-				$this->per_page
367
-			)
368
-		);
369
-
370
-		$this->items = $customers;
371
-		$this->total = (int) $wpdb->get_var( "SELECT COUNT( DISTINCT( post_author ) ) FROM $wpdb->posts WHERE $post_types" );
372
-
373
-	}
374
-
375
-	/**
376
-	 * Setup the final data for the table
377
-	 *
378
-	 * @since 1.0.19
379
-	 * @return void
380
-	 */
381
-	public function prepare_items() {
382
-		$columns               = $this->get_columns();
383
-		$hidden                = array(); // No hidden columns
384
-		$sortable              = $this->get_sortable_columns();
385
-		$this->_column_headers = array( $columns, $hidden, $sortable );
386
-		$this->prepare_query();
387
-
388
-		$this->set_pagination_args(
389
-			array(
390
-				'total_items' => $this->total,
391
-				'per_page'    => $this->per_page,
392
-				'total_pages' => ceil( $this->total / $this->per_page ),
393
-			)
394
-		);
395
-
396
-	}
55
+    }
56
+
57
+    /**
58
+     * Gets the name of the primary column.
59
+     *
60
+     * @since 1.0.19
61
+     * @access protected
62
+     *
63
+     * @return string Name of the primary column.
64
+     */
65
+    protected function get_primary_column_name() {
66
+        return 'name';
67
+    }
68
+
69
+    /**
70
+     * This function renders most of the columns in the list table.
71
+     *
72
+     * @since 1.0.19
73
+     *
74
+     * @param WP_User $item
75
+     * @param string $column_name The name of the column
76
+     *
77
+     * @return string Column Name
78
+     */
79
+    public function column_default( $item, $column_name ) {
80
+        $value = esc_html( get_user_meta( $item->ID, '_wpinv_' . $column_name, true ) );
81
+        return apply_filters( 'wpinv_customers_table_column' . $column_name, $value, $item );
82
+    }
83
+
84
+    /**
85
+     * Displays the country column.
86
+     *
87
+     * @since 1.0.19
88
+     *
89
+     * @param WP_User $user
90
+     *
91
+     * @return string Column Name
92
+     */
93
+    public function column_country( $user ) {
94
+        $country = wpinv_sanitize_country( $user->_wpinv_country );
95
+        if ( $country ) {
96
+            $country = wpinv_country_name( $country );
97
+        }
98
+        return esc_html( $country );
99
+    }
100
+
101
+    /**
102
+     * Displays the state column.
103
+     *
104
+     * @since 1.0.19
105
+     *
106
+     * @param WP_User $user
107
+     *
108
+     * @return string Column Name
109
+     */
110
+    public function column_state( $user ) {
111
+        $country = wpinv_sanitize_country( $user->_wpinv_country );
112
+        $state   = $user->_wpinv_state;
113
+        if ( $state ) {
114
+            $state = wpinv_state_name( $state, $country );
115
+        }
116
+
117
+        return esc_html( $state );
118
+    }
119
+
120
+    /**
121
+     * Displays the signup column.
122
+     *
123
+     * @since 1.0.19
124
+     *
125
+     * @param WP_User $user
126
+     *
127
+     * @return string Column Name
128
+     */
129
+    public function column_signup( $user ) {
130
+        return getpaid_format_date_value( $user->user_registered );
131
+    }
132
+
133
+    /**
134
+     * Displays the total spent column.
135
+     *
136
+     * @since 1.0.19
137
+     *
138
+     * @param WP_User $user
139
+     *
140
+     * @return string Column Name
141
+     */
142
+    public function column_total( $user ) {
143
+        return wpinv_price( $this->column_total_raw( $user ) );
144
+    }
145
+
146
+    /**
147
+     * Displays the total spent column.
148
+     *
149
+     * @since 1.0.19
150
+     *
151
+     * @param WP_User $user
152
+     *
153
+     * @return float
154
+     */
155
+    public function column_total_raw( $user ) {
156
+
157
+        $args = array(
158
+            'data'           => array(
159
+
160
+                'total' => array(
161
+                    'type'     => 'invoice_data',
162
+                    'function' => 'SUM',
163
+                    'name'     => 'total_sales',
164
+                ),
165
+
166
+            ),
167
+            'where'          => array(
168
+
169
+                'author' => array(
170
+                    'type'     => 'post_data',
171
+                    'value'    => absint( $user->ID ),
172
+                    'key'      => 'posts.post_author',
173
+                    'operator' => '=',
174
+                ),
175
+
176
+            ),
177
+            'query_type'     => 'get_var',
178
+            'invoice_status' => array( 'wpi-renewal', 'wpi-processing', 'publish' ),
179
+        );
180
+
181
+        return wpinv_round_amount( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
182
+
183
+    }
184
+
185
+    /**
186
+     * Displays the total spent column.
187
+     *
188
+     * @since 1.0.19
189
+     *
190
+     * @param WP_User $user
191
+     *
192
+     * @return string Column Name
193
+     */
194
+    public function column_invoices( $user ) {
195
+
196
+        $args = array(
197
+            'data'           => array(
198
+
199
+                'ID' => array(
200
+                    'type'     => 'post_data',
201
+                    'function' => 'COUNT',
202
+                    'name'     => 'count',
203
+                    'distinct' => true,
204
+                ),
205
+
206
+            ),
207
+            'where'          => array(
208
+
209
+                'author' => array(
210
+                    'type'     => 'post_data',
211
+                    'value'    => absint( $user->ID ),
212
+                    'key'      => 'posts.post_author',
213
+                    'operator' => '=',
214
+                ),
215
+
216
+            ),
217
+            'query_type'     => 'get_var',
218
+            'invoice_status' => array_keys( wpinv_get_invoice_statuses() ),
219
+        );
220
+
221
+        $value = absint( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
222
+        $url   = add_query_arg( array( 'post_type' => 'wpi_invoice', 'author' => $user->ID ), admin_url( 'edit.php' ) );
223
+        return empty( $value ) ? '0' : '<a href="' . esc_url( $url ) . '">' . absint( $value ) . '</a>';
224
+
225
+    }
226
+
227
+    /**
228
+     * Generates content for a single row of the table
229
+     * @since 1.0.19
230
+     *
231
+     * @param int $item The user id.
232
+     */
233
+    public function single_row( $item ) {
234
+        $item = get_user_by( 'id', $item );
235
+
236
+        if ( empty( $item ) ) {
237
+            return;
238
+        }
239
+
240
+        echo '<tr>';
241
+        $this->single_row_columns( $item );
242
+        echo '</tr>';
243
+    }
244
+
245
+    /**
246
+     * Displays the customers name
247
+     *
248
+     * @param  WP_User $customer customer.
249
+     * @return string
250
+     */
251
+    public function column_name( $customer ) {
252
+
253
+        // Customer view URL.
254
+        $view_url    = esc_url( add_query_arg( 'user_id', $customer->ID, admin_url( 'user-edit.php' ) ) );
255
+        $row_actions = $this->row_actions(
256
+            array(
257
+                'view' => '<a href="' . $view_url . '#getpaid-fieldset-billing">' . __( 'Edit Details', 'invoicing' ) . '</a>',
258
+            )
259
+        );
260
+
261
+        // Get user's address.
262
+        $address = wpinv_get_user_address( $customer->ID );
263
+
264
+        // Customer email address.
265
+        $email       = sanitize_email( $customer->user_email );
266
+
267
+        // Customer's avatar.
268
+        $avatar = esc_url( get_avatar_url( $email ) );
269
+        $avatar = "<img src='$avatar' height='32' width='32'/>";
270
+
271
+        // Customer's name.
272
+        $name   = esc_html( "{$address['first_name']} {$address['last_name']}" );
273
+
274
+        if ( empty( trim( $name ) ) ) {
275
+            $name = esc_html( $address['display_name'] );
276
+        }
277
+
278
+        if ( ! empty( $name ) ) {
279
+            $name = "<div style='overflow: hidden;height: 18px;'>$name</div>";
280
+        }
281
+
282
+        $email = "<div class='row-title'><a href='$view_url'>$email</a></div>";
283
+
284
+        return "<div style='display: flex;'><div>$avatar</div><div style='margin-left: 10px;'>$name<strong>$email</strong>$row_actions</div></div>";
285
+
286
+    }
287
+
288
+    /**
289
+     * Retrieve the table columns
290
+     *
291
+     * @since 1.0.19
292
+     * @return array $columns Array of all the list table columns
293
+     */
294
+    public function get_columns() {
295
+
296
+        $columns = array(
297
+            'name'     => __( 'Name', 'invoicing' ),
298
+            'country'  => __( 'Country', 'invoicing' ),
299
+            'state'    => __( 'State', 'invoicing' ),
300
+            'city'     => __( 'City', 'invoicing' ),
301
+            'zip'      => __( 'ZIP', 'invoicing' ),
302
+            'address'  => __( 'Address', 'invoicing' ),
303
+            'phone'    => __( 'Phone', 'invoicing' ),
304
+            'company'  => __( 'Company', 'invoicing' ),
305
+            'invoices' => __( 'Invoices', 'invoicing' ),
306
+            'total'    => __( 'Total Spend', 'invoicing' ),
307
+            'signup'   => __( 'Date created', 'invoicing' ),
308
+        );
309
+        return apply_filters( 'wpinv_customers_table_columns', $columns );
310
+
311
+    }
312
+
313
+    /**
314
+     * Retrieve the current page number
315
+     *
316
+     * @since 1.0.19
317
+     * @return int Current page number
318
+     */
319
+    public function get_paged() {
320
+        return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
321
+    }
322
+
323
+    /**
324
+     * Returns bulk actions.
325
+     *
326
+     * @since 1.0.19
327
+     * @return void
328
+     */
329
+    public function bulk_actions( $which = '' ) {
330
+        return array();
331
+    }
332
+
333
+    /**
334
+     *  Prepares the display query
335
+     */
336
+    public function prepare_query() {
337
+        global $wpdb;
338
+
339
+        $post_types = '';
340
+
341
+        foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) {
342
+            $post_types .= $wpdb->prepare( 'post_type=%s OR ', $post_type );
343
+        }
344
+
345
+        $post_types = rtrim( $post_types, ' OR' );
346
+
347
+        // Maybe search.
348
+        if ( ! empty( $_POST['s'] ) ) {
349
+            $users = get_users(
350
+                array(
351
+                    'search'         => '*' . sanitize_text_field( urldecode( $_POST['s'] ) ) . '*',
352
+                    'search_columns' => array( 'user_login', 'user_email', 'display_name' ),
353
+                    'fields'         => 'ID',
354
+                )
355
+            );
356
+
357
+            $users      = implode( ', ', $users );
358
+            $post_types = "($post_types) AND ( post_author IN ( $users ) )";
359
+        }
360
+
361
+        // Users with invoices.
362
+        $customers = $wpdb->get_col(
363
+            $wpdb->prepare(
364
+                "SELECT DISTINCT( post_author ) FROM $wpdb->posts WHERE $post_types LIMIT %d,%d",
365
+                $this->get_paged() * 10 - 10,
366
+                $this->per_page
367
+            )
368
+        );
369
+
370
+        $this->items = $customers;
371
+        $this->total = (int) $wpdb->get_var( "SELECT COUNT( DISTINCT( post_author ) ) FROM $wpdb->posts WHERE $post_types" );
372
+
373
+    }
374
+
375
+    /**
376
+     * Setup the final data for the table
377
+     *
378
+     * @since 1.0.19
379
+     * @return void
380
+     */
381
+    public function prepare_items() {
382
+        $columns               = $this->get_columns();
383
+        $hidden                = array(); // No hidden columns
384
+        $sortable              = $this->get_sortable_columns();
385
+        $this->_column_headers = array( $columns, $hidden, $sortable );
386
+        $this->prepare_query();
387
+
388
+        $this->set_pagination_args(
389
+            array(
390
+                'total_items' => $this->total,
391
+                'per_page'    => $this->per_page,
392
+                'total_pages' => ceil( $this->total / $this->per_page ),
393
+            )
394
+        );
395
+
396
+    }
397 397
 }
Please login to merge, or discard this patch.
Spacing   +67 added lines, -67 removed lines patch added patch discarded remove patch
@@ -5,12 +5,12 @@  discard block
 block discarded – undo
5 5
  */
6 6
 
7 7
 // Exit if accessed directly
8
-if ( ! defined( 'ABSPATH' ) ) {
8
+if (!defined('ABSPATH')) {
9 9
 exit;
10 10
 }
11 11
 
12 12
 // Load WP_List_Table if not loaded
13
-if ( ! class_exists( 'WP_List_Table' ) ) {
13
+if (!class_exists('WP_List_Table')) {
14 14
 	require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
15 15
 }
16 16
 
@@ -76,9 +76,9 @@  discard block
 block discarded – undo
76 76
 	 *
77 77
 	 * @return string Column Name
78 78
 	 */
79
-	public function column_default( $item, $column_name ) {
80
-		$value = esc_html( get_user_meta( $item->ID, '_wpinv_' . $column_name, true ) );
81
-		return apply_filters( 'wpinv_customers_table_column' . $column_name, $value, $item );
79
+	public function column_default($item, $column_name) {
80
+		$value = esc_html(get_user_meta($item->ID, '_wpinv_' . $column_name, true));
81
+		return apply_filters('wpinv_customers_table_column' . $column_name, $value, $item);
82 82
 	}
83 83
 
84 84
 	/**
@@ -90,12 +90,12 @@  discard block
 block discarded – undo
90 90
 	 *
91 91
 	 * @return string Column Name
92 92
 	 */
93
-	public function column_country( $user ) {
94
-		$country = wpinv_sanitize_country( $user->_wpinv_country );
95
-		if ( $country ) {
96
-			$country = wpinv_country_name( $country );
93
+	public function column_country($user) {
94
+		$country = wpinv_sanitize_country($user->_wpinv_country);
95
+		if ($country) {
96
+			$country = wpinv_country_name($country);
97 97
 		}
98
-		return esc_html( $country );
98
+		return esc_html($country);
99 99
 	}
100 100
 
101 101
 	/**
@@ -107,14 +107,14 @@  discard block
 block discarded – undo
107 107
 	 *
108 108
 	 * @return string Column Name
109 109
 	 */
110
-	public function column_state( $user ) {
111
-		$country = wpinv_sanitize_country( $user->_wpinv_country );
110
+	public function column_state($user) {
111
+		$country = wpinv_sanitize_country($user->_wpinv_country);
112 112
 		$state   = $user->_wpinv_state;
113
-		if ( $state ) {
114
-			$state = wpinv_state_name( $state, $country );
113
+		if ($state) {
114
+			$state = wpinv_state_name($state, $country);
115 115
 		}
116 116
 
117
-		return esc_html( $state );
117
+		return esc_html($state);
118 118
 	}
119 119
 
120 120
 	/**
@@ -126,8 +126,8 @@  discard block
 block discarded – undo
126 126
 	 *
127 127
 	 * @return string Column Name
128 128
 	 */
129
-	public function column_signup( $user ) {
130
-		return getpaid_format_date_value( $user->user_registered );
129
+	public function column_signup($user) {
130
+		return getpaid_format_date_value($user->user_registered);
131 131
 	}
132 132
 
133 133
 	/**
@@ -139,8 +139,8 @@  discard block
 block discarded – undo
139 139
 	 *
140 140
 	 * @return string Column Name
141 141
 	 */
142
-	public function column_total( $user ) {
143
-		return wpinv_price( $this->column_total_raw( $user ) );
142
+	public function column_total($user) {
143
+		return wpinv_price($this->column_total_raw($user));
144 144
 	}
145 145
 
146 146
 	/**
@@ -152,7 +152,7 @@  discard block
 block discarded – undo
152 152
 	 *
153 153
 	 * @return float
154 154
 	 */
155
-	public function column_total_raw( $user ) {
155
+	public function column_total_raw($user) {
156 156
 
157 157
 		$args = array(
158 158
 			'data'           => array(
@@ -168,17 +168,17 @@  discard block
 block discarded – undo
168 168
 
169 169
 				'author' => array(
170 170
 					'type'     => 'post_data',
171
-					'value'    => absint( $user->ID ),
171
+					'value'    => absint($user->ID),
172 172
 					'key'      => 'posts.post_author',
173 173
 					'operator' => '=',
174 174
 				),
175 175
 
176 176
 			),
177 177
 			'query_type'     => 'get_var',
178
-			'invoice_status' => array( 'wpi-renewal', 'wpi-processing', 'publish' ),
178
+			'invoice_status' => array('wpi-renewal', 'wpi-processing', 'publish'),
179 179
 		);
180 180
 
181
-		return wpinv_round_amount( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
181
+		return wpinv_round_amount(GetPaid_Reports_Helper::get_invoice_report_data($args));
182 182
 
183 183
 	}
184 184
 
@@ -191,7 +191,7 @@  discard block
 block discarded – undo
191 191
 	 *
192 192
 	 * @return string Column Name
193 193
 	 */
194
-	public function column_invoices( $user ) {
194
+	public function column_invoices($user) {
195 195
 
196 196
 		$args = array(
197 197
 			'data'           => array(
@@ -208,19 +208,19 @@  discard block
 block discarded – undo
208 208
 
209 209
 				'author' => array(
210 210
 					'type'     => 'post_data',
211
-					'value'    => absint( $user->ID ),
211
+					'value'    => absint($user->ID),
212 212
 					'key'      => 'posts.post_author',
213 213
 					'operator' => '=',
214 214
 				),
215 215
 
216 216
 			),
217 217
 			'query_type'     => 'get_var',
218
-			'invoice_status' => array_keys( wpinv_get_invoice_statuses() ),
218
+			'invoice_status' => array_keys(wpinv_get_invoice_statuses()),
219 219
 		);
220 220
 
221
-		$value = absint( GetPaid_Reports_Helper::get_invoice_report_data( $args ) );
222
-		$url   = add_query_arg( array( 'post_type' => 'wpi_invoice', 'author' => $user->ID ), admin_url( 'edit.php' ) );
223
-		return empty( $value ) ? '0' : '<a href="' . esc_url( $url ) . '">' . absint( $value ) . '</a>';
221
+		$value = absint(GetPaid_Reports_Helper::get_invoice_report_data($args));
222
+		$url   = add_query_arg(array('post_type' => 'wpi_invoice', 'author' => $user->ID), admin_url('edit.php'));
223
+		return empty($value) ? '0' : '<a href="' . esc_url($url) . '">' . absint($value) . '</a>';
224 224
 
225 225
 	}
226 226
 
@@ -230,15 +230,15 @@  discard block
 block discarded – undo
230 230
 	 *
231 231
 	 * @param int $item The user id.
232 232
 	 */
233
-	public function single_row( $item ) {
234
-		$item = get_user_by( 'id', $item );
233
+	public function single_row($item) {
234
+		$item = get_user_by('id', $item);
235 235
 
236
-		if ( empty( $item ) ) {
236
+		if (empty($item)) {
237 237
 			return;
238 238
 		}
239 239
 
240 240
 		echo '<tr>';
241
-		$this->single_row_columns( $item );
241
+		$this->single_row_columns($item);
242 242
 		echo '</tr>';
243 243
 	}
244 244
 
@@ -248,34 +248,34 @@  discard block
 block discarded – undo
248 248
 	 * @param  WP_User $customer customer.
249 249
 	 * @return string
250 250
 	 */
251
-	public function column_name( $customer ) {
251
+	public function column_name($customer) {
252 252
 
253 253
 		// Customer view URL.
254
-		$view_url    = esc_url( add_query_arg( 'user_id', $customer->ID, admin_url( 'user-edit.php' ) ) );
254
+		$view_url    = esc_url(add_query_arg('user_id', $customer->ID, admin_url('user-edit.php')));
255 255
 		$row_actions = $this->row_actions(
256 256
 			array(
257
-				'view' => '<a href="' . $view_url . '#getpaid-fieldset-billing">' . __( 'Edit Details', 'invoicing' ) . '</a>',
257
+				'view' => '<a href="' . $view_url . '#getpaid-fieldset-billing">' . __('Edit Details', 'invoicing') . '</a>',
258 258
 			)
259 259
 		);
260 260
 
261 261
 		// Get user's address.
262
-		$address = wpinv_get_user_address( $customer->ID );
262
+		$address = wpinv_get_user_address($customer->ID);
263 263
 
264 264
 		// Customer email address.
265
-		$email       = sanitize_email( $customer->user_email );
265
+		$email = sanitize_email($customer->user_email);
266 266
 
267 267
 		// Customer's avatar.
268
-		$avatar = esc_url( get_avatar_url( $email ) );
268
+		$avatar = esc_url(get_avatar_url($email));
269 269
 		$avatar = "<img src='$avatar' height='32' width='32'/>";
270 270
 
271 271
 		// Customer's name.
272
-		$name   = esc_html( "{$address['first_name']} {$address['last_name']}" );
272
+		$name   = esc_html("{$address['first_name']} {$address['last_name']}");
273 273
 
274
-		if ( empty( trim( $name ) ) ) {
275
-			$name = esc_html( $address['display_name'] );
274
+		if (empty(trim($name))) {
275
+			$name = esc_html($address['display_name']);
276 276
 		}
277 277
 
278
-		if ( ! empty( $name ) ) {
278
+		if (!empty($name)) {
279 279
 			$name = "<div style='overflow: hidden;height: 18px;'>$name</div>";
280 280
 		}
281 281
 
@@ -294,19 +294,19 @@  discard block
 block discarded – undo
294 294
 	public function get_columns() {
295 295
 
296 296
 		$columns = array(
297
-			'name'     => __( 'Name', 'invoicing' ),
298
-			'country'  => __( 'Country', 'invoicing' ),
299
-			'state'    => __( 'State', 'invoicing' ),
300
-			'city'     => __( 'City', 'invoicing' ),
301
-			'zip'      => __( 'ZIP', 'invoicing' ),
302
-			'address'  => __( 'Address', 'invoicing' ),
303
-			'phone'    => __( 'Phone', 'invoicing' ),
304
-			'company'  => __( 'Company', 'invoicing' ),
305
-			'invoices' => __( 'Invoices', 'invoicing' ),
306
-			'total'    => __( 'Total Spend', 'invoicing' ),
307
-			'signup'   => __( 'Date created', 'invoicing' ),
297
+			'name'     => __('Name', 'invoicing'),
298
+			'country'  => __('Country', 'invoicing'),
299
+			'state'    => __('State', 'invoicing'),
300
+			'city'     => __('City', 'invoicing'),
301
+			'zip'      => __('ZIP', 'invoicing'),
302
+			'address'  => __('Address', 'invoicing'),
303
+			'phone'    => __('Phone', 'invoicing'),
304
+			'company'  => __('Company', 'invoicing'),
305
+			'invoices' => __('Invoices', 'invoicing'),
306
+			'total'    => __('Total Spend', 'invoicing'),
307
+			'signup'   => __('Date created', 'invoicing'),
308 308
 		);
309
-		return apply_filters( 'wpinv_customers_table_columns', $columns );
309
+		return apply_filters('wpinv_customers_table_columns', $columns);
310 310
 
311 311
 	}
312 312
 
@@ -317,7 +317,7 @@  discard block
 block discarded – undo
317 317
 	 * @return int Current page number
318 318
 	 */
319 319
 	public function get_paged() {
320
-		return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
320
+		return isset($_GET['paged']) ? absint($_GET['paged']) : 1;
321 321
 	}
322 322
 
323 323
 	/**
@@ -326,7 +326,7 @@  discard block
 block discarded – undo
326 326
 	 * @since 1.0.19
327 327
 	 * @return void
328 328
 	 */
329
-	public function bulk_actions( $which = '' ) {
329
+	public function bulk_actions($which = '') {
330 330
 		return array();
331 331
 	}
332 332
 
@@ -338,23 +338,23 @@  discard block
 block discarded – undo
338 338
 
339 339
 		$post_types = '';
340 340
 
341
-		foreach ( array_keys( getpaid_get_invoice_post_types() ) as $post_type ) {
342
-			$post_types .= $wpdb->prepare( 'post_type=%s OR ', $post_type );
341
+		foreach (array_keys(getpaid_get_invoice_post_types()) as $post_type) {
342
+			$post_types .= $wpdb->prepare('post_type=%s OR ', $post_type);
343 343
 		}
344 344
 
345
-		$post_types = rtrim( $post_types, ' OR' );
345
+		$post_types = rtrim($post_types, ' OR');
346 346
 
347 347
 		// Maybe search.
348
-		if ( ! empty( $_POST['s'] ) ) {
348
+		if (!empty($_POST['s'])) {
349 349
 			$users = get_users(
350 350
 				array(
351
-					'search'         => '*' . sanitize_text_field( urldecode( $_POST['s'] ) ) . '*',
352
-					'search_columns' => array( 'user_login', 'user_email', 'display_name' ),
351
+					'search'         => '*' . sanitize_text_field(urldecode($_POST['s'])) . '*',
352
+					'search_columns' => array('user_login', 'user_email', 'display_name'),
353 353
 					'fields'         => 'ID',
354 354
 				)
355 355
 			);
356 356
 
357
-			$users      = implode( ', ', $users );
357
+			$users      = implode(', ', $users);
358 358
 			$post_types = "($post_types) AND ( post_author IN ( $users ) )";
359 359
 		}
360 360
 
@@ -368,7 +368,7 @@  discard block
 block discarded – undo
368 368
 		);
369 369
 
370 370
 		$this->items = $customers;
371
-		$this->total = (int) $wpdb->get_var( "SELECT COUNT( DISTINCT( post_author ) ) FROM $wpdb->posts WHERE $post_types" );
371
+		$this->total = (int) $wpdb->get_var("SELECT COUNT( DISTINCT( post_author ) ) FROM $wpdb->posts WHERE $post_types");
372 372
 
373 373
 	}
374 374
 
@@ -382,14 +382,14 @@  discard block
 block discarded – undo
382 382
 		$columns               = $this->get_columns();
383 383
 		$hidden                = array(); // No hidden columns
384 384
 		$sortable              = $this->get_sortable_columns();
385
-		$this->_column_headers = array( $columns, $hidden, $sortable );
385
+		$this->_column_headers = array($columns, $hidden, $sortable);
386 386
 		$this->prepare_query();
387 387
 
388 388
 		$this->set_pagination_args(
389 389
 			array(
390 390
 				'total_items' => $this->total,
391 391
 				'per_page'    => $this->per_page,
392
-				'total_pages' => ceil( $this->total / $this->per_page ),
392
+				'total_pages' => ceil($this->total / $this->per_page),
393 393
 			)
394 394
 		);
395 395
 
Please login to merge, or discard this patch.
templates/payment-forms/elements/pay_button.php 1 patch
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -7,20 +7,20 @@  discard block
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12
-$class = empty( $class ) ? 'btn-primary' : sanitize_html_class( $class );
13
-$label = empty( $label ) ? esc_attr__( 'Pay %price% »', 'invoicing' ) : esc_attr( $label );
14
-$free  = empty( $free ) ? esc_attr__( 'Continue »', 'invoicing' ) : esc_attr( $free );
12
+$class = empty($class) ? 'btn-primary' : sanitize_html_class($class);
13
+$label = empty($label) ? esc_attr__('Pay %price% »', 'invoicing') : esc_attr($label);
14
+$free  = empty($free) ? esc_attr__('Continue »', 'invoicing') : esc_attr($free);
15 15
 
16
-do_action( 'getpaid_before_payment_form_pay_button', $form );
16
+do_action('getpaid_before_payment_form_pay_button', $form);
17 17
 
18 18
 aui()->input(
19 19
     array(
20
-        'name'             => esc_attr( $id ),
21
-        'id'               => esc_attr( $element_id ),
20
+        'name'             => esc_attr($id),
21
+        'id'               => esc_attr($element_id),
22 22
         'value'            => $label,
23
-        'help_text'        => empty( $description ) ? '' : wp_kses_post( $description ),
23
+        'help_text'        => empty($description) ? '' : wp_kses_post($description),
24 24
         'type'             => 'submit',
25 25
         'class'            => 'getpaid-payment-form-submit btn btn-block submit-button ' . $class,
26 26
         'extra_attributes' => array(
@@ -31,4 +31,4 @@  discard block
 block discarded – undo
31 31
     true
32 32
 );
33 33
 
34
-do_action( 'getpaid_after_payment_form_pay_button', $form );
34
+do_action('getpaid_after_payment_form_pay_button', $form);
Please login to merge, or discard this patch.
templates/payment-forms/elements/checkbox.php 1 patch
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -7,24 +7,24 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12
-$label       = empty( $label ) ? '' : wp_kses_post( $label );
13
-$label_class = sanitize_key( preg_replace( '/[^A-Za-z0-9_-]/', '-', $label ) );
12
+$label       = empty($label) ? '' : wp_kses_post($label);
13
+$label_class = sanitize_key(preg_replace('/[^A-Za-z0-9_-]/', '-', $label));
14 14
 
15
-if ( ! empty( $required ) ) {
15
+if (!empty($required)) {
16 16
     $label .= "<span class='text-danger'> *</span>";
17 17
 }
18 18
 
19 19
 aui()->input(
20 20
     array(
21 21
         'type'      => 'checkbox',
22
-        'name'      => esc_attr( $id ),
23
-        'id'        => esc_attr( $element_id ),
24
-        'required'  => ! empty( $required ),
22
+        'name'      => esc_attr($id),
23
+        'id'        => esc_attr($element_id),
24
+        'required'  => !empty($required),
25 25
         'label'     => $label,
26
-        'value'     => esc_attr__( 'Yes', 'invoicing' ),
27
-        'help_text' => empty( $description ) ? '' : wp_kses_post( $description ),
26
+        'value'     => esc_attr__('Yes', 'invoicing'),
27
+        'help_text' => empty($description) ? '' : wp_kses_post($description),
28 28
         'class'     => 'w-auto ' . $label_class,
29 29
     ),
30 30
     true
Please login to merge, or discard this patch.
templates/payment-forms/form.php 2 patches
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
 
58 58
         // And the optional invoice id.
59 59
         if ( ! empty( $form->invoice ) ) {
60
-		    getpaid_hidden_field( 'invoice_id', $form->invoice->get_id() );
60
+            getpaid_hidden_field( 'invoice_id', $form->invoice->get_id() );
61 61
         }
62 62
 
63 63
         // We also want to include the form id.
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
 
78 78
                     foreach ( $form->get_elements() as $element ) {
79 79
 
80
-					    if ( isset( $element['type'] ) ) {
80
+                        if ( isset( $element['type'] ) ) {
81 81
                             $grid_class = getpaid_get_form_element_grid_class( $element );
82 82
                             echo "<div class='" . esc_attr( $grid_class ) . "'>";
83 83
                             do_action( 'getpaid_payment_form_element', $element, $form );
Please login to merge, or discard this patch.
Spacing   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -7,17 +7,17 @@  discard block
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12 12
 // Standardize IDs.
13 13
 global $rendered_getpaid_forms;
14 14
 
15 15
 // Make sure that the form is active.
16
-if ( ! $form->is_active() ) {
16
+if (!$form->is_active()) {
17 17
     aui()->alert(
18 18
         array(
19 19
             'type'    => 'warning',
20
-            'content' => __( 'This payment form is no longer active', 'invoicing' ),
20
+            'content' => __('This payment form is no longer active', 'invoicing'),
21 21
         ),
22 22
         true
23 23
     );
@@ -25,12 +25,12 @@  discard block
 block discarded – undo
25 25
 }
26 26
 
27 27
 // Require login to checkout.
28
-if ( wpinv_require_login_to_checkout() && ! get_current_user_id() ) {
28
+if (wpinv_require_login_to_checkout() && !get_current_user_id()) {
29 29
 
30 30
     aui()->alert(
31 31
         array(
32 32
             'type'    => 'danger',
33
-            'content' => __( 'You must be logged in to checkout.', 'invoicing' ),
33
+            'content' => __('You must be logged in to checkout.', 'invoicing'),
34 34
         ),
35 35
         true
36 36
     );
@@ -38,36 +38,36 @@  discard block
 block discarded – undo
38 38
 
39 39
 }
40 40
 
41
-if ( ! is_array( $rendered_getpaid_forms ) ) {
41
+if (!is_array($rendered_getpaid_forms)) {
42 42
     $rendered_getpaid_forms = array();
43 43
 }
44 44
 
45
-$rendered_getpaid_forms[ $form->get_id() ] = isset( $rendered_getpaid_forms[ $form->get_id() ] ) ? $rendered_getpaid_forms[ $form->get_id() ] + 1 : 0;
45
+$rendered_getpaid_forms[$form->get_id()] = isset($rendered_getpaid_forms[$form->get_id()]) ? $rendered_getpaid_forms[$form->get_id()] + 1 : 0;
46 46
 
47 47
 // Fires before displaying a payment form.
48
-do_action( 'getpaid_before_payment_form', $form );
48
+do_action('getpaid_before_payment_form', $form);
49 49
 ?>
50 50
 
51
-<form class='getpaid-payment-form getpaid-payment-form-<?php echo absint( $form->get_id() ); ?> bsui position-relative' method='POST' data-key='<?php echo esc_attr( uniqid( 'gpf' ) ); ?>' data-currency='<?php echo esc_attr( empty( $form->invoice ) ? wpinv_get_currency() : $form->invoice->get_currency() ); ?>' novalidate>
51
+<form class='getpaid-payment-form getpaid-payment-form-<?php echo absint($form->get_id()); ?> bsui position-relative' method='POST' data-key='<?php echo esc_attr(uniqid('gpf')); ?>' data-currency='<?php echo esc_attr(empty($form->invoice) ? wpinv_get_currency() : $form->invoice->get_currency()); ?>' novalidate>
52 52
 
53 53
     <?php
54 54
 
55 55
         // Fires when printing the top of a payment form.
56
-        do_action( 'getpaid_payment_form_top', $form );
56
+        do_action('getpaid_payment_form_top', $form);
57 57
 
58 58
         // And the optional invoice id.
59
-        if ( ! empty( $form->invoice ) ) {
60
-		    getpaid_hidden_field( 'invoice_id', $form->invoice->get_id() );
59
+        if (!empty($form->invoice)) {
60
+		    getpaid_hidden_field('invoice_id', $form->invoice->get_id());
61 61
         }
62 62
 
63 63
         // We also want to include the form id.
64
-        getpaid_hidden_field( 'form_id', $form->get_id() );
64
+        getpaid_hidden_field('form_id', $form->get_id());
65 65
 
66 66
         // And an indication that this is a payment form submission.
67
-        getpaid_hidden_field( 'getpaid_payment_form_submission', '1' );
67
+        getpaid_hidden_field('getpaid_payment_form_submission', '1');
68 68
 
69 69
         // Fires before displaying payment form elements.
70
-        do_action( 'getpaid_payment_form_before_elements', $form );
70
+        do_action('getpaid_payment_form_before_elements', $form);
71 71
 
72 72
         // Display the elements.
73 73
         ?>
@@ -75,13 +75,13 @@  discard block
 block discarded – undo
75 75
             <div class="row">
76 76
                 <?php
77 77
 
78
-                    foreach ( $form->get_elements() as $element ) {
78
+                    foreach ($form->get_elements() as $element) {
79 79
 
80
-					    if ( isset( $element['type'] ) ) {
81
-                            $grid_class = getpaid_get_form_element_grid_class( $element );
82
-                            echo "<div class='" . esc_attr( $grid_class ) . "'>";
83
-                            do_action( 'getpaid_payment_form_element', $element, $form );
84
-                            do_action( "getpaid_payment_form_element_{$element['type']}_template", $element, $form );
80
+					    if (isset($element['type'])) {
81
+                            $grid_class = getpaid_get_form_element_grid_class($element);
82
+                            echo "<div class='" . esc_attr($grid_class) . "'>";
83
+                            do_action('getpaid_payment_form_element', $element, $form);
84
+                            do_action("getpaid_payment_form_element_{$element['type']}_template", $element, $form);
85 85
                             echo '</div>';
86 86
                         }
87 87
                     }
@@ -92,28 +92,28 @@  discard block
 block discarded – undo
92 92
 
93 93
         <?php
94 94
         // Fires after displaying payment form elements.
95
-        do_action( 'getpaid_payment_form_after_elements', $form );
95
+        do_action('getpaid_payment_form_after_elements', $form);
96 96
 
97 97
         echo "<div class='getpaid-payment-form-errors alert alert-danger d-none'></div>";
98 98
 
99
-        if ( wpinv_current_user_can_manage_invoicing() ) {
99
+        if (wpinv_current_user_can_manage_invoicing()) {
100 100
 
101 101
             edit_post_link(
102
-                __( 'Edit this form.', 'invoicing' ),
102
+                __('Edit this form.', 'invoicing'),
103 103
                 '<small class="form-text text-muted">',
104
-                '&nbsp;' . __( 'This is only visible to website administators.', 'invoicing' ) . '</small>',
104
+                '&nbsp;' . __('This is only visible to website administators.', 'invoicing') . '</small>',
105 105
                 $form->get_id(),
106 106
                 'text-danger'
107 107
             );
108 108
 
109 109
         }
110 110
 
111
-        echo wp_kses( $extra_markup, getpaid_allowed_html() );
111
+        echo wp_kses($extra_markup, getpaid_allowed_html());
112 112
     ?>
113 113
 
114 114
     <div class="loading_div overlay overlay-black position-absolute row m-0 rounded overflow-hidden" style="height: 100%;width: 100%;top: 0px;z-index: 2;display:none;">
115 115
         <div class="spinner-border mx-auto align-self-center text-white" role="status">
116
-            <span class="sr-only"><?php esc_html_e( 'Loading...', 'invoicing' ); ?></span>
116
+            <span class="sr-only"><?php esc_html_e('Loading...', 'invoicing'); ?></span>
117 117
         </div>
118 118
     </div>
119 119
 
@@ -122,4 +122,4 @@  discard block
 block discarded – undo
122 122
 <?php
123 123
 
124 124
 // Fires after displaying a payment form.
125
-do_action( 'getpaid_after_payment_form', $form );
125
+do_action('getpaid_after_payment_form', $form);
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-getpaid-meta-box-description.php 2 patches
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -13,25 +13,25 @@
 block discarded – undo
13 13
  */
14 14
 class GetPaid_Meta_Box_Description {
15 15
 
16
-	/**
17
-	 * Output the metabox.
18
-	 *
19
-	 * @param WP_Post $post Post object.
20
-	 */
21
-	public static function output( $post ) {
16
+    /**
17
+     * Output the metabox.
18
+     *
19
+     * @param WP_Post $post Post object.
20
+     */
21
+    public static function output( $post ) {
22 22
 
23
-		$settings = array(
24
-			'textarea_name' => 'excerpt',
25
-			'quicktags'     => array( 'buttons' => 'em,strong,link' ),
26
-			'teeny'         => true,
27
-			'media_buttons' => false,
28
-			'tinymce'       => array(
29
-				'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
30
-				'theme_advanced_buttons2' => '',
31
-			),
32
-			'editor_css'    => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
33
-		);
23
+        $settings = array(
24
+            'textarea_name' => 'excerpt',
25
+            'quicktags'     => array( 'buttons' => 'em,strong,link' ),
26
+            'teeny'         => true,
27
+            'media_buttons' => false,
28
+            'tinymce'       => array(
29
+                'theme_advanced_buttons1' => 'bold,italic,strikethrough,separator,justifyleft,justifycenter,justifyright,separator,link,unlink,separator,undo,redo,separator',
30
+                'theme_advanced_buttons2' => '',
31
+            ),
32
+            'editor_css'    => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
33
+        );
34 34
 
35
-		wp_editor( htmlspecialchars_decode( $post->post_excerpt, ENT_QUOTES ), 'excerpt', apply_filters( 'getpaid_description_editor_settings', $settings ) );
36
-	}
35
+        wp_editor( htmlspecialchars_decode( $post->post_excerpt, ENT_QUOTES ), 'excerpt', apply_filters( 'getpaid_description_editor_settings', $settings ) );
36
+    }
37 37
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -6,7 +6,7 @@  discard block
 block discarded – undo
6 6
  *
7 7
  */
8 8
 
9
-defined( 'ABSPATH' ) || exit;
9
+defined('ABSPATH') || exit;
10 10
 
11 11
 /**
12 12
  * GetPaid_Meta_Box_Description Class.
@@ -18,11 +18,11 @@  discard block
 block discarded – undo
18 18
 	 *
19 19
 	 * @param WP_Post $post Post object.
20 20
 	 */
21
-	public static function output( $post ) {
21
+	public static function output($post) {
22 22
 
23 23
 		$settings = array(
24 24
 			'textarea_name' => 'excerpt',
25
-			'quicktags'     => array( 'buttons' => 'em,strong,link' ),
25
+			'quicktags'     => array('buttons' => 'em,strong,link'),
26 26
 			'teeny'         => true,
27 27
 			'media_buttons' => false,
28 28
 			'tinymce'       => array(
@@ -32,6 +32,6 @@  discard block
 block discarded – undo
32 32
 			'editor_css'    => '<style>#wp-excerpt-editor-container .wp-editor-area{height:175px; width:100%;}</style>',
33 33
 		);
34 34
 
35
-		wp_editor( htmlspecialchars_decode( $post->post_excerpt, ENT_QUOTES ), 'excerpt', apply_filters( 'getpaid_description_editor_settings', $settings ) );
35
+		wp_editor(htmlspecialchars_decode($post->post_excerpt, ENT_QUOTES), 'excerpt', apply_filters('getpaid_description_editor_settings', $settings));
36 36
 	}
37 37
 }
Please login to merge, or discard this patch.
includes/admin/class-getpaid-post-types-admin.php 2 patches
Indentation   +775 added lines, -775 removed lines patch added patch discarded remove patch
@@ -13,725 +13,725 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Post_Types_Admin {
14 14
 
15 15
     /**
16
-	 * Hook in methods.
17
-	 */
18
-	public static function init() {
19
-
20
-		// Init metaboxes.
21
-		GetPaid_Metaboxes::init();
22
-
23
-		// Filter the post updated messages.
24
-		add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
25
-
26
-		// Filter post actions.
27
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
29
-
30
-		// Invoice table columns.
31
-		add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
-		add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
-		add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
-		add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
35
-
36
-		// Items table columns.
37
-		add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
-		add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
-		add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
-		add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
-		add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
-		add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
43
-
44
-		// Payment forms columns.
45
-		add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
-		add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
48
-
49
-		// Discount table columns.
50
-		add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
-		add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
52
-
53
-		// Deleting posts.
54
-		add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
56
-
57
-		add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
58
-	}
59
-
60
-	/**
61
-	 * Post updated messages.
62
-	 */
63
-	public static function post_updated_messages( $messages ) {
64
-		global $post;
65
-
66
-		$messages['wpi_discount'] = array(
67
-			0  => '',
68
-			1  => __( 'Discount updated.', 'invoicing' ),
69
-			2  => __( 'Custom field updated.', 'invoicing' ),
70
-			3  => __( 'Custom field deleted.', 'invoicing' ),
71
-			4  => __( 'Discount updated.', 'invoicing' ),
72
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
-			6  => __( 'Discount updated.', 'invoicing' ),
74
-			7  => __( 'Discount saved.', 'invoicing' ),
75
-			8  => __( 'Discount submitted.', 'invoicing' ),
76
-			9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
-			10 => __( 'Discount draft updated.', 'invoicing' ),
78
-		);
79
-
80
-		$messages['wpi_payment_form'] = array(
81
-			0  => '',
82
-			1  => __( 'Payment Form updated.', 'invoicing' ),
83
-			2  => __( 'Custom field updated.', 'invoicing' ),
84
-			3  => __( 'Custom field deleted.', 'invoicing' ),
85
-			4  => __( 'Payment Form updated.', 'invoicing' ),
86
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
-			6  => __( 'Payment Form updated.', 'invoicing' ),
88
-			7  => __( 'Payment Form saved.', 'invoicing' ),
89
-			8  => __( 'Payment Form submitted.', 'invoicing' ),
90
-			9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
-			10 => __( 'Payment Form draft updated.', 'invoicing' ),
92
-		);
93
-
94
-		return $messages;
95
-
96
-	}
97
-
98
-	/**
99
-	 * Post row actions.
100
-	 */
101
-	public static function post_row_actions( $actions, $post ) {
102
-
103
-		$post = get_post( $post );
104
-
105
-		// We do not want to edit the default payment form.
106
-		if ( 'wpi_payment_form' == $post->post_type ) {
107
-
108
-			if ( wpinv_get_default_payment_form() === $post->ID ) {
109
-				unset( $actions['trash'] );
110
-				unset( $actions['inline hide-if-no-js'] );
111
-			}
112
-
113
-			$actions['duplicate'] = sprintf(
114
-				'<a href="%1$s">%2$s</a>',
115
-				esc_url(
116
-					wp_nonce_url(
117
-						add_query_arg(
118
-							array(
119
-								'getpaid-admin-action' => 'duplicate_form',
120
-								'form_id'              => $post->ID,
121
-							)
122
-						),
123
-						'getpaid-nonce',
124
-						'getpaid-nonce'
125
-					)
126
-				),
127
-				esc_html( __( 'Duplicate', 'invoicing' ) )
128
-			);
129
-
130
-		}
131
-
132
-		// Link to item payment form.
133
-		if ( 'wpi_item' == $post->post_type ) {
134
-
135
-			if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
136
-
137
-				$actions['buy'] = sprintf(
138
-					'<a href="%1$s">%2$s</a>',
139
-					esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
140
-					esc_html( __( 'Buy', 'invoicing' ) )
141
-				);
142
-
143
-			}
16
+     * Hook in methods.
17
+     */
18
+    public static function init() {
19
+
20
+        // Init metaboxes.
21
+        GetPaid_Metaboxes::init();
22
+
23
+        // Filter the post updated messages.
24
+        add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
25
+
26
+        // Filter post actions.
27
+        add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
+        add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
29
+
30
+        // Invoice table columns.
31
+        add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
+        add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
+        add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
+        add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
35
+
36
+        // Items table columns.
37
+        add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
+        add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
+        add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
+        add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
+        add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
+        add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
43
+
44
+        // Payment forms columns.
45
+        add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
+        add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
48
+
49
+        // Discount table columns.
50
+        add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
+        add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
52
+
53
+        // Deleting posts.
54
+        add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
+        add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
56
+
57
+        add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
58
+    }
59
+
60
+    /**
61
+     * Post updated messages.
62
+     */
63
+    public static function post_updated_messages( $messages ) {
64
+        global $post;
65
+
66
+        $messages['wpi_discount'] = array(
67
+            0  => '',
68
+            1  => __( 'Discount updated.', 'invoicing' ),
69
+            2  => __( 'Custom field updated.', 'invoicing' ),
70
+            3  => __( 'Custom field deleted.', 'invoicing' ),
71
+            4  => __( 'Discount updated.', 'invoicing' ),
72
+            5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
+            6  => __( 'Discount updated.', 'invoicing' ),
74
+            7  => __( 'Discount saved.', 'invoicing' ),
75
+            8  => __( 'Discount submitted.', 'invoicing' ),
76
+            9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
+            10 => __( 'Discount draft updated.', 'invoicing' ),
78
+        );
79
+
80
+        $messages['wpi_payment_form'] = array(
81
+            0  => '',
82
+            1  => __( 'Payment Form updated.', 'invoicing' ),
83
+            2  => __( 'Custom field updated.', 'invoicing' ),
84
+            3  => __( 'Custom field deleted.', 'invoicing' ),
85
+            4  => __( 'Payment Form updated.', 'invoicing' ),
86
+            5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
+            6  => __( 'Payment Form updated.', 'invoicing' ),
88
+            7  => __( 'Payment Form saved.', 'invoicing' ),
89
+            8  => __( 'Payment Form submitted.', 'invoicing' ),
90
+            9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
+            10 => __( 'Payment Form draft updated.', 'invoicing' ),
92
+        );
93
+
94
+        return $messages;
95
+
96
+    }
97
+
98
+    /**
99
+     * Post row actions.
100
+     */
101
+    public static function post_row_actions( $actions, $post ) {
102
+
103
+        $post = get_post( $post );
104
+
105
+        // We do not want to edit the default payment form.
106
+        if ( 'wpi_payment_form' == $post->post_type ) {
107
+
108
+            if ( wpinv_get_default_payment_form() === $post->ID ) {
109
+                unset( $actions['trash'] );
110
+                unset( $actions['inline hide-if-no-js'] );
111
+            }
112
+
113
+            $actions['duplicate'] = sprintf(
114
+                '<a href="%1$s">%2$s</a>',
115
+                esc_url(
116
+                    wp_nonce_url(
117
+                        add_query_arg(
118
+                            array(
119
+                                'getpaid-admin-action' => 'duplicate_form',
120
+                                'form_id'              => $post->ID,
121
+                            )
122
+                        ),
123
+                        'getpaid-nonce',
124
+                        'getpaid-nonce'
125
+                    )
126
+                ),
127
+                esc_html( __( 'Duplicate', 'invoicing' ) )
128
+            );
129
+
130
+        }
131
+
132
+        // Link to item payment form.
133
+        if ( 'wpi_item' == $post->post_type ) {
134
+
135
+            if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
136
+
137
+                $actions['buy'] = sprintf(
138
+                    '<a href="%1$s">%2$s</a>',
139
+                    esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
140
+                    esc_html( __( 'Buy', 'invoicing' ) )
141
+                );
142
+
143
+            }
144 144
 }
145 145
 
146
-		return $actions;
147
-	}
146
+        return $actions;
147
+    }
148 148
 
149
-	/**
149
+    /**
150 150
      * Remove bulk edit option from admin side quote listing
151 151
      *
152 152
      * @since    1.0.0
153 153
      * @param array $actions post actions
154
-	 * @param WP_Post $post
154
+     * @param WP_Post $post
155 155
      * @return array $actions actions without edit option
156 156
      */
157 157
     public static function filter_invoice_row_actions( $actions, $post ) {
158 158
 
159 159
         if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
160 160
 
161
-			$actions = array();
162
-			$invoice = new WPInv_Invoice( $post );
163
-
164
-			$actions['edit'] = sprintf(
165
-				'<a href="%1$s">%2$s</a>',
166
-				esc_url( get_edit_post_link( $invoice->get_id() ) ),
167
-				esc_html( __( 'Edit', 'invoicing' ) )
168
-			);
169
-
170
-			if ( ! $invoice->is_draft() ) {
171
-
172
-				$actions['view'] = sprintf(
173
-					'<a href="%1$s">%2$s</a>',
174
-					esc_url( $invoice->get_view_url() ),
175
-					sprintf(
176
-						// translators: %s is the invoice type
177
-						esc_html__( 'View %s', 'invoicing' ),
178
-						getpaid_get_post_type_label( $invoice->get_post_type(), false )
179
-					)
180
-				);
181
-
182
-				$actions['send'] = sprintf(
183
-					'<a href="%1$s">%2$s</a>',
184
-					esc_url(
185
-						wp_nonce_url(
186
-							add_query_arg(
187
-								array(
188
-									'getpaid-admin-action' => 'send_invoice',
189
-									'invoice_id'           => $invoice->get_id(),
190
-								)
191
-							),
192
-							'getpaid-nonce',
193
-							'getpaid-nonce'
194
-						)
195
-					),
196
-					esc_html( __( 'Send to Customer', 'invoicing' ) )
197
-				);
198
-
199
-			}
200
-
201
-			$actions['duplicate'] = sprintf(
202
-				'<a href="%1$s">%2$s</a>',
203
-				esc_url(
204
-					wp_nonce_url(
205
-						add_query_arg(
206
-							array(
207
-								'getpaid-admin-action' => 'duplicate_invoice',
208
-								'invoice_id'           => $post->ID,
209
-							)
210
-						),
211
-						'getpaid-nonce',
212
-						'getpaid-nonce'
213
-					)
214
-				),
215
-				esc_html( __( 'Duplicate', 'invoicing' ) )
216
-			);
161
+            $actions = array();
162
+            $invoice = new WPInv_Invoice( $post );
163
+
164
+            $actions['edit'] = sprintf(
165
+                '<a href="%1$s">%2$s</a>',
166
+                esc_url( get_edit_post_link( $invoice->get_id() ) ),
167
+                esc_html( __( 'Edit', 'invoicing' ) )
168
+            );
169
+
170
+            if ( ! $invoice->is_draft() ) {
171
+
172
+                $actions['view'] = sprintf(
173
+                    '<a href="%1$s">%2$s</a>',
174
+                    esc_url( $invoice->get_view_url() ),
175
+                    sprintf(
176
+                        // translators: %s is the invoice type
177
+                        esc_html__( 'View %s', 'invoicing' ),
178
+                        getpaid_get_post_type_label( $invoice->get_post_type(), false )
179
+                    )
180
+                );
181
+
182
+                $actions['send'] = sprintf(
183
+                    '<a href="%1$s">%2$s</a>',
184
+                    esc_url(
185
+                        wp_nonce_url(
186
+                            add_query_arg(
187
+                                array(
188
+                                    'getpaid-admin-action' => 'send_invoice',
189
+                                    'invoice_id'           => $invoice->get_id(),
190
+                                )
191
+                            ),
192
+                            'getpaid-nonce',
193
+                            'getpaid-nonce'
194
+                        )
195
+                    ),
196
+                    esc_html( __( 'Send to Customer', 'invoicing' ) )
197
+                );
198
+
199
+            }
200
+
201
+            $actions['duplicate'] = sprintf(
202
+                '<a href="%1$s">%2$s</a>',
203
+                esc_url(
204
+                    wp_nonce_url(
205
+                        add_query_arg(
206
+                            array(
207
+                                'getpaid-admin-action' => 'duplicate_invoice',
208
+                                'invoice_id'           => $post->ID,
209
+                            )
210
+                        ),
211
+                        'getpaid-nonce',
212
+                        'getpaid-nonce'
213
+                    )
214
+                ),
215
+                esc_html( __( 'Duplicate', 'invoicing' ) )
216
+            );
217 217
 
218 218
         }
219 219
 
220 220
         return $actions;
221
-	}
222
-
223
-	/**
224
-	 * Returns an array of invoice table columns.
225
-	 */
226
-	public static function invoice_columns( $columns ) {
227
-
228
-		$columns = array(
229
-			'cb'           => $columns['cb'],
230
-			'number'       => __( 'Invoice', 'invoicing' ),
231
-			'customer'     => __( 'Customer', 'invoicing' ),
232
-			'invoice_date' => __( 'Created', 'invoicing' ),
233
-			'payment_date' => __( 'Completed', 'invoicing' ),
234
-			'amount'       => __( 'Amount', 'invoicing' ),
235
-			'recurring'    => __( 'Recurring', 'invoicing' ),
236
-			'status'       => __( 'Status', 'invoicing' ),
237
-		);
238
-
239
-		return apply_filters( 'wpi_invoice_table_columns', $columns );
240
-	}
241
-
242
-	/**
243
-	 * Displays invoice table columns.
244
-	 */
245
-	public static function display_invoice_columns( $column_name, $post_id ) {
246
-
247
-		$invoice = new WPInv_Invoice( $post_id );
248
-
249
-		switch ( $column_name ) {
250
-
251
-			case 'invoice_date':
252
-				$date_time = esc_attr( $invoice->get_created_date() );
253
-				$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
254
-				echo wp_kses_post( "<span title='$date_time'>$date</span>" );
255
-				break;
256
-
257
-			case 'payment_date':
258
-				if ( $invoice->is_paid() ) {
259
-					$date_time = esc_attr( $invoice->get_completed_date() );
260
-					$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
261
-					echo wp_kses_post( "<span title='$date_time'>$date</span>" );
262
-				} else {
263
-					echo '&mdash;';
264
-				}
265
-
266
-				break;
267
-
268
-			case 'amount':
269
-				$amount = $invoice->get_total();
270
-				$formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
271
-
272
-				if ( $invoice->is_refunded() ) {
273
-					$refunded_amount = wpinv_price( 0, $invoice->get_currency() );
274
-					echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
275
-				} else {
276
-
277
-					$discount = $invoice->get_total_discount();
278
-
279
-					if ( ! empty( $discount ) ) {
280
-						$new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
281
-						echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
282
-					} else {
283
-						echo wp_kses_post( $formated_amount );
284
-					}
285
-				}
286
-
287
-				break;
288
-
289
-			case 'status':
290
-				$status       = esc_html( $invoice->get_status() );
291
-				$status_label = esc_html( $invoice->get_status_nicename() );
292
-
293
-				// If it is paid, show the gateway title.
294
-				if ( $invoice->is_paid() ) {
295
-					$gateway = esc_html( $invoice->get_gateway_title() );
296
-					$gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
297
-
298
-					echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
299
-				} else {
300
-					echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
301
-				}
302
-
303
-				// If it is not paid, display the overdue and view status.
304
-				if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
305
-
306
-					// Invoice view status.
307
-					if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
308
-						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
309
-					} else {
310
-						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
311
-					}
312
-
313
-					// Display the overview status.
314
-					if ( wpinv_get_option( 'overdue_active' ) ) {
315
-						$due_date = $invoice->get_due_date();
316
-						$fomatted = getpaid_format_date( $due_date );
317
-
318
-						if ( ! empty( $fomatted ) ) {
319
-							$date = wp_sprintf(
320
-								// translators: %s is the due date.
321
-								__( 'Due %s', 'invoicing' ),
322
-								$fomatted
323
-							);
324
-							echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
325
-						}
326
-					}
327
-				}
328
-
329
-				break;
330
-
331
-			case 'recurring':
332
-				if ( $invoice->is_recurring() ) {
333
-					echo '<i class="fa fa-check" style="color:#43850a;"></i>';
334
-				} else {
335
-					echo '<i class="fa fa-times" style="color:#616161;"></i>';
336
-				}
337
-				break;
338
-
339
-			case 'number':
340
-				$edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
341
-				$invoice_number  = esc_html( $invoice->get_number() );
342
-				$invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
343
-
344
-				echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
345
-
346
-				do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
347
-				break;
348
-
349
-			case 'customer':
350
-				$customer_name = $invoice->get_user_full_name();
351
-
352
-				if ( empty( $customer_name ) ) {
353
-					$customer_name = $invoice->get_email();
354
-				}
355
-
356
-				if ( ! empty( $customer_name ) ) {
357
-					$customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
358
-					$view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
359
-					echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
360
-				} else {
361
-					echo '<div>&mdash;</div>';
362
-				}
363
-
364
-				break;
365
-
366
-		}
367
-
368
-	}
369
-
370
-	/**
371
-	 * Displays invoice bulk actions.
372
-	 */
373
-	public static function invoice_bulk_actions( $actions ) {
374
-		$actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
375
-		return $actions;
376
-	}
377
-
378
-	/**
379
-	 * Processes invoice bulk actions.
380
-	 */
381
-	public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
382
-
383
-		if ( 'resend-invoice' === $action ) {
384
-			foreach ( $post_ids as $post_id ) {
385
-				getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
386
-			}
387
-		}
388
-
389
-		return $redirect_url;
390
-
391
-	}
392
-
393
-	/**
394
-	 * Returns an array of payment forms table columns.
395
-	 */
396
-	public static function payment_form_columns( $columns ) {
397
-
398
-		$columns = array(
399
-			'cb'        => $columns['cb'],
400
-			'title'     => __( 'Name', 'invoicing' ),
401
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
402
-			'earnings'  => __( 'Revenue', 'invoicing' ),
403
-			'refunds'   => __( 'Refunded', 'invoicing' ),
404
-			'items'     => __( 'Items', 'invoicing' ),
405
-			'date'      => __( 'Date', 'invoicing' ),
406
-		);
407
-
408
-		return apply_filters( 'wpi_payment_form_table_columns', $columns );
409
-
410
-	}
411
-
412
-	/**
413
-	 * Displays payment form table columns.
414
-	 */
415
-	public static function display_payment_form_columns( $column_name, $post_id ) {
416
-
417
-		// Retrieve the payment form.
418
-		$form = new GetPaid_Payment_Form( $post_id );
419
-
420
-		switch ( $column_name ) {
421
-
422
-			case 'earnings':
423
-				echo wp_kses_post( wpinv_price( $form->get_earned() ) );
424
-				break;
425
-
426
-			case 'refunds':
427
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
428
-				break;
429
-
430
-			case 'refunds':
431
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
432
-				break;
433
-
434
-			case 'shortcode':
435
-				if ( $form->is_default() ) {
436
-					echo '&mdash;';
437
-				} else {
438
-					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
439
-				}
440
-
441
-				break;
221
+    }
442 222
 
443
-			case 'items':
444
-				$items = $form->get_items();
445
-
446
-				if ( $form->is_default() || empty( $items ) ) {
447
-					echo '&mdash;';
448
-					return;
449
-				}
450
-
451
-				$_items = array();
452
-
453
-				foreach ( $items as $item ) {
454
-					$url = $item->get_edit_url();
455
-
456
-					if ( empty( $url ) ) {
457
-						$_items[] = esc_html( $item->get_name() );
458
-					} else {
459
-						$_items[] = sprintf(
460
-							'<a href="%s">%s</a>',
461
-							esc_url( $url ),
462
-							esc_html( $item->get_name() )
463
-						);
464
-					}
223
+    /**
224
+     * Returns an array of invoice table columns.
225
+     */
226
+    public static function invoice_columns( $columns ) {
227
+
228
+        $columns = array(
229
+            'cb'           => $columns['cb'],
230
+            'number'       => __( 'Invoice', 'invoicing' ),
231
+            'customer'     => __( 'Customer', 'invoicing' ),
232
+            'invoice_date' => __( 'Created', 'invoicing' ),
233
+            'payment_date' => __( 'Completed', 'invoicing' ),
234
+            'amount'       => __( 'Amount', 'invoicing' ),
235
+            'recurring'    => __( 'Recurring', 'invoicing' ),
236
+            'status'       => __( 'Status', 'invoicing' ),
237
+        );
238
+
239
+        return apply_filters( 'wpi_invoice_table_columns', $columns );
240
+    }
241
+
242
+    /**
243
+     * Displays invoice table columns.
244
+     */
245
+    public static function display_invoice_columns( $column_name, $post_id ) {
246
+
247
+        $invoice = new WPInv_Invoice( $post_id );
248
+
249
+        switch ( $column_name ) {
250
+
251
+            case 'invoice_date':
252
+                $date_time = esc_attr( $invoice->get_created_date() );
253
+                $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
254
+                echo wp_kses_post( "<span title='$date_time'>$date</span>" );
255
+                break;
256
+
257
+            case 'payment_date':
258
+                if ( $invoice->is_paid() ) {
259
+                    $date_time = esc_attr( $invoice->get_completed_date() );
260
+                    $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
261
+                    echo wp_kses_post( "<span title='$date_time'>$date</span>" );
262
+                } else {
263
+                    echo '&mdash;';
264
+                }
265
+
266
+                break;
267
+
268
+            case 'amount':
269
+                $amount = $invoice->get_total();
270
+                $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
271
+
272
+                if ( $invoice->is_refunded() ) {
273
+                    $refunded_amount = wpinv_price( 0, $invoice->get_currency() );
274
+                    echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
275
+                } else {
276
+
277
+                    $discount = $invoice->get_total_discount();
278
+
279
+                    if ( ! empty( $discount ) ) {
280
+                        $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
281
+                        echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
282
+                    } else {
283
+                        echo wp_kses_post( $formated_amount );
284
+                    }
285
+                }
286
+
287
+                break;
288
+
289
+            case 'status':
290
+                $status       = esc_html( $invoice->get_status() );
291
+                $status_label = esc_html( $invoice->get_status_nicename() );
292
+
293
+                // If it is paid, show the gateway title.
294
+                if ( $invoice->is_paid() ) {
295
+                    $gateway = esc_html( $invoice->get_gateway_title() );
296
+                    $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
297
+
298
+                    echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
299
+                } else {
300
+                    echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
301
+                }
302
+
303
+                // If it is not paid, display the overdue and view status.
304
+                if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
305
+
306
+                    // Invoice view status.
307
+                    if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
308
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
309
+                    } else {
310
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
311
+                    }
312
+
313
+                    // Display the overview status.
314
+                    if ( wpinv_get_option( 'overdue_active' ) ) {
315
+                        $due_date = $invoice->get_due_date();
316
+                        $fomatted = getpaid_format_date( $due_date );
317
+
318
+                        if ( ! empty( $fomatted ) ) {
319
+                            $date = wp_sprintf(
320
+                                // translators: %s is the due date.
321
+                                __( 'Due %s', 'invoicing' ),
322
+                                $fomatted
323
+                            );
324
+                            echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
325
+                        }
326
+                    }
327
+                }
328
+
329
+                break;
330
+
331
+            case 'recurring':
332
+                if ( $invoice->is_recurring() ) {
333
+                    echo '<i class="fa fa-check" style="color:#43850a;"></i>';
334
+                } else {
335
+                    echo '<i class="fa fa-times" style="color:#616161;"></i>';
336
+                }
337
+                break;
338
+
339
+            case 'number':
340
+                $edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
341
+                $invoice_number  = esc_html( $invoice->get_number() );
342
+                $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
343
+
344
+                echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
345
+
346
+                do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
347
+                break;
348
+
349
+            case 'customer':
350
+                $customer_name = $invoice->get_user_full_name();
351
+
352
+                if ( empty( $customer_name ) ) {
353
+                    $customer_name = $invoice->get_email();
354
+                }
355
+
356
+                if ( ! empty( $customer_name ) ) {
357
+                    $customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
358
+                    $view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
359
+                    echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
360
+                } else {
361
+                    echo '<div>&mdash;</div>';
362
+                }
363
+
364
+                break;
365
+
366
+        }
367
+
368
+    }
369
+
370
+    /**
371
+     * Displays invoice bulk actions.
372
+     */
373
+    public static function invoice_bulk_actions( $actions ) {
374
+        $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
375
+        return $actions;
376
+    }
377
+
378
+    /**
379
+     * Processes invoice bulk actions.
380
+     */
381
+    public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
382
+
383
+        if ( 'resend-invoice' === $action ) {
384
+            foreach ( $post_ids as $post_id ) {
385
+                getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
386
+            }
387
+        }
388
+
389
+        return $redirect_url;
390
+
391
+    }
392
+
393
+    /**
394
+     * Returns an array of payment forms table columns.
395
+     */
396
+    public static function payment_form_columns( $columns ) {
397
+
398
+        $columns = array(
399
+            'cb'        => $columns['cb'],
400
+            'title'     => __( 'Name', 'invoicing' ),
401
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
402
+            'earnings'  => __( 'Revenue', 'invoicing' ),
403
+            'refunds'   => __( 'Refunded', 'invoicing' ),
404
+            'items'     => __( 'Items', 'invoicing' ),
405
+            'date'      => __( 'Date', 'invoicing' ),
406
+        );
407
+
408
+        return apply_filters( 'wpi_payment_form_table_columns', $columns );
409
+
410
+    }
411
+
412
+    /**
413
+     * Displays payment form table columns.
414
+     */
415
+    public static function display_payment_form_columns( $column_name, $post_id ) {
416
+
417
+        // Retrieve the payment form.
418
+        $form = new GetPaid_Payment_Form( $post_id );
419
+
420
+        switch ( $column_name ) {
421
+
422
+            case 'earnings':
423
+                echo wp_kses_post( wpinv_price( $form->get_earned() ) );
424
+                break;
425
+
426
+            case 'refunds':
427
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
428
+                break;
429
+
430
+            case 'refunds':
431
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
432
+                break;
433
+
434
+            case 'shortcode':
435
+                if ( $form->is_default() ) {
436
+                    echo '&mdash;';
437
+                } else {
438
+                    echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
439
+                }
440
+
441
+                break;
442
+
443
+            case 'items':
444
+                $items = $form->get_items();
445
+
446
+                if ( $form->is_default() || empty( $items ) ) {
447
+                    echo '&mdash;';
448
+                    return;
449
+                }
450
+
451
+                $_items = array();
452
+
453
+                foreach ( $items as $item ) {
454
+                    $url = $item->get_edit_url();
455
+
456
+                    if ( empty( $url ) ) {
457
+                        $_items[] = esc_html( $item->get_name() );
458
+                    } else {
459
+                        $_items[] = sprintf(
460
+                            '<a href="%s">%s</a>',
461
+                            esc_url( $url ),
462
+                            esc_html( $item->get_name() )
463
+                        );
464
+                    }
465 465
 }
466 466
 
467
-				echo wp_kses_post( implode( '<br>', $_items ) );
467
+                echo wp_kses_post( implode( '<br>', $_items ) );
468 468
 
469
-				break;
469
+                break;
470 470
 
471
-		}
471
+        }
472 472
 
473
-	}
473
+    }
474 474
 
475
-	/**
476
-	 * Filters post states.
477
-	 */
478
-	public static function filter_payment_form_state( $post_states, $post ) {
475
+    /**
476
+     * Filters post states.
477
+     */
478
+    public static function filter_payment_form_state( $post_states, $post ) {
479 479
 
480
-		if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
481
-			$post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
482
-		}
480
+        if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
481
+            $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
482
+        }
483 483
 
484
-		return $post_states;
484
+        return $post_states;
485 485
 
486
-	}
486
+    }
487 487
 
488
-	/**
489
-	 * Returns an array of coupon table columns.
490
-	 */
491
-	public static function discount_columns( $columns ) {
488
+    /**
489
+     * Returns an array of coupon table columns.
490
+     */
491
+    public static function discount_columns( $columns ) {
492
+
493
+        $columns = array(
494
+            'cb'          => $columns['cb'],
495
+            'title'       => __( 'Name', 'invoicing' ),
496
+            'code'        => __( 'Code', 'invoicing' ),
497
+            'amount'      => __( 'Amount', 'invoicing' ),
498
+            'usage'       => __( 'Usage / Limit', 'invoicing' ),
499
+            'start_date'  => __( 'Start Date', 'invoicing' ),
500
+            'expiry_date' => __( 'Expiry Date', 'invoicing' ),
501
+        );
502
+
503
+        return apply_filters( 'wpi_discount_table_columns', $columns );
504
+    }
492 505
 
493
-		$columns = array(
494
-			'cb'          => $columns['cb'],
495
-			'title'       => __( 'Name', 'invoicing' ),
496
-			'code'        => __( 'Code', 'invoicing' ),
497
-			'amount'      => __( 'Amount', 'invoicing' ),
498
-			'usage'       => __( 'Usage / Limit', 'invoicing' ),
499
-			'start_date'  => __( 'Start Date', 'invoicing' ),
500
-			'expiry_date' => __( 'Expiry Date', 'invoicing' ),
501
-		);
506
+    /**
507
+     * Filters post states.
508
+     */
509
+    public static function filter_discount_state( $post_states, $post ) {
502 510
 
503
-		return apply_filters( 'wpi_discount_table_columns', $columns );
504
-	}
511
+        if ( 'wpi_discount' === $post->post_type ) {
505 512
 
506
-	/**
507
-	 * Filters post states.
508
-	 */
509
-	public static function filter_discount_state( $post_states, $post ) {
513
+            $discount = new WPInv_Discount( $post );
510 514
 
511
-		if ( 'wpi_discount' === $post->post_type ) {
515
+            $status = $discount->is_expired() ? 'expired' : $discount->get_status();
512 516
 
513
-			$discount = new WPInv_Discount( $post );
517
+            if ( 'publish' !== $status ) {
518
+                return array(
519
+                    'discount_status' => wpinv_discount_status( $status ),
520
+                );
521
+            }
514 522
 
515
-			$status = $discount->is_expired() ? 'expired' : $discount->get_status();
523
+            return array();
516 524
 
517
-			if ( 'publish' !== $status ) {
518
-				return array(
519
-					'discount_status' => wpinv_discount_status( $status ),
520
-				);
521
-			}
525
+        }
522 526
 
523
-			return array();
527
+        return $post_states;
524 528
 
525
-		}
529
+    }
526 530
 
527
-		return $post_states;
531
+    /**
532
+     * Returns an array of items table columns.
533
+     */
534
+    public static function item_columns( $columns ) {
535
+
536
+        $columns = array(
537
+            'cb'        => $columns['cb'],
538
+            'title'     => __( 'Name', 'invoicing' ),
539
+            'price'     => __( 'Price', 'invoicing' ),
540
+            'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
541
+            'vat_class' => __( 'Tax Class', 'invoicing' ),
542
+            'type'      => __( 'Type', 'invoicing' ),
543
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
544
+        );
545
+
546
+        if ( ! wpinv_use_taxes() ) {
547
+            unset( $columns['vat_rule'] );
548
+            unset( $columns['vat_class'] );
549
+        }
550
+
551
+        return apply_filters( 'wpi_item_table_columns', $columns );
552
+    }
553
+
554
+    /**
555
+     * Returns an array of sortable items table columns.
556
+     */
557
+    public static function sortable_item_columns( $columns ) {
558
+
559
+        return array_merge(
560
+            $columns,
561
+            array(
562
+                'price'     => 'price',
563
+                'vat_rule'  => 'vat_rule',
564
+                'vat_class' => 'vat_class',
565
+                'type'      => 'type',
566
+            )
567
+        );
568
+
569
+    }
570
+
571
+    /**
572
+     * Displays items table columns.
573
+     */
574
+    public static function display_item_columns( $column_name, $post_id ) {
575
+
576
+        $item = new WPInv_Item( $post_id );
577
+
578
+        switch ( $column_name ) {
579
+
580
+            case 'price':
581
+                if ( ! $item->is_recurring() ) {
582
+                    echo wp_kses_post( $item->get_the_price() );
583
+                    break;
584
+                }
585
+
586
+                $price = wp_sprintf(
587
+                    __( '%1$s / %2$s', 'invoicing' ),
588
+                    $item->get_the_price(),
589
+                    getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
590
+                );
591
+
592
+                if ( $item->get_the_price() == $item->get_the_initial_price() ) {
593
+                    echo wp_kses_post( $price );
594
+                    break;
595
+                }
596
+
597
+                echo wp_kses_post( $item->get_the_initial_price() );
598
+
599
+                echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
600
+                break;
601
+
602
+            case 'vat_rule':
603
+                echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
604
+                break;
605
+
606
+            case 'vat_class':
607
+                echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
608
+                break;
609
+
610
+            case 'shortcode':
611
+                if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
612
+                    echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
613
+                } else {
614
+                    echo '&mdash;';
615
+                }
616
+
617
+                break;
618
+
619
+            case 'type':
620
+                echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
621
+                break;
622
+
623
+        }
624
+
625
+    }
626
+
627
+    /**
628
+     * Lets users filter items using taxes.
629
+     */
630
+    public static function add_item_filters( $post_type ) {
631
+
632
+        // Abort if we're not dealing with items.
633
+        if ( 'wpi_item' !== $post_type ) {
634
+            return;
635
+        }
636
+
637
+        // Filter by vat rules.
638
+        if ( wpinv_use_taxes() ) {
639
+
640
+            // Sanitize selected vat rule.
641
+            $vat_rule   = '';
642
+            $vat_rules  = getpaid_get_tax_rules();
643
+            if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
644
+                $vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
645
+            }
646
+
647
+            // Filter by VAT rule.
648
+            wpinv_html_select(
649
+                array(
650
+                    'options'          => array_merge(
651
+                        array(
652
+                            '' => __( 'All Tax Rules', 'invoicing' ),
653
+                        ),
654
+                        $vat_rules
655
+                    ),
656
+                    'name'             => 'vat_rule',
657
+                    'id'               => 'vat_rule',
658
+                    'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
659
+                    'show_option_all'  => false,
660
+                    'show_option_none' => false,
661
+                )
662
+            );
663
+
664
+            // Filter by VAT class.
665
+
666
+            // Sanitize selected vat rule.
667
+            $vat_class   = '';
668
+            $vat_classes = getpaid_get_tax_classes();
669
+            if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
670
+                $vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
671
+            }
672
+
673
+            wpinv_html_select(
674
+                array(
675
+                    'options'          => array_merge(
676
+                        array(
677
+                            '' => __( 'All Tax Classes', 'invoicing' ),
678
+                        ),
679
+                        $vat_classes
680
+                    ),
681
+                    'name'             => 'vat_class',
682
+                    'id'               => 'vat_class',
683
+                    'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
684
+                    'show_option_all'  => false,
685
+                    'show_option_none' => false,
686
+                )
687
+            );
688
+
689
+        }
690
+
691
+        // Filter by item type.
692
+        $type   = '';
693
+        if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
694
+            $type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
695
+        }
528 696
 
529
-	}
697
+        wpinv_html_select(
698
+            array(
699
+                'options'          => array_merge(
700
+                    array(
701
+                        '' => __( 'All item types', 'invoicing' ),
702
+                    ),
703
+                    wpinv_get_item_types()
704
+                ),
705
+                'name'             => 'type',
706
+                'id'               => 'type',
707
+                'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
708
+                'show_option_all'  => false,
709
+                'show_option_none' => false,
710
+            )
711
+        );
530 712
 
531
-	/**
532
-	 * Returns an array of items table columns.
533
-	 */
534
-	public static function item_columns( $columns ) {
713
+    }
535 714
 
536
-		$columns = array(
537
-			'cb'        => $columns['cb'],
538
-			'title'     => __( 'Name', 'invoicing' ),
539
-			'price'     => __( 'Price', 'invoicing' ),
540
-			'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
541
-			'vat_class' => __( 'Tax Class', 'invoicing' ),
542
-			'type'      => __( 'Type', 'invoicing' ),
543
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
544
-		);
715
+    /**
716
+     * Filters the item query.
717
+     */
718
+    public static function filter_item_query( $query ) {
545 719
 
546
-		if ( ! wpinv_use_taxes() ) {
547
-			unset( $columns['vat_rule'] );
548
-			unset( $columns['vat_class'] );
549
-		}
720
+        // modify the query only if it admin and main query.
721
+        if ( ! ( is_admin() && $query->is_main_query() ) ) {
722
+            return $query;
723
+        }
550 724
 
551
-		return apply_filters( 'wpi_item_table_columns', $columns );
552
-	}
725
+        // we want to modify the query for our items.
726
+        if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
727
+            return $query;
728
+        }
553 729
 
554
-	/**
555
-	 * Returns an array of sortable items table columns.
556
-	 */
557
-	public static function sortable_item_columns( $columns ) {
558
-
559
-		return array_merge(
560
-			$columns,
561
-			array(
562
-				'price'     => 'price',
563
-				'vat_rule'  => 'vat_rule',
564
-				'vat_class' => 'vat_class',
565
-				'type'      => 'type',
566
-			)
567
-		);
568
-
569
-	}
570
-
571
-	/**
572
-	 * Displays items table columns.
573
-	 */
574
-	public static function display_item_columns( $column_name, $post_id ) {
575
-
576
-		$item = new WPInv_Item( $post_id );
577
-
578
-		switch ( $column_name ) {
579
-
580
-			case 'price':
581
-				if ( ! $item->is_recurring() ) {
582
-					echo wp_kses_post( $item->get_the_price() );
583
-					break;
584
-				}
585
-
586
-				$price = wp_sprintf(
587
-					__( '%1$s / %2$s', 'invoicing' ),
588
-					$item->get_the_price(),
589
-					getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
590
-				);
591
-
592
-				if ( $item->get_the_price() == $item->get_the_initial_price() ) {
593
-					echo wp_kses_post( $price );
594
-					break;
595
-				}
596
-
597
-				echo wp_kses_post( $item->get_the_initial_price() );
598
-
599
-				echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
600
-				break;
601
-
602
-			case 'vat_rule':
603
-				echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
604
-				break;
605
-
606
-			case 'vat_class':
607
-				echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
608
-				break;
609
-
610
-			case 'shortcode':
611
-				if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
612
-					echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
613
-				} else {
614
-					echo '&mdash;';
615
-				}
616
-
617
-				break;
618
-
619
-			case 'type':
620
-				echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
621
-				break;
622
-
623
-		}
624
-
625
-	}
626
-
627
-	/**
628
-	 * Lets users filter items using taxes.
629
-	 */
630
-	public static function add_item_filters( $post_type ) {
631
-
632
-		// Abort if we're not dealing with items.
633
-		if ( 'wpi_item' !== $post_type ) {
634
-			return;
635
-		}
636
-
637
-		// Filter by vat rules.
638
-		if ( wpinv_use_taxes() ) {
639
-
640
-			// Sanitize selected vat rule.
641
-			$vat_rule   = '';
642
-			$vat_rules  = getpaid_get_tax_rules();
643
-			if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
644
-				$vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
645
-			}
646
-
647
-			// Filter by VAT rule.
648
-			wpinv_html_select(
649
-				array(
650
-					'options'          => array_merge(
651
-						array(
652
-							'' => __( 'All Tax Rules', 'invoicing' ),
653
-						),
654
-						$vat_rules
655
-					),
656
-					'name'             => 'vat_rule',
657
-					'id'               => 'vat_rule',
658
-					'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
659
-					'show_option_all'  => false,
660
-					'show_option_none' => false,
661
-				)
662
-			);
663
-
664
-			// Filter by VAT class.
665
-
666
-			// Sanitize selected vat rule.
667
-			$vat_class   = '';
668
-			$vat_classes = getpaid_get_tax_classes();
669
-			if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
670
-				$vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
671
-			}
672
-
673
-			wpinv_html_select(
674
-				array(
675
-					'options'          => array_merge(
676
-						array(
677
-							'' => __( 'All Tax Classes', 'invoicing' ),
678
-						),
679
-						$vat_classes
680
-					),
681
-					'name'             => 'vat_class',
682
-					'id'               => 'vat_class',
683
-					'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
684
-					'show_option_all'  => false,
685
-					'show_option_none' => false,
686
-				)
687
-			);
688
-
689
-		}
690
-
691
-		// Filter by item type.
692
-		$type   = '';
693
-		if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
694
-			$type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
695
-		}
696
-
697
-		wpinv_html_select(
698
-			array(
699
-				'options'          => array_merge(
700
-					array(
701
-						'' => __( 'All item types', 'invoicing' ),
702
-					),
703
-					wpinv_get_item_types()
704
-				),
705
-				'name'             => 'type',
706
-				'id'               => 'type',
707
-				'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
708
-				'show_option_all'  => false,
709
-				'show_option_none' => false,
710
-			)
711
-		);
712
-
713
-	}
714
-
715
-	/**
716
-	 * Filters the item query.
717
-	 */
718
-	public static function filter_item_query( $query ) {
719
-
720
-		// modify the query only if it admin and main query.
721
-		if ( ! ( is_admin() && $query->is_main_query() ) ) {
722
-			return $query;
723
-		}
724
-
725
-		// we want to modify the query for our items.
726
-		if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
727
-			return $query;
728
-		}
729
-
730
-		if ( empty( $query->query_vars['meta_query'] ) ) {
731
-			$query->query_vars['meta_query'] = array();
732
-		}
733
-
734
-		// Filter vat rule type
730
+        if ( empty( $query->query_vars['meta_query'] ) ) {
731
+            $query->query_vars['meta_query'] = array();
732
+        }
733
+
734
+        // Filter vat rule type
735 735
         if ( ! empty( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
736 736
             $query->query_vars['meta_query'][] = array(
737 737
                 'key'     => '_wpinv_vat_rule',
@@ -756,97 +756,97 @@  discard block
 block discarded – undo
756 756
                 'value'   => sanitize_text_field( $_GET['type'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
757 757
                 'compare' => '=',
758 758
             );
759
-		}
760
-
761
-	}
762
-
763
-	/**
764
-	 * Reorders items.
765
-	 */
766
-	public static function reorder_items( $vars ) {
767
-		global $typenow;
768
-
769
-		if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
770
-			return $vars;
771
-		}
772
-
773
-		// By item type.
774
-		if ( 'type' === $vars['orderby'] ) {
775
-			return array_merge(
776
-				$vars,
777
-				array(
778
-					'meta_key' => '_wpinv_type',
779
-					'orderby'  => 'meta_value',
780
-				)
781
-			);
782
-		}
783
-
784
-		// By vat class.
785
-		if ( 'vat_class' === $vars['orderby'] ) {
786
-			return array_merge(
787
-				$vars,
788
-				array(
789
-					'meta_key' => '_wpinv_vat_class',
790
-					'orderby'  => 'meta_value',
791
-				)
792
-			);
793
-		}
794
-
795
-		// By vat rule.
796
-		if ( 'vat_rule' === $vars['orderby'] ) {
797
-			return array_merge(
798
-				$vars,
799
-				array(
800
-					'meta_key' => '_wpinv_vat_rule',
801
-					'orderby'  => 'meta_value',
802
-				)
803
-			);
804
-		}
805
-
806
-		// By price.
807
-		if ( 'price' === $vars['orderby'] ) {
808
-			return array_merge(
809
-				$vars,
810
-				array(
811
-					'meta_key' => '_wpinv_price',
812
-					'orderby'  => 'meta_value_num',
813
-				)
814
-			);
815
-		}
816
-
817
-		return $vars;
818
-
819
-	}
820
-
821
-	/**
822
-	 * Fired when deleting a post.
823
-	 */
824
-	public static function delete_post( $post_id ) {
825
-
826
-		switch ( get_post_type( $post_id ) ) {
827
-
828
-			case 'wpi_item':
829
-				do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
830
-				break;
831
-
832
-			case 'wpi_payment_form':
833
-				do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
834
-				break;
835
-
836
-			case 'wpi_discount':
837
-				do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
838
-				break;
839
-
840
-			case 'wpi_invoice':
841
-				$invoice = new WPInv_Invoice( $post_id );
842
-				do_action( 'getpaid_before_delete_invoice', $invoice );
843
-				$invoice->get_data_store()->delete_items( $invoice );
844
-				$invoice->get_data_store()->delete_special_fields( $invoice );
845
-				break;
846
-		}
847
-	}
848
-
849
-	/**
759
+        }
760
+
761
+    }
762
+
763
+    /**
764
+     * Reorders items.
765
+     */
766
+    public static function reorder_items( $vars ) {
767
+        global $typenow;
768
+
769
+        if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
770
+            return $vars;
771
+        }
772
+
773
+        // By item type.
774
+        if ( 'type' === $vars['orderby'] ) {
775
+            return array_merge(
776
+                $vars,
777
+                array(
778
+                    'meta_key' => '_wpinv_type',
779
+                    'orderby'  => 'meta_value',
780
+                )
781
+            );
782
+        }
783
+
784
+        // By vat class.
785
+        if ( 'vat_class' === $vars['orderby'] ) {
786
+            return array_merge(
787
+                $vars,
788
+                array(
789
+                    'meta_key' => '_wpinv_vat_class',
790
+                    'orderby'  => 'meta_value',
791
+                )
792
+            );
793
+        }
794
+
795
+        // By vat rule.
796
+        if ( 'vat_rule' === $vars['orderby'] ) {
797
+            return array_merge(
798
+                $vars,
799
+                array(
800
+                    'meta_key' => '_wpinv_vat_rule',
801
+                    'orderby'  => 'meta_value',
802
+                )
803
+            );
804
+        }
805
+
806
+        // By price.
807
+        if ( 'price' === $vars['orderby'] ) {
808
+            return array_merge(
809
+                $vars,
810
+                array(
811
+                    'meta_key' => '_wpinv_price',
812
+                    'orderby'  => 'meta_value_num',
813
+                )
814
+            );
815
+        }
816
+
817
+        return $vars;
818
+
819
+    }
820
+
821
+    /**
822
+     * Fired when deleting a post.
823
+     */
824
+    public static function delete_post( $post_id ) {
825
+
826
+        switch ( get_post_type( $post_id ) ) {
827
+
828
+            case 'wpi_item':
829
+                do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
830
+                break;
831
+
832
+            case 'wpi_payment_form':
833
+                do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
834
+                break;
835
+
836
+            case 'wpi_discount':
837
+                do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
838
+                break;
839
+
840
+            case 'wpi_invoice':
841
+                $invoice = new WPInv_Invoice( $post_id );
842
+                do_action( 'getpaid_before_delete_invoice', $invoice );
843
+                $invoice->get_data_store()->delete_items( $invoice );
844
+                $invoice->get_data_store()->delete_special_fields( $invoice );
845
+                break;
846
+        }
847
+    }
848
+
849
+    /**
850 850
      * Add a post display state for special GetPaid pages in the page list table.
851 851
      *
852 852
      * @param array   $post_states An array of post display states.
@@ -860,21 +860,21 @@  discard block
 block discarded – undo
860 860
             $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' );
861 861
         }
862 862
 
863
-		foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
863
+        foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
864 864
 
865
-			if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
866
-				$post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
867
-					__( 'GetPaid %s History Page', 'invoicing' ),
868
-					$label
869
-				);
870
-			}
865
+            if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
866
+                $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
867
+                    __( 'GetPaid %s History Page', 'invoicing' ),
868
+                    $label
869
+                );
870
+            }
871 871
 }
872 872
 
873
-		if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
873
+        if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
874 874
             $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' );
875 875
         }
876 876
 
877
-		if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
877
+        if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
878 878
             $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' );
879 879
         }
880 880
 
Please login to merge, or discard this patch.
Spacing   +244 added lines, -244 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
  * Post types Admin Class
@@ -21,74 +21,74 @@  discard block
 block discarded – undo
21 21
 		GetPaid_Metaboxes::init();
22 22
 
23 23
 		// Filter the post updated messages.
24
-		add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' );
24
+		add_filter('post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages');
25 25
 
26 26
 		// Filter post actions.
27
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 );
28
-		add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 );
27
+		add_filter('post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2);
28
+		add_filter('post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2);
29 29
 
30 30
 		// Invoice table columns.
31
-		add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 );
32
-		add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 );
33
-		add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) );
34
-		add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 );
31
+		add_filter('manage_wpi_invoice_posts_columns', array(__CLASS__, 'invoice_columns'), 100);
32
+		add_action('manage_wpi_invoice_posts_custom_column', array(__CLASS__, 'display_invoice_columns'), 10, 2);
33
+		add_filter('bulk_actions-edit-wpi_invoice', array(__CLASS__, 'invoice_bulk_actions'));
34
+		add_filter('handle_bulk_actions-edit-wpi_invoice', array(__CLASS__, 'handle_invoice_bulk_actions'), 10, 3);
35 35
 
36 36
 		// Items table columns.
37
-		add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 );
38
-		add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 );
39
-		add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 );
40
-		add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 );
41
-		add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 );
42
-		add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 );
37
+		add_filter('manage_wpi_item_posts_columns', array(__CLASS__, 'item_columns'), 100);
38
+		add_filter('manage_edit-wpi_item_sortable_columns', array(__CLASS__, 'sortable_item_columns'), 20);
39
+		add_action('manage_wpi_item_posts_custom_column', array(__CLASS__, 'display_item_columns'), 10, 2);
40
+		add_action('restrict_manage_posts', array(__CLASS__, 'add_item_filters'), 100);
41
+		add_action('parse_query', array(__CLASS__, 'filter_item_query'), 100);
42
+		add_action('request', array(__CLASS__, 'reorder_items'), 100);
43 43
 
44 44
 		// Payment forms columns.
45
-		add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 );
46
-		add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 );
47
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 );
45
+		add_filter('manage_wpi_payment_form_posts_columns', array(__CLASS__, 'payment_form_columns'), 100);
46
+		add_action('manage_wpi_payment_form_posts_custom_column', array(__CLASS__, 'display_payment_form_columns'), 10, 2);
47
+		add_filter('display_post_states', array(__CLASS__, 'filter_payment_form_state'), 10, 2);
48 48
 
49 49
 		// Discount table columns.
50
-		add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 );
51
-		add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 );
50
+		add_filter('manage_wpi_discount_posts_columns', array(__CLASS__, 'discount_columns'), 100);
51
+		add_filter('bulk_actions-edit-wpi_discount', '__return_empty_array', 100);
52 52
 
53 53
 		// Deleting posts.
54
-		add_action( 'delete_post', array( __CLASS__, 'delete_post' ) );
55
-		add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 );
54
+		add_action('delete_post', array(__CLASS__, 'delete_post'));
55
+		add_filter('display_post_states', array(__CLASS__, 'filter_discount_state'), 10, 2);
56 56
 
57
-		add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 );
57
+		add_filter('display_post_states', array(__CLASS__, 'add_display_post_states'), 10, 2);
58 58
 	}
59 59
 
60 60
 	/**
61 61
 	 * Post updated messages.
62 62
 	 */
63
-	public static function post_updated_messages( $messages ) {
63
+	public static function post_updated_messages($messages) {
64 64
 		global $post;
65 65
 
66 66
 		$messages['wpi_discount'] = array(
67 67
 			0  => '',
68
-			1  => __( 'Discount updated.', 'invoicing' ),
69
-			2  => __( 'Custom field updated.', 'invoicing' ),
70
-			3  => __( 'Custom field deleted.', 'invoicing' ),
71
-			4  => __( 'Discount updated.', 'invoicing' ),
72
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
73
-			6  => __( 'Discount updated.', 'invoicing' ),
74
-			7  => __( 'Discount saved.', 'invoicing' ),
75
-			8  => __( 'Discount submitted.', 'invoicing' ),
76
-			9  => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
77
-			10 => __( 'Discount draft updated.', 'invoicing' ),
68
+			1  => __('Discount updated.', 'invoicing'),
69
+			2  => __('Custom field updated.', 'invoicing'),
70
+			3  => __('Custom field deleted.', 'invoicing'),
71
+			4  => __('Discount updated.', 'invoicing'),
72
+			5  => isset($_GET['revision']) ? wp_sprintf(__('Discount restored to revision from %s', 'invoicing'), wp_post_revision_title((int) $_GET['revision'], false)) : false,
73
+			6  => __('Discount updated.', 'invoicing'),
74
+			7  => __('Discount saved.', 'invoicing'),
75
+			8  => __('Discount submitted.', 'invoicing'),
76
+			9  => wp_sprintf(__('Discount scheduled for: <strong>%1$s</strong>.', 'invoicing'), date_i18n(__('M j, Y @ G:i', 'invoicing'), strtotime($post->post_date))),
77
+			10 => __('Discount draft updated.', 'invoicing'),
78 78
 		);
79 79
 
80 80
 		$messages['wpi_payment_form'] = array(
81 81
 			0  => '',
82
-			1  => __( 'Payment Form updated.', 'invoicing' ),
83
-			2  => __( 'Custom field updated.', 'invoicing' ),
84
-			3  => __( 'Custom field deleted.', 'invoicing' ),
85
-			4  => __( 'Payment Form updated.', 'invoicing' ),
86
-			5  => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
87
-			6  => __( 'Payment Form updated.', 'invoicing' ),
88
-			7  => __( 'Payment Form saved.', 'invoicing' ),
89
-			8  => __( 'Payment Form submitted.', 'invoicing' ),
90
-			9  => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ),
91
-			10 => __( 'Payment Form draft updated.', 'invoicing' ),
82
+			1  => __('Payment Form updated.', 'invoicing'),
83
+			2  => __('Custom field updated.', 'invoicing'),
84
+			3  => __('Custom field deleted.', 'invoicing'),
85
+			4  => __('Payment Form updated.', 'invoicing'),
86
+			5  => isset($_GET['revision']) ? wp_sprintf(__('Payment Form restored to revision from %s', 'invoicing'), wp_post_revision_title((int) $_GET['revision'], false)) : false,
87
+			6  => __('Payment Form updated.', 'invoicing'),
88
+			7  => __('Payment Form saved.', 'invoicing'),
89
+			8  => __('Payment Form submitted.', 'invoicing'),
90
+			9  => wp_sprintf(__('Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing'), date_i18n(__('M j, Y @ G:i', 'invoicing'), strtotime($post->post_date))),
91
+			10 => __('Payment Form draft updated.', 'invoicing'),
92 92
 		);
93 93
 
94 94
 		return $messages;
@@ -98,16 +98,16 @@  discard block
 block discarded – undo
98 98
 	/**
99 99
 	 * Post row actions.
100 100
 	 */
101
-	public static function post_row_actions( $actions, $post ) {
101
+	public static function post_row_actions($actions, $post) {
102 102
 
103
-		$post = get_post( $post );
103
+		$post = get_post($post);
104 104
 
105 105
 		// We do not want to edit the default payment form.
106
-		if ( 'wpi_payment_form' == $post->post_type ) {
106
+		if ('wpi_payment_form' == $post->post_type) {
107 107
 
108
-			if ( wpinv_get_default_payment_form() === $post->ID ) {
109
-				unset( $actions['trash'] );
110
-				unset( $actions['inline hide-if-no-js'] );
108
+			if (wpinv_get_default_payment_form() === $post->ID) {
109
+				unset($actions['trash']);
110
+				unset($actions['inline hide-if-no-js']);
111 111
 			}
112 112
 
113 113
 			$actions['duplicate'] = sprintf(
@@ -124,20 +124,20 @@  discard block
 block discarded – undo
124 124
 						'getpaid-nonce'
125 125
 					)
126 126
 				),
127
-				esc_html( __( 'Duplicate', 'invoicing' ) )
127
+				esc_html(__('Duplicate', 'invoicing'))
128 128
 			);
129 129
 
130 130
 		}
131 131
 
132 132
 		// Link to item payment form.
133
-		if ( 'wpi_item' == $post->post_type ) {
133
+		if ('wpi_item' == $post->post_type) {
134 134
 
135
-			if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) {
135
+			if (in_array(get_post_meta($post->ID, '_wpinv_type', true), array('', 'fee', 'custom'), true)) {
136 136
 
137 137
 				$actions['buy'] = sprintf(
138 138
 					'<a href="%1$s">%2$s</a>',
139
-					esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ),
140
-					esc_html( __( 'Buy', 'invoicing' ) )
139
+					esc_url(getpaid_embed_url(false, $post->ID . '|0')),
140
+					esc_html(__('Buy', 'invoicing'))
141 141
 				);
142 142
 
143 143
 			}
@@ -154,28 +154,28 @@  discard block
 block discarded – undo
154 154
 	 * @param WP_Post $post
155 155
      * @return array $actions actions without edit option
156 156
      */
157
-    public static function filter_invoice_row_actions( $actions, $post ) {
157
+    public static function filter_invoice_row_actions($actions, $post) {
158 158
 
159
-        if ( getpaid_is_invoice_post_type( $post->post_type ) ) {
159
+        if (getpaid_is_invoice_post_type($post->post_type)) {
160 160
 
161 161
 			$actions = array();
162
-			$invoice = new WPInv_Invoice( $post );
162
+			$invoice = new WPInv_Invoice($post);
163 163
 
164 164
 			$actions['edit'] = sprintf(
165 165
 				'<a href="%1$s">%2$s</a>',
166
-				esc_url( get_edit_post_link( $invoice->get_id() ) ),
167
-				esc_html( __( 'Edit', 'invoicing' ) )
166
+				esc_url(get_edit_post_link($invoice->get_id())),
167
+				esc_html(__('Edit', 'invoicing'))
168 168
 			);
169 169
 
170
-			if ( ! $invoice->is_draft() ) {
170
+			if (!$invoice->is_draft()) {
171 171
 
172 172
 				$actions['view'] = sprintf(
173 173
 					'<a href="%1$s">%2$s</a>',
174
-					esc_url( $invoice->get_view_url() ),
174
+					esc_url($invoice->get_view_url()),
175 175
 					sprintf(
176 176
 						// translators: %s is the invoice type
177
-						esc_html__( 'View %s', 'invoicing' ),
178
-						getpaid_get_post_type_label( $invoice->get_post_type(), false )
177
+						esc_html__('View %s', 'invoicing'),
178
+						getpaid_get_post_type_label($invoice->get_post_type(), false)
179 179
 					)
180 180
 				);
181 181
 
@@ -193,7 +193,7 @@  discard block
 block discarded – undo
193 193
 							'getpaid-nonce'
194 194
 						)
195 195
 					),
196
-					esc_html( __( 'Send to Customer', 'invoicing' ) )
196
+					esc_html(__('Send to Customer', 'invoicing'))
197 197
 				);
198 198
 
199 199
 			}
@@ -212,7 +212,7 @@  discard block
 block discarded – undo
212 212
 						'getpaid-nonce'
213 213
 					)
214 214
 				),
215
-				esc_html( __( 'Duplicate', 'invoicing' ) )
215
+				esc_html(__('Duplicate', 'invoicing'))
216 216
 			);
217 217
 
218 218
         }
@@ -223,42 +223,42 @@  discard block
 block discarded – undo
223 223
 	/**
224 224
 	 * Returns an array of invoice table columns.
225 225
 	 */
226
-	public static function invoice_columns( $columns ) {
226
+	public static function invoice_columns($columns) {
227 227
 
228 228
 		$columns = array(
229 229
 			'cb'           => $columns['cb'],
230
-			'number'       => __( 'Invoice', 'invoicing' ),
231
-			'customer'     => __( 'Customer', 'invoicing' ),
232
-			'invoice_date' => __( 'Created', 'invoicing' ),
233
-			'payment_date' => __( 'Completed', 'invoicing' ),
234
-			'amount'       => __( 'Amount', 'invoicing' ),
235
-			'recurring'    => __( 'Recurring', 'invoicing' ),
236
-			'status'       => __( 'Status', 'invoicing' ),
230
+			'number'       => __('Invoice', 'invoicing'),
231
+			'customer'     => __('Customer', 'invoicing'),
232
+			'invoice_date' => __('Created', 'invoicing'),
233
+			'payment_date' => __('Completed', 'invoicing'),
234
+			'amount'       => __('Amount', 'invoicing'),
235
+			'recurring'    => __('Recurring', 'invoicing'),
236
+			'status'       => __('Status', 'invoicing'),
237 237
 		);
238 238
 
239
-		return apply_filters( 'wpi_invoice_table_columns', $columns );
239
+		return apply_filters('wpi_invoice_table_columns', $columns);
240 240
 	}
241 241
 
242 242
 	/**
243 243
 	 * Displays invoice table columns.
244 244
 	 */
245
-	public static function display_invoice_columns( $column_name, $post_id ) {
245
+	public static function display_invoice_columns($column_name, $post_id) {
246 246
 
247
-		$invoice = new WPInv_Invoice( $post_id );
247
+		$invoice = new WPInv_Invoice($post_id);
248 248
 
249
-		switch ( $column_name ) {
249
+		switch ($column_name) {
250 250
 
251 251
 			case 'invoice_date':
252
-				$date_time = esc_attr( $invoice->get_created_date() );
253
-				$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
254
-				echo wp_kses_post( "<span title='$date_time'>$date</span>" );
252
+				$date_time = esc_attr($invoice->get_created_date());
253
+				$date      = esc_html(getpaid_format_date_value($date_time, '&mdash;', true));
254
+				echo wp_kses_post("<span title='$date_time'>$date</span>");
255 255
 				break;
256 256
 
257 257
 			case 'payment_date':
258
-				if ( $invoice->is_paid() ) {
259
-					$date_time = esc_attr( $invoice->get_completed_date() );
260
-					$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
261
-					echo wp_kses_post( "<span title='$date_time'>$date</span>" );
258
+				if ($invoice->is_paid()) {
259
+					$date_time = esc_attr($invoice->get_completed_date());
260
+					$date      = esc_html(getpaid_format_date_value($date_time, '&mdash;', true));
261
+					echo wp_kses_post("<span title='$date_time'>$date</span>");
262 262
 				} else {
263 263
 					echo '&mdash;';
264 264
 				}
@@ -267,61 +267,61 @@  discard block
 block discarded – undo
267 267
 
268 268
 			case 'amount':
269 269
 				$amount = $invoice->get_total();
270
-				$formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
270
+				$formated_amount = wp_kses_post(wpinv_price($amount, $invoice->get_currency()));
271 271
 
272
-				if ( $invoice->is_refunded() ) {
273
-					$refunded_amount = wpinv_price( 0, $invoice->get_currency() );
274
-					echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
272
+				if ($invoice->is_refunded()) {
273
+					$refunded_amount = wpinv_price(0, $invoice->get_currency());
274
+					echo wp_kses_post("<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>");
275 275
 				} else {
276 276
 
277 277
 					$discount = $invoice->get_total_discount();
278 278
 
279
-					if ( ! empty( $discount ) ) {
280
-						$new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
281
-						echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
279
+					if (!empty($discount)) {
280
+						$new_amount = wpinv_price($amount + $discount, $invoice->get_currency());
281
+						echo wp_kses_post("<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>");
282 282
 					} else {
283
-						echo wp_kses_post( $formated_amount );
283
+						echo wp_kses_post($formated_amount);
284 284
 					}
285 285
 				}
286 286
 
287 287
 				break;
288 288
 
289 289
 			case 'status':
290
-				$status       = esc_html( $invoice->get_status() );
291
-				$status_label = esc_html( $invoice->get_status_nicename() );
290
+				$status       = esc_html($invoice->get_status());
291
+				$status_label = esc_html($invoice->get_status_nicename());
292 292
 
293 293
 				// If it is paid, show the gateway title.
294
-				if ( $invoice->is_paid() ) {
295
-					$gateway = esc_html( $invoice->get_gateway_title() );
296
-					$gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
294
+				if ($invoice->is_paid()) {
295
+					$gateway = esc_html($invoice->get_gateway_title());
296
+					$gateway = wp_sprintf(esc_attr__('Paid via %s', 'invoicing'), esc_html($gateway));
297 297
 
298
-					echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
298
+					echo wp_kses_post("<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>");
299 299
 				} else {
300
-					echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
300
+					echo wp_kses_post("<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>");
301 301
 				}
302 302
 
303 303
 				// If it is not paid, display the overdue and view status.
304
-				if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
304
+				if (!$invoice->is_paid() && !$invoice->is_refunded()) {
305 305
 
306 306
 					// Invoice view status.
307
-					if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
308
-						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
307
+					if (wpinv_is_invoice_viewed($invoice->get_id())) {
308
+						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__('Viewed by Customer', 'invoicing') . '"></i>';
309 309
 					} else {
310
-						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
310
+						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__('Not Viewed by Customer', 'invoicing') . '"></i>';
311 311
 					}
312 312
 
313 313
 					// Display the overview status.
314
-					if ( wpinv_get_option( 'overdue_active' ) ) {
314
+					if (wpinv_get_option('overdue_active')) {
315 315
 						$due_date = $invoice->get_due_date();
316
-						$fomatted = getpaid_format_date( $due_date );
316
+						$fomatted = getpaid_format_date($due_date);
317 317
 
318
-						if ( ! empty( $fomatted ) ) {
318
+						if (!empty($fomatted)) {
319 319
 							$date = wp_sprintf(
320 320
 								// translators: %s is the due date.
321
-								__( 'Due %s', 'invoicing' ),
321
+								__('Due %s', 'invoicing'),
322 322
 								$fomatted
323 323
 							);
324
-							echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
324
+							echo wp_kses_post("<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>");
325 325
 						}
326 326
 					}
327 327
 				}
@@ -329,7 +329,7 @@  discard block
 block discarded – undo
329 329
 				break;
330 330
 
331 331
 			case 'recurring':
332
-				if ( $invoice->is_recurring() ) {
332
+				if ($invoice->is_recurring()) {
333 333
 					echo '<i class="fa fa-check" style="color:#43850a;"></i>';
334 334
 				} else {
335 335
 					echo '<i class="fa fa-times" style="color:#616161;"></i>';
@@ -337,26 +337,26 @@  discard block
 block discarded – undo
337 337
 				break;
338 338
 
339 339
 			case 'number':
340
-				$edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
341
-				$invoice_number  = esc_html( $invoice->get_number() );
342
-				$invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
340
+				$edit_link       = esc_url(get_edit_post_link($invoice->get_id()));
341
+				$invoice_number  = esc_html($invoice->get_number());
342
+				$invoice_details = esc_attr__('View Invoice Details', 'invoicing');
343 343
 
344
-				echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
344
+				echo wp_kses_post("<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>");
345 345
 
346
-				do_action( 'getpaid_admin_table_invoice_number_column', $invoice );
346
+				do_action('getpaid_admin_table_invoice_number_column', $invoice);
347 347
 				break;
348 348
 
349 349
 			case 'customer':
350 350
 				$customer_name = $invoice->get_user_full_name();
351 351
 
352
-				if ( empty( $customer_name ) ) {
352
+				if (empty($customer_name)) {
353 353
 					$customer_name = $invoice->get_email();
354 354
 				}
355 355
 
356
-				if ( ! empty( $customer_name ) ) {
357
-					$customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
358
-					$view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
359
-					echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
356
+				if (!empty($customer_name)) {
357
+					$customer_details = esc_attr__('View Customer Details', 'invoicing');
358
+					$view_link        = esc_url(add_query_arg('user_id', $invoice->get_user_id(), admin_url('user-edit.php')));
359
+					echo wp_kses_post("<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>");
360 360
 				} else {
361 361
 					echo '<div>&mdash;</div>';
362 362
 				}
@@ -370,19 +370,19 @@  discard block
 block discarded – undo
370 370
 	/**
371 371
 	 * Displays invoice bulk actions.
372 372
 	 */
373
-	public static function invoice_bulk_actions( $actions ) {
374
-		$actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
373
+	public static function invoice_bulk_actions($actions) {
374
+		$actions['resend-invoice'] = __('Send to Customer', 'invoicing');
375 375
 		return $actions;
376 376
 	}
377 377
 
378 378
 	/**
379 379
 	 * Processes invoice bulk actions.
380 380
 	 */
381
-	public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
381
+	public static function handle_invoice_bulk_actions($redirect_url, $action, $post_ids) {
382 382
 
383
-		if ( 'resend-invoice' === $action ) {
384
-			foreach ( $post_ids as $post_id ) {
385
-				getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
383
+		if ('resend-invoice' === $action) {
384
+			foreach ($post_ids as $post_id) {
385
+				getpaid()->get('invoice_emails')->user_invoice(new WPInv_Invoice($post_id), true);
386 386
 			}
387 387
 		}
388 388
 
@@ -393,49 +393,49 @@  discard block
 block discarded – undo
393 393
 	/**
394 394
 	 * Returns an array of payment forms table columns.
395 395
 	 */
396
-	public static function payment_form_columns( $columns ) {
396
+	public static function payment_form_columns($columns) {
397 397
 
398 398
 		$columns = array(
399 399
 			'cb'        => $columns['cb'],
400
-			'title'     => __( 'Name', 'invoicing' ),
401
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
402
-			'earnings'  => __( 'Revenue', 'invoicing' ),
403
-			'refunds'   => __( 'Refunded', 'invoicing' ),
404
-			'items'     => __( 'Items', 'invoicing' ),
405
-			'date'      => __( 'Date', 'invoicing' ),
400
+			'title'     => __('Name', 'invoicing'),
401
+			'shortcode' => __('Shortcode', 'invoicing'),
402
+			'earnings'  => __('Revenue', 'invoicing'),
403
+			'refunds'   => __('Refunded', 'invoicing'),
404
+			'items'     => __('Items', 'invoicing'),
405
+			'date'      => __('Date', 'invoicing'),
406 406
 		);
407 407
 
408
-		return apply_filters( 'wpi_payment_form_table_columns', $columns );
408
+		return apply_filters('wpi_payment_form_table_columns', $columns);
409 409
 
410 410
 	}
411 411
 
412 412
 	/**
413 413
 	 * Displays payment form table columns.
414 414
 	 */
415
-	public static function display_payment_form_columns( $column_name, $post_id ) {
415
+	public static function display_payment_form_columns($column_name, $post_id) {
416 416
 
417 417
 		// Retrieve the payment form.
418
-		$form = new GetPaid_Payment_Form( $post_id );
418
+		$form = new GetPaid_Payment_Form($post_id);
419 419
 
420
-		switch ( $column_name ) {
420
+		switch ($column_name) {
421 421
 
422 422
 			case 'earnings':
423
-				echo wp_kses_post( wpinv_price( $form->get_earned() ) );
423
+				echo wp_kses_post(wpinv_price($form->get_earned()));
424 424
 				break;
425 425
 
426 426
 			case 'refunds':
427
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
427
+				echo wp_kses_post(wpinv_price($form->get_refunded()));
428 428
 				break;
429 429
 
430 430
 			case 'refunds':
431
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
431
+				echo wp_kses_post(wpinv_price($form->get_refunded()));
432 432
 				break;
433 433
 
434 434
 			case 'shortcode':
435
-				if ( $form->is_default() ) {
435
+				if ($form->is_default()) {
436 436
 					echo '&mdash;';
437 437
 				} else {
438
-					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
438
+					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr($form->get_id()) . ']" style="width: 100%;" readonly/>';
439 439
 				}
440 440
 
441 441
 				break;
@@ -443,28 +443,28 @@  discard block
 block discarded – undo
443 443
 			case 'items':
444 444
 				$items = $form->get_items();
445 445
 
446
-				if ( $form->is_default() || empty( $items ) ) {
446
+				if ($form->is_default() || empty($items)) {
447 447
 					echo '&mdash;';
448 448
 					return;
449 449
 				}
450 450
 
451 451
 				$_items = array();
452 452
 
453
-				foreach ( $items as $item ) {
453
+				foreach ($items as $item) {
454 454
 					$url = $item->get_edit_url();
455 455
 
456
-					if ( empty( $url ) ) {
457
-						$_items[] = esc_html( $item->get_name() );
456
+					if (empty($url)) {
457
+						$_items[] = esc_html($item->get_name());
458 458
 					} else {
459 459
 						$_items[] = sprintf(
460 460
 							'<a href="%s">%s</a>',
461
-							esc_url( $url ),
462
-							esc_html( $item->get_name() )
461
+							esc_url($url),
462
+							esc_html($item->get_name())
463 463
 						);
464 464
 					}
465 465
 }
466 466
 
467
-				echo wp_kses_post( implode( '<br>', $_items ) );
467
+				echo wp_kses_post(implode('<br>', $_items));
468 468
 
469 469
 				break;
470 470
 
@@ -475,10 +475,10 @@  discard block
 block discarded – undo
475 475
 	/**
476 476
 	 * Filters post states.
477 477
 	 */
478
-	public static function filter_payment_form_state( $post_states, $post ) {
478
+	public static function filter_payment_form_state($post_states, $post) {
479 479
 
480
-		if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) {
481
-			$post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
480
+		if ('wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID) {
481
+			$post_states['default_form'] = __('Default Payment Form', 'invoicing');
482 482
 		}
483 483
 
484 484
 		return $post_states;
@@ -488,35 +488,35 @@  discard block
 block discarded – undo
488 488
 	/**
489 489
 	 * Returns an array of coupon table columns.
490 490
 	 */
491
-	public static function discount_columns( $columns ) {
491
+	public static function discount_columns($columns) {
492 492
 
493 493
 		$columns = array(
494 494
 			'cb'          => $columns['cb'],
495
-			'title'       => __( 'Name', 'invoicing' ),
496
-			'code'        => __( 'Code', 'invoicing' ),
497
-			'amount'      => __( 'Amount', 'invoicing' ),
498
-			'usage'       => __( 'Usage / Limit', 'invoicing' ),
499
-			'start_date'  => __( 'Start Date', 'invoicing' ),
500
-			'expiry_date' => __( 'Expiry Date', 'invoicing' ),
495
+			'title'       => __('Name', 'invoicing'),
496
+			'code'        => __('Code', 'invoicing'),
497
+			'amount'      => __('Amount', 'invoicing'),
498
+			'usage'       => __('Usage / Limit', 'invoicing'),
499
+			'start_date'  => __('Start Date', 'invoicing'),
500
+			'expiry_date' => __('Expiry Date', 'invoicing'),
501 501
 		);
502 502
 
503
-		return apply_filters( 'wpi_discount_table_columns', $columns );
503
+		return apply_filters('wpi_discount_table_columns', $columns);
504 504
 	}
505 505
 
506 506
 	/**
507 507
 	 * Filters post states.
508 508
 	 */
509
-	public static function filter_discount_state( $post_states, $post ) {
509
+	public static function filter_discount_state($post_states, $post) {
510 510
 
511
-		if ( 'wpi_discount' === $post->post_type ) {
511
+		if ('wpi_discount' === $post->post_type) {
512 512
 
513
-			$discount = new WPInv_Discount( $post );
513
+			$discount = new WPInv_Discount($post);
514 514
 
515 515
 			$status = $discount->is_expired() ? 'expired' : $discount->get_status();
516 516
 
517
-			if ( 'publish' !== $status ) {
517
+			if ('publish' !== $status) {
518 518
 				return array(
519
-					'discount_status' => wpinv_discount_status( $status ),
519
+					'discount_status' => wpinv_discount_status($status),
520 520
 				);
521 521
 			}
522 522
 
@@ -531,30 +531,30 @@  discard block
 block discarded – undo
531 531
 	/**
532 532
 	 * Returns an array of items table columns.
533 533
 	 */
534
-	public static function item_columns( $columns ) {
534
+	public static function item_columns($columns) {
535 535
 
536 536
 		$columns = array(
537 537
 			'cb'        => $columns['cb'],
538
-			'title'     => __( 'Name', 'invoicing' ),
539
-			'price'     => __( 'Price', 'invoicing' ),
540
-			'vat_rule'  => __( 'Tax Rule', 'invoicing' ),
541
-			'vat_class' => __( 'Tax Class', 'invoicing' ),
542
-			'type'      => __( 'Type', 'invoicing' ),
543
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
538
+			'title'     => __('Name', 'invoicing'),
539
+			'price'     => __('Price', 'invoicing'),
540
+			'vat_rule'  => __('Tax Rule', 'invoicing'),
541
+			'vat_class' => __('Tax Class', 'invoicing'),
542
+			'type'      => __('Type', 'invoicing'),
543
+			'shortcode' => __('Shortcode', 'invoicing'),
544 544
 		);
545 545
 
546
-		if ( ! wpinv_use_taxes() ) {
547
-			unset( $columns['vat_rule'] );
548
-			unset( $columns['vat_class'] );
546
+		if (!wpinv_use_taxes()) {
547
+			unset($columns['vat_rule']);
548
+			unset($columns['vat_class']);
549 549
 		}
550 550
 
551
-		return apply_filters( 'wpi_item_table_columns', $columns );
551
+		return apply_filters('wpi_item_table_columns', $columns);
552 552
 	}
553 553
 
554 554
 	/**
555 555
 	 * Returns an array of sortable items table columns.
556 556
 	 */
557
-	public static function sortable_item_columns( $columns ) {
557
+	public static function sortable_item_columns($columns) {
558 558
 
559 559
 		return array_merge(
560 560
 			$columns,
@@ -571,45 +571,45 @@  discard block
 block discarded – undo
571 571
 	/**
572 572
 	 * Displays items table columns.
573 573
 	 */
574
-	public static function display_item_columns( $column_name, $post_id ) {
574
+	public static function display_item_columns($column_name, $post_id) {
575 575
 
576
-		$item = new WPInv_Item( $post_id );
576
+		$item = new WPInv_Item($post_id);
577 577
 
578
-		switch ( $column_name ) {
578
+		switch ($column_name) {
579 579
 
580 580
 			case 'price':
581
-				if ( ! $item->is_recurring() ) {
582
-					echo wp_kses_post( $item->get_the_price() );
581
+				if (!$item->is_recurring()) {
582
+					echo wp_kses_post($item->get_the_price());
583 583
 					break;
584 584
 				}
585 585
 
586 586
 				$price = wp_sprintf(
587
-					__( '%1$s / %2$s', 'invoicing' ),
587
+					__('%1$s / %2$s', 'invoicing'),
588 588
 					$item->get_the_price(),
589
-					getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
589
+					getpaid_get_subscription_period_label($item->get_recurring_period(), $item->get_recurring_interval(), '')
590 590
 				);
591 591
 
592
-				if ( $item->get_the_price() == $item->get_the_initial_price() ) {
593
-					echo wp_kses_post( $price );
592
+				if ($item->get_the_price() == $item->get_the_initial_price()) {
593
+					echo wp_kses_post($price);
594 594
 					break;
595 595
 				}
596 596
 
597
-				echo wp_kses_post( $item->get_the_initial_price() );
597
+				echo wp_kses_post($item->get_the_initial_price());
598 598
 
599
-				echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
599
+				echo '<span class="meta">' . wp_sprintf(esc_html__('then %s', 'invoicing'), wp_kses_post($price)) . '</span>';
600 600
 				break;
601 601
 
602 602
 			case 'vat_rule':
603
-				echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
603
+				echo wp_kses_post(getpaid_get_tax_rule_label($item->get_vat_rule()));
604 604
 				break;
605 605
 
606 606
 			case 'vat_class':
607
-				echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
607
+				echo wp_kses_post(getpaid_get_tax_class_label($item->get_vat_class()));
608 608
 				break;
609 609
 
610 610
 			case 'shortcode':
611
-				if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
612
-					echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
611
+				if ($item->is_type(array('', 'fee', 'custom'))) {
612
+					echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr($item->get_id()) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
613 613
 				} else {
614 614
 					echo '&mdash;';
615 615
 				}
@@ -617,7 +617,7 @@  discard block
 block discarded – undo
617 617
 				break;
618 618
 
619 619
 			case 'type':
620
-				echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
620
+				echo wp_kses_post(wpinv_item_type($item->get_id()) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>');
621 621
 				break;
622 622
 
623 623
 		}
@@ -627,21 +627,21 @@  discard block
 block discarded – undo
627 627
 	/**
628 628
 	 * Lets users filter items using taxes.
629 629
 	 */
630
-	public static function add_item_filters( $post_type ) {
630
+	public static function add_item_filters($post_type) {
631 631
 
632 632
 		// Abort if we're not dealing with items.
633
-		if ( 'wpi_item' !== $post_type ) {
633
+		if ('wpi_item' !== $post_type) {
634 634
 			return;
635 635
 		}
636 636
 
637 637
 		// Filter by vat rules.
638
-		if ( wpinv_use_taxes() ) {
638
+		if (wpinv_use_taxes()) {
639 639
 
640 640
 			// Sanitize selected vat rule.
641 641
 			$vat_rule   = '';
642 642
 			$vat_rules  = getpaid_get_tax_rules();
643
-			if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
644
-				$vat_rule   = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
643
+			if (isset($_GET['vat_rule'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
644
+				$vat_rule = sanitize_text_field($_GET['vat_rule']); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
645 645
 			}
646 646
 
647 647
 			// Filter by VAT rule.
@@ -649,13 +649,13 @@  discard block
 block discarded – undo
649 649
 				array(
650 650
 					'options'          => array_merge(
651 651
 						array(
652
-							'' => __( 'All Tax Rules', 'invoicing' ),
652
+							'' => __('All Tax Rules', 'invoicing'),
653 653
 						),
654 654
 						$vat_rules
655 655
 					),
656 656
 					'name'             => 'vat_rule',
657 657
 					'id'               => 'vat_rule',
658
-					'selected'         => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '',
658
+					'selected'         => in_array($vat_rule, array_keys($vat_rules), true) ? $vat_rule : '',
659 659
 					'show_option_all'  => false,
660 660
 					'show_option_none' => false,
661 661
 				)
@@ -666,21 +666,21 @@  discard block
 block discarded – undo
666 666
 			// Sanitize selected vat rule.
667 667
 			$vat_class   = '';
668 668
 			$vat_classes = getpaid_get_tax_classes();
669
-			if ( isset( $_GET['vat_class'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
670
-				$vat_class   = sanitize_text_field( $_GET['vat_class'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
669
+			if (isset($_GET['vat_class'])) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
670
+				$vat_class = sanitize_text_field($_GET['vat_class']); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
671 671
 			}
672 672
 
673 673
 			wpinv_html_select(
674 674
 				array(
675 675
 					'options'          => array_merge(
676 676
 						array(
677
-							'' => __( 'All Tax Classes', 'invoicing' ),
677
+							'' => __('All Tax Classes', 'invoicing'),
678 678
 						),
679 679
 						$vat_classes
680 680
 					),
681 681
 					'name'             => 'vat_class',
682 682
 					'id'               => 'vat_class',
683
-					'selected'         => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '',
683
+					'selected'         => in_array($vat_class, array_keys($vat_classes), true) ? $vat_class : '',
684 684
 					'show_option_all'  => false,
685 685
 					'show_option_none' => false,
686 686
 				)
@@ -689,22 +689,22 @@  discard block
 block discarded – undo
689 689
 		}
690 690
 
691 691
 		// Filter by item type.
692
-		$type   = '';
693
-		if ( isset( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
694
-			$type   = sanitize_text_field( $_GET['type'] );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
692
+		$type = '';
693
+		if (isset($_GET['type'])) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
694
+			$type = sanitize_text_field($_GET['type']); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
695 695
 		}
696 696
 
697 697
 		wpinv_html_select(
698 698
 			array(
699 699
 				'options'          => array_merge(
700 700
 					array(
701
-						'' => __( 'All item types', 'invoicing' ),
701
+						'' => __('All item types', 'invoicing'),
702 702
 					),
703 703
 					wpinv_get_item_types()
704 704
 				),
705 705
 				'name'             => 'type',
706 706
 				'id'               => 'type',
707
-				'selected'         => in_array( $type, wpinv_item_types(), true ) ? $type : '',
707
+				'selected'         => in_array($type, wpinv_item_types(), true) ? $type : '',
708 708
 				'show_option_all'  => false,
709 709
 				'show_option_none' => false,
710 710
 			)
@@ -715,45 +715,45 @@  discard block
 block discarded – undo
715 715
 	/**
716 716
 	 * Filters the item query.
717 717
 	 */
718
-	public static function filter_item_query( $query ) {
718
+	public static function filter_item_query($query) {
719 719
 
720 720
 		// modify the query only if it admin and main query.
721
-		if ( ! ( is_admin() && $query->is_main_query() ) ) {
721
+		if (!(is_admin() && $query->is_main_query())) {
722 722
 			return $query;
723 723
 		}
724 724
 
725 725
 		// we want to modify the query for our items.
726
-		if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) {
726
+		if (empty($query->query['post_type']) || 'wpi_item' !== $query->query['post_type']) {
727 727
 			return $query;
728 728
 		}
729 729
 
730
-		if ( empty( $query->query_vars['meta_query'] ) ) {
730
+		if (empty($query->query_vars['meta_query'])) {
731 731
 			$query->query_vars['meta_query'] = array();
732 732
 		}
733 733
 
734 734
 		// Filter vat rule type
735
-        if ( ! empty( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
735
+        if (!empty($_GET['vat_rule'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
736 736
             $query->query_vars['meta_query'][] = array(
737 737
                 'key'     => '_wpinv_vat_rule',
738
-                'value'   => sanitize_text_field( $_GET['vat_rule'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
738
+                'value'   => sanitize_text_field($_GET['vat_rule']), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
739 739
                 'compare' => '=',
740 740
             );
741 741
         }
742 742
 
743 743
         // Filter vat class
744
-        if ( ! empty( $_GET['vat_class'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
744
+        if (!empty($_GET['vat_class'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
745 745
             $query->query_vars['meta_query'][] = array(
746 746
                 'key'     => '_wpinv_vat_class',
747
-                'value'   => sanitize_text_field( $_GET['vat_class'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
747
+                'value'   => sanitize_text_field($_GET['vat_class']), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
748 748
                 'compare' => '=',
749 749
             );
750 750
         }
751 751
 
752 752
         // Filter item type
753
-        if ( ! empty( $_GET['type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
753
+        if (!empty($_GET['type'])) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
754 754
             $query->query_vars['meta_query'][] = array(
755 755
                 'key'     => '_wpinv_type',
756
-                'value'   => sanitize_text_field( $_GET['type'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
756
+                'value'   => sanitize_text_field($_GET['type']), // phpcs:ignore WordPress.Security.NonceVerification.Recommended
757 757
                 'compare' => '=',
758 758
             );
759 759
 		}
@@ -763,15 +763,15 @@  discard block
 block discarded – undo
763 763
 	/**
764 764
 	 * Reorders items.
765 765
 	 */
766
-	public static function reorder_items( $vars ) {
766
+	public static function reorder_items($vars) {
767 767
 		global $typenow;
768 768
 
769
-		if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
769
+		if ('wpi_item' !== $typenow || empty($vars['orderby'])) {
770 770
 			return $vars;
771 771
 		}
772 772
 
773 773
 		// By item type.
774
-		if ( 'type' === $vars['orderby'] ) {
774
+		if ('type' === $vars['orderby']) {
775 775
 			return array_merge(
776 776
 				$vars,
777 777
 				array(
@@ -782,7 +782,7 @@  discard block
 block discarded – undo
782 782
 		}
783 783
 
784 784
 		// By vat class.
785
-		if ( 'vat_class' === $vars['orderby'] ) {
785
+		if ('vat_class' === $vars['orderby']) {
786 786
 			return array_merge(
787 787
 				$vars,
788 788
 				array(
@@ -793,7 +793,7 @@  discard block
 block discarded – undo
793 793
 		}
794 794
 
795 795
 		// By vat rule.
796
-		if ( 'vat_rule' === $vars['orderby'] ) {
796
+		if ('vat_rule' === $vars['orderby']) {
797 797
 			return array_merge(
798 798
 				$vars,
799 799
 				array(
@@ -804,7 +804,7 @@  discard block
 block discarded – undo
804 804
 		}
805 805
 
806 806
 		// By price.
807
-		if ( 'price' === $vars['orderby'] ) {
807
+		if ('price' === $vars['orderby']) {
808 808
 			return array_merge(
809 809
 				$vars,
810 810
 				array(
@@ -821,27 +821,27 @@  discard block
 block discarded – undo
821 821
 	/**
822 822
 	 * Fired when deleting a post.
823 823
 	 */
824
-	public static function delete_post( $post_id ) {
824
+	public static function delete_post($post_id) {
825 825
 
826
-		switch ( get_post_type( $post_id ) ) {
826
+		switch (get_post_type($post_id)) {
827 827
 
828 828
 			case 'wpi_item':
829
-				do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
829
+				do_action('getpaid_before_delete_item', new WPInv_Item($post_id));
830 830
 				break;
831 831
 
832 832
 			case 'wpi_payment_form':
833
-				do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
833
+				do_action('getpaid_before_delete_payment_form', new GetPaid_Payment_Form($post_id));
834 834
 				break;
835 835
 
836 836
 			case 'wpi_discount':
837
-				do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
837
+				do_action('getpaid_before_delete_discount', new WPInv_Discount($post_id));
838 838
 				break;
839 839
 
840 840
 			case 'wpi_invoice':
841
-				$invoice = new WPInv_Invoice( $post_id );
842
-				do_action( 'getpaid_before_delete_invoice', $invoice );
843
-				$invoice->get_data_store()->delete_items( $invoice );
844
-				$invoice->get_data_store()->delete_special_fields( $invoice );
841
+				$invoice = new WPInv_Invoice($post_id);
842
+				do_action('getpaid_before_delete_invoice', $invoice);
843
+				$invoice->get_data_store()->delete_items($invoice);
844
+				$invoice->get_data_store()->delete_special_fields($invoice);
845 845
 				break;
846 846
 		}
847 847
 	}
@@ -854,28 +854,28 @@  discard block
 block discarded – undo
854 854
      *
855 855
      * @return mixed
856 856
      */
857
-    public static function add_display_post_states( $post_states, $post ) {
857
+    public static function add_display_post_states($post_states, $post) {
858 858
 
859
-        if ( wpinv_get_option( 'success_page', 0 ) == $post->ID ) {
860
-            $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' );
859
+        if (wpinv_get_option('success_page', 0) == $post->ID) {
860
+            $post_states['getpaid_success_page'] = __('GetPaid Receipt Page', 'invoicing');
861 861
         }
862 862
 
863
-		foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
863
+		foreach (getpaid_get_invoice_post_types() as $post_type => $label) {
864 864
 
865
-			if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
866
-				$post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
867
-					__( 'GetPaid %s History Page', 'invoicing' ),
865
+			if (wpinv_get_option("{$post_type}_history_page", 0) == $post->ID) {
866
+				$post_states["getpaid_{$post_type}_history_page"] = sprintf(
867
+					__('GetPaid %s History Page', 'invoicing'),
868 868
 					$label
869 869
 				);
870 870
 			}
871 871
 }
872 872
 
873
-		if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
874
-            $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' );
873
+		if (wpinv_get_option('invoice_subscription_page', 0) == $post->ID) {
874
+            $post_states['getpaid_invoice_subscription_page'] = __('GetPaid Subscription Page', 'invoicing');
875 875
         }
876 876
 
877
-		if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
878
-            $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' );
877
+		if (wpinv_get_option('checkout_page', 0) == $post->ID) {
878
+            $post_states['getpaid_checkout_page'] = __('GetPaid Checkout Page', 'invoicing');
879 879
         }
880 880
 
881 881
         return $post_states;
Please login to merge, or discard this patch.
templates/payment-forms/elements/time.php 1 patch
Spacing   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -7,24 +7,24 @@
 block discarded – undo
7 7
  * @version 1.0.19
8 8
  */
9 9
 
10
-defined( 'ABSPATH' ) || exit;
10
+defined('ABSPATH') || exit;
11 11
 
12
-$label = empty( $label ) ? '' : wp_kses_post( $label );
13
-$label_class = sanitize_key( preg_replace( '/[^A-Za-z0-9_-]/', '-', $label ) );
12
+$label = empty($label) ? '' : wp_kses_post($label);
13
+$label_class = sanitize_key(preg_replace('/[^A-Za-z0-9_-]/', '-', $label));
14 14
 
15
-if ( ! empty( $required ) ) {
15
+if (!empty($required)) {
16 16
     $label .= "<span class='text-danger'> *</span>";
17 17
 }
18 18
 
19 19
 aui()->input(
20 20
     array(
21
-        'name'        => esc_attr( $id ),
22
-        'id'          => esc_attr( $element_id ),
23
-        'placeholder' => empty( $placeholder ) ? '' : esc_attr( $placeholder ),
24
-        'required'    => ! empty( $required ),
21
+        'name'        => esc_attr($id),
22
+        'id'          => esc_attr($element_id),
23
+        'placeholder' => empty($placeholder) ? '' : esc_attr($placeholder),
24
+        'required'    => !empty($required),
25 25
         'label'       => $label,
26 26
         'label_type'  => 'vertical',
27
-        'help_text'   => empty( $description ) ? '' : wp_kses_post( $description ),
27
+        'help_text'   => empty($description) ? '' : wp_kses_post($description),
28 28
         'type'        => 'time',
29 29
         'class'       => $label_class,
30 30
         'value'       => $query_value,
Please login to merge, or discard this patch.