Passed
Push — master ( 99ae46...ecf53c )
by Brian
05:15
created
templates/emails/fee-item.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -30,21 +30,21 @@  discard block
 block discarded – undo
30 30
                 // Item name.
31 31
                 if ( 'name' == $column ) {
32 32
 
33
-				// Display the name.
34
-				echo '<div class="wpinv_email_cart_item_title">' . esc_html( $fee['name'] ) . '</div>';
33
+                // Display the name.
34
+                echo '<div class="wpinv_email_cart_item_title">' . esc_html( $fee['name'] ) . '</div>';
35 35
 
36
-				// And an optional description.
37
-				$description = empty( $fee['description'] ) ? esc_html__( 'Fee', 'invoicing' ) : esc_html( $fee['description'] );
38
-				echo wp_kses_post( "<p class='small'>$description</p>" );
36
+                // And an optional description.
37
+                $description = empty( $fee['description'] ) ? esc_html__( 'Fee', 'invoicing' ) : esc_html( $fee['description'] );
38
+                echo wp_kses_post( "<p class='small'>$description</p>" );
39 39
 
40 40
                 }
41 41
 
42 42
                 // Item price.
43 43
                 if ( 'price' == $column ) {
44 44
 
45
-				// Display the item price (or recurring price if this is a renewal invoice)
46
-				if ( $invoice->is_recurring() && $invoice->is_renewal() ) {
47
-					wpinv_the_price( $fee['recurring_fee'], $invoice->get_currency() );
45
+                // Display the item price (or recurring price if this is a renewal invoice)
46
+                if ( $invoice->is_recurring() && $invoice->is_renewal() ) {
47
+                    wpinv_the_price( $fee['recurring_fee'], $invoice->get_currency() );
48 48
                     } else {
49 49
                         wpinv_the_price( $fee['initial_fee'], $invoice->get_currency() );
50 50
                     }
@@ -52,18 +52,18 @@  discard block
 block discarded – undo
52 52
 
53 53
                 // Item quantity.
54 54
                 if ( 'quantity' == $column ) {
55
-				echo '&mdash;';
55
+                echo '&mdash;';
56 56
                 }
57 57
 
58 58
                 // Item tax.
59 59
                 if ( 'tax_rate' == $column ) {
60
-				echo '&mdash;';
60
+                echo '&mdash;';
61 61
                 }
62 62
 
63 63
                 // Item sub total.
64 64
                 if ( 'subtotal' == $column ) {
65
-				if ( $invoice->is_recurring() && $invoice->is_renewal() ) {
66
-					wpinv_the_price( $fee['recurring_fee'], $invoice->get_currency() );
65
+                if ( $invoice->is_recurring() && $invoice->is_renewal() ) {
66
+                    wpinv_the_price( $fee['recurring_fee'], $invoice->get_currency() );
67 67
                 } else {
68 68
                     wpinv_the_price( $fee['initial_fee'], $invoice->get_currency() );
69 69
                 }
Please login to merge, or discard this patch.
templates/invoice-receipt.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -126,25 +126,25 @@
 block discarded – undo
126 126
 
127 127
             if ( ! empty( $invoice_actions ) ) {
128 128
 
129
-			echo '<div class="wpinv-receipt-actions text-right mt-1 mb-4">';
129
+            echo '<div class="wpinv-receipt-actions text-right mt-1 mb-4">';
130 130
 
131
-			foreach ( $invoice_actions as $key => $invoice_action ) {
131
+            foreach ( $invoice_actions as $key => $invoice_action ) {
132 132
 
133
-				$key    = sanitize_html_class( $key );
134
-				$class  = empty( $invoice_action['class'] ) ? 'btn-dark' : sanitize_html_class( $invoice_action['class'] );
135
-				$url    = empty( $invoice_action['url'] ) ? '#' : esc_url( $invoice_action['url'] );
136
-				$attrs  = empty( $invoice_action['attrs'] ) ? '' : $invoice_action['attrs'];
137
-				$anchor = esc_html( $invoice_action['name'] );
133
+                $key    = sanitize_html_class( $key );
134
+                $class  = empty( $invoice_action['class'] ) ? 'btn-dark' : sanitize_html_class( $invoice_action['class'] );
135
+                $url    = empty( $invoice_action['url'] ) ? '#' : esc_url( $invoice_action['url'] );
136
+                $attrs  = empty( $invoice_action['attrs'] ) ? '' : $invoice_action['attrs'];
137
+                $anchor = esc_html( $invoice_action['name'] );
138 138
 
139
-				echo wp_kses_post( "<a href='$url' class='btn btn-sm ml-1 $class $key' $attrs>$anchor</a>" );
139
+                echo wp_kses_post( "<a href='$url' class='btn btn-sm ml-1 $class $key' $attrs>$anchor</a>" );
140 140
                 }
141 141
 
142
-			echo '</div>';
142
+            echo '</div>';
143 143
 
144 144
             }
145 145
 
146 146
             if ( ! empty( $alert ) ) {
147
-			echo wp_kses_post( $alert );
147
+            echo wp_kses_post( $alert );
148 148
             }
149 149
 
150 150
         ?>
Please login to merge, or discard this patch.
includes/user-functions.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -34,11 +34,11 @@  discard block
 block discarded – undo
34 34
  */
35 35
 function wpinv_get_capability( $capalibilty = 'manage_invoicing' ) {
36 36
 
37
-	if ( current_user_can( 'manage_options' ) ) {
38
-		return 'manage_options';
39
-	};
37
+    if ( current_user_can( 'manage_options' ) ) {
38
+        return 'manage_options';
39
+    };
40 40
 
41
-	return $capalibilty;
41
+    return $capalibilty;
42 42
 }
43 43
 
44 44
 /**
@@ -62,10 +62,10 @@  discard block
 block discarded – undo
62 62
     // Prepare user values.
63 63
     $prefix = preg_replace( '/\s+/', '', $prefix );
64 64
     $prefix = empty( $prefix ) ? $email : $prefix;
65
-	$args   = array(
66
-		'user_login' => wpinv_generate_user_name( $prefix ),
67
-		'user_pass'  => wp_generate_password(),
68
-		'user_email' => $email,
65
+    $args   = array(
66
+        'user_login' => wpinv_generate_user_name( $prefix ),
67
+        'user_pass'  => wp_generate_password(),
68
+        'user_email' => $email,
69 69
         'role'       => 'subscriber',
70 70
     );
71 71
 
@@ -82,16 +82,16 @@  discard block
 block discarded – undo
82 82
 function wpinv_generate_user_name( $prefix = '' ) {
83 83
 
84 84
     // If prefix is an email, retrieve the part before the email.
85
-	$prefix = strtok( $prefix, '@' );
85
+    $prefix = strtok( $prefix, '@' );
86 86
     $prefix = trim( $prefix, '.' );
87 87
 
88
-	// Sanitize the username.
89
-	$prefix = sanitize_user( $prefix, true );
88
+    // Sanitize the username.
89
+    $prefix = sanitize_user( $prefix, true );
90 90
 
91
-	$illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
92
-	if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) {
93
-		$prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 );
94
-	}
91
+    $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
92
+    if ( empty( $prefix ) || in_array( strtolower( $prefix ), array_map( 'strtolower', $illegal_logins ), true ) ) {
93
+        $prefix = 'gtp_' . zeroise( wp_rand( 0, 9999 ), 4 );
94
+    }
95 95
 
96 96
     $username = $prefix;
97 97
     $postfix  = 2;
@@ -220,43 +220,43 @@  discard block
 block discarded – undo
220 220
 
221 221
                     foreach ( getpaid_user_address_fields() as $key => $label ) {
222 222
 
223
-					// Display the country.
224
-					if ( 'country' == $key ) {
225
-
226
-						aui()->select(
227
-							array(
228
-								'options'     => wpinv_get_country_list(),
229
-								'name'        => 'getpaid_address[' . esc_attr( $key ) . ']',
230
-								'id'          => 'wpinv-' . sanitize_html_class( $key ),
231
-								'value'       => sanitize_text_field( getpaid_get_user_address_field( get_current_user_id(), $key ) ),
232
-								'placeholder' => $label,
233
-								'label'       => wp_kses_post( $label ),
234
-								'label_type'  => 'vertical',
235
-								'class'       => 'getpaid-address-field',
223
+                    // Display the country.
224
+                    if ( 'country' == $key ) {
225
+
226
+                        aui()->select(
227
+                            array(
228
+                                'options'     => wpinv_get_country_list(),
229
+                                'name'        => 'getpaid_address[' . esc_attr( $key ) . ']',
230
+                                'id'          => 'wpinv-' . sanitize_html_class( $key ),
231
+                                'value'       => sanitize_text_field( getpaid_get_user_address_field( get_current_user_id(), $key ) ),
232
+                                'placeholder' => $label,
233
+                                'label'       => wp_kses_post( $label ),
234
+                                'label_type'  => 'vertical',
235
+                                'class'       => 'getpaid-address-field',
236 236
                             ),
237 237
                             true
238
-						);
239
-
240
-					}
241
-
242
-					// Display the state.
243
-					elseif ( 'state' == $key ) {
244
-
245
-						getpaid_get_states_select_markup(
246
-							getpaid_get_user_address_field( get_current_user_id(), 'country' ),
247
-							getpaid_get_user_address_field( get_current_user_id(), 'state' ),
248
-							$label,
249
-							$label,
250
-							'',
251
-							false,
252
-							'',
253
-							'getpaid_address[' . esc_attr( $key ) . ']',
238
+                        );
239
+
240
+                    }
241
+
242
+                    // Display the state.
243
+                    elseif ( 'state' == $key ) {
244
+
245
+                        getpaid_get_states_select_markup(
246
+                            getpaid_get_user_address_field( get_current_user_id(), 'country' ),
247
+                            getpaid_get_user_address_field( get_current_user_id(), 'state' ),
248
+                            $label,
249
+                            $label,
250
+                            '',
251
+                            false,
252
+                            '',
253
+                            'getpaid_address[' . esc_attr( $key ) . ']',
254 254
                             true
255
-						);
255
+                        );
256 256
 
257 257
                         } else {
258 258
 
259
-						aui()->input(
259
+                        aui()->input(
260 260
                             array(
261 261
                                 'name'        => 'getpaid_address[' . esc_attr( $key ) . ']',
262 262
                                 'id'          => 'wpinv-' . sanitize_html_class( $key ),
@@ -268,7 +268,7 @@  discard block
 block discarded – undo
268 268
                                 'class'       => 'getpaid-address-field',
269 269
                             ),
270 270
                             true
271
-						);
271
+                        );
272 272
 
273 273
                         }
274 274
                     }
Please login to merge, or discard this patch.
includes/admin/subscriptions.php 1 patch
Indentation   +425 added lines, -425 removed lines patch added patch discarded remove patch
@@ -14,7 +14,7 @@  discard block
 block discarded – undo
14 14
  */
15 15
 function wpinv_subscriptions_page() {
16 16
 
17
-	?>
17
+    ?>
18 18
 
19 19
 	<div class="wrap">
20 20
 		<h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
@@ -22,28 +22,28 @@  discard block
 block discarded – undo
22 22
 
23 23
 			<?php
24 24
 
25
-				// Verify user permissions.
26
-				if ( ! wpinv_current_user_can_manage_invoicing() ) {
25
+                // Verify user permissions.
26
+                if ( ! wpinv_current_user_can_manage_invoicing() ) {
27 27
 
28
-				aui()->alert(
28
+                aui()->alert(
29 29
                     array(
30
-						'type'    => 'danger',
31
-						'content' => __( 'You are not permitted to view this page.', 'invoicing' ),
32
-					),
33
-					true
30
+                        'type'    => 'danger',
31
+                        'content' => __( 'You are not permitted to view this page.', 'invoicing' ),
32
+                    ),
33
+                    true
34 34
                 );
35 35
 
36
-				} elseif ( ! empty( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) {
36
+                } elseif ( ! empty( $_GET['id'] ) && is_numeric( $_GET['id'] ) ) {
37 37
 
38
-				// Display a single subscription.
39
-				wpinv_recurring_subscription_details();
40
-				} else {
38
+                // Display a single subscription.
39
+                wpinv_recurring_subscription_details();
40
+                } else {
41 41
 
42
-				// Display a list of available subscriptions.
43
-				getpaid_print_subscriptions_list();
44
-				}
42
+                // Display a list of available subscriptions.
43
+                getpaid_print_subscriptions_list();
44
+                }
45 45
 
46
-			?>
46
+            ?>
47 47
 
48 48
 		</div>
49 49
 	</div>
@@ -60,10 +60,10 @@  discard block
 block discarded – undo
60 60
  */
61 61
 function getpaid_print_subscriptions_list() {
62 62
 
63
-	$subscribers_table = new WPInv_Subscriptions_List_Table();
64
-	$subscribers_table->prepare_items();
63
+    $subscribers_table = new WPInv_Subscriptions_List_Table();
64
+    $subscribers_table->prepare_items();
65 65
 
66
-	?>
66
+    ?>
67 67
 	<?php $subscribers_table->views(); ?>
68 68
 	<form id="subscribers-filter" class="bsui" method="get">
69 69
 		<input type="hidden" name="page" value="wpinv-subscriptions" />
@@ -82,42 +82,42 @@  discard block
 block discarded – undo
82 82
  */
83 83
 function wpinv_recurring_subscription_details() {
84 84
 
85
-	// Fetch the subscription.
86
-	$sub = new WPInv_Subscription( (int) $_GET['id'] );
87
-	if ( ! $sub->exists() ) {
85
+    // Fetch the subscription.
86
+    $sub = new WPInv_Subscription( (int) $_GET['id'] );
87
+    if ( ! $sub->exists() ) {
88 88
 
89
-		aui()->alert(
90
-			array(
91
-				'type'    => 'danger',
92
-				'content' => __( 'Subscription not found.', 'invoicing' ),
93
-			),
94
-			true
95
-		);
89
+        aui()->alert(
90
+            array(
91
+                'type'    => 'danger',
92
+                'content' => __( 'Subscription not found.', 'invoicing' ),
93
+            ),
94
+            true
95
+        );
96 96
 
97
-		return;
98
-	}
97
+        return;
98
+    }
99 99
 
100
-	// Use metaboxes to display the subscription details.
101
-	add_meta_box( 'getpaid_admin_subscription_details_metabox', __( 'Subscription Details', 'invoicing' ), 'getpaid_admin_subscription_details_metabox', get_current_screen(), 'normal', 'high' );
102
-	add_meta_box( 'getpaid_admin_subscription_update_metabox', __( 'Change Status', 'invoicing' ), 'getpaid_admin_subscription_update_metabox', get_current_screen(), 'side' );
100
+    // Use metaboxes to display the subscription details.
101
+    add_meta_box( 'getpaid_admin_subscription_details_metabox', __( 'Subscription Details', 'invoicing' ), 'getpaid_admin_subscription_details_metabox', get_current_screen(), 'normal', 'high' );
102
+    add_meta_box( 'getpaid_admin_subscription_update_metabox', __( 'Change Status', 'invoicing' ), 'getpaid_admin_subscription_update_metabox', get_current_screen(), 'side' );
103 103
 
104
-	$subscription_id     = $sub->get_id();
105
-	$subscription_groups = getpaid_get_invoice_subscription_groups( $sub->get_parent_invoice_id() );
106
-	$subscription_group  = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) );
104
+    $subscription_id     = $sub->get_id();
105
+    $subscription_groups = getpaid_get_invoice_subscription_groups( $sub->get_parent_invoice_id() );
106
+    $subscription_group  = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) );
107 107
 
108
-	if ( 1 < count( $subscription_groups ) ) {
109
-		add_meta_box( 'getpaid_admin_subscription_related_subscriptions_metabox', __( 'Related Subscriptions', 'invoicing' ), 'getpaid_admin_subscription_related_subscriptions_metabox', get_current_screen(), 'advanced' );
110
-	}
108
+    if ( 1 < count( $subscription_groups ) ) {
109
+        add_meta_box( 'getpaid_admin_subscription_related_subscriptions_metabox', __( 'Related Subscriptions', 'invoicing' ), 'getpaid_admin_subscription_related_subscriptions_metabox', get_current_screen(), 'advanced' );
110
+    }
111 111
 
112
-	if ( ! empty( $subscription_group ) ) {
113
-		add_meta_box( 'getpaid_admin_subscription_item_details_metabox', __( 'Subscription Items', 'invoicing' ), 'getpaid_admin_subscription_item_details_metabox', get_current_screen(), 'normal', 'low' );
114
-	}
112
+    if ( ! empty( $subscription_group ) ) {
113
+        add_meta_box( 'getpaid_admin_subscription_item_details_metabox', __( 'Subscription Items', 'invoicing' ), 'getpaid_admin_subscription_item_details_metabox', get_current_screen(), 'normal', 'low' );
114
+    }
115 115
 
116
-	add_meta_box( 'getpaid_admin_subscription_invoice_details_metabox', __( 'Related Invoices', 'invoicing' ), 'getpaid_admin_subscription_invoice_details_metabox', get_current_screen(), 'advanced' );
116
+    add_meta_box( 'getpaid_admin_subscription_invoice_details_metabox', __( 'Related Invoices', 'invoicing' ), 'getpaid_admin_subscription_invoice_details_metabox', get_current_screen(), 'advanced' );
117 117
 
118
-	do_action( 'getpaid_admin_single_subscription_register_metabox', $sub );
118
+    do_action( 'getpaid_admin_single_subscription_register_metabox', $sub );
119 119
 
120
-	?>
120
+    ?>
121 121
 
122 122
 		<form method="post" action="<?php echo esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $sub->get_id() ) ) ); ?>">
123 123
 
@@ -157,44 +157,44 @@  discard block
 block discarded – undo
157 157
  */
158 158
 function getpaid_admin_subscription_details_metabox( $sub ) {
159 159
 
160
-	// Subscription items.
161
-	$subscription_group = getpaid_get_invoice_subscription_group( $sub->get_parent_invoice_id(), $sub->get_id() );
162
-	$items_count        = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] );
163
-
164
-	// Prepare subscription detail columns.
165
-	$fields = apply_filters(
166
-		'getpaid_subscription_admin_page_fields',
167
-		array(
168
-			'subscription' => __( 'Subscription', 'invoicing' ),
169
-			'customer'     => __( 'Customer', 'invoicing' ),
170
-			'amount'       => __( 'Amount', 'invoicing' ),
171
-			'start_date'   => __( 'Start Date', 'invoicing' ),
172
-			'renews_on'    => __( 'Next Payment', 'invoicing' ),
173
-			'renewals'     => __( 'Payments', 'invoicing' ),
174
-			'item'         => _n( 'Item', 'Items', $items_count, 'invoicing' ),
175
-			'gateway'      => __( 'Payment Method', 'invoicing' ),
176
-			'profile_id'   => __( 'Profile ID', 'invoicing' ),
177
-			'status'       => __( 'Status', 'invoicing' ),
178
-		)
179
-	);
180
-
181
-	if ( ! $sub->is_active() ) {
182
-
183
-		if ( isset( $fields['renews_on'] ) ) {
184
-			unset( $fields['renews_on'] );
185
-		}
186
-
187
-		if ( isset( $fields['gateway'] ) ) {
188
-			unset( $fields['gateway'] );
189
-		}
160
+    // Subscription items.
161
+    $subscription_group = getpaid_get_invoice_subscription_group( $sub->get_parent_invoice_id(), $sub->get_id() );
162
+    $items_count        = empty( $subscription_group ) ? 1 : count( $subscription_group['items'] );
163
+
164
+    // Prepare subscription detail columns.
165
+    $fields = apply_filters(
166
+        'getpaid_subscription_admin_page_fields',
167
+        array(
168
+            'subscription' => __( 'Subscription', 'invoicing' ),
169
+            'customer'     => __( 'Customer', 'invoicing' ),
170
+            'amount'       => __( 'Amount', 'invoicing' ),
171
+            'start_date'   => __( 'Start Date', 'invoicing' ),
172
+            'renews_on'    => __( 'Next Payment', 'invoicing' ),
173
+            'renewals'     => __( 'Payments', 'invoicing' ),
174
+            'item'         => _n( 'Item', 'Items', $items_count, 'invoicing' ),
175
+            'gateway'      => __( 'Payment Method', 'invoicing' ),
176
+            'profile_id'   => __( 'Profile ID', 'invoicing' ),
177
+            'status'       => __( 'Status', 'invoicing' ),
178
+        )
179
+    );
180
+
181
+    if ( ! $sub->is_active() ) {
182
+
183
+        if ( isset( $fields['renews_on'] ) ) {
184
+            unset( $fields['renews_on'] );
185
+        }
186
+
187
+        if ( isset( $fields['gateway'] ) ) {
188
+            unset( $fields['gateway'] );
189
+        }
190 190
 }
191 191
 
192
-	$profile_id = $sub->get_profile_id();
193
-	if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) {
194
-		unset( $fields['profile_id'] );
195
-	}
192
+    $profile_id = $sub->get_profile_id();
193
+    if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) {
194
+        unset( $fields['profile_id'] );
195
+    }
196 196
 
197
-	?>
197
+    ?>
198 198
 
199 199
 		<table class="table table-borderless" style="font-size: 14px;">
200 200
 			<tbody>
@@ -228,20 +228,20 @@  discard block
 block discarded – undo
228 228
  */
229 229
 function getpaid_admin_subscription_metabox_display_customer( $subscription ) {
230 230
 
231
-	$username = __( '(Missing User)', 'invoicing' );
231
+    $username = __( '(Missing User)', 'invoicing' );
232 232
 
233
-	$user = get_userdata( $subscription->get_customer_id() );
234
-	if ( $user ) {
233
+    $user = get_userdata( $subscription->get_customer_id() );
234
+    if ( $user ) {
235 235
 
236
-		$username = sprintf(
237
-			'<a href="user-edit.php?user_id=%s">%s</a>',
238
-			absint( $user->ID ),
239
-			! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email )
240
-		);
236
+        $username = sprintf(
237
+            '<a href="user-edit.php?user_id=%s">%s</a>',
238
+            absint( $user->ID ),
239
+            ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email )
240
+        );
241 241
 
242
-	}
242
+    }
243 243
 
244
-	echo wp_kses_post( $username );
244
+    echo wp_kses_post( $username );
245 245
 }
246 246
 add_action( 'getpaid_subscription_admin_display_customer', 'getpaid_admin_subscription_metabox_display_customer' );
247 247
 
@@ -251,8 +251,8 @@  discard block
 block discarded – undo
251 251
  * @param WPInv_Subscription $subscription
252 252
  */
253 253
 function getpaid_admin_subscription_metabox_display_amount( $subscription ) {
254
-	$amount    = getpaid_get_formatted_subscription_amount( $subscription );
255
-	echo wp_kses_post( "<span>$amount</span>" );
254
+    $amount    = getpaid_get_formatted_subscription_amount( $subscription );
255
+    echo wp_kses_post( "<span>$amount</span>" );
256 256
 }
257 257
 add_action( 'getpaid_subscription_admin_display_amount', 'getpaid_admin_subscription_metabox_display_amount' );
258 258
 
@@ -263,11 +263,11 @@  discard block
 block discarded – undo
263 263
  */
264 264
 function getpaid_admin_subscription_metabox_display_id( $subscription ) {
265 265
 
266
-	printf(
267
-		'<a href="%s">#%s</a>',
268
-		esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $subscription->get_id() ) ) ),
269
-		absint( $subscription->get_id() )
270
-	);
266
+    printf(
267
+        '<a href="%s">#%s</a>',
268
+        esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $subscription->get_id() ) ) ),
269
+        absint( $subscription->get_id() )
270
+    );
271 271
 
272 272
 }
273 273
 add_action( 'getpaid_subscription_admin_display_subscription', 'getpaid_admin_subscription_metabox_display_id' );
@@ -278,7 +278,7 @@  discard block
 block discarded – undo
278 278
  * @param WPInv_Subscription $subscription
279 279
  */
280 280
 function getpaid_admin_subscription_metabox_display_start_date( $subscription ) {
281
-	echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) );
281
+    echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) );
282 282
 }
283 283
 add_action( 'getpaid_subscription_admin_display_start_date', 'getpaid_admin_subscription_metabox_display_start_date' );
284 284
 
@@ -288,7 +288,7 @@  discard block
 block discarded – undo
288 288
  * @param WPInv_Subscription $subscription
289 289
  */
290 290
 function getpaid_admin_subscription_metabox_display_renews_on( $subscription ) {
291
-	echo esc_html( getpaid_format_date_value( $subscription->get_expiration() ) );
291
+    echo esc_html( getpaid_format_date_value( $subscription->get_expiration() ) );
292 292
 }
293 293
 add_action( 'getpaid_subscription_admin_display_renews_on', 'getpaid_admin_subscription_metabox_display_renews_on' );
294 294
 
@@ -298,8 +298,8 @@  discard block
 block discarded – undo
298 298
  * @param WPInv_Subscription $subscription
299 299
  */
300 300
 function getpaid_admin_subscription_metabox_display_renewals( $subscription ) {
301
-	$max_bills = $subscription->get_bill_times();
302
-	echo ( (int) $subscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '&infin;' : (int) $max_bills );
301
+    $max_bills = $subscription->get_bill_times();
302
+    echo ( (int) $subscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '&infin;' : (int) $max_bills );
303 303
 }
304 304
 add_action( 'getpaid_subscription_admin_display_renewals', 'getpaid_admin_subscription_metabox_display_renewals' );
305 305
 /**
@@ -310,13 +310,13 @@  discard block
 block discarded – undo
310 310
  */
311 311
 function getpaid_admin_subscription_metabox_display_item( $subscription, $subscription_group = false ) {
312 312
 
313
-	if ( empty( $subscription_group ) ) {
314
-		echo WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() );
315
-		return;
316
-	}
313
+    if ( empty( $subscription_group ) ) {
314
+        echo WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() );
315
+        return;
316
+    }
317 317
 
318
-	$markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
319
-	echo wp_kses_post( implode( ' | ', $markup ) );
318
+    $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
319
+    echo wp_kses_post( implode( ' | ', $markup ) );
320 320
 
321 321
 }
322 322
 add_action( 'getpaid_subscription_admin_display_item', 'getpaid_admin_subscription_metabox_display_item', 10, 2 );
@@ -328,13 +328,13 @@  discard block
 block discarded – undo
328 328
  */
329 329
 function getpaid_admin_subscription_metabox_display_gateway( $subscription ) {
330 330
 
331
-	$gateway = $subscription->get_gateway();
331
+    $gateway = $subscription->get_gateway();
332 332
 
333
-	if ( ! empty( $gateway ) ) {
334
-		echo esc_html( wpinv_get_gateway_admin_label( $gateway ) );
335
-	} else {
336
-		echo '&mdash;';
337
-	}
333
+    if ( ! empty( $gateway ) ) {
334
+        echo esc_html( wpinv_get_gateway_admin_label( $gateway ) );
335
+    } else {
336
+        echo '&mdash;';
337
+    }
338 338
 
339 339
 }
340 340
 add_action( 'getpaid_subscription_admin_display_gateway', 'getpaid_admin_subscription_metabox_display_gateway' );
@@ -345,7 +345,7 @@  discard block
 block discarded – undo
345 345
  * @param WPInv_Subscription $subscription
346 346
  */
347 347
 function getpaid_admin_subscription_metabox_display_status( $subscription ) {
348
-	echo wp_kses_post( $subscription->get_status_label_html() );
348
+    echo wp_kses_post( $subscription->get_status_label_html() );
349 349
 }
350 350
 add_action( 'getpaid_subscription_admin_display_status', 'getpaid_admin_subscription_metabox_display_status' );
351 351
 
@@ -356,28 +356,28 @@  discard block
 block discarded – undo
356 356
  */
357 357
 function getpaid_admin_subscription_metabox_display_profile_id( $subscription ) {
358 358
 
359
-	$profile_id = $subscription->get_profile_id();
360
-
361
-	$input = aui()->input(
362
-		array(
363
-			'type'              => 'text',
364
-			'id'                => 'wpinv_subscription_profile_id',
365
-			'name'              => 'wpinv_subscription_profile_id',
366
-			'label'             => __( 'Profile Id', 'invoicing' ),
367
-			'label_type'        => 'hidden',
368
-			'placeholder'       => __( 'Profile Id', 'invoicing' ),
369
-			'value'             => esc_attr( $profile_id ),
370
-			'input_group_right' => '',
371
-			'no_wrap'           => true,
372
-		)
373
-	);
374
-
375
-	echo str_ireplace( 'form-control', 'regular-text', $input );
376
-
377
-	$url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription );
378
-	if ( ! empty( $url ) ) {
379
-		echo '&nbsp;<a href="' . esc_url_raw( $url ) . '" title="' . __( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>';
380
-	}
359
+    $profile_id = $subscription->get_profile_id();
360
+
361
+    $input = aui()->input(
362
+        array(
363
+            'type'              => 'text',
364
+            'id'                => 'wpinv_subscription_profile_id',
365
+            'name'              => 'wpinv_subscription_profile_id',
366
+            'label'             => __( 'Profile Id', 'invoicing' ),
367
+            'label_type'        => 'hidden',
368
+            'placeholder'       => __( 'Profile Id', 'invoicing' ),
369
+            'value'             => esc_attr( $profile_id ),
370
+            'input_group_right' => '',
371
+            'no_wrap'           => true,
372
+        )
373
+    );
374
+
375
+    echo str_ireplace( 'form-control', 'regular-text', $input );
376
+
377
+    $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription );
378
+    if ( ! empty( $url ) ) {
379
+        echo '&nbsp;<a href="' . esc_url_raw( $url ) . '" title="' . __( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>';
380
+    }
381 381
 
382 382
 }
383 383
 add_action( 'getpaid_subscription_admin_display_profile_id', 'getpaid_admin_subscription_metabox_display_profile_id' );
@@ -389,40 +389,40 @@  discard block
 block discarded – undo
389 389
  */
390 390
 function getpaid_admin_subscription_update_metabox( $subscription ) {
391 391
 
392
-	?>
392
+    ?>
393 393
 	<div class="mt-3">
394 394
 
395 395
 		<?php
396
-			aui()->select(
397
-				array(
398
-					'options'   => getpaid_get_subscription_statuses(),
399
-					'name'      => 'subscription_status',
400
-					'id'        => 'subscription_status_update_select',
401
-					'required'  => true,
402
-					'no_wrap'   => false,
403
-					'label'     => __( 'Subscription Status', 'invoicing' ),
404
-					'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ),
405
-					'select2'   => true,
406
-					'value'     => $subscription->get_status( 'edit' ),
407
-				),
408
-				true
409
-			);
410
-		?>
396
+            aui()->select(
397
+                array(
398
+                    'options'   => getpaid_get_subscription_statuses(),
399
+                    'name'      => 'subscription_status',
400
+                    'id'        => 'subscription_status_update_select',
401
+                    'required'  => true,
402
+                    'no_wrap'   => false,
403
+                    'label'     => __( 'Subscription Status', 'invoicing' ),
404
+                    'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ),
405
+                    'select2'   => true,
406
+                    'value'     => $subscription->get_status( 'edit' ),
407
+                ),
408
+                true
409
+            );
410
+        ?>
411 411
 
412 412
 		<div class="mt-2 px-3 py-2 bg-light border-top" style="margin: -12px;">
413 413
 
414 414
 		<?php
415
-			submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false );
415
+            submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false );
416 416
 
417
-			$url    = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' );
418
-			$anchor = __( 'Renew Subscription', 'invoicing' );
419
-			$title  = esc_attr__( 'Are you sure you want to extend the subscription and generate a new invoice that will be automatically marked as paid?', 'invoicing' );
417
+            $url    = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' );
418
+            $anchor = __( 'Renew Subscription', 'invoicing' );
419
+            $title  = esc_attr__( 'Are you sure you want to extend the subscription and generate a new invoice that will be automatically marked as paid?', 'invoicing' );
420 420
 
421
-			if ( $subscription->is_active() ) {
422
-			echo "<a href='$url' class='float-right text-muted' onclick='return confirm(\"$title\")'>$anchor</a>";
423
-			}
421
+            if ( $subscription->is_active() ) {
422
+            echo "<a href='$url' class='float-right text-muted' onclick='return confirm(\"$title\")'>$anchor</a>";
423
+            }
424 424
 
425
-	echo '</div></div>';
425
+    echo '</div></div>';
426 426
 }
427 427
 
428 428
 /**
@@ -433,33 +433,33 @@  discard block
 block discarded – undo
433 433
  */
434 434
 function getpaid_admin_subscription_invoice_details_metabox( $subscription, $strict = true ) {
435 435
 
436
-	$columns = apply_filters(
437
-		'getpaid_subscription_related_invoices_columns',
438
-		array(
439
-			'invoice'      => __( 'Invoice', 'invoicing' ),
440
-			'relationship' => __( 'Relationship', 'invoicing' ),
441
-			'date'         => __( 'Date', 'invoicing' ),
442
-			'status'       => __( 'Status', 'invoicing' ),
443
-			'total'        => __( 'Total', 'invoicing' ),
444
-		),
445
-		$subscription
446
-	);
447
-
448
-	// Prepare the invoices.
449
-	$payments = $subscription->get_child_payments( ! is_admin() );
450
-	$parent   = $subscription->get_parent_invoice();
451
-
452
-	if ( $parent->exists() ) {
453
-		$payments = array_merge( array( $parent ), $payments );
454
-	}
455
-
456
-	$table_class = 'w-100 bg-white';
457
-
458
-	if ( ! is_admin() ) {
459
-		$table_class = 'table table-bordered';
460
-	}
461
-
462
-	?>
436
+    $columns = apply_filters(
437
+        'getpaid_subscription_related_invoices_columns',
438
+        array(
439
+            'invoice'      => __( 'Invoice', 'invoicing' ),
440
+            'relationship' => __( 'Relationship', 'invoicing' ),
441
+            'date'         => __( 'Date', 'invoicing' ),
442
+            'status'       => __( 'Status', 'invoicing' ),
443
+            'total'        => __( 'Total', 'invoicing' ),
444
+        ),
445
+        $subscription
446
+    );
447
+
448
+    // Prepare the invoices.
449
+    $payments = $subscription->get_child_payments( ! is_admin() );
450
+    $parent   = $subscription->get_parent_invoice();
451
+
452
+    if ( $parent->exists() ) {
453
+        $payments = array_merge( array( $parent ), $payments );
454
+    }
455
+
456
+    $table_class = 'w-100 bg-white';
457
+
458
+    if ( ! is_admin() ) {
459
+        $table_class = 'table table-bordered';
460
+    }
461
+
462
+    ?>
463 463
 		<div class="m-0" style="overflow: auto;">
464 464
 
465 465
 			<table class="<?php echo esc_attr( $table_class ); ?>">
@@ -467,14 +467,14 @@  discard block
 block discarded – undo
467 467
 				<thead>
468 468
 					<tr>
469 469
 						<?php
470
-							foreach ( $columns as $key => $label ) {
471
-							$key   = esc_attr( $key );
472
-							$label = esc_html( $label );
473
-							$class = 'text-left';
474
-
475
-							echo "<th class='subscription-invoice-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>";
476
-							}
477
-						?>
470
+                            foreach ( $columns as $key => $label ) {
471
+                            $key   = esc_attr( $key );
472
+                            $label = esc_html( $label );
473
+                            $class = 'text-left';
474
+
475
+                            echo "<th class='subscription-invoice-field-$key bg-light p-2 $class color-dark font-weight-bold'>$label</th>";
476
+                            }
477
+                        ?>
478 478
 					</tr>
479 479
 				</thead>
480 480
 
@@ -490,72 +490,72 @@  discard block
 block discarded – undo
490 490
 
491 491
 					<?php
492 492
 
493
-						foreach ( $payments as $payment ) :
493
+                        foreach ( $payments as $payment ) :
494 494
 
495
-						// Ensure that we have an invoice.
496
-						$payment = new WPInv_Invoice( $payment );
495
+                        // Ensure that we have an invoice.
496
+                        $payment = new WPInv_Invoice( $payment );
497 497
 
498
-						// Abort if the invoice is invalid...
499
-						if ( ! $payment->exists() ) {
500
-							continue;
501
-							}
498
+                        // Abort if the invoice is invalid...
499
+                        if ( ! $payment->exists() ) {
500
+                            continue;
501
+                            }
502 502
 
503
-						// ... or belongs to a different subscription.
504
-						if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) {
505
-							continue;
506
-							}
503
+                        // ... or belongs to a different subscription.
504
+                        if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) {
505
+                            continue;
506
+                            }
507 507
 
508
-						echo '<tr>';
508
+                        echo '<tr>';
509 509
 
510
-						foreach ( array_keys( $columns ) as $key ) {
510
+                        foreach ( array_keys( $columns ) as $key ) {
511 511
 
512
-							$class = 'text-left';
512
+                            $class = 'text-left';
513 513
 
514
-							echo "<td class='p-2 text-left'>";
514
+                            echo "<td class='p-2 text-left'>";
515 515
 
516
-								switch ( $key ) {
516
+                                switch ( $key ) {
517 517
 
518
-								case 'total':
519
-										echo '<strong>' . wpinv_price( $payment->get_total(), $payment->get_currency() ) . '</strong>';
520
-									break;
518
+                                case 'total':
519
+                                        echo '<strong>' . wpinv_price( $payment->get_total(), $payment->get_currency() ) . '</strong>';
520
+                                    break;
521 521
 
522
-								case 'relationship':
523
-										echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' );
524
-									break;
522
+                                case 'relationship':
523
+                                        echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' );
524
+                                    break;
525 525
 
526
-								case 'date':
527
-									echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) );
528
-									break;
526
+                                case 'date':
527
+                                    echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) );
528
+                                    break;
529 529
 
530
-								case 'status':
531
-										$status = $payment->get_status_nicename();
532
-										if ( is_admin() ) {
533
-										$status = $payment->get_status_label_html();
534
-										}
530
+                                case 'status':
531
+                                        $status = $payment->get_status_nicename();
532
+                                        if ( is_admin() ) {
533
+                                        $status = $payment->get_status_label_html();
534
+                                        }
535 535
 
536
-										echo wp_kses_post( $status );
537
-									break;
536
+                                        echo wp_kses_post( $status );
537
+                                    break;
538 538
 
539
-								case 'invoice':
540
-										$link    = esc_url( get_edit_post_link( $payment->get_id() ) );
539
+                                case 'invoice':
540
+                                        $link    = esc_url( get_edit_post_link( $payment->get_id() ) );
541 541
 
542
-										if ( ! is_admin() ) {
543
-										$link = esc_url( $payment->get_view_url() );
544
-										}
542
+                                        if ( ! is_admin() ) {
543
+                                        $link = esc_url( $payment->get_view_url() );
544
+                                        }
545 545
 
546
-										$invoice = esc_html( $payment->get_number() );
547
-										echo "<a href='$link'>$invoice</a>";
548
-									break;
549
-										}
546
+                                        $invoice = esc_html( $payment->get_number() );
547
+                                        echo "<a href='$link'>$invoice</a>";
548
+                                    break;
549
+                                        }
550 550
 
551
-								echo '</td>';
551
+                                echo '</td>';
552 552
 
553
-							}
553
+                            }
554 554
 
555
-						echo '</tr>';
555
+                        echo '</tr>';
556 556
 
557
-						endforeach;
558
-					?>
557
+                        endforeach;
558
+                    ?>
559 559
 
560 560
 				</tbody>
561 561
 
@@ -573,42 +573,42 @@  discard block
 block discarded – undo
573 573
  */
574 574
 function getpaid_admin_subscription_item_details_metabox( $subscription ) {
575 575
 
576
-	// Fetch the subscription group.
577
-	$subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() );
576
+    // Fetch the subscription group.
577
+    $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() );
578 578
 
579
-	if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) {
580
-		return;
581
-	}
579
+    if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) {
580
+        return;
581
+    }
582 582
 
583
-	// Prepare table columns.
584
-	$columns = apply_filters(
585
-		'getpaid_subscription_item_details_columns',
586
-		array(
587
-			'item_name' => __( 'Item', 'invoicing' ),
588
-			'price'     => __( 'Price', 'invoicing' ),
589
-			'tax'       => __( 'Tax', 'invoicing' ),
590
-			'discount'  => __( 'Discount', 'invoicing' ),
591
-			//'initial'      => __( 'Initial Amount', 'invoicing' ),
592
-			'recurring' => __( 'Subtotal', 'invoicing' ),
593
-		),
594
-		$subscription
595
-	);
583
+    // Prepare table columns.
584
+    $columns = apply_filters(
585
+        'getpaid_subscription_item_details_columns',
586
+        array(
587
+            'item_name' => __( 'Item', 'invoicing' ),
588
+            'price'     => __( 'Price', 'invoicing' ),
589
+            'tax'       => __( 'Tax', 'invoicing' ),
590
+            'discount'  => __( 'Discount', 'invoicing' ),
591
+            //'initial'      => __( 'Initial Amount', 'invoicing' ),
592
+            'recurring' => __( 'Subtotal', 'invoicing' ),
593
+        ),
594
+        $subscription
595
+    );
596 596
 
597
-	// Prepare the invoices.
597
+    // Prepare the invoices.
598 598
 
599
-	$invoice = $subscription->get_parent_invoice();
599
+    $invoice = $subscription->get_parent_invoice();
600 600
 
601
-	if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) {
602
-		unset( $columns['tax'] );
603
-	}
601
+    if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) {
602
+        unset( $columns['tax'] );
603
+    }
604 604
 
605
-	$table_class = 'w-100 bg-white';
605
+    $table_class = 'w-100 bg-white';
606 606
 
607
-	if ( ! is_admin() ) {
608
-		$table_class = 'table table-bordered';
609
-	}
607
+    if ( ! is_admin() ) {
608
+        $table_class = 'table table-bordered';
609
+    }
610 610
 
611
-	?>
611
+    ?>
612 612
 		<div class="m-0" style="overflow: auto;">
613 613
 
614 614
 			<table class="<?php echo esc_attr( $table_class ); ?>">
@@ -617,14 +617,14 @@  discard block
 block discarded – undo
617 617
 					<tr>
618 618
 						<?php
619 619
 
620
-							foreach ( $columns as $key => $label ) {
621
-							$key   = esc_attr( $key );
622
-							$label = esc_html( $label );
623
-							$class = 'text-left';
620
+                            foreach ( $columns as $key => $label ) {
621
+                            $key   = esc_attr( $key );
622
+                            $label = esc_html( $label );
623
+                            $class = 'text-left';
624 624
 
625
-							echo "<th class='subscription-item-field-$key bg-light p-2 text-left color-dark font-weight-bold'>$label</th>";
626
-							}
627
-						?>
625
+                            echo "<th class='subscription-item-field-$key bg-light p-2 text-left color-dark font-weight-bold'>$label</th>";
626
+                            }
627
+                        ?>
628 628
 					</tr>
629 629
 				</thead>
630 630
 
@@ -632,106 +632,106 @@  discard block
 block discarded – undo
632 632
 
633 633
 					<?php
634 634
 
635
-						foreach ( $subscription_group['items'] as $subscription_group_item ) :
635
+                        foreach ( $subscription_group['items'] as $subscription_group_item ) :
636 636
 
637
-						echo '<tr>';
637
+                        echo '<tr>';
638 638
 
639
-						foreach ( array_keys( $columns ) as $key ) {
639
+                        foreach ( array_keys( $columns ) as $key ) {
640 640
 
641
-							$class = 'text-left';
641
+                            $class = 'text-left';
642 642
 
643
-							echo "<td class='p-2 text-left'>";
643
+                            echo "<td class='p-2 text-left'>";
644 644
 
645
-								switch ( $key ) {
645
+                                switch ( $key ) {
646 646
 
647
-								case 'item_name':
648
-										$item_name = get_the_title( $subscription_group_item['item_id'] );
649
-										$item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name;
647
+                                case 'item_name':
648
+                                        $item_name = get_the_title( $subscription_group_item['item_id'] );
649
+                                        $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name;
650 650
 
651
-										if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) {
652
-										echo esc_html( $item_name );
653
-										} else {
654
-										printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] );
655
-											}
651
+                                        if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) {
652
+                                        echo esc_html( $item_name );
653
+                                        } else {
654
+                                        printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] );
655
+                                            }
656 656
 
657
-									break;
657
+                                    break;
658 658
 
659
-								case 'price':
660
-									wpinv_the_price( $subscription_group_item['item_price'], $invoice->get_currency() );
661
-									break;
659
+                                case 'price':
660
+                                    wpinv_the_price( $subscription_group_item['item_price'], $invoice->get_currency() );
661
+                                    break;
662 662
 
663
-								case 'tax':
664
-									wpinv_the_price( $subscription_group_item['tax'], $invoice->get_currency() );
665
-									break;
663
+                                case 'tax':
664
+                                    wpinv_the_price( $subscription_group_item['tax'], $invoice->get_currency() );
665
+                                    break;
666 666
 
667
-								case 'discount':
668
-									wpinv_the_price( $subscription_group_item['discount'], $invoice->get_currency() );
669
-									break;
667
+                                case 'discount':
668
+                                    wpinv_the_price( $subscription_group_item['discount'], $invoice->get_currency() );
669
+                                    break;
670 670
 
671
-								case 'initial':
672
-									wpinv_the_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() );
673
-									break;
671
+                                case 'initial':
672
+                                    wpinv_the_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() );
673
+                                    break;
674 674
 
675
-								case 'recurring':
676
-										echo '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>';
677
-									break;
675
+                                case 'recurring':
676
+                                        echo '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>';
677
+                                    break;
678 678
 
679
-										}
679
+                                        }
680 680
 
681
-								echo '</td>';
681
+                                echo '</td>';
682 682
 
683
-							}
683
+                            }
684 684
 
685
-						echo '</tr>';
685
+                        echo '</tr>';
686 686
 
687
-						endforeach;
687
+                        endforeach;
688 688
 
689
-						foreach ( $subscription_group['fees'] as $subscription_group_fee ) :
689
+                        foreach ( $subscription_group['fees'] as $subscription_group_fee ) :
690 690
 
691
-						echo '<tr>';
691
+                        echo '<tr>';
692 692
 
693
-						foreach ( array_keys( $columns ) as $key ) {
693
+                        foreach ( array_keys( $columns ) as $key ) {
694 694
 
695
-							$class = 'text-left';
695
+                            $class = 'text-left';
696 696
 
697
-							echo "<td class='p-2 text-left'>";
697
+                            echo "<td class='p-2 text-left'>";
698 698
 
699
-								switch ( $key ) {
699
+                                switch ( $key ) {
700 700
 
701
-								case 'item_name':
702
-										echo esc_html( $subscription_group_fee['name'] );
703
-									break;
701
+                                case 'item_name':
702
+                                        echo esc_html( $subscription_group_fee['name'] );
703
+                                    break;
704 704
 
705
-								case 'price':
706
-									wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() );
707
-									break;
705
+                                case 'price':
706
+                                    wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() );
707
+                                    break;
708 708
 
709
-								case 'tax':
710
-									echo '&mdash;';
711
-									break;
709
+                                case 'tax':
710
+                                    echo '&mdash;';
711
+                                    break;
712 712
 
713
-								case 'discount':
714
-										echo '&mdash;';
715
-									break;
713
+                                case 'discount':
714
+                                        echo '&mdash;';
715
+                                    break;
716 716
 
717
-								case 'initial':
718
-									wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() );
719
-									break;
717
+                                case 'initial':
718
+                                    wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() );
719
+                                    break;
720 720
 
721
-								case 'recurring':
722
-										echo '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>';
723
-									break;
721
+                                case 'recurring':
722
+                                        echo '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>';
723
+                                    break;
724 724
 
725
-										}
725
+                                        }
726 726
 
727
-								echo '</td>';
727
+                                echo '</td>';
728 728
 
729
-							}
729
+                            }
730 730
 
731
-						echo '</tr>';
731
+                        echo '</tr>';
732 732
 
733
-						endforeach;
734
-					?>
733
+                        endforeach;
734
+                    ?>
735 735
 
736 736
 				</tbody>
737 737
 
@@ -750,38 +750,38 @@  discard block
 block discarded – undo
750 750
  */
751 751
 function getpaid_admin_subscription_related_subscriptions_metabox( $subscription, $skip_current = true ) {
752 752
 
753
-	// Fetch the subscription groups.
754
-	$subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() );
755
-
756
-	if ( empty( $subscription_groups ) ) {
757
-		return;
758
-	}
759
-
760
-	// Prepare table columns.
761
-	$columns = apply_filters(
762
-		'getpaid_subscription_related_subscriptions_columns',
763
-		array(
764
-			'subscription' => __( 'Subscription', 'invoicing' ),
765
-			'start_date'   => __( 'Start Date', 'invoicing' ),
766
-			'renewal_date' => __( 'Next Payment', 'invoicing' ),
767
-			'renewals'     => __( 'Payments', 'invoicing' ),
768
-			'item'         => __( 'Items', 'invoicing' ),
769
-			'status'       => __( 'Status', 'invoicing' ),
770
-		),
771
-		$subscription
772
-	);
773
-
774
-	if ( $subscription->get_status() == 'pending' ) {
775
-		unset( $columns['start_date'], $columns['renewal_date'] );
776
-	}
777
-
778
-	$table_class = 'w-100 bg-white';
779
-
780
-	if ( ! is_admin() ) {
781
-		$table_class = 'table table-bordered';
782
-	}
783
-
784
-	?>
753
+    // Fetch the subscription groups.
754
+    $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() );
755
+
756
+    if ( empty( $subscription_groups ) ) {
757
+        return;
758
+    }
759
+
760
+    // Prepare table columns.
761
+    $columns = apply_filters(
762
+        'getpaid_subscription_related_subscriptions_columns',
763
+        array(
764
+            'subscription' => __( 'Subscription', 'invoicing' ),
765
+            'start_date'   => __( 'Start Date', 'invoicing' ),
766
+            'renewal_date' => __( 'Next Payment', 'invoicing' ),
767
+            'renewals'     => __( 'Payments', 'invoicing' ),
768
+            'item'         => __( 'Items', 'invoicing' ),
769
+            'status'       => __( 'Status', 'invoicing' ),
770
+        ),
771
+        $subscription
772
+    );
773
+
774
+    if ( $subscription->get_status() == 'pending' ) {
775
+        unset( $columns['start_date'], $columns['renewal_date'] );
776
+    }
777
+
778
+    $table_class = 'w-100 bg-white';
779
+
780
+    if ( ! is_admin() ) {
781
+        $table_class = 'table table-bordered';
782
+    }
783
+
784
+    ?>
785 785
 		<div class="m-0" style="overflow: auto;">
786 786
 
787 787
 			<table class="<?php echo esc_attr( $table_class ); ?>">
@@ -790,14 +790,14 @@  discard block
 block discarded – undo
790 790
 					<tr>
791 791
 						<?php
792 792
 
793
-							foreach ( $columns as $key => $label ) {
794
-							$key   = esc_attr( $key );
795
-							$label = esc_html( $label );
796
-							$class = 'text-left';
793
+                            foreach ( $columns as $key => $label ) {
794
+                            $key   = esc_attr( $key );
795
+                            $label = esc_html( $label );
796
+                            $class = 'text-left';
797 797
 
798
-							echo "<th class='related-subscription-field-$key bg-light p-2 text-left color-dark font-weight-bold'>$label</th>";
799
-							}
800
-						?>
798
+                            echo "<th class='related-subscription-field-$key bg-light p-2 text-left color-dark font-weight-bold'>$label</th>";
799
+                            }
800
+                        ?>
801 801
 					</tr>
802 802
 				</thead>
803 803
 
@@ -805,74 +805,74 @@  discard block
 block discarded – undo
805 805
 
806 806
 					<?php
807 807
 
808
-						foreach ( $subscription_groups as $subscription_group ) :
808
+                        foreach ( $subscription_groups as $subscription_group ) :
809 809
 
810
-						// Do not list current subscription.
811
-						if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) {
812
-							continue;
813
-							}
810
+                        // Do not list current subscription.
811
+                        if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) {
812
+                            continue;
813
+                            }
814 814
 
815
-						// Ensure the subscription exists.
816
-						$_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] );
815
+                        // Ensure the subscription exists.
816
+                        $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] );
817 817
 
818
-						if ( ! $_suscription->exists() ) {
819
-							continue;
820
-							}
818
+                        if ( ! $_suscription->exists() ) {
819
+                            continue;
820
+                            }
821 821
 
822
-						echo '<tr>';
822
+                        echo '<tr>';
823 823
 
824
-						foreach ( array_keys( $columns ) as $key ) {
824
+                        foreach ( array_keys( $columns ) as $key ) {
825 825
 
826
-							$class = 'text-left';
826
+                            $class = 'text-left';
827 827
 
828
-							echo "<td class='p-2 text-left'>";
828
+                            echo "<td class='p-2 text-left'>";
829 829
 
830
-								switch ( $key ) {
830
+                                switch ( $key ) {
831 831
 
832
-								case 'status':
833
-										echo wp_kses_post( $_suscription->get_status_label_html() );
834
-									break;
832
+                                case 'status':
833
+                                        echo wp_kses_post( $_suscription->get_status_label_html() );
834
+                                    break;
835 835
 
836
-								case 'item':
837
-											$markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
838
-											echo implode( ' | ', $markup );
839
-									break;
836
+                                case 'item':
837
+                                            $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
838
+                                            echo implode( ' | ', $markup );
839
+                                    break;
840 840
 
841
-								case 'renewals':
842
-									$max_bills = $_suscription->get_bill_times();
843
-									echo ( (int) $_suscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '&infin;' : (int) $max_bills );
844
-									break;
841
+                                case 'renewals':
842
+                                    $max_bills = $_suscription->get_bill_times();
843
+                                    echo ( (int) $_suscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '&infin;' : (int) $max_bills );
844
+                                    break;
845 845
 
846
-								case 'renewal_date':
847
-										echo $_suscription->is_active() ? getpaid_format_date_value( $_suscription->get_expiration() ) : '&mdash;';
848
-									break;
846
+                                case 'renewal_date':
847
+                                        echo $_suscription->is_active() ? getpaid_format_date_value( $_suscription->get_expiration() ) : '&mdash;';
848
+                                    break;
849 849
 
850
-								case 'start_date':
851
-										echo 'pending' == $_suscription->get_status() ? '&mdash;' : getpaid_format_date_value( $_suscription->get_date_created() );
852
-									break;
850
+                                case 'start_date':
851
+                                        echo 'pending' == $_suscription->get_status() ? '&mdash;' : getpaid_format_date_value( $_suscription->get_date_created() );
852
+                                    break;
853 853
 
854
-								case 'subscription':
855
-										$url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url();
856
-										printf(
854
+                                case 'subscription':
855
+                                        $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url();
856
+                                        printf(
857 857
                                             '%1$s#%2$s%3$s',
858 858
                                             '<a href="' . esc_url( $url ) . '">',
859 859
                                             '<strong>' . intval( $_suscription->get_id() ) . '</strong>',
860
-											'</a>'
860
+                                            '</a>'
861 861
                                         );
862 862
 
863
-											echo WPInv_Subscriptions_List_Table::column_amount( $_suscription );
864
-									break;
863
+                                            echo WPInv_Subscriptions_List_Table::column_amount( $_suscription );
864
+                                    break;
865 865
 
866
-										}
866
+                                        }
867 867
 
868
-								echo '</td>';
868
+                                echo '</td>';
869 869
 
870
-							}
870
+                            }
871 871
 
872
-						echo '</tr>';
872
+                        echo '</tr>';
873 873
 
874
-						endforeach;
875
-					?>
874
+                        endforeach;
875
+                    ?>
876 876
 
877 877
 				</tbody>
878 878
 
Please login to merge, or discard this patch.
includes/admin/class-getpaid-post-types-admin.php 1 patch
Indentation   +757 added lines, -757 removed lines patch added patch discarded remove patch
@@ -13,719 +13,719 @@  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 ( $post->ID == wpinv_get_default_payment_form() ) {
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' ) ) ) {
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 ( $post->ID == wpinv_get_default_payment_form() ) {
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' ) ) ) {
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
-						esc_html( __( 'View %s', 'invoicing' ) ),
177
-						getpaid_get_post_type_label( $invoice->get_post_type(), false )
178
-					)
179
-				);
180
-
181
-				$actions['send'] = sprintf(
182
-					'<a href="%1$s">%2$s</a>',
183
-					esc_url(
184
-						wp_nonce_url(
185
-							add_query_arg(
186
-								array(
187
-									'getpaid-admin-action' => 'send_invoice',
188
-									'invoice_id'           => $invoice->get_id(),
189
-								)
190
-							),
191
-							'getpaid-nonce',
192
-							'getpaid-nonce'
193
-						)
194
-					),
195
-					esc_html( __( 'Send to Customer', 'invoicing' ) )
196
-				);
197
-
198
-			}
199
-
200
-			$actions['duplicate'] = sprintf(
201
-				'<a href="%1$s">%2$s</a>',
202
-				esc_url(
203
-					wp_nonce_url(
204
-						add_query_arg(
205
-							array(
206
-								'getpaid-admin-action' => 'duplicate_invoice',
207
-								'invoice_id'           => $post->ID,
208
-							)
209
-						),
210
-						'getpaid-nonce',
211
-						'getpaid-nonce'
212
-					)
213
-				),
214
-				esc_html( __( 'Duplicate', 'invoicing' ) )
215
-			);
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
+                        esc_html( __( 'View %s', 'invoicing' ) ),
177
+                        getpaid_get_post_type_label( $invoice->get_post_type(), false )
178
+                    )
179
+                );
180
+
181
+                $actions['send'] = sprintf(
182
+                    '<a href="%1$s">%2$s</a>',
183
+                    esc_url(
184
+                        wp_nonce_url(
185
+                            add_query_arg(
186
+                                array(
187
+                                    'getpaid-admin-action' => 'send_invoice',
188
+                                    'invoice_id'           => $invoice->get_id(),
189
+                                )
190
+                            ),
191
+                            'getpaid-nonce',
192
+                            'getpaid-nonce'
193
+                        )
194
+                    ),
195
+                    esc_html( __( 'Send to Customer', 'invoicing' ) )
196
+                );
197
+
198
+            }
199
+
200
+            $actions['duplicate'] = sprintf(
201
+                '<a href="%1$s">%2$s</a>',
202
+                esc_url(
203
+                    wp_nonce_url(
204
+                        add_query_arg(
205
+                            array(
206
+                                'getpaid-admin-action' => 'duplicate_invoice',
207
+                                'invoice_id'           => $post->ID,
208
+                            )
209
+                        ),
210
+                        'getpaid-nonce',
211
+                        'getpaid-nonce'
212
+                    )
213
+                ),
214
+                esc_html( __( 'Duplicate', 'invoicing' ) )
215
+            );
216 216
 
217 217
         }
218 218
 
219 219
         return $actions;
220
-	}
221
-
222
-	/**
223
-	 * Returns an array of invoice table columns.
224
-	 */
225
-	public static function invoice_columns( $columns ) {
226
-
227
-		$columns = array(
228
-			'cb'           => $columns['cb'],
229
-			'number'       => __( 'Invoice', 'invoicing' ),
230
-			'customer'     => __( 'Customer', 'invoicing' ),
231
-			'invoice_date' => __( 'Created', 'invoicing' ),
232
-			'payment_date' => __( 'Completed', 'invoicing' ),
233
-			'amount'       => __( 'Amount', 'invoicing' ),
234
-			'recurring'    => __( 'Recurring', 'invoicing' ),
235
-			'status'       => __( 'Status', 'invoicing' ),
236
-		);
237
-
238
-		return apply_filters( 'wpi_invoice_table_columns', $columns );
239
-	}
240
-
241
-	/**
242
-	 * Displays invoice table columns.
243
-	 */
244
-	public static function display_invoice_columns( $column_name, $post_id ) {
245
-
246
-		$invoice = new WPInv_Invoice( $post_id );
247
-
248
-		switch ( $column_name ) {
249
-
250
-			case 'invoice_date':
251
-				$date_time = esc_attr( $invoice->get_created_date() );
252
-				$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
253
-				echo wp_kses_post( "<span title='$date_time'>$date</span>" );
254
-				break;
255
-
256
-			case 'payment_date':
257
-				if ( $invoice->is_paid() ) {
258
-					$date_time = esc_attr( $invoice->get_completed_date() );
259
-					$date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
260
-					echo wp_kses_post( "<span title='$date_time'>$date</span>" );
261
-				} else {
262
-					echo '&mdash;';
263
-				}
264
-
265
-				break;
266
-
267
-			case 'amount':
268
-				$amount = $invoice->get_total();
269
-				$formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
270
-
271
-				if ( $invoice->is_refunded() ) {
272
-					$refunded_amount = wpinv_price( 0, $invoice->get_currency() );
273
-					echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
274
-				} else {
275
-
276
-					$discount = $invoice->get_total_discount();
277
-
278
-					if ( ! empty( $discount ) ) {
279
-						$new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
280
-						echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
281
-					} else {
282
-						echo wp_kses_post( $formated_amount );
283
-					}
220
+    }
221
+
222
+    /**
223
+     * Returns an array of invoice table columns.
224
+     */
225
+    public static function invoice_columns( $columns ) {
226
+
227
+        $columns = array(
228
+            'cb'           => $columns['cb'],
229
+            'number'       => __( 'Invoice', 'invoicing' ),
230
+            'customer'     => __( 'Customer', 'invoicing' ),
231
+            'invoice_date' => __( 'Created', 'invoicing' ),
232
+            'payment_date' => __( 'Completed', 'invoicing' ),
233
+            'amount'       => __( 'Amount', 'invoicing' ),
234
+            'recurring'    => __( 'Recurring', 'invoicing' ),
235
+            'status'       => __( 'Status', 'invoicing' ),
236
+        );
237
+
238
+        return apply_filters( 'wpi_invoice_table_columns', $columns );
239
+    }
240
+
241
+    /**
242
+     * Displays invoice table columns.
243
+     */
244
+    public static function display_invoice_columns( $column_name, $post_id ) {
245
+
246
+        $invoice = new WPInv_Invoice( $post_id );
247
+
248
+        switch ( $column_name ) {
249
+
250
+            case 'invoice_date':
251
+                $date_time = esc_attr( $invoice->get_created_date() );
252
+                $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
253
+                echo wp_kses_post( "<span title='$date_time'>$date</span>" );
254
+                break;
255
+
256
+            case 'payment_date':
257
+                if ( $invoice->is_paid() ) {
258
+                    $date_time = esc_attr( $invoice->get_completed_date() );
259
+                    $date      = esc_html( getpaid_format_date_value( $date_time, '&mdash;', true ) );
260
+                    echo wp_kses_post( "<span title='$date_time'>$date</span>" );
261
+                } else {
262
+                    echo '&mdash;';
263
+                }
264
+
265
+                break;
266
+
267
+            case 'amount':
268
+                $amount = $invoice->get_total();
269
+                $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) );
270
+
271
+                if ( $invoice->is_refunded() ) {
272
+                    $refunded_amount = wpinv_price( 0, $invoice->get_currency() );
273
+                    echo wp_kses_post( "<del>$formated_amount</del>&nbsp;<ins>$refunded_amount</ins>" );
274
+                } else {
275
+
276
+                    $discount = $invoice->get_total_discount();
277
+
278
+                    if ( ! empty( $discount ) ) {
279
+                        $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() );
280
+                        echo wp_kses_post( "<del>$new_amount</del>&nbsp;<ins>$formated_amount</ins>" );
281
+                    } else {
282
+                        echo wp_kses_post( $formated_amount );
283
+                    }
284 284
 }
285 285
 
286
-				break;
287
-
288
-			case 'status':
289
-				$status       = esc_html( $invoice->get_status() );
290
-				$status_label = esc_html( $invoice->get_status_nicename() );
291
-
292
-				// If it is paid, show the gateway title.
293
-				if ( $invoice->is_paid() ) {
294
-					$gateway = esc_html( $invoice->get_gateway_title() );
295
-					$gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
296
-
297
-					echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
298
-				} else {
299
-					echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
300
-				}
301
-
302
-				// If it is not paid, display the overdue and view status.
303
-				if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
304
-
305
-					// Invoice view status.
306
-					if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
307
-						echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
308
-					} else {
309
-						echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
310
-					}
311
-
312
-					// Display the overview status.
313
-					if ( wpinv_get_option( 'overdue_active' ) ) {
314
-						$due_date = $invoice->get_due_date();
315
-						$fomatted = getpaid_format_date( $due_date );
316
-
317
-						if ( ! empty( $fomatted ) ) {
318
-							$date = wp_sprintf( __( 'Due %s', 'invoicing' ), $fomatted );
319
-							echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
320
-						}
321
-					}
286
+                break;
287
+
288
+            case 'status':
289
+                $status       = esc_html( $invoice->get_status() );
290
+                $status_label = esc_html( $invoice->get_status_nicename() );
291
+
292
+                // If it is paid, show the gateway title.
293
+                if ( $invoice->is_paid() ) {
294
+                    $gateway = esc_html( $invoice->get_gateway_title() );
295
+                    $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) );
296
+
297
+                    echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" );
298
+                } else {
299
+                    echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" );
300
+                }
301
+
302
+                // If it is not paid, display the overdue and view status.
303
+                if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) {
304
+
305
+                    // Invoice view status.
306
+                    if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) {
307
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>';
308
+                    } else {
309
+                        echo '&nbsp;&nbsp;<i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>';
310
+                    }
311
+
312
+                    // Display the overview status.
313
+                    if ( wpinv_get_option( 'overdue_active' ) ) {
314
+                        $due_date = $invoice->get_due_date();
315
+                        $fomatted = getpaid_format_date( $due_date );
316
+
317
+                        if ( ! empty( $fomatted ) ) {
318
+                            $date = wp_sprintf( __( 'Due %s', 'invoicing' ), $fomatted );
319
+                            echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" );
320
+                        }
321
+                    }
322 322
 }
323 323
 
324
-				break;
324
+                break;
325 325
 
326
-			case 'recurring':
327
-				if ( $invoice->is_recurring() ) {
328
-					echo '<i class="fa fa-check" style="color:#43850a;"></i>';
329
-				} else {
330
-					echo '<i class="fa fa-times" style="color:#616161;"></i>';
331
-				}
332
-				break;
326
+            case 'recurring':
327
+                if ( $invoice->is_recurring() ) {
328
+                    echo '<i class="fa fa-check" style="color:#43850a;"></i>';
329
+                } else {
330
+                    echo '<i class="fa fa-times" style="color:#616161;"></i>';
331
+                }
332
+                break;
333 333
 
334
-			case 'number':
335
-				$edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
336
-				$invoice_number  = esc_html( $invoice->get_number() );
337
-				$invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
334
+            case 'number':
335
+                $edit_link       = esc_url( get_edit_post_link( $invoice->get_id() ) );
336
+                $invoice_number  = esc_html( $invoice->get_number() );
337
+                $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' );
338 338
 
339
-				echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
339
+                echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" );
340 340
 
341
-				break;
341
+                break;
342 342
 
343
-			case 'customer':
344
-				$customer_name = $invoice->get_user_full_name();
343
+            case 'customer':
344
+                $customer_name = $invoice->get_user_full_name();
345 345
 
346
-				if ( empty( $customer_name ) ) {
347
-					$customer_name = $invoice->get_email();
348
-				}
346
+                if ( empty( $customer_name ) ) {
347
+                    $customer_name = $invoice->get_email();
348
+                }
349 349
 
350
-				if ( ! empty( $customer_name ) ) {
351
-					$customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
352
-					$view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
353
-					echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
354
-				} else {
355
-					echo '<div>&mdash;</div>';
356
-				}
350
+                if ( ! empty( $customer_name ) ) {
351
+                    $customer_details = esc_attr__( 'View Customer Details', 'invoicing' );
352
+                    $view_link        = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) );
353
+                    echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" );
354
+                } else {
355
+                    echo '<div>&mdash;</div>';
356
+                }
357 357
 
358
-				break;
359
-
360
-		}
361
-
362
-	}
363
-
364
-	/**
365
-	 * Displays invoice bulk actions.
366
-	 */
367
-	public static function invoice_bulk_actions( $actions ) {
368
-		$actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
369
-		return $actions;
370
-	}
371
-
372
-	/**
373
-	 * Processes invoice bulk actions.
374
-	 */
375
-	public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
376
-
377
-		if ( $action == 'resend-invoice' ) {
378
-			foreach ( $post_ids as $post_id ) {
379
-				getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
380
-			}
381
-		}
382
-
383
-		return $redirect_url;
384
-
385
-	}
386
-
387
-	/**
388
-	 * Returns an array of payment forms table columns.
389
-	 */
390
-	public static function payment_form_columns( $columns ) {
391
-
392
-		$columns = array(
393
-			'cb'        => $columns['cb'],
394
-			'title'     => __( 'Name', 'invoicing' ),
395
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
396
-			'earnings'  => __( 'Revenue', 'invoicing' ),
397
-			'refunds'   => __( 'Refunded', 'invoicing' ),
398
-			'items'     => __( 'Items', 'invoicing' ),
399
-			'date'      => __( 'Date', 'invoicing' ),
400
-		);
401
-
402
-		return apply_filters( 'wpi_payment_form_table_columns', $columns );
403
-
404
-	}
405
-
406
-	/**
407
-	 * Displays payment form table columns.
408
-	 */
409
-	public static function display_payment_form_columns( $column_name, $post_id ) {
410
-
411
-		// Retrieve the payment form.
412
-		$form = new GetPaid_Payment_Form( $post_id );
413
-
414
-		switch ( $column_name ) {
415
-
416
-			case 'earnings':
417
-				echo wp_kses_post( wpinv_price( $form->get_earned() ) );
418
-				break;
419
-
420
-			case 'refunds':
421
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
422
-				break;
423
-
424
-			case 'refunds':
425
-				echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
426
-				break;
427
-
428
-			case 'shortcode':
429
-				if ( $form->is_default() ) {
430
-					echo '&mdash;';
431
-				} else {
432
-					echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
433
-				}
434
-
435
-				break;
358
+                break;
436 359
 
437
-			case 'items':
438
-				$items = $form->get_items();
439
-
440
-				if ( $form->is_default() || empty( $items ) ) {
441
-					echo '&mdash;';
442
-					return;
443
-				}
444
-
445
-				$_items = array();
446
-
447
-				foreach ( $items as $item ) {
448
-					$url = $item->get_edit_url();
449
-
450
-					if ( empty( $url ) ) {
451
-						$_items[] = esc_html( $item->get_name() );
452
-					} else {
453
-						$_items[] = sprintf(
454
-							'<a href="%s">%s</a>',
455
-							esc_url( $url ),
456
-							esc_html( $item->get_name() )
457
-						);
458
-					}
360
+        }
361
+
362
+    }
363
+
364
+    /**
365
+     * Displays invoice bulk actions.
366
+     */
367
+    public static function invoice_bulk_actions( $actions ) {
368
+        $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' );
369
+        return $actions;
370
+    }
371
+
372
+    /**
373
+     * Processes invoice bulk actions.
374
+     */
375
+    public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) {
376
+
377
+        if ( $action == 'resend-invoice' ) {
378
+            foreach ( $post_ids as $post_id ) {
379
+                getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true );
380
+            }
381
+        }
382
+
383
+        return $redirect_url;
384
+
385
+    }
386
+
387
+    /**
388
+     * Returns an array of payment forms table columns.
389
+     */
390
+    public static function payment_form_columns( $columns ) {
391
+
392
+        $columns = array(
393
+            'cb'        => $columns['cb'],
394
+            'title'     => __( 'Name', 'invoicing' ),
395
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
396
+            'earnings'  => __( 'Revenue', 'invoicing' ),
397
+            'refunds'   => __( 'Refunded', 'invoicing' ),
398
+            'items'     => __( 'Items', 'invoicing' ),
399
+            'date'      => __( 'Date', 'invoicing' ),
400
+        );
401
+
402
+        return apply_filters( 'wpi_payment_form_table_columns', $columns );
403
+
404
+    }
405
+
406
+    /**
407
+     * Displays payment form table columns.
408
+     */
409
+    public static function display_payment_form_columns( $column_name, $post_id ) {
410
+
411
+        // Retrieve the payment form.
412
+        $form = new GetPaid_Payment_Form( $post_id );
413
+
414
+        switch ( $column_name ) {
415
+
416
+            case 'earnings':
417
+                echo wp_kses_post( wpinv_price( $form->get_earned() ) );
418
+                break;
419
+
420
+            case 'refunds':
421
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
422
+                break;
423
+
424
+            case 'refunds':
425
+                echo wp_kses_post( wpinv_price( $form->get_refunded() ) );
426
+                break;
427
+
428
+            case 'shortcode':
429
+                if ( $form->is_default() ) {
430
+                    echo '&mdash;';
431
+                } else {
432
+                    echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>';
433
+                }
434
+
435
+                break;
436
+
437
+            case 'items':
438
+                $items = $form->get_items();
439
+
440
+                if ( $form->is_default() || empty( $items ) ) {
441
+                    echo '&mdash;';
442
+                    return;
443
+                }
444
+
445
+                $_items = array();
446
+
447
+                foreach ( $items as $item ) {
448
+                    $url = $item->get_edit_url();
449
+
450
+                    if ( empty( $url ) ) {
451
+                        $_items[] = esc_html( $item->get_name() );
452
+                    } else {
453
+                        $_items[] = sprintf(
454
+                            '<a href="%s">%s</a>',
455
+                            esc_url( $url ),
456
+                            esc_html( $item->get_name() )
457
+                        );
458
+                    }
459 459
 }
460 460
 
461
-				echo wp_kses_post( implode( '<br>', $_items ) );
461
+                echo wp_kses_post( implode( '<br>', $_items ) );
462 462
 
463
-				break;
463
+                break;
464 464
 
465
-		}
465
+        }
466 466
 
467
-	}
467
+    }
468 468
 
469
-	/**
470
-	 * Filters post states.
471
-	 */
472
-	public static function filter_payment_form_state( $post_states, $post ) {
469
+    /**
470
+     * Filters post states.
471
+     */
472
+    public static function filter_payment_form_state( $post_states, $post ) {
473 473
 
474
-		if ( 'wpi_payment_form' == $post->post_type && wpinv_get_default_payment_form() == $post->ID ) {
475
-			$post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
476
-		}
474
+        if ( 'wpi_payment_form' == $post->post_type && wpinv_get_default_payment_form() == $post->ID ) {
475
+            $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' );
476
+        }
477 477
 
478
-		return $post_states;
478
+        return $post_states;
479 479
 
480
-	}
480
+    }
481 481
 
482
-	/**
483
-	 * Returns an array of coupon table columns.
484
-	 */
485
-	public static function discount_columns( $columns ) {
482
+    /**
483
+     * Returns an array of coupon table columns.
484
+     */
485
+    public static function discount_columns( $columns ) {
486
+
487
+        $columns = array(
488
+            'cb'          => $columns['cb'],
489
+            'title'       => __( 'Name', 'invoicing' ),
490
+            'code'        => __( 'Code', 'invoicing' ),
491
+            'amount'      => __( 'Amount', 'invoicing' ),
492
+            'usage'       => __( 'Usage / Limit', 'invoicing' ),
493
+            'start_date'  => __( 'Start Date', 'invoicing' ),
494
+            'expiry_date' => __( 'Expiry Date', 'invoicing' ),
495
+        );
496
+
497
+        return apply_filters( 'wpi_discount_table_columns', $columns );
498
+    }
486 499
 
487
-		$columns = array(
488
-			'cb'          => $columns['cb'],
489
-			'title'       => __( 'Name', 'invoicing' ),
490
-			'code'        => __( 'Code', 'invoicing' ),
491
-			'amount'      => __( 'Amount', 'invoicing' ),
492
-			'usage'       => __( 'Usage / Limit', 'invoicing' ),
493
-			'start_date'  => __( 'Start Date', 'invoicing' ),
494
-			'expiry_date' => __( 'Expiry Date', 'invoicing' ),
495
-		);
500
+    /**
501
+     * Filters post states.
502
+     */
503
+    public static function filter_discount_state( $post_states, $post ) {
496 504
 
497
-		return apply_filters( 'wpi_discount_table_columns', $columns );
498
-	}
505
+        if ( 'wpi_discount' == $post->post_type ) {
499 506
 
500
-	/**
501
-	 * Filters post states.
502
-	 */
503
-	public static function filter_discount_state( $post_states, $post ) {
507
+            $discount = new WPInv_Discount( $post );
504 508
 
505
-		if ( 'wpi_discount' == $post->post_type ) {
509
+            $status = $discount->is_expired() ? 'expired' : $discount->get_status();
506 510
 
507
-			$discount = new WPInv_Discount( $post );
511
+            if ( $status != 'publish' ) {
512
+                return array(
513
+                    'discount_status' => wpinv_discount_status( $status ),
514
+                );
515
+            }
508 516
 
509
-			$status = $discount->is_expired() ? 'expired' : $discount->get_status();
517
+            return array();
510 518
 
511
-			if ( $status != 'publish' ) {
512
-				return array(
513
-					'discount_status' => wpinv_discount_status( $status ),
514
-				);
515
-			}
519
+        }
516 520
 
517
-			return array();
521
+        return $post_states;
518 522
 
519
-		}
523
+    }
520 524
 
521
-		return $post_states;
525
+    /**
526
+     * Returns an array of items table columns.
527
+     */
528
+    public static function item_columns( $columns ) {
529
+
530
+        $columns = array(
531
+            'cb'        => $columns['cb'],
532
+            'title'     => __( 'Name', 'invoicing' ),
533
+            'price'     => __( 'Price', 'invoicing' ),
534
+            'vat_rule'  => __( 'VAT rule', 'invoicing' ),
535
+            'vat_class' => __( 'VAT class', 'invoicing' ),
536
+            'type'      => __( 'Type', 'invoicing' ),
537
+            'shortcode' => __( 'Shortcode', 'invoicing' ),
538
+        );
539
+
540
+        if ( ! wpinv_use_taxes() ) {
541
+            unset( $columns['vat_rule'] );
542
+            unset( $columns['vat_class'] );
543
+        }
544
+
545
+        return apply_filters( 'wpi_item_table_columns', $columns );
546
+    }
547
+
548
+    /**
549
+     * Returns an array of sortable items table columns.
550
+     */
551
+    public static function sortable_item_columns( $columns ) {
552
+
553
+        return array_merge(
554
+            $columns,
555
+            array(
556
+                'price'     => 'price',
557
+                'vat_rule'  => 'vat_rule',
558
+                'vat_class' => 'vat_class',
559
+                'type'      => 'type',
560
+            )
561
+        );
562
+
563
+    }
564
+
565
+    /**
566
+     * Displays items table columns.
567
+     */
568
+    public static function display_item_columns( $column_name, $post_id ) {
569
+
570
+        $item = new WPInv_Item( $post_id );
571
+
572
+        switch ( $column_name ) {
573
+
574
+            case 'price':
575
+                if ( ! $item->is_recurring() ) {
576
+                    echo wp_kses_post( $item->get_the_price() );
577
+                    break;
578
+                }
579
+
580
+                $price = wp_sprintf(
581
+                    __( '%1$s / %2$s', 'invoicing' ),
582
+                    $item->get_the_price(),
583
+                    getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
584
+                );
585
+
586
+                if ( $item->get_the_price() == $item->get_the_initial_price() ) {
587
+                    echo wp_kses_post( $price );
588
+                    break;
589
+                }
590
+
591
+                echo wp_kses_post( $item->get_the_initial_price() );
592
+
593
+                echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
594
+                break;
595
+
596
+            case 'vat_rule':
597
+                echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
598
+                break;
599
+
600
+            case 'vat_class':
601
+                echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
602
+                break;
603
+
604
+            case 'shortcode':
605
+                if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
606
+                    echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
607
+                } else {
608
+                    echo '&mdash;';
609
+                }
610
+
611
+                break;
612
+
613
+            case 'type':
614
+                echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
615
+                break;
616
+
617
+        }
618
+
619
+    }
620
+
621
+    /**
622
+     * Lets users filter items using taxes.
623
+     */
624
+    public static function add_item_filters( $post_type ) {
625
+
626
+        // Abort if we're not dealing with items.
627
+        if ( $post_type != 'wpi_item' ) {
628
+            return;
629
+        }
630
+
631
+        // Filter by vat rules.
632
+        if ( wpinv_use_taxes() ) {
633
+
634
+            // Sanitize selected vat rule.
635
+            $vat_rule   = '';
636
+            $vat_rules  = getpaid_get_tax_rules();
637
+            if ( isset( $_GET['vat_rule'] ) ) {
638
+                $vat_rule   = sanitize_text_field( $_GET['vat_rule'] );
639
+            }
640
+
641
+            // Filter by VAT rule.
642
+            wpinv_html_select(
643
+                array(
644
+                    'options'          => array_merge(
645
+                        array(
646
+                            '' => __( 'All VAT rules', 'invoicing' ),
647
+                        ),
648
+                        $vat_rules
649
+                    ),
650
+                    'name'             => 'vat_rule',
651
+                    'id'               => 'vat_rule',
652
+                    'selected'         => in_array( $vat_rule, array_keys( $vat_rules ) ) ? $vat_rule : '',
653
+                    'show_option_all'  => false,
654
+                    'show_option_none' => false,
655
+                )
656
+            );
657
+
658
+            // Filter by VAT class.
659
+
660
+            // Sanitize selected vat rule.
661
+            $vat_class   = '';
662
+            $vat_classes = getpaid_get_tax_classes();
663
+            if ( isset( $_GET['vat_class'] ) ) {
664
+                $vat_class   = sanitize_text_field( $_GET['vat_class'] );
665
+            }
666
+
667
+            wpinv_html_select(
668
+                array(
669
+                    'options'          => array_merge(
670
+                        array(
671
+                            '' => __( 'All VAT classes', 'invoicing' ),
672
+                        ),
673
+                        $vat_classes
674
+                    ),
675
+                    'name'             => 'vat_class',
676
+                    'id'               => 'vat_class',
677
+                    'selected'         => in_array( $vat_class, array_keys( $vat_classes ) ) ? $vat_class : '',
678
+                    'show_option_all'  => false,
679
+                    'show_option_none' => false,
680
+                )
681
+            );
682
+
683
+        }
684
+
685
+        // Filter by item type.
686
+        $type   = '';
687
+        if ( isset( $_GET['type'] ) ) {
688
+            $type   = sanitize_text_field( $_GET['type'] );
689
+        }
522 690
 
523
-	}
691
+        wpinv_html_select(
692
+            array(
693
+                'options'          => array_merge(
694
+                    array(
695
+                        '' => __( 'All item types', 'invoicing' ),
696
+                    ),
697
+                    wpinv_get_item_types()
698
+                ),
699
+                'name'             => 'type',
700
+                'id'               => 'type',
701
+                'selected'         => in_array( $type, wpinv_item_types() ) ? $type : '',
702
+                'show_option_all'  => false,
703
+                'show_option_none' => false,
704
+            )
705
+        );
524 706
 
525
-	/**
526
-	 * Returns an array of items table columns.
527
-	 */
528
-	public static function item_columns( $columns ) {
707
+    }
529 708
 
530
-		$columns = array(
531
-			'cb'        => $columns['cb'],
532
-			'title'     => __( 'Name', 'invoicing' ),
533
-			'price'     => __( 'Price', 'invoicing' ),
534
-			'vat_rule'  => __( 'VAT rule', 'invoicing' ),
535
-			'vat_class' => __( 'VAT class', 'invoicing' ),
536
-			'type'      => __( 'Type', 'invoicing' ),
537
-			'shortcode' => __( 'Shortcode', 'invoicing' ),
538
-		);
709
+    /**
710
+     * Filters the item query.
711
+     */
712
+    public static function filter_item_query( $query ) {
539 713
 
540
-		if ( ! wpinv_use_taxes() ) {
541
-			unset( $columns['vat_rule'] );
542
-			unset( $columns['vat_class'] );
543
-		}
714
+        // modify the query only if it admin and main query.
715
+        if ( ! ( is_admin() && $query->is_main_query() ) ) {
716
+            return $query;
717
+        }
544 718
 
545
-		return apply_filters( 'wpi_item_table_columns', $columns );
546
-	}
719
+        // we want to modify the query for our items.
720
+        if ( empty( $query->query['post_type'] ) || 'wpi_item' != $query->query['post_type'] ) {
721
+            return $query;
722
+        }
547 723
 
548
-	/**
549
-	 * Returns an array of sortable items table columns.
550
-	 */
551
-	public static function sortable_item_columns( $columns ) {
552
-
553
-		return array_merge(
554
-			$columns,
555
-			array(
556
-				'price'     => 'price',
557
-				'vat_rule'  => 'vat_rule',
558
-				'vat_class' => 'vat_class',
559
-				'type'      => 'type',
560
-			)
561
-		);
562
-
563
-	}
564
-
565
-	/**
566
-	 * Displays items table columns.
567
-	 */
568
-	public static function display_item_columns( $column_name, $post_id ) {
569
-
570
-		$item = new WPInv_Item( $post_id );
571
-
572
-		switch ( $column_name ) {
573
-
574
-			case 'price':
575
-				if ( ! $item->is_recurring() ) {
576
-					echo wp_kses_post( $item->get_the_price() );
577
-					break;
578
-				}
579
-
580
-				$price = wp_sprintf(
581
-					__( '%1$s / %2$s', 'invoicing' ),
582
-					$item->get_the_price(),
583
-					getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' )
584
-				);
585
-
586
-				if ( $item->get_the_price() == $item->get_the_initial_price() ) {
587
-					echo wp_kses_post( $price );
588
-					break;
589
-				}
590
-
591
-				echo wp_kses_post( $item->get_the_initial_price() );
592
-
593
-				echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>';
594
-				break;
595
-
596
-			case 'vat_rule':
597
-				echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) );
598
-				break;
599
-
600
-			case 'vat_class':
601
-				echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) );
602
-				break;
603
-
604
-			case 'shortcode':
605
-				if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) {
606
-					echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>';
607
-				} else {
608
-					echo '&mdash;';
609
-				}
610
-
611
-				break;
612
-
613
-			case 'type':
614
-				echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' );
615
-				break;
616
-
617
-		}
618
-
619
-	}
620
-
621
-	/**
622
-	 * Lets users filter items using taxes.
623
-	 */
624
-	public static function add_item_filters( $post_type ) {
625
-
626
-		// Abort if we're not dealing with items.
627
-		if ( $post_type != 'wpi_item' ) {
628
-			return;
629
-		}
630
-
631
-		// Filter by vat rules.
632
-		if ( wpinv_use_taxes() ) {
633
-
634
-			// Sanitize selected vat rule.
635
-			$vat_rule   = '';
636
-			$vat_rules  = getpaid_get_tax_rules();
637
-			if ( isset( $_GET['vat_rule'] ) ) {
638
-				$vat_rule   = sanitize_text_field( $_GET['vat_rule'] );
639
-			}
640
-
641
-			// Filter by VAT rule.
642
-			wpinv_html_select(
643
-				array(
644
-					'options'          => array_merge(
645
-						array(
646
-							'' => __( 'All VAT rules', 'invoicing' ),
647
-						),
648
-						$vat_rules
649
-					),
650
-					'name'             => 'vat_rule',
651
-					'id'               => 'vat_rule',
652
-					'selected'         => in_array( $vat_rule, array_keys( $vat_rules ) ) ? $vat_rule : '',
653
-					'show_option_all'  => false,
654
-					'show_option_none' => false,
655
-				)
656
-			);
657
-
658
-			// Filter by VAT class.
659
-
660
-			// Sanitize selected vat rule.
661
-			$vat_class   = '';
662
-			$vat_classes = getpaid_get_tax_classes();
663
-			if ( isset( $_GET['vat_class'] ) ) {
664
-				$vat_class   = sanitize_text_field( $_GET['vat_class'] );
665
-			}
666
-
667
-			wpinv_html_select(
668
-				array(
669
-					'options'          => array_merge(
670
-						array(
671
-							'' => __( 'All VAT classes', 'invoicing' ),
672
-						),
673
-						$vat_classes
674
-					),
675
-					'name'             => 'vat_class',
676
-					'id'               => 'vat_class',
677
-					'selected'         => in_array( $vat_class, array_keys( $vat_classes ) ) ? $vat_class : '',
678
-					'show_option_all'  => false,
679
-					'show_option_none' => false,
680
-				)
681
-			);
682
-
683
-		}
684
-
685
-		// Filter by item type.
686
-		$type   = '';
687
-		if ( isset( $_GET['type'] ) ) {
688
-			$type   = sanitize_text_field( $_GET['type'] );
689
-		}
690
-
691
-		wpinv_html_select(
692
-			array(
693
-				'options'          => array_merge(
694
-					array(
695
-						'' => __( 'All item types', 'invoicing' ),
696
-					),
697
-					wpinv_get_item_types()
698
-				),
699
-				'name'             => 'type',
700
-				'id'               => 'type',
701
-				'selected'         => in_array( $type, wpinv_item_types() ) ? $type : '',
702
-				'show_option_all'  => false,
703
-				'show_option_none' => false,
704
-			)
705
-		);
706
-
707
-	}
708
-
709
-	/**
710
-	 * Filters the item query.
711
-	 */
712
-	public static function filter_item_query( $query ) {
713
-
714
-		// modify the query only if it admin and main query.
715
-		if ( ! ( is_admin() && $query->is_main_query() ) ) {
716
-			return $query;
717
-		}
718
-
719
-		// we want to modify the query for our items.
720
-		if ( empty( $query->query['post_type'] ) || 'wpi_item' != $query->query['post_type'] ) {
721
-			return $query;
722
-		}
723
-
724
-		if ( empty( $query->query_vars['meta_query'] ) ) {
725
-			$query->query_vars['meta_query'] = array();
726
-		}
727
-
728
-		// Filter vat rule type
724
+        if ( empty( $query->query_vars['meta_query'] ) ) {
725
+            $query->query_vars['meta_query'] = array();
726
+        }
727
+
728
+        // Filter vat rule type
729 729
         if ( ! empty( $_GET['vat_rule'] ) ) {
730 730
             $query->query_vars['meta_query'][] = array(
731 731
                 'key'     => '_wpinv_vat_rule',
@@ -750,97 +750,97 @@  discard block
 block discarded – undo
750 750
                 'value'   => sanitize_text_field( $_GET['type'] ),
751 751
                 'compare' => '=',
752 752
             );
753
-		}
754
-
755
-	}
756
-
757
-	/**
758
-	 * Reorders items.
759
-	 */
760
-	public static function reorder_items( $vars ) {
761
-		global $typenow;
762
-
763
-		if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
764
-			return $vars;
765
-		}
766
-
767
-		// By item type.
768
-		if ( 'type' == $vars['orderby'] ) {
769
-			return array_merge(
770
-				$vars,
771
-				array(
772
-					'meta_key' => '_wpinv_type',
773
-					'orderby'  => 'meta_value',
774
-				)
775
-			);
776
-		}
777
-
778
-		// By vat class.
779
-		if ( 'vat_class' == $vars['orderby'] ) {
780
-			return array_merge(
781
-				$vars,
782
-				array(
783
-					'meta_key' => '_wpinv_vat_class',
784
-					'orderby'  => 'meta_value',
785
-				)
786
-			);
787
-		}
788
-
789
-		// By vat rule.
790
-		if ( 'vat_rule' == $vars['orderby'] ) {
791
-			return array_merge(
792
-				$vars,
793
-				array(
794
-					'meta_key' => '_wpinv_vat_rule',
795
-					'orderby'  => 'meta_value',
796
-				)
797
-			);
798
-		}
799
-
800
-		// By price.
801
-		if ( 'price' == $vars['orderby'] ) {
802
-			return array_merge(
803
-				$vars,
804
-				array(
805
-					'meta_key' => '_wpinv_price',
806
-					'orderby'  => 'meta_value_num',
807
-				)
808
-			);
809
-		}
810
-
811
-		return $vars;
812
-
813
-	}
814
-
815
-	/**
816
-	 * Fired when deleting a post.
817
-	 */
818
-	public static function delete_post( $post_id ) {
819
-
820
-		switch ( get_post_type( $post_id ) ) {
821
-
822
-			case 'wpi_item':
823
-				do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
824
-				break;
825
-
826
-			case 'wpi_payment_form':
827
-				do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
828
-				break;
829
-
830
-			case 'wpi_discount':
831
-				do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
832
-				break;
833
-
834
-			case 'wpi_invoice':
835
-				$invoice = new WPInv_Invoice( $post_id );
836
-				do_action( 'getpaid_before_delete_invoice', $invoice );
837
-				$invoice->get_data_store()->delete_items( $invoice );
838
-				$invoice->get_data_store()->delete_special_fields( $invoice );
839
-				break;
840
-		}
841
-	}
842
-
843
-	/**
753
+        }
754
+
755
+    }
756
+
757
+    /**
758
+     * Reorders items.
759
+     */
760
+    public static function reorder_items( $vars ) {
761
+        global $typenow;
762
+
763
+        if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) {
764
+            return $vars;
765
+        }
766
+
767
+        // By item type.
768
+        if ( 'type' == $vars['orderby'] ) {
769
+            return array_merge(
770
+                $vars,
771
+                array(
772
+                    'meta_key' => '_wpinv_type',
773
+                    'orderby'  => 'meta_value',
774
+                )
775
+            );
776
+        }
777
+
778
+        // By vat class.
779
+        if ( 'vat_class' == $vars['orderby'] ) {
780
+            return array_merge(
781
+                $vars,
782
+                array(
783
+                    'meta_key' => '_wpinv_vat_class',
784
+                    'orderby'  => 'meta_value',
785
+                )
786
+            );
787
+        }
788
+
789
+        // By vat rule.
790
+        if ( 'vat_rule' == $vars['orderby'] ) {
791
+            return array_merge(
792
+                $vars,
793
+                array(
794
+                    'meta_key' => '_wpinv_vat_rule',
795
+                    'orderby'  => 'meta_value',
796
+                )
797
+            );
798
+        }
799
+
800
+        // By price.
801
+        if ( 'price' == $vars['orderby'] ) {
802
+            return array_merge(
803
+                $vars,
804
+                array(
805
+                    'meta_key' => '_wpinv_price',
806
+                    'orderby'  => 'meta_value_num',
807
+                )
808
+            );
809
+        }
810
+
811
+        return $vars;
812
+
813
+    }
814
+
815
+    /**
816
+     * Fired when deleting a post.
817
+     */
818
+    public static function delete_post( $post_id ) {
819
+
820
+        switch ( get_post_type( $post_id ) ) {
821
+
822
+            case 'wpi_item':
823
+                do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) );
824
+                break;
825
+
826
+            case 'wpi_payment_form':
827
+                do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) );
828
+                break;
829
+
830
+            case 'wpi_discount':
831
+                do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) );
832
+                break;
833
+
834
+            case 'wpi_invoice':
835
+                $invoice = new WPInv_Invoice( $post_id );
836
+                do_action( 'getpaid_before_delete_invoice', $invoice );
837
+                $invoice->get_data_store()->delete_items( $invoice );
838
+                $invoice->get_data_store()->delete_special_fields( $invoice );
839
+                break;
840
+        }
841
+    }
842
+
843
+    /**
844 844
      * Add a post display state for special GetPaid pages in the page list table.
845 845
      *
846 846
      * @param array   $post_states An array of post display states.
@@ -854,21 +854,21 @@  discard block
 block discarded – undo
854 854
             $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' );
855 855
         }
856 856
 
857
-		foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
857
+        foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) {
858 858
 
859
-			if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
860
-				$post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
861
-					__( 'GetPaid %s History Page', 'invoicing' ),
862
-					$label
863
-				);
864
-			}
859
+            if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) {
860
+                $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf(
861
+                    __( 'GetPaid %s History Page', 'invoicing' ),
862
+                    $label
863
+                );
864
+            }
865 865
 }
866 866
 
867
-		if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
867
+        if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) {
868 868
             $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' );
869 869
         }
870 870
 
871
-		if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
871
+        if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) {
872 872
             $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' );
873 873
         }
874 874
 
Please login to merge, or discard this patch.
includes/admin/meta-boxes/class-getpaid-meta-box-invoice-address.php 1 patch
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
  */
9 9
 
10 10
 if ( ! defined( 'ABSPATH' ) ) {
11
-	exit; // Exit if accessed directly
11
+    exit; // Exit if accessed directly
12 12
 }
13 13
 
14 14
 /**
@@ -17,10 +17,10 @@  discard block
 block discarded – undo
17 17
 class GetPaid_Meta_Box_Invoice_Address {
18 18
 
19 19
     /**
20
-	 * Output the metabox.
21
-	 *
22
-	 * @param WP_Post $post
23
-	 */
20
+     * Output the metabox.
21
+     *
22
+     * @param WP_Post $post
23
+     */
24 24
     public static function output( $post ) {
25 25
 
26 26
         // Prepare the invoice.
@@ -225,37 +225,37 @@  discard block
 block discarded – undo
225 225
 
226 226
                                 if ( empty( $states ) ) {
227 227
 
228
-								aui()->input(
229
-								array(
230
-								'type'        => 'text',
231
-								'id'          => 'wpinv_state',
232
-								'name'        => 'wpinv_state',
233
-								'label'       => __( 'State', 'invoicing' ),
234
-								'label_type'  => 'vertical',
235
-								'placeholder' => '',
236
-								'class'       => 'form-control-sm',
237
-								'value'       => $invoice->get_state( 'edit' ),
238
-								),
239
-								true
240
-							);
228
+                                aui()->input(
229
+                                array(
230
+                                'type'        => 'text',
231
+                                'id'          => 'wpinv_state',
232
+                                'name'        => 'wpinv_state',
233
+                                'label'       => __( 'State', 'invoicing' ),
234
+                                'label_type'  => 'vertical',
235
+                                'placeholder' => '',
236
+                                'class'       => 'form-control-sm',
237
+                                'value'       => $invoice->get_state( 'edit' ),
238
+                                ),
239
+                                true
240
+                            );
241 241
 
242 242
                                 } else {
243 243
 
244
-								aui()->select(
245
-								array(
246
-								'id'               => 'wpinv_state',
247
-								'name'             => 'wpinv_state',
248
-								'label'            => __( 'State', 'invoicing' ),
249
-								'label_type'       => 'vertical',
250
-								'placeholder'      => __( 'Select a state', 'invoicing' ),
251
-								'class'            => 'form-control-sm',
252
-								'value'            => $invoice->get_state( 'edit' ),
253
-								'options'          => $states,
254
-								'data-allow-clear' => 'false',
255
-								'select2'          => true,
256
-								),
257
-								true
258
-								);
244
+                                aui()->select(
245
+                                array(
246
+                                'id'               => 'wpinv_state',
247
+                                'name'             => 'wpinv_state',
248
+                                'label'            => __( 'State', 'invoicing' ),
249
+                                'label_type'       => 'vertical',
250
+                                'placeholder'      => __( 'Select a state', 'invoicing' ),
251
+                                'class'            => 'form-control-sm',
252
+                                'value'            => $invoice->get_state( 'edit' ),
253
+                                'options'          => $states,
254
+                                'data-allow-clear' => 'false',
255
+                                'select2'          => true,
256
+                                ),
257
+                                true
258
+                                );
259 259
 
260 260
                                 }
261 261
 
@@ -381,18 +381,18 @@  discard block
 block discarded – undo
381 381
     }
382 382
 
383 383
     /**
384
-	 * Save meta box data.
385
-	 *
386
-	 * @param int $post_id
387
-	 */
388
-	public static function save( $post_id ) {
384
+     * Save meta box data.
385
+     *
386
+     * @param int $post_id
387
+     */
388
+    public static function save( $post_id ) {
389 389
 
390 390
         // Prepare the invoice.
391 391
         $invoice = new WPInv_Invoice( $post_id );
392 392
 
393 393
         // Load new data.
394 394
         $invoice->set_props(
395
-			array(
395
+            array(
396 396
                 'template'       => isset( $_POST['wpinv_template'] ) ? wpinv_clean( $_POST['wpinv_template'] ) : null,
397 397
                 'email_cc'       => isset( $_POST['wpinv_cc'] ) ? wpinv_clean( $_POST['wpinv_cc'] ) : null,
398 398
                 'disable_taxes'  => ! empty( $_POST['disable_taxes'] ),
@@ -415,7 +415,7 @@  discard block
 block discarded – undo
415 415
                 'due_date'       => isset( $_POST['wpinv_due_date'] ) ? wpinv_clean( $_POST['wpinv_due_date'] ) : null,
416 416
                 'number'         => isset( $_POST['wpinv_number'] ) ? wpinv_clean( $_POST['wpinv_number'] ) : null,
417 417
                 'status'         => isset( $_POST['wpinv_status'] ) ? wpinv_clean( $_POST['wpinv_status'] ) : null,
418
-			)
418
+            )
419 419
         );
420 420
 
421 421
         // Discount code.
@@ -471,6 +471,6 @@  discard block
 block discarded – undo
471 471
         }
472 472
 
473 473
         // Fires after an invoice is saved.
474
-		do_action( 'wpinv_invoice_metabox_saved', $invoice );
475
-	}
474
+        do_action( 'wpinv_invoice_metabox_saved', $invoice );
475
+    }
476 476
 }
Please login to merge, or discard this patch.
includes/admin/register-settings.php 1 patch
Indentation   +305 added lines, -305 removed lines patch added patch discarded remove patch
@@ -192,13 +192,13 @@  discard block
 block discarded – undo
192 192
     $name       = isset( $option['name'] ) ? $option['name'] : '';
193 193
     $cb         = "wpinv_{$option['type']}_callback";
194 194
     $section    = "wpinv_settings_{$tab}_$section";
195
-	$is_wizzard = is_admin() && isset( $_GET['page'] ) && 'gp-setup' == $_GET['page'];
195
+    $is_wizzard = is_admin() && isset( $_GET['page'] ) && 'gp-setup' == $_GET['page'];
196 196
 
197
-	if ( isset( $option['desc'] ) && ( ! $is_wizzard && ! empty( $option['help-tip'] ) ) ) {
198
-		$tip   = wpinv_clean( $option['desc'] );
199
-		$name .= "<span class='dashicons dashicons-editor-help wpi-help-tip' title='$tip'></span>";
200
-		unset( $option['desc'] );
201
-	}
197
+    if ( isset( $option['desc'] ) && ( ! $is_wizzard && ! empty( $option['help-tip'] ) ) ) {
198
+        $tip   = wpinv_clean( $option['desc'] );
199
+        $name .= "<span class='dashicons dashicons-editor-help wpi-help-tip' title='$tip'></span>";
200
+        unset( $option['desc'] );
201
+    }
202 202
 
203 203
     // Loop through all tabs.
204 204
     add_settings_field(
@@ -225,9 +225,9 @@  discard block
 block discarded – undo
225 225
             'faux'            => isset( $option['faux'] ) ? $option['faux'] : false,
226 226
             'onchange'        => isset( $option['onchange'] ) ? $option['onchange'] : '',
227 227
             'custom'          => isset( $option['custom'] ) ? $option['custom'] : '',
228
-			'default_content' => isset( $option['default_content'] ) ? $option['default_content'] : '',
229
-			'class'           => isset( $option['class'] ) ? $option['class'] : '',
230
-			'style'           => isset( $option['style'] ) ? $option['style'] : '',
228
+            'default_content' => isset( $option['default_content'] ) ? $option['default_content'] : '',
229
+            'class'           => isset( $option['class'] ) ? $option['class'] : '',
230
+            'style'           => isset( $option['style'] ) ? $option['style'] : '',
231 231
             'cols'            => isset( $option['cols'] ) && (int) $option['cols'] > 0 ? (int) $option['cols'] : 50,
232 232
             'rows'            => isset( $option['rows'] ) && (int) $option['rows'] > 0 ? (int) $option['rows'] : 5,
233 233
         )
@@ -241,7 +241,7 @@  discard block
 block discarded – undo
241 241
  * @return array
242 242
  */
243 243
 function wpinv_get_registered_settings() {
244
-	return array_filter( apply_filters( 'wpinv_registered_settings', wpinv_get_data( 'admin-settings' ) ) );
244
+    return array_filter( apply_filters( 'wpinv_registered_settings', wpinv_get_data( 'admin-settings' ) ) );
245 245
 }
246 246
 
247 247
 /**
@@ -260,18 +260,18 @@  discard block
 block discarded – undo
260 260
  */
261 261
 function wpinv_settings_sanitize( $input = array() ) {
262 262
 
263
-	$wpinv_options = wpinv_get_options();
264
-	$raw_referrer  = wp_get_raw_referer();
263
+    $wpinv_options = wpinv_get_options();
264
+    $raw_referrer  = wp_get_raw_referer();
265 265
 
266 266
     if ( empty( $raw_referrer ) ) {
267
-		return array_merge( $wpinv_options, $input );
267
+        return array_merge( $wpinv_options, $input );
268 268
     }
269 269
 
270 270
     wp_parse_str( $raw_referrer, $referrer );
271 271
 
272
-	if ( in_array( 'gp-setup', $referrer ) ) {
273
-		return array_merge( $wpinv_options, $input );
274
-	}
272
+    if ( in_array( 'gp-setup', $referrer ) ) {
273
+        return array_merge( $wpinv_options, $input );
274
+    }
275 275
 
276 276
     $settings = wpinv_get_registered_settings();
277 277
     $tab      = isset( $referrer['tab'] ) ? $referrer['tab'] : 'general';
@@ -293,10 +293,10 @@  discard block
 block discarded – undo
293 293
         }
294 294
 
295 295
         // General filter
296
-		$input[ $key ] = apply_filters( 'wpinv_settings_sanitize', $input[ $key ], $key );
296
+        $input[ $key ] = apply_filters( 'wpinv_settings_sanitize', $input[ $key ], $key );
297 297
 
298
-		// Key specific filter.
299
-		$input[ $key ] = apply_filters( "wpinv_settings_sanitize_$key", $input[ $key ] );
298
+        // Key specific filter.
299
+        $input[ $key ] = apply_filters( "wpinv_settings_sanitize_$key", $input[ $key ] );
300 300
     }
301 301
 
302 302
     // Loop through the whitelist and unset any that are empty for the tab being saved
@@ -339,14 +339,14 @@  discard block
 block discarded – undo
339 339
 
340 340
     foreach ( $new_rates as $rate ) {
341 341
 
342
-		$rate['rate']    = wpinv_sanitize_amount( $rate['rate'] );
343
-		$rate['name']    = sanitize_text_field( $rate['name'] );
344
-		$rate['state']   = sanitize_text_field( $rate['state'] );
345
-		$rate['country'] = sanitize_text_field( $rate['country'] );
346
-		$rate['global']  = empty( $rate['state'] );
347
-		$tax_rates[]     = $rate;
342
+        $rate['rate']    = wpinv_sanitize_amount( $rate['rate'] );
343
+        $rate['name']    = sanitize_text_field( $rate['name'] );
344
+        $rate['state']   = sanitize_text_field( $rate['state'] );
345
+        $rate['country'] = sanitize_text_field( $rate['country'] );
346
+        $rate['global']  = empty( $rate['state'] );
347
+        $tax_rates[]     = $rate;
348 348
 
349
-	}
349
+    }
350 350
 
351 351
     update_option( 'wpinv_tax_rates', $tax_rates );
352 352
 
@@ -359,11 +359,11 @@  discard block
 block discarded – undo
359 359
     $tabs['general']  = __( 'General', 'invoicing' );
360 360
     $tabs['gateways'] = __( 'Payment Gateways', 'invoicing' );
361 361
     $tabs['taxes']    = __( 'Taxes', 'invoicing' );
362
-	$tabs['emails']   = __( 'Emails', 'invoicing' );
362
+    $tabs['emails']   = __( 'Emails', 'invoicing' );
363 363
 
364
-	if ( count( getpaid_get_integration_settings() ) > 0 ) {
365
-		$tabs['integrations'] = __( 'Integrations', 'invoicing' );
366
-	}
364
+    if ( count( getpaid_get_integration_settings() ) > 0 ) {
365
+        $tabs['integrations'] = __( 'Integrations', 'invoicing' );
366
+    }
367 367
 
368 368
     $tabs['privacy']  = __( 'Privacy', 'invoicing' );
369 369
     $tabs['misc']     = __( 'Misc', 'invoicing' );
@@ -394,52 +394,52 @@  discard block
 block discarded – undo
394 394
         'general'      => apply_filters(
395 395
             'wpinv_settings_sections_general',
396 396
             array(
397
-				'main'             => __( 'General Settings', 'invoicing' ),
398
-				'page_section'     => __( 'Page Settings', 'invoicing' ),
399
-				'currency_section' => __( 'Currency Settings', 'invoicing' ),
400
-				'labels'           => __( 'Label Texts', 'invoicing' ),
397
+                'main'             => __( 'General Settings', 'invoicing' ),
398
+                'page_section'     => __( 'Page Settings', 'invoicing' ),
399
+                'currency_section' => __( 'Currency Settings', 'invoicing' ),
400
+                'labels'           => __( 'Label Texts', 'invoicing' ),
401 401
             )
402 402
         ),
403 403
         'gateways'     => apply_filters(
404 404
             'wpinv_settings_sections_gateways',
405 405
             array(
406
-				'main' => __( 'Gateway Settings', 'invoicing' ),
406
+                'main' => __( 'Gateway Settings', 'invoicing' ),
407 407
             )
408 408
         ),
409 409
         'taxes'        => apply_filters(
410 410
             'wpinv_settings_sections_taxes',
411 411
             array(
412
-				'main'  => __( 'Tax Settings', 'invoicing' ),
413
-				'rates' => __( 'Tax Rates', 'invoicing' ),
414
-				'vat'   => __( 'EU VAT Settings', 'invoicing' ),
412
+                'main'  => __( 'Tax Settings', 'invoicing' ),
413
+                'rates' => __( 'Tax Rates', 'invoicing' ),
414
+                'vat'   => __( 'EU VAT Settings', 'invoicing' ),
415 415
             )
416 416
         ),
417 417
         'emails'       => apply_filters(
418 418
             'wpinv_settings_sections_emails',
419 419
             array(
420
-				'main' => __( 'Email Settings', 'invoicing' ),
420
+                'main' => __( 'Email Settings', 'invoicing' ),
421 421
             )
422 422
         ),
423 423
 
424
-		'integrations' => wp_list_pluck( getpaid_get_integration_settings(), 'label', 'id' ),
424
+        'integrations' => wp_list_pluck( getpaid_get_integration_settings(), 'label', 'id' ),
425 425
 
426 426
         'privacy'      => apply_filters(
427 427
             'wpinv_settings_sections_privacy',
428 428
             array(
429
-				'main' => __( 'Privacy policy', 'invoicing' ),
429
+                'main' => __( 'Privacy policy', 'invoicing' ),
430 430
             )
431 431
         ),
432 432
         'misc'         => apply_filters(
433 433
             'wpinv_settings_sections_misc',
434 434
             array(
435
-				'main'       => __( 'Miscellaneous', 'invoicing' ),
436
-				'custom-css' => __( 'Custom CSS', 'invoicing' ),
435
+                'main'       => __( 'Miscellaneous', 'invoicing' ),
436
+                'custom-css' => __( 'Custom CSS', 'invoicing' ),
437 437
             )
438 438
         ),
439 439
         'tools'        => apply_filters(
440 440
             'wpinv_settings_sections_tools',
441 441
             array(
442
-				'main' => __( 'Diagnostic Tools', 'invoicing' ),
442
+                'main' => __( 'Diagnostic Tools', 'invoicing' ),
443 443
             )
444 444
         ),
445 445
     );
@@ -450,46 +450,46 @@  discard block
 block discarded – undo
450 450
 }
451 451
 
452 452
 function wpinv_get_pages( $with_slug = false, $default_label = null ) {
453
-	$pages_options = array();
453
+    $pages_options = array();
454 454
 
455
-	if ( $default_label !== null && $default_label !== false ) {
456
-		$pages_options = array( '' => $default_label ); // Blank option
457
-	}
455
+    if ( $default_label !== null && $default_label !== false ) {
456
+        $pages_options = array( '' => $default_label ); // Blank option
457
+    }
458 458
 
459
-	$pages = get_pages();
460
-	if ( $pages ) {
461
-		foreach ( $pages as $page ) {
462
-			$title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title;
459
+    $pages = get_pages();
460
+    if ( $pages ) {
461
+        foreach ( $pages as $page ) {
462
+            $title = $with_slug ? $page->post_title . ' (' . $page->post_name . ')' : $page->post_title;
463 463
             $pages_options[ $page->ID ] = $title;
464
-		}
465
-	}
464
+        }
465
+    }
466 466
 
467
-	return $pages_options;
467
+    return $pages_options;
468 468
 }
469 469
 
470 470
 function wpinv_header_callback( $args ) {
471
-	if ( ! empty( $args['desc'] ) ) {
471
+    if ( ! empty( $args['desc'] ) ) {
472 472
         echo wp_kses_post( $args['desc'] );
473 473
     }
474 474
 }
475 475
 
476 476
 function wpinv_hidden_callback( $args ) {
477 477
 
478
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
479
-	$value   = wpinv_get_option( $args['id'], $std );
478
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
479
+    $value   = wpinv_get_option( $args['id'], $std );
480 480
 
481
-	if ( isset( $args['set_value'] ) ) {
482
-		$value = $args['set_value'];
483
-	}
481
+    if ( isset( $args['set_value'] ) ) {
482
+        $value = $args['set_value'];
483
+    }
484 484
 
485
-	if ( isset( $args['faux'] ) && true === $args['faux'] ) {
486
-		$args['readonly'] = true;
487
-		$name  = '';
488
-	} else {
489
-		$name = 'wpinv_settings[' . esc_attr( $args['id'] ) . ']';
490
-	}
485
+    if ( isset( $args['faux'] ) && true === $args['faux'] ) {
486
+        $args['readonly'] = true;
487
+        $name  = '';
488
+    } else {
489
+        $name = 'wpinv_settings[' . esc_attr( $args['id'] ) . ']';
490
+    }
491 491
 
492
-	echo '<input type="hidden" id="wpinv_settings[' . esc_attr( $args['id'] ) . ']" name="' . esc_attr( $name ) . '" value="' . esc_attr( stripslashes( $value ) ) . '" />';
492
+    echo '<input type="hidden" id="wpinv_settings[' . esc_attr( $args['id'] ) . ']" name="' . esc_attr( $name ) . '" value="' . esc_attr( stripslashes( $value ) ) . '" />';
493 493
 
494 494
 }
495 495
 
@@ -498,12 +498,12 @@  discard block
 block discarded – undo
498 498
  */
499 499
 function wpinv_checkbox_callback( $args ) {
500 500
 
501
-	$std = isset( $args['std'] ) ? $args['std'] : '';
502
-	$std = wpinv_get_option( $args['id'], $std );
503
-	$id  = esc_attr( $args['id'] );
501
+    $std = isset( $args['std'] ) ? $args['std'] : '';
502
+    $std = wpinv_get_option( $args['id'], $std );
503
+    $id  = esc_attr( $args['id'] );
504 504
 
505
-	getpaid_hidden_field( "wpinv_settings[$id]", '0' );
506
-	?>
505
+    getpaid_hidden_field( "wpinv_settings[$id]", '0' );
506
+    ?>
507 507
 		<fieldset>
508 508
 			<label>
509 509
 				<input id="wpinv-settings-<?php echo esc_attr( $id ); ?>" name="wpinv_settings[<?php echo esc_attr( $id ); ?>]" <?php checked( empty( $std ), false ); ?> value="1" type="checkbox">
@@ -515,75 +515,75 @@  discard block
 block discarded – undo
515 515
 
516 516
 function wpinv_multicheck_callback( $args ) {
517 517
 
518
-	$sanitize_id = wpinv_sanitize_key( $args['id'] );
519
-	$class = ! empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
518
+    $sanitize_id = wpinv_sanitize_key( $args['id'] );
519
+    $class = ! empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
520 520
 
521
-	if ( ! empty( $args['options'] ) ) {
521
+    if ( ! empty( $args['options'] ) ) {
522 522
 
523
-		$std     = isset( $args['std'] ) ? $args['std'] : array();
524
-		$value   = wpinv_get_option( $args['id'], $std );
523
+        $std     = isset( $args['std'] ) ? $args['std'] : array();
524
+        $value   = wpinv_get_option( $args['id'], $std );
525 525
 
526
-		echo '<div class="wpi-mcheck-rows wpi-mcheck-' . esc_attr( $sanitize_id . $class ) . '">';
526
+        echo '<div class="wpi-mcheck-rows wpi-mcheck-' . esc_attr( $sanitize_id . $class ) . '">';
527 527
         foreach ( $args['options'] as $key => $option ) :
528
-			$sanitize_key = esc_attr( wpinv_sanitize_key( $key ) );
529
-			if ( in_array( $sanitize_key, $value ) ) {
530
-				$enabled = $sanitize_key;
531
-			} else {
532
-				$enabled = null;
533
-			}
534
-			echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" id="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/>&nbsp;';
535
-			echo '<label for="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']">' . wp_kses_post( $option ) . '</label></div>';
536
-		endforeach;
537
-		echo '</div>';
538
-		echo '<p class="description">' . wp_kses_post( $args['desc'] ) . '</p>';
539
-	}
528
+            $sanitize_key = esc_attr( wpinv_sanitize_key( $key ) );
529
+            if ( in_array( $sanitize_key, $value ) ) {
530
+                $enabled = $sanitize_key;
531
+            } else {
532
+                $enabled = null;
533
+            }
534
+            echo '<div class="wpi-mcheck-row"><input name="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" id="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" type="checkbox" value="' . esc_attr( $sanitize_key ) . '" ' . checked( $sanitize_key, $enabled, false ) . '/>&nbsp;';
535
+            echo '<label for="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']">' . wp_kses_post( $option ) . '</label></div>';
536
+        endforeach;
537
+        echo '</div>';
538
+        echo '<p class="description">' . wp_kses_post( $args['desc'] ) . '</p>';
539
+    }
540 540
 }
541 541
 
542 542
 function wpinv_payment_icons_callback( $args ) {
543 543
 
544 544
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
545
-	$value   = wpinv_get_option( $args['id'], false );
545
+    $value   = wpinv_get_option( $args['id'], false );
546 546
 
547
-	if ( ! empty( $args['options'] ) ) {
548
-		foreach ( $args['options'] as $key => $option ) {
547
+    if ( ! empty( $args['options'] ) ) {
548
+        foreach ( $args['options'] as $key => $option ) {
549 549
             $sanitize_key = wpinv_sanitize_key( $key );
550 550
 
551
-			if ( empty( $value ) ) {
552
-				$enabled = $option;
553
-			} else {
554
-				$enabled = null;
555
-			}
556
-
557
-			echo '<label for="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">';
558
-
559
-				echo '<input name="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" id="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/>&nbsp;';
560
-
561
-				if ( wpinv_string_is_image_url( $key ) ) {
562
-				echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
563
-				} else {
564
-				$card = strtolower( str_replace( ' ', '', $option ) );
565
-
566
-				if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) {
567
-					$image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' );
568
-					} else {
569
-					$image       = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false );
570
-					$content_dir = WP_CONTENT_DIR;
571
-
572
-					if ( function_exists( 'wp_normalize_path' ) ) {
573
-						// Replaces backslashes with forward slashes for Windows systems
574
-						$image = wp_normalize_path( $image );
575
-						$content_dir = wp_normalize_path( $content_dir );
576
-						}
577
-
578
-					$image = str_replace( $content_dir, content_url(), $image );
579
-					}
580
-
581
-				echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
582
-				}
583
-			echo wp_kses_post( $option ) . '</label>';
584
-		}
585
-		echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>';
586
-	}
551
+            if ( empty( $value ) ) {
552
+                $enabled = $option;
553
+            } else {
554
+                $enabled = null;
555
+            }
556
+
557
+            echo '<label for="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" style="margin-right:10px;line-height:16px;height:16px;display:inline-block;">';
558
+
559
+                echo '<input name="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" id="wpinv_settings[' . esc_attr( $sanitize_id ) . '][' . esc_attr( $sanitize_key ) . ']" type="checkbox" value="' . esc_attr( $option ) . '" ' . checked( $option, $enabled, false ) . '/>&nbsp;';
560
+
561
+                if ( wpinv_string_is_image_url( $key ) ) {
562
+                echo '<img class="payment-icon" src="' . esc_url( $key ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
563
+                } else {
564
+                $card = strtolower( str_replace( ' ', '', $option ) );
565
+
566
+                if ( has_filter( 'wpinv_accepted_payment_' . $card . '_image' ) ) {
567
+                    $image = apply_filters( 'wpinv_accepted_payment_' . $card . '_image', '' );
568
+                    } else {
569
+                    $image       = wpinv_locate_template( 'images' . DIRECTORY_SEPARATOR . 'icons' . DIRECTORY_SEPARATOR . $card . '.gif', false );
570
+                    $content_dir = WP_CONTENT_DIR;
571
+
572
+                    if ( function_exists( 'wp_normalize_path' ) ) {
573
+                        // Replaces backslashes with forward slashes for Windows systems
574
+                        $image = wp_normalize_path( $image );
575
+                        $content_dir = wp_normalize_path( $content_dir );
576
+                        }
577
+
578
+                    $image = str_replace( $content_dir, content_url(), $image );
579
+                    }
580
+
581
+                echo '<img class="payment-icon" src="' . esc_url( $image ) . '" style="width:32px;height:24px;position:relative;top:6px;margin-right:5px;"/>';
582
+                }
583
+            echo wp_kses_post( $option ) . '</label>';
584
+        }
585
+        echo '<p class="description" style="margin-top:16px;">' . wp_kses_post( $args['desc'] ) . '</p>';
586
+    }
587 587
 }
588 588
 
589 589
 /**
@@ -591,9 +591,9 @@  discard block
 block discarded – undo
591 591
  */
592 592
 function wpinv_radio_callback( $args ) {
593 593
 
594
-	$std = isset( $args['std'] ) ? $args['std'] : '';
595
-	$std = wpinv_get_option( $args['id'], $std );
596
-	?>
594
+    $std = isset( $args['std'] ) ? $args['std'] : '';
595
+    $std = wpinv_get_option( $args['id'], $std );
596
+    ?>
597 597
 		<fieldset>
598 598
 			<ul id="wpinv-settings-<?php echo esc_attr( $args['id'] ); ?>" style="margin-top: 0;">
599 599
 				<?php foreach ( $args['options'] as $key => $option ) : ?>
@@ -607,7 +607,7 @@  discard block
 block discarded – undo
607 607
 			</ul>
608 608
 		</fieldset>
609 609
 	<?php
610
-	getpaid_settings_description_callback( $args );
610
+    getpaid_settings_description_callback( $args );
611 611
 }
612 612
 
613 613
 /**
@@ -615,10 +615,10 @@  discard block
 block discarded – undo
615 615
  */
616 616
 function getpaid_settings_description_callback( $args ) {
617 617
 
618
-	if ( ! empty( $args['desc'] ) ) {
619
-		$description = $args['desc'];
620
-		echo wp_kses_post( "<p class='description'>$description</p>" );
621
-	}
618
+    if ( ! empty( $args['desc'] ) ) {
619
+        $description = $args['desc'];
620
+        echo wp_kses_post( "<p class='description'>$description</p>" );
621
+    }
622 622
 
623 623
 }
624 624
 
@@ -627,7 +627,7 @@  discard block
 block discarded – undo
627 627
  */
628 628
 function wpinv_gateways_callback() {
629 629
 
630
-	?>
630
+    ?>
631 631
 		</td>
632 632
 	</tr>
633 633
 	<tr class="bsui">
@@ -641,26 +641,26 @@  discard block
 block discarded – undo
641 641
 
642 642
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
643 643
     $class = ! empty( $args['class'] ) ? ' ' . esc_attr( $args['class'] ) : '';
644
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
645
-	$value   = wpinv_get_option( $args['id'], $std );
644
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
645
+    $value   = wpinv_get_option( $args['id'], $std );
646 646
 
647
-	echo '<select name="wpinv_settings[' . esc_attr( $sanitize_id ) . ']"" id="wpinv_settings[' . esc_attr( $sanitize_id ) . ']" class="' . esc_attr( $class ) . '" >';
647
+    echo '<select name="wpinv_settings[' . esc_attr( $sanitize_id ) . ']"" id="wpinv_settings[' . esc_attr( $sanitize_id ) . ']" class="' . esc_attr( $class ) . '" >';
648 648
 
649
-	foreach ( $args['options'] as $key => $option ) :
649
+    foreach ( $args['options'] as $key => $option ) :
650 650
 
651
-		echo '<option value="' . esc_attr( $key ) . '" ';
651
+        echo '<option value="' . esc_attr( $key ) . '" ';
652 652
 
653
-		if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
653
+        if ( isset( $args['selected'] ) && $args['selected'] !== null && $args['selected'] !== false ) {
654 654
             selected( $key, $args['selected'] );
655 655
         } else {
656 656
             selected( $key, $value );
657 657
         }
658 658
 
659
-		echo '>' . esc_html( $option['admin_label'] ) . '</option>';
660
-	endforeach;
659
+        echo '>' . esc_html( $option['admin_label'] ) . '</option>';
660
+    endforeach;
661 661
 
662
-	echo '</select>';
663
-	echo '<label for="wpinv_settings[' . esc_attr( $sanitize_id ) . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
662
+    echo '</select>';
663
+    echo '<label for="wpinv_settings[' . esc_attr( $sanitize_id ) . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
664 664
 }
665 665
 
666 666
 /**
@@ -671,38 +671,38 @@  discard block
 block discarded – undo
671 671
  */
672 672
 function wpinv_settings_attrs_helper( $args ) {
673 673
 
674
-	$value = isset( $args['std'] ) ? $args['std'] : '';
675
-	$id    = esc_attr( $args['id'] );
676
-	$value = is_scalar( $value ) ? $value : '';
677
-
678
-	$attrs = array(
679
-		'name'     => ! empty( $args['faux'] ) ? false : "wpinv_settings[$id]",
680
-		'readonly' => ! empty( $args['faux'] ),
681
-		'value'    => ! empty( $args['faux'] ) ? $value : wpinv_get_option( $args['id'], $value ),
682
-		'id'       => 'wpinv-settings-' . $args['id'],
683
-		'style'    => $args['style'],
684
-		'class'    => $args['class'],
685
-		'placeholder' => $args['placeholder'],
686
-		'data-placeholder' => $args['placeholder'],
687
-	);
674
+    $value = isset( $args['std'] ) ? $args['std'] : '';
675
+    $id    = esc_attr( $args['id'] );
676
+    $value = is_scalar( $value ) ? $value : '';
677
+
678
+    $attrs = array(
679
+        'name'     => ! empty( $args['faux'] ) ? false : "wpinv_settings[$id]",
680
+        'readonly' => ! empty( $args['faux'] ),
681
+        'value'    => ! empty( $args['faux'] ) ? $value : wpinv_get_option( $args['id'], $value ),
682
+        'id'       => 'wpinv-settings-' . $args['id'],
683
+        'style'    => $args['style'],
684
+        'class'    => $args['class'],
685
+        'placeholder' => $args['placeholder'],
686
+        'data-placeholder' => $args['placeholder'],
687
+    );
688 688
 
689
-	if ( ! empty( $args['onchange'] ) ) {
690
-		$attrs['onchange'] = $args['onchange'];
691
-	}
689
+    if ( ! empty( $args['onchange'] ) ) {
690
+        $attrs['onchange'] = $args['onchange'];
691
+    }
692 692
 
693
-	foreach ( $attrs as $key => $value ) {
693
+    foreach ( $attrs as $key => $value ) {
694 694
 
695
-		if ( false === $value ) {
696
-			continue;
697
-		}
695
+        if ( false === $value ) {
696
+            continue;
697
+        }
698 698
 
699
-		if ( true === $value ) {
700
-			echo ' ' . esc_attr( $key );
701
-		} else {
702
-			echo ' ' . esc_attr( $key ) . '="' . esc_attr( $value ) . '"';
703
-		}
699
+        if ( true === $value ) {
700
+            echo ' ' . esc_attr( $key );
701
+        } else {
702
+            echo ' ' . esc_attr( $key ) . '="' . esc_attr( $value ) . '"';
703
+        }
704 704
 
705
-	}
705
+    }
706 706
 
707 707
 }
708 708
 
@@ -711,9 +711,9 @@  discard block
 block discarded – undo
711 711
  */
712 712
 function wpinv_text_callback( $args ) {
713 713
 
714
-	$desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
714
+    $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
715 715
 
716
-	?>
716
+    ?>
717 717
 		<label style="width: 100%;">
718 718
 			<input type="text" <?php wpinv_settings_attrs_helper( $args ); ?>>
719 719
 			<?php echo wp_kses_post( $desc ); ?>
@@ -727,9 +727,9 @@  discard block
 block discarded – undo
727 727
  */
728 728
 function wpinv_number_callback( $args ) {
729 729
 
730
-	$desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
730
+    $desc = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
731 731
 
732
-	?>
732
+    ?>
733 733
 		<label style="width: 100%;">
734 734
 			<input type="number" step="<?php echo floatval( $args['step'] ); ?>" max="<?php echo intval( $args['max'] ); ?>" min="<?php echo intval( $args['min'] ); ?>" <?php wpinv_settings_attrs_helper( $args ); ?>>
735 735
 			<?php echo wp_kses_post( $desc ); ?>
@@ -741,34 +741,34 @@  discard block
 block discarded – undo
741 741
 function wpinv_textarea_callback( $args ) {
742 742
 
743 743
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
744
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
745
-	$value   = wpinv_get_option( $args['id'], $std );
744
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
745
+    $value   = wpinv_get_option( $args['id'], $std );
746 746
 
747 747
     $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
748 748
     $class = ( isset( $args['class'] ) && ! is_null( $args['class'] ) ) ? $args['class'] : 'large-text';
749 749
 
750
-	echo '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
751
-	echo '<br /><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
750
+    echo '<textarea class="' . sanitize_html_class( $class ) . ' txtarea-' . sanitize_html_class( $size ) . ' wpi-' . esc_attr( sanitize_html_class( $sanitize_id ) ) . ' " cols="' . $args['cols'] . '" rows="' . $args['rows'] . '" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
751
+    echo '<br /><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
752 752
 
753 753
 }
754 754
 
755 755
 function wpinv_password_callback( $args ) {
756 756
 
757 757
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
758
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
759
-	$value   = wpinv_get_option( $args['id'], $std );
758
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
759
+    $value   = wpinv_get_option( $args['id'], $std );
760 760
 
761
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
762
-	echo '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>';
763
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
761
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
762
+    echo '<input type="password" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '"/>';
763
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
764 764
 
765 765
 }
766 766
 
767 767
 function wpinv_missing_callback( $args ) {
768
-	printf(
769
-		__( 'The callback function used for the %s setting is missing.', 'invoicing' ),
770
-		'<strong>' . $args['id'] . '</strong>'
771
-	);
768
+    printf(
769
+        __( 'The callback function used for the %s setting is missing.', 'invoicing' ),
770
+        '<strong>' . $args['id'] . '</strong>'
771
+    );
772 772
 }
773 773
 
774 774
 /**
@@ -776,13 +776,13 @@  discard block
 block discarded – undo
776 776
  */
777 777
 function wpinv_select_callback( $args ) {
778 778
 
779
-	$desc   = wp_kses_post( $args['desc'] );
780
-	$desc   = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
781
-	$value  = isset( $args['std'] ) ? $args['std'] : '';
782
-	$value  = wpinv_get_option( $args['id'], $value );
783
-	$rand   = uniqid( 'random_id' );
779
+    $desc   = wp_kses_post( $args['desc'] );
780
+    $desc   = empty( $desc ) ? '' : "<p class='description'>$desc</p>";
781
+    $value  = isset( $args['std'] ) ? $args['std'] : '';
782
+    $value  = wpinv_get_option( $args['id'], $value );
783
+    $rand   = uniqid( 'random_id' );
784 784
 
785
-	?>
785
+    ?>
786 786
 		<label style="width: 100%;">
787 787
 			<select <?php wpinv_settings_attrs_helper( $args ); ?> data-allow-clear="true">
788 788
 				<?php foreach ( $args['options'] as $option => $name ) : ?>
@@ -815,50 +815,50 @@  discard block
 block discarded – undo
815 815
 function wpinv_color_select_callback( $args ) {
816 816
 
817 817
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
818
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
819
-	$value   = wpinv_get_option( $args['id'], $std );
818
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
819
+    $value   = wpinv_get_option( $args['id'], $std );
820 820
 
821
-	echo '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>';
821
+    echo '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"/>';
822 822
 
823
-	foreach ( $args['options'] as $option => $color ) {
824
-		echo '<option value="' . esc_attr( $option ) . '" ' . selected( $option, $value ) . '>' . esc_html( $color['label'] ) . '</option>';
825
-	}
823
+    foreach ( $args['options'] as $option => $color ) {
824
+        echo '<option value="' . esc_attr( $option ) . '" ' . selected( $option, $value ) . '>' . esc_html( $color['label'] ) . '</option>';
825
+    }
826 826
 
827
-	echo '</select>';
828
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
827
+    echo '</select>';
828
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
829 829
 
830 830
 }
831 831
 
832 832
 function wpinv_rich_editor_callback( $args ) {
833
-	global $wp_version;
833
+    global $wp_version;
834 834
 
835 835
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
836 836
 
837
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
838
-	$value   = wpinv_get_option( $args['id'], $std );
837
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
838
+    $value   = wpinv_get_option( $args['id'], $std );
839 839
 
840
-	if ( ! empty( $args['allow_blank'] ) && empty( $value ) ) {
841
-		$value = $std;
842
-	}
840
+    if ( ! empty( $args['allow_blank'] ) && empty( $value ) ) {
841
+        $value = $std;
842
+    }
843 843
 
844
-	$rows = isset( $args['size'] ) ? $args['size'] : 20;
844
+    $rows = isset( $args['size'] ) ? $args['size'] : 20;
845 845
 
846
-	echo '<div class="getpaid-settings-editor-input">';
847
-	if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) {
848
-		wp_editor(
846
+    echo '<div class="getpaid-settings-editor-input">';
847
+    if ( $wp_version >= 3.3 && function_exists( 'wp_editor' ) ) {
848
+        wp_editor(
849 849
             stripslashes( $value ),
850 850
             'wpinv_settings_' . esc_attr( $args['id'] ),
851 851
             array(
852
-				'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']',
853
-				'textarea_rows' => absint( $rows ),
854
-				'media_buttons' => false,
852
+                'textarea_name' => 'wpinv_settings[' . esc_attr( $args['id'] ) . ']',
853
+                'textarea_rows' => absint( $rows ),
854
+                'media_buttons' => false,
855 855
             )
856 856
         );
857
-	} else {
858
-		echo '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
859
-	}
857
+    } else {
858
+        echo '<textarea class="large-text" rows="10" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" class="wpi-' . esc_attr( sanitize_html_class( $args['id'] ) ) . '">' . esc_textarea( stripslashes( $value ) ) . '</textarea>';
859
+    }
860 860
 
861
-	echo '</div><br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
861
+    echo '</div><br/><label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
862 862
 
863 863
 }
864 864
 
@@ -866,51 +866,51 @@  discard block
 block discarded – undo
866 866
 
867 867
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
868 868
 
869
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
870
-	$value   = wpinv_get_option( $args['id'], $std );
869
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
870
+    $value   = wpinv_get_option( $args['id'], $std );
871 871
 
872
-	$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
873
-	echo '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
874
-	echo '<span>&nbsp;<input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>';
875
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
872
+    $size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : 'regular';
873
+    echo '<input type="text" class="' . sanitize_html_class( $size ) . '-text" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( stripslashes( $value ) ) . '"/>';
874
+    echo '<span>&nbsp;<input type="button" class="wpinv_settings_upload_button button-secondary" value="' . __( 'Upload File', 'invoicing' ) . '"/></span>';
875
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
876 876
 
877 877
 }
878 878
 
879 879
 function wpinv_color_callback( $args ) {
880 880
 
881
-	$std         = isset( $args['std'] ) ? $args['std'] : '';
882
-	$value       = wpinv_get_option( $args['id'], $std );
881
+    $std         = isset( $args['std'] ) ? $args['std'] : '';
882
+    $value       = wpinv_get_option( $args['id'], $std );
883 883
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
884 884
 
885
-	echo '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $std ) . '" />';
886
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
885
+    echo '<input type="text" class="wpinv-color-picker" id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']" value="' . esc_attr( $value ) . '" data-default-color="' . esc_attr( $std ) . '" />';
886
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
887 887
 
888 888
 }
889 889
 
890 890
 function wpinv_country_states_callback( $args ) {
891 891
 
892
-	$std     = isset( $args['std'] ) ? $args['std'] : '';
893
-	$value   = wpinv_get_option( $args['id'], $std );
892
+    $std     = isset( $args['std'] ) ? $args['std'] : '';
893
+    $value   = wpinv_get_option( $args['id'], $std );
894 894
 
895 895
     $sanitize_id = wpinv_sanitize_key( $args['id'] );
896 896
 
897
-	if ( isset( $args['placeholder'] ) ) {
898
-		$placeholder = $args['placeholder'];
899
-	} else {
900
-		$placeholder = '';
901
-	}
897
+    if ( isset( $args['placeholder'] ) ) {
898
+        $placeholder = $args['placeholder'];
899
+    } else {
900
+        $placeholder = '';
901
+    }
902 902
 
903
-	$states = wpinv_get_country_states();
903
+    $states = wpinv_get_country_states();
904 904
 
905
-	$class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"';
906
-	echo '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>';
905
+    $class = empty( $states ) ? ' class="wpinv-no-states"' : ' class="wpi_select2"';
906
+    echo '<select id="wpinv_settings[' . $sanitize_id . ']" name="wpinv_settings[' . esc_attr( $args['id'] ) . ']"' . $class . 'data-placeholder="' . esc_html( $placeholder ) . '"/>';
907 907
 
908
-	foreach ( $states as $option => $name ) {
909
-		echo '<option value="' . esc_attr( $option ) . '" ' . selected( $option, $value ) . '>' . esc_html( $name ) . '</option>';
910
-	}
908
+    foreach ( $states as $option => $name ) {
909
+        echo '<option value="' . esc_attr( $option ) . '" ' . selected( $option, $value ) . '>' . esc_html( $name ) . '</option>';
910
+    }
911 911
 
912
-	echo '</select>';
913
-	echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
912
+    echo '</select>';
913
+    echo '<label for="wpinv_settings[' . $sanitize_id . ']"> ' . wp_kses_post( $args['desc'] ) . '</label>';
914 914
 
915 915
 }
916 916
 
@@ -919,7 +919,7 @@  discard block
 block discarded – undo
919 919
  */
920 920
 function wpinv_tax_rates_callback() {
921 921
 
922
-	?>
922
+    ?>
923 923
 		</td>
924 924
 	</tr>
925 925
 	<tr class="bsui">
@@ -934,17 +934,17 @@  discard block
 block discarded – undo
934 934
  * Displays a tax rate' edit row.
935 935
  */
936 936
 function wpinv_tax_rate_callback( $tax_rate, $key, $echo = true ) {
937
-	ob_start();
937
+    ob_start();
938 938
 
939
-	$key                      = sanitize_key( $key );
940
-	$tax_rate['reduced_rate'] = empty( $tax_rate['reduced_rate'] ) ? 0 : $tax_rate['reduced_rate'];
941
-	include plugin_dir_path( __FILE__ ) . 'views/html-tax-rate-edit.php';
939
+    $key                      = sanitize_key( $key );
940
+    $tax_rate['reduced_rate'] = empty( $tax_rate['reduced_rate'] ) ? 0 : $tax_rate['reduced_rate'];
941
+    include plugin_dir_path( __FILE__ ) . 'views/html-tax-rate-edit.php';
942 942
 
943
-	if ( $echo ) {
944
-		echo ob_get_clean();
945
-	} else {
946
-		return ob_get_clean();
947
-	}
943
+    if ( $echo ) {
944
+        echo ob_get_clean();
945
+    } else {
946
+        return ob_get_clean();
947
+    }
948 948
 
949 949
 }
950 950
 
@@ -976,14 +976,14 @@  discard block
 block discarded – undo
976 976
                 <td>
977 977
 					<a href="
978 978
                     <?php
979
-						echo esc_url(
980
-							wp_nonce_url(
981
-								add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
982
-								'getpaid-nonce',
983
-								'getpaid-nonce'
984
-							)
985
-						);
986
-					?>
979
+                        echo esc_url(
980
+                            wp_nonce_url(
981
+                                add_query_arg( 'getpaid-admin-action', 'create_missing_pages' ),
982
+                                'getpaid-nonce',
983
+                                'getpaid-nonce'
984
+                            )
985
+                        );
986
+                    ?>
987 987
                     " class="button button-primary"><?php esc_html_e( 'Run', 'invoicing' ); ?></a>
988 988
                 </td>
989 989
             </tr>
@@ -995,14 +995,14 @@  discard block
 block discarded – undo
995 995
                 <td>
996 996
 					<a href="
997 997
                     <?php
998
-						echo esc_url(
999
-							wp_nonce_url(
1000
-								add_query_arg( 'getpaid-admin-action', 'create_missing_tables' ),
1001
-								'getpaid-nonce',
1002
-								'getpaid-nonce'
1003
-							)
1004
-						);
1005
-					?>
998
+                        echo esc_url(
999
+                            wp_nonce_url(
1000
+                                add_query_arg( 'getpaid-admin-action', 'create_missing_tables' ),
1001
+                                'getpaid-nonce',
1002
+                                'getpaid-nonce'
1003
+                            )
1004
+                        );
1005
+                    ?>
1006 1006
                     " class="button button-primary"><?php esc_html_e( 'Run', 'invoicing' ); ?></a>
1007 1007
                 </td>
1008 1008
             </tr>
@@ -1014,14 +1014,14 @@  discard block
 block discarded – undo
1014 1014
                 <td>
1015 1015
 					<a href="
1016 1016
                     <?php
1017
-						echo esc_url(
1018
-							wp_nonce_url(
1019
-								add_query_arg( 'getpaid-admin-action', 'migrate_old_invoices' ),
1020
-								'getpaid-nonce',
1021
-								'getpaid-nonce'
1022
-							)
1023
-						);
1024
-					?>
1017
+                        echo esc_url(
1018
+                            wp_nonce_url(
1019
+                                add_query_arg( 'getpaid-admin-action', 'migrate_old_invoices' ),
1020
+                                'getpaid-nonce',
1021
+                                'getpaid-nonce'
1022
+                            )
1023
+                        );
1024
+                    ?>
1025 1025
                     " class="button button-primary"><?php esc_html_e( 'Run', 'invoicing' ); ?></a>
1026 1026
                 </td>
1027 1027
             </tr>
@@ -1034,14 +1034,14 @@  discard block
 block discarded – undo
1034 1034
                 <td>
1035 1035
 					<a href="
1036 1036
                     <?php
1037
-						echo esc_url(
1038
-							wp_nonce_url(
1039
-								add_query_arg( 'getpaid-admin-action', 'recalculate_discounts' ),
1040
-								'getpaid-nonce',
1041
-								'getpaid-nonce'
1042
-							)
1043
-						);
1044
-					?>
1037
+                        echo esc_url(
1038
+                            wp_nonce_url(
1039
+                                add_query_arg( 'getpaid-admin-action', 'recalculate_discounts' ),
1040
+                                'getpaid-nonce',
1041
+                                'getpaid-nonce'
1042
+                            )
1043
+                        );
1044
+                    ?>
1045 1045
                     " class="button button-primary"><?php esc_html_e( 'Run', 'invoicing' ); ?></a>
1046 1046
                 </td>
1047 1047
             </tr>
@@ -1054,8 +1054,8 @@  discard block
 block discarded – undo
1054 1054
                 <td>
1055 1055
 					<a href="
1056 1056
                     <?php
1057
-						echo esc_url( admin_url( 'index.php?page=gp-setup' ) );
1058
-					?>
1057
+                        echo esc_url( admin_url( 'index.php?page=gp-setup' ) );
1058
+                    ?>
1059 1059
                     " class="button button-primary"><?php esc_html_e( 'Launch', 'invoicing' ); ?></a>
1060 1060
                 </td>
1061 1061
             </tr>
@@ -1069,19 +1069,19 @@  discard block
 block discarded – undo
1069 1069
 
1070 1070
 
1071 1071
 function wpinv_descriptive_text_callback( $args ) {
1072
-	echo wp_kses_post( $args['desc'] );
1072
+    echo wp_kses_post( $args['desc'] );
1073 1073
 }
1074 1074
 
1075 1075
 function wpinv_raw_html_callback( $args ) {
1076
-	echo wp_kses_post( $args['desc'] );
1076
+    echo wp_kses_post( $args['desc'] );
1077 1077
 }
1078 1078
 
1079 1079
 function wpinv_hook_callback( $args ) {
1080
-	do_action( 'wpinv_' . $args['id'], $args );
1080
+    do_action( 'wpinv_' . $args['id'], $args );
1081 1081
 }
1082 1082
 
1083 1083
 function wpinv_set_settings_cap() {
1084
-	return wpinv_get_capability();
1084
+    return wpinv_get_capability();
1085 1085
 }
1086 1086
 add_filter( 'option_page_capability_wpinv_settings', 'wpinv_set_settings_cap' );
1087 1087
 
@@ -1105,15 +1105,15 @@  discard block
 block discarded – undo
1105 1105
  */
1106 1106
 function wpinv_get_merge_tags_help_text( $subscription = false ) {
1107 1107
 
1108
-	$url  = $subscription ? 'https://gist.github.com/picocodes/3d213982d57c34edf7a46fd3f0e8583e' : 'https://gist.github.com/picocodes/43bdc4d4bbba844534b2722e2af0b58f';
1109
-	$link = sprintf(
1110
-		'<strong><a href="%s" target="_blank">%s</a></strong>',
1111
-		$url,
1112
-		esc_html__( 'View available merge tags.', 'wpinv-quotes' )
1113
-	);
1108
+    $url  = $subscription ? 'https://gist.github.com/picocodes/3d213982d57c34edf7a46fd3f0e8583e' : 'https://gist.github.com/picocodes/43bdc4d4bbba844534b2722e2af0b58f';
1109
+    $link = sprintf(
1110
+        '<strong><a href="%s" target="_blank">%s</a></strong>',
1111
+        $url,
1112
+        esc_html__( 'View available merge tags.', 'wpinv-quotes' )
1113
+    );
1114 1114
 
1115
-	$description = esc_html__( 'The content of the email (Merge Tags and HTML are allowed).', 'invoicing' );
1115
+    $description = esc_html__( 'The content of the email (Merge Tags and HTML are allowed).', 'invoicing' );
1116 1116
 
1117
-	return "$description $link";
1117
+    return "$description $link";
1118 1118
 
1119 1119
 }
Please login to merge, or discard this patch.
includes/wpinv-address-functions.php 1 patch
Indentation   +87 added lines, -87 removed lines patch added patch discarded remove patch
@@ -13,9 +13,9 @@  discard block
 block discarded – undo
13 13
 
14 14
 
15 15
 function wpinv_get_default_country() {
16
-	$country = wpinv_get_option( 'default_country', 'UK' );
16
+    $country = wpinv_get_option( 'default_country', 'UK' );
17 17
 
18
-	return apply_filters( 'wpinv_default_country', $country );
18
+    return apply_filters( 'wpinv_default_country', $country );
19 19
 }
20 20
 
21 21
 /**
@@ -36,7 +36,7 @@  discard block
 block discarded – undo
36 36
  */
37 37
 function wpinv_sanitize_country( $country ) {
38 38
 
39
-	// Enure the country is specified
39
+    // Enure the country is specified
40 40
     if ( empty( $country ) ) {
41 41
         $country = wpinv_get_default_country();
42 42
     }
@@ -66,9 +66,9 @@  discard block
 block discarded – undo
66 66
 }
67 67
 
68 68
 function wpinv_get_default_state() {
69
-	$state = wpinv_get_option( 'default_state', '' );
69
+    $state = wpinv_get_option( 'default_state', '' );
70 70
 
71
-	return apply_filters( 'wpinv_default_state', $state );
71
+    return apply_filters( 'wpinv_default_state', $state );
72 72
 }
73 73
 
74 74
 function wpinv_state_name( $state_code = '', $country_code = '' ) {
@@ -303,11 +303,11 @@  discard block
 block discarded – undo
303 303
 
304 304
     $country = wpinv_sanitize_country( $country );
305 305
 
306
-	foreach ( wpinv_get_continents( 'countries' ) as $continent_code => $countries ) {
307
-		if ( false !== array_search( $country, $countries, true ) ) {
308
-			return $continent_code;
309
-		}
310
-	}
306
+    foreach ( wpinv_get_continents( 'countries' ) as $continent_code => $countries ) {
307
+        if ( false !== array_search( $country, $countries, true ) ) {
308
+            return $continent_code;
309
+        }
310
+    }
311 311
 
312 312
     return '';
313 313
 
@@ -599,31 +599,31 @@  discard block
 block discarded – undo
599 599
 }
600 600
 
601 601
 function wpinv_get_states_field() {
602
-	if ( empty( $_POST['country'] ) ) {
603
-		$_POST['country'] = wpinv_get_default_country();
604
-	}
605
-	$states = wpinv_get_country_states( sanitize_text_field( $_POST['country'] ) );
602
+    if ( empty( $_POST['country'] ) ) {
603
+        $_POST['country'] = wpinv_get_default_country();
604
+    }
605
+    $states = wpinv_get_country_states( sanitize_text_field( $_POST['country'] ) );
606 606
 
607
-	if ( ! empty( $states ) ) {
608
-		$sanitized_field_name = sanitize_text_field( $_POST['field_name'] );
607
+    if ( ! empty( $states ) ) {
608
+        $sanitized_field_name = sanitize_text_field( $_POST['field_name'] );
609 609
 
610 610
         $class  = isset( $_POST['class'] ) ? esc_attr( sanitize_text_field( $_POST['class'] ) ) : '';
611 611
         $class .= " $sanitized_field_name getpaid_js_field-state custom-select wpinv-select wpi_select2";
612 612
 
613 613
         $args  = array(
614
-			'name'             => $sanitized_field_name,
615
-			'id'               => $sanitized_field_name,
616
-			'class'            => implode( ' ', array_unique( explode( ' ', $class ) ) ),
617
-			'options'          => array_merge( array( '' => '' ), $states ),
618
-			'show_option_all'  => false,
619
-			'show_option_none' => false,
620
-		);
621
-
622
-		wpinv_html_select( $args );
623
-
624
-	} else {
625
-		echo 'nostates';
626
-	}
614
+            'name'             => $sanitized_field_name,
615
+            'id'               => $sanitized_field_name,
616
+            'class'            => implode( ' ', array_unique( explode( ' ', $class ) ) ),
617
+            'options'          => array_merge( array( '' => '' ), $states ),
618
+            'show_option_all'  => false,
619
+            'show_option_none' => false,
620
+        );
621
+
622
+        wpinv_html_select( $args );
623
+
624
+    } else {
625
+        echo 'nostates';
626
+    }
627 627
 
628 628
 }
629 629
 
@@ -642,47 +642,47 @@  discard block
 block discarded – undo
642 642
  */
643 643
 function wpinv_get_address_formats() {
644 644
 
645
-		return apply_filters(
645
+        return apply_filters(
646 646
             'wpinv_localisation_address_formats',
647
-			array(
648
-				'default' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}\n{{zip}}\n{{country}}",
649
-				'AU'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}} {{zip}}\n{{country}}",
650
-				'AT'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
651
-				'BE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
652
-				'CA'      => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{state_code}}&nbsp;&nbsp;{{zip}}\n{{country}}",
653
-				'CH'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
654
-				'CL'      => "{{company}}\n{{name}}\n{{address}}\n{{state}}\n{{zip}} {{city}}\n{{country}}",
655
-				'CN'      => "{{country}} {{zip}}\n{{state}}, {{city}}, {{address}}\n{{company}}\n{{name}}",
656
-				'CZ'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
657
-				'DE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
658
-				'EE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
659
-				'FI'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
660
-				'DK'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
661
-				'FR'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city_upper}}\n{{country}}",
662
-				'HK'      => "{{company}}\n{{first_name}} {{last_name_upper}}\n{{address}}\n{{city_upper}}\n{{state_upper}}\n{{country}}",
663
-				'HU'      => "{{name}}\n{{company}}\n{{city}}\n{{address}}\n{{zip}}\n{{country}}",
664
-				'IN'      => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{zip}}\n{{state}}, {{country}}",
665
-				'IS'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
666
-				'IT'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}}\n{{city}}\n{{state_upper}}\n{{country}}",
667
-				'JP'      => "{{zip}}\n{{state}} {{city}} {{address}}\n{{company}}\n{{last_name}} {{first_name}}\n{{country}}",
668
-				'TW'      => "{{company}}\n{{last_name}} {{first_name}}\n{{address}}\n{{state}}, {{city}} {{zip}}\n{{country}}",
669
-				'LI'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
670
-				'NL'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
671
-				'NZ'      => "{{name}}\n{{company}}\n{{address}}\n{{city}} {{zip}}\n{{country}}",
672
-				'NO'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
673
-				'PL'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
674
-				'PT'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
675
-				'SK'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
676
-				'RS'      => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
677
-				'SI'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
678
-				'ES'      => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{state}}\n{{country}}",
679
-				'SE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
680
-				'TR'      => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}} {{state}}\n{{country}}",
681
-				'UG'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}, {{country}}",
682
-				'US'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}, {{state_code}} {{zip}}\n{{country}}",
683
-				'VN'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{country}}",
684
-			)
685
-		);
647
+            array(
648
+                'default' => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}\n{{zip}}\n{{country}}",
649
+                'AU'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}} {{zip}}\n{{country}}",
650
+                'AT'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
651
+                'BE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
652
+                'CA'      => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{state_code}}&nbsp;&nbsp;{{zip}}\n{{country}}",
653
+                'CH'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
654
+                'CL'      => "{{company}}\n{{name}}\n{{address}}\n{{state}}\n{{zip}} {{city}}\n{{country}}",
655
+                'CN'      => "{{country}} {{zip}}\n{{state}}, {{city}}, {{address}}\n{{company}}\n{{name}}",
656
+                'CZ'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
657
+                'DE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
658
+                'EE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
659
+                'FI'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
660
+                'DK'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
661
+                'FR'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city_upper}}\n{{country}}",
662
+                'HK'      => "{{company}}\n{{first_name}} {{last_name_upper}}\n{{address}}\n{{city_upper}}\n{{state_upper}}\n{{country}}",
663
+                'HU'      => "{{name}}\n{{company}}\n{{city}}\n{{address}}\n{{zip}}\n{{country}}",
664
+                'IN'      => "{{company}}\n{{name}}\n{{address}}\n{{city}} {{zip}}\n{{state}}, {{country}}",
665
+                'IS'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
666
+                'IT'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}}\n{{city}}\n{{state_upper}}\n{{country}}",
667
+                'JP'      => "{{zip}}\n{{state}} {{city}} {{address}}\n{{company}}\n{{last_name}} {{first_name}}\n{{country}}",
668
+                'TW'      => "{{company}}\n{{last_name}} {{first_name}}\n{{address}}\n{{state}}, {{city}} {{zip}}\n{{country}}",
669
+                'LI'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
670
+                'NL'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
671
+                'NZ'      => "{{name}}\n{{company}}\n{{address}}\n{{city}} {{zip}}\n{{country}}",
672
+                'NO'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
673
+                'PL'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
674
+                'PT'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
675
+                'SK'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
676
+                'RS'      => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
677
+                'SI'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
678
+                'ES'      => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}}\n{{state}}\n{{country}}",
679
+                'SE'      => "{{company}}\n{{name}}\n{{address}}\n{{zip}} {{city}}\n{{country}}",
680
+                'TR'      => "{{name}}\n{{company}}\n{{address}}\n{{zip}} {{city}} {{state}}\n{{country}}",
681
+                'UG'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{state}}, {{country}}",
682
+                'US'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}, {{state_code}} {{zip}}\n{{country}}",
683
+                'VN'      => "{{name}}\n{{company}}\n{{address}}\n{{city}}\n{{country}}",
684
+            )
685
+        );
686 686
 }
687 687
 
688 688
 /**
@@ -699,21 +699,21 @@  discard block
 block discarded – undo
699 699
     }
700 700
 
701 701
     // Get all formats.
702
-	$formats = wpinv_get_address_formats();
702
+    $formats = wpinv_get_address_formats();
703 703
 
704
-	// Get format for the specified country.
705
-	$format = ( $country && isset( $formats[ $country ] ) ) ? $formats[ $country ] : $formats['default'];
704
+    // Get format for the specified country.
705
+    $format = ( $country && isset( $formats[ $country ] ) ) ? $formats[ $country ] : $formats['default'];
706 706
 
707 707
     /**
708
-	 * Filters the address format to use on Invoices.
708
+     * Filters the address format to use on Invoices.
709 709
      *
710 710
      * New lines will be replaced by a `br` element. Double new lines will be replaced by a paragraph. HTML tags are allowed.
711
-	 *
712
-	 * @since 1.0.13
713
-	 *
714
-	 * @param string $format  The address format to use.
711
+     *
712
+     * @since 1.0.13
713
+     *
714
+     * @param string $format  The address format to use.
715 715
      * @param string $country The country who's address format is being retrieved.
716
-	 */
716
+     */
717 717
     return apply_filters( 'wpinv_get_full_address_format', $format, $country );
718 718
 }
719 719
 
@@ -734,8 +734,8 @@  discard block
 block discarded – undo
734 734
         'country'    => '',
735 735
         'zip'        => '',
736 736
         'first_name' => '',
737
-		'last_name'  => '',
738
-		'company'    => '',
737
+        'last_name'  => '',
738
+        'company'    => '',
739 739
     );
740 740
 
741 741
     $args    = map_deep( wp_parse_args( $billing_details, $default_args ), 'trim' );
@@ -756,14 +756,14 @@  discard block
 block discarded – undo
756 756
     $args['country_code'] = $country;
757 757
 
758 758
     /**
759
-	 * Filters the address format replacements to use on Invoices.
759
+     * Filters the address format replacements to use on Invoices.
760
+     *
761
+     *
762
+     * @since 1.0.13
760 763
      *
761
-	 *
762
-	 * @since 1.0.13
763
-	 *
764
-	 * @param array $replacements  The address replacements to use.
764
+     * @param array $replacements  The address replacements to use.
765 765
      * @param array $billing_details  The billing details to use.
766
-	 */
766
+     */
767 767
     $replacements = apply_filters( 'wpinv_get_invoice_address_replacements', $args, $billing_details );
768 768
 
769 769
     $return = array();
@@ -786,5 +786,5 @@  discard block
 block discarded – undo
786 786
  * @return string
787 787
  */
788 788
 function wpinv_trim_formatted_address_line( $line ) {
789
-	return trim( $line, ', ' );
789
+    return trim( $line, ', ' );
790 790
 }
Please login to merge, or discard this patch.
includes/wpinv-template-functions.php 1 patch
Indentation   +125 added lines, -125 removed lines patch added patch discarded remove patch
@@ -140,7 +140,7 @@  discard block
 block discarded – undo
140 140
  * @param string $default_path The root path to the default template. Defaults to invoicing/templates
141 141
  */
142 142
 function wpinv_get_template_html( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
143
-	return getpaid_template()->get_template( $template_name, $args, $template_path, $default_path );
143
+    return getpaid_template()->get_template( $template_name, $args, $template_path, $default_path );
144 144
 }
145 145
 
146 146
 /**
@@ -158,7 +158,7 @@  discard block
 block discarded – undo
158 158
  * @return string
159 159
  */
160 160
 function wpinv_get_theme_template_dir_name() {
161
-	return trailingslashit( apply_filters( 'wpinv_templates_dir', 'invoicing' ) );
161
+    return trailingslashit( apply_filters( 'wpinv_templates_dir', 'invoicing' ) );
162 162
 }
163 163
 
164 164
 /**
@@ -175,125 +175,125 @@  discard block
 block discarded – undo
175 175
 }
176 176
 
177 177
 function wpinv_get_template_part( $slug, $name = null, $load = true ) {
178
-	do_action( 'get_template_part_' . $slug, $slug, $name );
178
+    do_action( 'get_template_part_' . $slug, $slug, $name );
179 179
 
180
-	// Setup possible parts
181
-	$templates = array();
182
-	if ( isset( $name ) ) {
183
-		$templates[] = $slug . '-' . $name . '.php';
180
+    // Setup possible parts
181
+    $templates = array();
182
+    if ( isset( $name ) ) {
183
+        $templates[] = $slug . '-' . $name . '.php';
184 184
     }
185
-	$templates[] = $slug . '.php';
185
+    $templates[] = $slug . '.php';
186 186
 
187
-	// Allow template parts to be filtered
188
-	$templates = apply_filters( 'wpinv_get_template_part', $templates, $slug, $name );
187
+    // Allow template parts to be filtered
188
+    $templates = apply_filters( 'wpinv_get_template_part', $templates, $slug, $name );
189 189
 
190
-	// Return the part that is found
191
-	return wpinv_locate_tmpl( $templates, $load, false );
190
+    // Return the part that is found
191
+    return wpinv_locate_tmpl( $templates, $load, false );
192 192
 }
193 193
 
194 194
 function wpinv_locate_tmpl( $template_names, $load = false, $require_once = true ) {
195
-	// No file found yet
196
-	$located = false;
195
+    // No file found yet
196
+    $located = false;
197 197
 
198
-	// Try to find a template file
199
-	foreach ( (array)$template_names as $template_name ) {
198
+    // Try to find a template file
199
+    foreach ( (array)$template_names as $template_name ) {
200 200
 
201
-		// Continue if template is empty
202
-		if ( empty( $template_name ) ) {
203
-			continue;
201
+        // Continue if template is empty
202
+        if ( empty( $template_name ) ) {
203
+            continue;
204 204
         }
205 205
 
206
-		// Trim off any slashes from the template name
207
-		$template_name = ltrim( $template_name, '/' );
206
+        // Trim off any slashes from the template name
207
+        $template_name = ltrim( $template_name, '/' );
208 208
 
209
-		// try locating this template file by looping through the template paths
210
-		foreach ( wpinv_get_theme_template_paths() as $template_path ) {
209
+        // try locating this template file by looping through the template paths
210
+        foreach ( wpinv_get_theme_template_paths() as $template_path ) {
211 211
 
212
-			if ( file_exists( $template_path . $template_name ) ) {
213
-				$located = $template_path . $template_name;
214
-				break;
215
-			}
216
-		}
212
+            if ( file_exists( $template_path . $template_name ) ) {
213
+                $located = $template_path . $template_name;
214
+                break;
215
+            }
216
+        }
217 217
 
218
-		if ( ! empty( $located ) ) {
219
-			break;
220
-		}
221
-	}
218
+        if ( ! empty( $located ) ) {
219
+            break;
220
+        }
221
+    }
222 222
 
223
-	if ( ( true == $load ) && ! empty( $located ) ) {
224
-		load_template( $located, $require_once );
223
+    if ( ( true == $load ) && ! empty( $located ) ) {
224
+        load_template( $located, $require_once );
225 225
     }
226 226
 
227
-	return $located;
227
+    return $located;
228 228
 }
229 229
 
230 230
 function wpinv_get_theme_template_paths() {
231
-	$template_dir = wpinv_get_theme_template_dir_name();
231
+    $template_dir = wpinv_get_theme_template_dir_name();
232 232
 
233
-	$file_paths = array(
234
-		1   => trailingslashit( get_stylesheet_directory() ) . $template_dir,
235
-		10  => trailingslashit( get_template_directory() ) . $template_dir,
236
-		100 => wpinv_get_templates_dir(),
237
-	);
233
+    $file_paths = array(
234
+        1   => trailingslashit( get_stylesheet_directory() ) . $template_dir,
235
+        10  => trailingslashit( get_template_directory() ) . $template_dir,
236
+        100 => wpinv_get_templates_dir(),
237
+    );
238 238
 
239
-	$file_paths = apply_filters( 'wpinv_template_paths', $file_paths );
239
+    $file_paths = apply_filters( 'wpinv_template_paths', $file_paths );
240 240
 
241
-	// sort the file paths based on priority
242
-	ksort( $file_paths, SORT_NUMERIC );
241
+    // sort the file paths based on priority
242
+    ksort( $file_paths, SORT_NUMERIC );
243 243
 
244
-	return array_map( 'trailingslashit', $file_paths );
244
+    return array_map( 'trailingslashit', $file_paths );
245 245
 }
246 246
 
247 247
 function wpinv_checkout_meta_tags() {
248 248
 
249
-	$pages   = array();
250
-	$pages[] = wpinv_get_option( 'success_page' );
251
-	$pages[] = wpinv_get_option( 'failure_page' );
252
-	$pages[] = wpinv_get_option( 'invoice_history_page' );
253
-	$pages[] = wpinv_get_option( 'invoice_subscription_page' );
249
+    $pages   = array();
250
+    $pages[] = wpinv_get_option( 'success_page' );
251
+    $pages[] = wpinv_get_option( 'failure_page' );
252
+    $pages[] = wpinv_get_option( 'invoice_history_page' );
253
+    $pages[] = wpinv_get_option( 'invoice_subscription_page' );
254 254
 
255
-	if ( ! wpinv_is_checkout() && ! is_page( $pages ) ) {
256
-		return;
257
-	}
255
+    if ( ! wpinv_is_checkout() && ! is_page( $pages ) ) {
256
+        return;
257
+    }
258 258
 
259
-	echo '<meta name="robots" content="noindex,nofollow" />' . "\n";
259
+    echo '<meta name="robots" content="noindex,nofollow" />' . "\n";
260 260
 }
261 261
 add_action( 'wp_head', 'wpinv_checkout_meta_tags' );
262 262
 
263 263
 function wpinv_add_body_classes( $class ) {
264
-	$classes = (array)$class;
264
+    $classes = (array)$class;
265 265
 
266
-	if ( wpinv_is_checkout() ) {
267
-		$classes[] = 'wpinv-checkout';
268
-		$classes[] = 'wpinv-page';
269
-	}
266
+    if ( wpinv_is_checkout() ) {
267
+        $classes[] = 'wpinv-checkout';
268
+        $classes[] = 'wpinv-page';
269
+    }
270 270
 
271
-	if ( wpinv_is_success_page() ) {
272
-		$classes[] = 'wpinv-success';
273
-		$classes[] = 'wpinv-page';
274
-	}
271
+    if ( wpinv_is_success_page() ) {
272
+        $classes[] = 'wpinv-success';
273
+        $classes[] = 'wpinv-page';
274
+    }
275 275
 
276
-	if ( wpinv_is_failed_transaction_page() ) {
277
-		$classes[] = 'wpinv-failed-transaction';
278
-		$classes[] = 'wpinv-page';
279
-	}
276
+    if ( wpinv_is_failed_transaction_page() ) {
277
+        $classes[] = 'wpinv-failed-transaction';
278
+        $classes[] = 'wpinv-page';
279
+    }
280 280
 
281
-	if ( wpinv_is_invoice_history_page() ) {
282
-		$classes[] = 'wpinv-history';
283
-		$classes[] = 'wpinv-page';
284
-	}
281
+    if ( wpinv_is_invoice_history_page() ) {
282
+        $classes[] = 'wpinv-history';
283
+        $classes[] = 'wpinv-page';
284
+    }
285 285
 
286
-	if ( wpinv_is_subscriptions_history_page() ) {
287
-		$classes[] = 'wpinv-subscription';
288
-		$classes[] = 'wpinv-page';
289
-	}
286
+    if ( wpinv_is_subscriptions_history_page() ) {
287
+        $classes[] = 'wpinv-subscription';
288
+        $classes[] = 'wpinv-page';
289
+    }
290 290
 
291
-	if ( wpinv_is_test_mode() ) {
292
-		$classes[] = 'wpinv-test-mode';
293
-		$classes[] = 'wpinv-page';
294
-	}
291
+    if ( wpinv_is_test_mode() ) {
292
+        $classes[] = 'wpinv-test-mode';
293
+        $classes[] = 'wpinv-page';
294
+    }
295 295
 
296
-	return array_unique( $classes );
296
+    return array_unique( $classes );
297 297
 }
298 298
 add_filter( 'body_class', 'wpinv_add_body_classes' );
299 299
 
@@ -458,16 +458,16 @@  discard block
 block discarded – undo
458 458
 
459 459
     wpinv_html_select(
460 460
         array(
461
-			'name'             => $args['name'],
462
-			'selected'         => $args['selected'],
463
-			'id'               => $args['id'],
464
-			'class'            => $args['class'],
465
-			'options'          => $options,
466
-			'multiple'         => $args['multiple'],
467
-			'placeholder'      => $args['placeholder'],
468
-			'show_option_all'  => $args['show_option_all'],
469
-			'show_option_none' => $args['show_option_none'],
470
-			'data'             => $args['data'],
461
+            'name'             => $args['name'],
462
+            'selected'         => $args['selected'],
463
+            'id'               => $args['id'],
464
+            'class'            => $args['class'],
465
+            'options'          => $options,
466
+            'multiple'         => $args['multiple'],
467
+            'placeholder'      => $args['placeholder'],
468
+            'show_option_all'  => $args['show_option_all'],
469
+            'show_option_none' => $args['show_option_none'],
470
+            'data'             => $args['data'],
471 471
         )
472 472
     );
473 473
 
@@ -767,21 +767,21 @@  discard block
 block discarded – undo
767 767
 
768 768
     $formatted_address = str_ireplace( array_keys( $replacements ), $replacements, $format );
769 769
 
770
-	// Remove unavailable tags.
770
+    // Remove unavailable tags.
771 771
     $formatted_address = preg_replace( '/\{\{\w+\}\}/', '', $formatted_address );
772 772
 
773 773
     // Clean up white space.
774
-	$formatted_address = preg_replace( '/  +/', ' ', trim( $formatted_address ) );
774
+    $formatted_address = preg_replace( '/  +/', ' ', trim( $formatted_address ) );
775 775
     $formatted_address = preg_replace( '/\n\n+/', "\n", $formatted_address );
776 776
 
777 777
     // Break newlines apart and remove empty lines/trim commas and white space.
778
-	$formatted_address = array_filter( array_map( 'wpinv_trim_formatted_address_line', explode( "\n", $formatted_address ) ) );
778
+    $formatted_address = array_filter( array_map( 'wpinv_trim_formatted_address_line', explode( "\n", $formatted_address ) ) );
779 779
 
780 780
     // Add html breaks.
781
-	$formatted_address = implode( $separator, $formatted_address );
781
+    $formatted_address = implode( $separator, $formatted_address );
782 782
 
783
-	// We're done!
784
-	return $formatted_address;
783
+    // We're done!
784
+    return $formatted_address;
785 785
 
786 786
 }
787 787
 
@@ -827,7 +827,7 @@  discard block
 block discarded – undo
827 827
 function getpaid_display_invoice_subscriptions( $invoice ) {
828 828
 
829 829
     // Subscriptions.
830
-	$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
830
+    $subscriptions = getpaid_get_invoice_subscriptions( $invoice );
831 831
 
832 832
     if ( empty( $subscriptions ) || ! $invoice->is_recurring() ) {
833 833
         return;
@@ -1039,7 +1039,7 @@  discard block
 block discarded – undo
1039 1039
 }
1040 1040
 
1041 1041
 function wpinv_empty_cart_message() {
1042
-	return apply_filters( 'wpinv_empty_cart_message', '<span class="wpinv_empty_cart">' . __( 'Your cart is empty.', 'invoicing' ) . '</span>' );
1042
+    return apply_filters( 'wpinv_empty_cart_message', '<span class="wpinv_empty_cart">' . __( 'Your cart is empty.', 'invoicing' ) . '</span>' );
1043 1043
 }
1044 1044
 
1045 1045
 /**
@@ -1237,9 +1237,9 @@  discard block
 block discarded – undo
1237 1237
 
1238 1238
     if ( 0 == count( $form->get_items() ) ) {
1239 1239
         aui()->alert(
1240
-			array(
1241
-				'type'    => 'warning',
1242
-				'content' => __( 'No published items found', 'invoicing' ),
1240
+            array(
1241
+                'type'    => 'warning',
1242
+                'content' => __( 'No published items found', 'invoicing' ),
1243 1243
             ),
1244 1244
             true
1245 1245
         );
@@ -1262,10 +1262,10 @@  discard block
 block discarded – undo
1262 1262
     $invoice = wpinv_get_invoice( $invoice_id );
1263 1263
 
1264 1264
     if ( empty( $invoice ) ) {
1265
-		aui()->alert(
1266
-			array(
1267
-				'type'    => 'warning',
1268
-				'content' => __( 'Invoice not found', 'invoicing' ),
1265
+        aui()->alert(
1266
+            array(
1267
+                'type'    => 'warning',
1268
+                'content' => __( 'Invoice not found', 'invoicing' ),
1269 1269
             ),
1270 1270
             true
1271 1271
         );
@@ -1273,10 +1273,10 @@  discard block
 block discarded – undo
1273 1273
     }
1274 1274
 
1275 1275
     if ( $invoice->is_paid() ) {
1276
-		aui()->alert(
1277
-			array(
1278
-				'type'    => 'warning',
1279
-				'content' => __( 'Invoice has already been paid', 'invoicing' ),
1276
+        aui()->alert(
1277
+            array(
1278
+                'type'    => 'warning',
1279
+                'content' => __( 'Invoice has already been paid', 'invoicing' ),
1280 1280
             ),
1281 1281
             true
1282 1282
         );
@@ -1340,7 +1340,7 @@  discard block
 block discarded – undo
1340 1340
         return "<button class='btn btn-primary getpaid-payment-button' type='button' data-form='$form'>$label</button>";
1341 1341
     }
1342 1342
 
1343
-	if ( ! empty( $items ) ) {
1343
+    if ( ! empty( $items ) ) {
1344 1344
         $items  = esc_attr( $items );
1345 1345
         return "<button class='btn btn-primary getpaid-payment-button' type='button' data-item='$items'>$label</button>";
1346 1346
     }
@@ -1526,21 +1526,21 @@  discard block
 block discarded – undo
1526 1526
 
1527 1527
         return aui()->select(
1528 1528
             array(
1529
-				'options'          => $states,
1530
-				'name'             => esc_attr( $field_name ),
1531
-				'id'               => sanitize_html_class( $field_name ) . $uniqid,
1532
-				'value'            => sanitize_text_field( $state ),
1533
-				'placeholder'      => $placeholder,
1534
-				'required'         => $required,
1535
-				'label'            => wp_kses_post( $label ),
1536
-				'label_type'       => 'vertical',
1537
-				'help_text'        => $help_text,
1538
-				'class'            => 'getpaid-address-field wpinv_state',
1539
-				'wrap_class'       => "$wrapper_class getpaid-address-field-wrapper__state",
1540
-				'label_class'      => 'getpaid-address-field-label getpaid-address-field-label__state',
1541
-				'extra_attributes' => array(
1542
-					'autocomplete' => 'address-level1',
1543
-				),
1529
+                'options'          => $states,
1530
+                'name'             => esc_attr( $field_name ),
1531
+                'id'               => sanitize_html_class( $field_name ) . $uniqid,
1532
+                'value'            => sanitize_text_field( $state ),
1533
+                'placeholder'      => $placeholder,
1534
+                'required'         => $required,
1535
+                'label'            => wp_kses_post( $label ),
1536
+                'label_type'       => 'vertical',
1537
+                'help_text'        => $help_text,
1538
+                'class'            => 'getpaid-address-field wpinv_state',
1539
+                'wrap_class'       => "$wrapper_class getpaid-address-field-wrapper__state",
1540
+                'label_class'      => 'getpaid-address-field-label getpaid-address-field-label__state',
1541
+                'extra_attributes' => array(
1542
+                    'autocomplete' => 'address-level1',
1543
+                ),
1544 1544
             ),
1545 1545
             $echo
1546 1546
         );
Please login to merge, or discard this patch.