@@ -39,62 +39,62 @@ discard block |
||
39 | 39 | <td style="width: 65%"> |
40 | 40 | <?php |
41 | 41 | |
42 | - switch ( $key ) { |
|
42 | + switch ( $key ) { |
|
43 | 43 | |
44 | - case 'status': |
|
45 | - echo esc_html( $subscription->get_status_label() ); |
|
46 | - break; |
|
44 | + case 'status': |
|
45 | + echo esc_html( $subscription->get_status_label() ); |
|
46 | + break; |
|
47 | 47 | |
48 | - case 'start_date': |
|
49 | - echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) ); |
|
50 | - break; |
|
48 | + case 'start_date': |
|
49 | + echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) ); |
|
50 | + break; |
|
51 | 51 | |
52 | - case 'expiry_date': |
|
53 | - echo esc_html( getpaid_format_date_value( $subscription->get_next_renewal_date() ) ); |
|
54 | - break; |
|
52 | + case 'expiry_date': |
|
53 | + echo esc_html( getpaid_format_date_value( $subscription->get_next_renewal_date() ) ); |
|
54 | + break; |
|
55 | 55 | |
56 | - case 'initial_amount': |
|
57 | - echo wp_kses_post( wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() ) ); |
|
56 | + case 'initial_amount': |
|
57 | + echo wp_kses_post( wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() ) ); |
|
58 | 58 | |
59 | - if ( $subscription->has_trial_period() ) { |
|
59 | + if ( $subscription->has_trial_period() ) { |
|
60 | 60 | |
61 | - echo "<small class='text-muted'> "; |
|
62 | - printf( |
|
63 | - esc_html_x( '( %1$s trial )', 'Subscription trial period. (e.g.: 1 month trial)', 'invoicing' ), |
|
64 | - esc_html( $subscription->get_trial_period() ) |
|
65 | - ); |
|
66 | - echo '</small>'; |
|
61 | + echo "<small class='text-muted'> "; |
|
62 | + printf( |
|
63 | + esc_html_x( '( %1$s trial )', 'Subscription trial period. (e.g.: 1 month trial)', 'invoicing' ), |
|
64 | + esc_html( $subscription->get_trial_period() ) |
|
65 | + ); |
|
66 | + echo '</small>'; |
|
67 | 67 | |
68 | - } |
|
68 | + } |
|
69 | 69 | |
70 | - break; |
|
70 | + break; |
|
71 | 71 | |
72 | - case 'recurring_amount': |
|
73 | - $frequency = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' ); |
|
74 | - $amount = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() ); |
|
75 | - echo wp_kses_post( strtolower( "<strong style='font-weight: 500;'>$amount</strong> / <span class='getpaid-item-recurring-period'>$frequency</span>" ) ); |
|
76 | - break; |
|
72 | + case 'recurring_amount': |
|
73 | + $frequency = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' ); |
|
74 | + $amount = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() ); |
|
75 | + echo wp_kses_post( strtolower( "<strong style='font-weight: 500;'>$amount</strong> / <span class='getpaid-item-recurring-period'>$frequency</span>" ) ); |
|
76 | + break; |
|
77 | 77 | |
78 | - case 'item': |
|
79 | - if ( empty( $subscription_group ) ) { |
|
80 | - echo wp_kses_post( WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ) ); |
|
81 | - } else { |
|
82 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
83 | - echo wp_kses_post( implode( ' | ', $markup ) ); |
|
84 | - } |
|
78 | + case 'item': |
|
79 | + if ( empty( $subscription_group ) ) { |
|
80 | + echo wp_kses_post( WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ) ); |
|
81 | + } else { |
|
82 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
83 | + echo wp_kses_post( implode( ' | ', $markup ) ); |
|
84 | + } |
|
85 | 85 | |
86 | - break; |
|
86 | + break; |
|
87 | 87 | |
88 | - case 'payments': |
|
89 | - $max_activations = (int) $subscription->get_bill_times(); |
|
90 | - echo ( (int) $subscription->get_times_billed() ) . ' / ' . ( empty( $max_activations ) ? '∞' : (int) $max_activations ); |
|
88 | + case 'payments': |
|
89 | + $max_activations = (int) $subscription->get_bill_times(); |
|
90 | + echo ( (int) $subscription->get_times_billed() ) . ' / ' . ( empty( $max_activations ) ? '∞' : (int) $max_activations ); |
|
91 | 91 | |
92 | - break; |
|
92 | + break; |
|
93 | 93 | |
94 | - } |
|
95 | - do_action( "getpaid_render_single_subscription_column_$key", $subscription ); |
|
94 | + } |
|
95 | + do_action( "getpaid_render_single_subscription_column_$key", $subscription ); |
|
96 | 96 | |
97 | - ?> |
|
97 | + ?> |
|
98 | 98 | </td> |
99 | 99 | |
100 | 100 | </tr> |
@@ -121,17 +121,17 @@ discard block |
||
121 | 121 | <span class="form-text"> |
122 | 122 | |
123 | 123 | <?php |
124 | - if ( $subscription->can_cancel() ) { |
|
125 | - printf( |
|
124 | + if ( $subscription->can_cancel() ) { |
|
125 | + printf( |
|
126 | 126 | '<a href="%s" class="btn btn-danger btn-sm" onclick="return confirm(\'%s\')">%s</a> ', |
127 | 127 | esc_url( $subscription->get_cancel_url() ), |
128 | 128 | esc_attr__( 'Are you sure you want to cancel this subscription?', 'invoicing' ), |
129 | 129 | esc_html__( 'Cancel Subscription', 'invoicing' ) |
130 | 130 | ); |
131 | - } |
|
131 | + } |
|
132 | 132 | |
133 | - do_action( 'getpaid-single-subscription-page-actions', $subscription ); |
|
134 | - ?> |
|
133 | + do_action( 'getpaid-single-subscription-page-actions', $subscription ); |
|
134 | + ?> |
|
135 | 135 | |
136 | 136 | <a href="<?php echo esc_url( getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ) ); ?>" class="btn btn-secondary btn-sm"><?php esc_html_e( 'Go Back', 'invoicing' ); ?></a> |
137 | 137 | </span> |
@@ -8,7 +8,7 @@ discard block |
||
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 | /** |
@@ -16,85 +16,85 @@ discard block |
||
16 | 16 | */ |
17 | 17 | class GetPaid_Meta_Box_Invoice_Address { |
18 | 18 | |
19 | - /** |
|
20 | - * Output the metabox. |
|
21 | - * |
|
22 | - * @param WP_Post $post |
|
23 | - */ |
|
24 | - public static function output( $post ) { |
|
25 | - |
|
26 | - // Prepare the invoice. |
|
27 | - $invoice = new WPInv_Invoice( $post ); |
|
28 | - $customer = $invoice->exists() ? $invoice->get_user_id( 'edit' ) : get_current_user_id(); |
|
29 | - $customer = new WP_User( $customer ); |
|
30 | - $display = sprintf( _x( '%1$s (%2$s)', 'user dropdown', 'invoicing' ), $customer->display_name, $customer->user_email ); |
|
31 | - wp_nonce_field( 'getpaid_meta_nonce', 'getpaid_meta_nonce' ); |
|
32 | - |
|
33 | - // Address fields. |
|
34 | - $address_fields = array( |
|
35 | - 'first_name' => array( |
|
36 | - 'label' => __( 'First Name', 'invoicing' ), |
|
37 | - 'type' => 'text', |
|
38 | - ), |
|
39 | - 'last_name' => array( |
|
40 | - 'label' => __( 'Last Name', 'invoicing' ), |
|
41 | - 'type' => 'text', |
|
42 | - ), |
|
43 | - 'company' => array( |
|
44 | - 'label' => __( 'Company', 'invoicing' ), |
|
45 | - 'type' => 'text', |
|
46 | - 'class' => 'getpaid-recalculate-prices-on-change', |
|
47 | - ), |
|
48 | - 'vat_number' => array( |
|
49 | - 'label' => __( 'VAT Number', 'invoicing' ), |
|
50 | - 'type' => 'text', |
|
51 | - 'class' => 'getpaid-recalculate-prices-on-change', |
|
52 | - ), |
|
53 | - 'address' => array( |
|
54 | - 'label' => __( 'Address', 'invoicing' ), |
|
55 | - 'type' => 'text', |
|
56 | - ), |
|
57 | - 'city' => array( |
|
58 | - 'label' => __( 'City', 'invoicing' ), |
|
59 | - 'type' => 'text', |
|
60 | - ), |
|
61 | - 'country' => array( |
|
62 | - 'label' => __( 'Country', 'invoicing' ), |
|
63 | - 'type' => 'select', |
|
64 | - 'class' => 'getpaid-recalculate-prices-on-change', |
|
65 | - 'options' => wpinv_get_country_list(), |
|
66 | - 'placeholder' => __( 'Choose a country', 'invoicing' ), |
|
67 | - ), |
|
68 | - 'state' => array( |
|
69 | - 'label' => __( 'State', 'invoicing' ), |
|
70 | - 'type' => 'text', |
|
71 | - 'class' => 'getpaid-recalculate-prices-on-change', |
|
72 | - ), |
|
73 | - 'zip' => array( |
|
74 | - 'label' => __( 'Zip', 'invoicing' ), |
|
75 | - 'type' => 'text', |
|
76 | - ), |
|
77 | - 'phone' => array( |
|
78 | - 'label' => __( 'Phone', 'invoicing' ), |
|
79 | - 'type' => 'text', |
|
80 | - ), |
|
81 | - ); |
|
82 | - |
|
83 | - $states = wpinv_get_country_states( $invoice->get_country( 'edit' ) ); |
|
84 | - |
|
85 | - if ( ! empty( $states ) ) { |
|
86 | - $address_fields['state']['type'] = 'select'; |
|
87 | - $address_fields['state']['options'] = $states; |
|
88 | - $address_fields['state']['placeholder'] = __( 'Choose a state', 'invoicing' ); |
|
89 | - } |
|
90 | - |
|
91 | - // Maybe remove the VAT field. |
|
92 | - if ( ! wpinv_use_taxes() ) { |
|
93 | - unset( $address_fields['vat_number'] ); |
|
94 | - } |
|
95 | - |
|
96 | - $address_fields = apply_filters( 'getpaid_admin_edit_invoice_address_fields', $address_fields, $invoice ); |
|
97 | - ?> |
|
19 | + /** |
|
20 | + * Output the metabox. |
|
21 | + * |
|
22 | + * @param WP_Post $post |
|
23 | + */ |
|
24 | + public static function output( $post ) { |
|
25 | + |
|
26 | + // Prepare the invoice. |
|
27 | + $invoice = new WPInv_Invoice( $post ); |
|
28 | + $customer = $invoice->exists() ? $invoice->get_user_id( 'edit' ) : get_current_user_id(); |
|
29 | + $customer = new WP_User( $customer ); |
|
30 | + $display = sprintf( _x( '%1$s (%2$s)', 'user dropdown', 'invoicing' ), $customer->display_name, $customer->user_email ); |
|
31 | + wp_nonce_field( 'getpaid_meta_nonce', 'getpaid_meta_nonce' ); |
|
32 | + |
|
33 | + // Address fields. |
|
34 | + $address_fields = array( |
|
35 | + 'first_name' => array( |
|
36 | + 'label' => __( 'First Name', 'invoicing' ), |
|
37 | + 'type' => 'text', |
|
38 | + ), |
|
39 | + 'last_name' => array( |
|
40 | + 'label' => __( 'Last Name', 'invoicing' ), |
|
41 | + 'type' => 'text', |
|
42 | + ), |
|
43 | + 'company' => array( |
|
44 | + 'label' => __( 'Company', 'invoicing' ), |
|
45 | + 'type' => 'text', |
|
46 | + 'class' => 'getpaid-recalculate-prices-on-change', |
|
47 | + ), |
|
48 | + 'vat_number' => array( |
|
49 | + 'label' => __( 'VAT Number', 'invoicing' ), |
|
50 | + 'type' => 'text', |
|
51 | + 'class' => 'getpaid-recalculate-prices-on-change', |
|
52 | + ), |
|
53 | + 'address' => array( |
|
54 | + 'label' => __( 'Address', 'invoicing' ), |
|
55 | + 'type' => 'text', |
|
56 | + ), |
|
57 | + 'city' => array( |
|
58 | + 'label' => __( 'City', 'invoicing' ), |
|
59 | + 'type' => 'text', |
|
60 | + ), |
|
61 | + 'country' => array( |
|
62 | + 'label' => __( 'Country', 'invoicing' ), |
|
63 | + 'type' => 'select', |
|
64 | + 'class' => 'getpaid-recalculate-prices-on-change', |
|
65 | + 'options' => wpinv_get_country_list(), |
|
66 | + 'placeholder' => __( 'Choose a country', 'invoicing' ), |
|
67 | + ), |
|
68 | + 'state' => array( |
|
69 | + 'label' => __( 'State', 'invoicing' ), |
|
70 | + 'type' => 'text', |
|
71 | + 'class' => 'getpaid-recalculate-prices-on-change', |
|
72 | + ), |
|
73 | + 'zip' => array( |
|
74 | + 'label' => __( 'Zip', 'invoicing' ), |
|
75 | + 'type' => 'text', |
|
76 | + ), |
|
77 | + 'phone' => array( |
|
78 | + 'label' => __( 'Phone', 'invoicing' ), |
|
79 | + 'type' => 'text', |
|
80 | + ), |
|
81 | + ); |
|
82 | + |
|
83 | + $states = wpinv_get_country_states( $invoice->get_country( 'edit' ) ); |
|
84 | + |
|
85 | + if ( ! empty( $states ) ) { |
|
86 | + $address_fields['state']['type'] = 'select'; |
|
87 | + $address_fields['state']['options'] = $states; |
|
88 | + $address_fields['state']['placeholder'] = __( 'Choose a state', 'invoicing' ); |
|
89 | + } |
|
90 | + |
|
91 | + // Maybe remove the VAT field. |
|
92 | + if ( ! wpinv_use_taxes() ) { |
|
93 | + unset( $address_fields['vat_number'] ); |
|
94 | + } |
|
95 | + |
|
96 | + $address_fields = apply_filters( 'getpaid_admin_edit_invoice_address_fields', $address_fields, $invoice ); |
|
97 | + ?> |
|
98 | 98 | |
99 | 99 | <style> |
100 | 100 | #wpinv-address label { |
@@ -119,19 +119,19 @@ discard block |
||
119 | 119 | <div id="getpaid-invoice-email-wrapper" class="d-none"> |
120 | 120 | <input type="hidden" id="getpaid-invoice-create-new-user" name="wpinv_new_user" value="" /> |
121 | 121 | <?php |
122 | - aui()->input( |
|
123 | - array( |
|
124 | - 'type' => 'text', |
|
125 | - 'id' => 'getpaid-invoice-new-user-email', |
|
126 | - 'name' => 'wpinv_email', |
|
127 | - 'label' => __( 'Email', 'invoicing' ) . '<span class="required">*</span>', |
|
128 | - 'label_type' => 'vertical', |
|
129 | - 'placeholder' => '[email protected]', |
|
130 | - 'class' => 'form-control-sm', |
|
131 | - ), |
|
132 | - true |
|
133 | - ); |
|
134 | - ?> |
|
122 | + aui()->input( |
|
123 | + array( |
|
124 | + 'type' => 'text', |
|
125 | + 'id' => 'getpaid-invoice-new-user-email', |
|
126 | + 'name' => 'wpinv_email', |
|
127 | + 'label' => __( 'Email', 'invoicing' ) . '<span class="required">*</span>', |
|
128 | + 'label_type' => 'vertical', |
|
129 | + 'placeholder' => '[email protected]', |
|
130 | + 'class' => 'form-control-sm', |
|
131 | + ), |
|
132 | + true |
|
133 | + ); |
|
134 | + ?> |
|
135 | 135 | </div> |
136 | 136 | </div> |
137 | 137 | <div class="col-12 col-sm-6 form-group mb-3 mt-sm-4"> |
@@ -155,39 +155,39 @@ discard block |
||
155 | 155 | <div class="col-12 col-sm-6 getpaid-invoice-address-field__<?php echo esc_attr( $key ); ?>--wrapper"> |
156 | 156 | <?php |
157 | 157 | |
158 | - if ( 'select' === $field['type'] ) { |
|
159 | - aui()->select( |
|
160 | - array( |
|
161 | - 'id' => 'wpinv_' . $key, |
|
162 | - 'name' => 'wpinv_' . $key, |
|
163 | - 'label' => $field['label'], |
|
164 | - 'label_type' => 'vertical', |
|
165 | - 'placeholder' => isset( $field['placeholder'] ) ? $field['placeholder'] : '', |
|
166 | - 'class' => 'form-control-sm ' . ( isset( $field['class'] ) ? $field['class'] : '' ), |
|
167 | - 'value' => $invoice->get( $key, 'edit' ), |
|
168 | - 'options' => $field['options'], |
|
169 | - 'data-allow-clear' => 'false', |
|
170 | - 'select2' => true, |
|
171 | - ), |
|
172 | - true |
|
173 | - ); |
|
174 | - } else { |
|
175 | - aui()->input( |
|
176 | - array( |
|
177 | - 'type' => $field['type'], |
|
178 | - 'id' => 'wpinv_' . $key, |
|
179 | - 'name' => 'wpinv_' . $key, |
|
180 | - 'label' => $field['label'], |
|
181 | - 'label_type' => 'vertical', |
|
182 | - 'placeholder' => isset( $field['placeholder'] ) ? $field['placeholder'] : '', |
|
183 | - 'class' => 'form-control-sm ' . ( isset( $field['class'] ) ? $field['class'] : '' ), |
|
184 | - 'value' => $invoice->get( $key, 'edit' ), |
|
185 | - ), |
|
186 | - true |
|
187 | - ); |
|
188 | - } |
|
189 | - |
|
190 | - ?> |
|
158 | + if ( 'select' === $field['type'] ) { |
|
159 | + aui()->select( |
|
160 | + array( |
|
161 | + 'id' => 'wpinv_' . $key, |
|
162 | + 'name' => 'wpinv_' . $key, |
|
163 | + 'label' => $field['label'], |
|
164 | + 'label_type' => 'vertical', |
|
165 | + 'placeholder' => isset( $field['placeholder'] ) ? $field['placeholder'] : '', |
|
166 | + 'class' => 'form-control-sm ' . ( isset( $field['class'] ) ? $field['class'] : '' ), |
|
167 | + 'value' => $invoice->get( $key, 'edit' ), |
|
168 | + 'options' => $field['options'], |
|
169 | + 'data-allow-clear' => 'false', |
|
170 | + 'select2' => true, |
|
171 | + ), |
|
172 | + true |
|
173 | + ); |
|
174 | + } else { |
|
175 | + aui()->input( |
|
176 | + array( |
|
177 | + 'type' => $field['type'], |
|
178 | + 'id' => 'wpinv_' . $key, |
|
179 | + 'name' => 'wpinv_' . $key, |
|
180 | + 'label' => $field['label'], |
|
181 | + 'label_type' => 'vertical', |
|
182 | + 'placeholder' => isset( $field['placeholder'] ) ? $field['placeholder'] : '', |
|
183 | + 'class' => 'form-control-sm ' . ( isset( $field['class'] ) ? $field['class'] : '' ), |
|
184 | + 'value' => $invoice->get( $key, 'edit' ), |
|
185 | + ), |
|
186 | + true |
|
187 | + ); |
|
188 | + } |
|
189 | + |
|
190 | + ?> |
|
191 | 191 | </div> |
192 | 192 | <?php endforeach; ?> |
193 | 193 | </div> |
@@ -198,48 +198,48 @@ discard block |
||
198 | 198 | <div class="row"> |
199 | 199 | <div class="col-12 col-sm-6"> |
200 | 200 | <?php |
201 | - aui()->select( |
|
202 | - array( |
|
203 | - 'id' => 'wpinv_template', |
|
204 | - 'name' => 'wpinv_template', |
|
205 | - 'label' => __( 'Template', 'invoicing' ), |
|
206 | - 'label_type' => 'vertical', |
|
207 | - 'placeholder' => __( 'Choose a template', 'invoicing' ), |
|
208 | - 'class' => 'form-control-sm', |
|
209 | - 'value' => $invoice->get_template( 'edit' ), |
|
210 | - 'options' => array( |
|
211 | - 'quantity' => __( 'Quantity', 'invoicing' ), |
|
212 | - 'hours' => __( 'Hours', 'invoicing' ), |
|
213 | - ), |
|
214 | - 'data-allow-clear' => 'false', |
|
215 | - 'select2' => true, |
|
216 | - ), |
|
217 | - true |
|
218 | - ); |
|
219 | - ?> |
|
201 | + aui()->select( |
|
202 | + array( |
|
203 | + 'id' => 'wpinv_template', |
|
204 | + 'name' => 'wpinv_template', |
|
205 | + 'label' => __( 'Template', 'invoicing' ), |
|
206 | + 'label_type' => 'vertical', |
|
207 | + 'placeholder' => __( 'Choose a template', 'invoicing' ), |
|
208 | + 'class' => 'form-control-sm', |
|
209 | + 'value' => $invoice->get_template( 'edit' ), |
|
210 | + 'options' => array( |
|
211 | + 'quantity' => __( 'Quantity', 'invoicing' ), |
|
212 | + 'hours' => __( 'Hours', 'invoicing' ), |
|
213 | + ), |
|
214 | + 'data-allow-clear' => 'false', |
|
215 | + 'select2' => true, |
|
216 | + ), |
|
217 | + true |
|
218 | + ); |
|
219 | + ?> |
|
220 | 220 | </div> |
221 | 221 | <div class="col-12 col-sm-6"> |
222 | 222 | <?php |
223 | 223 | |
224 | - // Set currency. |
|
225 | - aui()->select( |
|
226 | - array( |
|
227 | - 'id' => 'wpinv_currency', |
|
228 | - 'name' => 'wpinv_currency', |
|
229 | - 'label' => __( 'Currency', 'invoicing' ), |
|
230 | - 'label_type' => 'vertical', |
|
231 | - 'placeholder' => __( 'Select Invoice Currency', 'invoicing' ), |
|
232 | - 'class' => 'form-control-sm getpaid-recalculate-prices-on-change', |
|
233 | - 'value' => $invoice->get_currency( 'edit' ), |
|
234 | - 'required' => false, |
|
235 | - 'data-allow-clear' => 'false', |
|
236 | - 'select2' => true, |
|
237 | - 'options' => wpinv_get_currencies(), |
|
238 | - ), |
|
239 | - true |
|
240 | - ); |
|
241 | - |
|
242 | - ?> |
|
224 | + // Set currency. |
|
225 | + aui()->select( |
|
226 | + array( |
|
227 | + 'id' => 'wpinv_currency', |
|
228 | + 'name' => 'wpinv_currency', |
|
229 | + 'label' => __( 'Currency', 'invoicing' ), |
|
230 | + 'label_type' => 'vertical', |
|
231 | + 'placeholder' => __( 'Select Invoice Currency', 'invoicing' ), |
|
232 | + 'class' => 'form-control-sm getpaid-recalculate-prices-on-change', |
|
233 | + 'value' => $invoice->get_currency( 'edit' ), |
|
234 | + 'required' => false, |
|
235 | + 'data-allow-clear' => 'false', |
|
236 | + 'select2' => true, |
|
237 | + 'options' => wpinv_get_currencies(), |
|
238 | + ), |
|
239 | + true |
|
240 | + ); |
|
241 | + |
|
242 | + ?> |
|
243 | 243 | </div> |
244 | 244 | </div> |
245 | 245 | |
@@ -249,123 +249,123 @@ discard block |
||
249 | 249 | <div class="row"> |
250 | 250 | <div class="col-12 col-sm-6"> |
251 | 251 | <?php |
252 | - aui()->input( |
|
253 | - array( |
|
254 | - 'type' => 'text', |
|
255 | - 'id' => 'wpinv_company_id', |
|
256 | - 'name' => 'wpinv_company_id', |
|
257 | - 'label' => __( 'Company ID', 'invoicing' ), |
|
258 | - 'label_type' => 'vertical', |
|
259 | - 'placeholder' => '', |
|
260 | - 'class' => 'form-control-sm', |
|
261 | - 'value' => $invoice->get_company_id( 'edit' ), |
|
262 | - ), |
|
263 | - true |
|
264 | - ); |
|
265 | - ?> |
|
252 | + aui()->input( |
|
253 | + array( |
|
254 | + 'type' => 'text', |
|
255 | + 'id' => 'wpinv_company_id', |
|
256 | + 'name' => 'wpinv_company_id', |
|
257 | + 'label' => __( 'Company ID', 'invoicing' ), |
|
258 | + 'label_type' => 'vertical', |
|
259 | + 'placeholder' => '', |
|
260 | + 'class' => 'form-control-sm', |
|
261 | + 'value' => $invoice->get_company_id( 'edit' ), |
|
262 | + ), |
|
263 | + true |
|
264 | + ); |
|
265 | + ?> |
|
266 | 266 | </div> |
267 | 267 | </div> |
268 | 268 | |
269 | 269 | <?php do_action( 'getpaid_after_metabox_invoice_address', $invoice ); ?> |
270 | 270 | </div> |
271 | 271 | <?php |
272 | - } |
|
273 | - |
|
274 | - /** |
|
275 | - * Save meta box data. |
|
276 | - * |
|
277 | - * @param int $post_id |
|
278 | - * @param array $posted the posted data. |
|
279 | - */ |
|
280 | - public static function save( $post_id, $posted ) { |
|
281 | - |
|
282 | - // Prepare the invoice. |
|
283 | - $invoice = new WPInv_Invoice( $post_id ); |
|
284 | - |
|
285 | - // Load new data. |
|
286 | - $invoice->set_props( |
|
287 | - array( |
|
288 | - 'template' => isset( $posted['wpinv_template'] ) ? wpinv_clean( $posted['wpinv_template'] ) : null, |
|
289 | - 'email_cc' => isset( $posted['wpinv_cc'] ) ? wpinv_clean( $posted['wpinv_cc'] ) : null, |
|
290 | - 'disable_taxes' => ! empty( $posted['disable_taxes'] ), |
|
291 | - 'currency' => isset( $posted['wpinv_currency'] ) ? wpinv_clean( $posted['wpinv_currency'] ) : null, |
|
292 | - 'gateway' => ( $invoice->needs_payment() && isset( $posted['wpinv_gateway'] ) ) ? wpinv_clean( $posted['wpinv_gateway'] ) : null, |
|
293 | - 'address' => isset( $posted['wpinv_address'] ) ? wpinv_clean( $posted['wpinv_address'] ) : null, |
|
294 | - 'vat_number' => isset( $posted['wpinv_vat_number'] ) ? wpinv_clean( $posted['wpinv_vat_number'] ) : null, |
|
295 | - 'company' => isset( $posted['wpinv_company'] ) ? wpinv_clean( $posted['wpinv_company'] ) : null, |
|
296 | - 'company_id' => isset( $posted['wpinv_company_id'] ) ? wpinv_clean( $posted['wpinv_company_id'] ) : null, |
|
297 | - 'zip' => isset( $posted['wpinv_zip'] ) ? wpinv_clean( $posted['wpinv_zip'] ) : null, |
|
298 | - 'state' => isset( $posted['wpinv_state'] ) ? wpinv_clean( $posted['wpinv_state'] ) : null, |
|
299 | - 'city' => isset( $posted['wpinv_city'] ) ? wpinv_clean( $posted['wpinv_city'] ) : null, |
|
300 | - 'country' => isset( $posted['wpinv_country'] ) ? wpinv_clean( $posted['wpinv_country'] ) : null, |
|
301 | - 'phone' => isset( $posted['wpinv_phone'] ) ? wpinv_clean( $posted['wpinv_phone'] ) : null, |
|
302 | - 'first_name' => isset( $posted['wpinv_first_name'] ) ? wpinv_clean( $posted['wpinv_first_name'] ) : null, |
|
303 | - 'last_name' => isset( $posted['wpinv_last_name'] ) ? wpinv_clean( $posted['wpinv_last_name'] ) : null, |
|
304 | - 'author' => isset( $posted['post_author_override'] ) ? wpinv_clean( $posted['post_author_override'] ) : null, |
|
305 | - 'date_created' => isset( $posted['date_created'] ) ? wpinv_clean( $posted['date_created'] ) : null, |
|
306 | - 'date_completed' => isset( $posted['wpinv_date_completed'] ) ? wpinv_clean( $posted['wpinv_date_completed'] ) : null, |
|
307 | - 'due_date' => isset( $posted['wpinv_due_date'] ) ? wpinv_clean( $posted['wpinv_due_date'] ) : null, |
|
308 | - 'number' => isset( $posted['wpinv_number'] ) ? wpinv_clean( $posted['wpinv_number'] ) : null, |
|
309 | - 'status' => isset( $posted['wpinv_status'] ) ? wpinv_clean( $posted['wpinv_status'] ) : null, |
|
310 | - ) |
|
311 | - ); |
|
312 | - |
|
313 | - // Discount code. |
|
314 | - if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) { |
|
315 | - |
|
316 | - if ( isset( $posted['wpinv_discount_code'] ) ) { |
|
317 | - $invoice->set_discount_code( wpinv_clean( $posted['wpinv_discount_code'] ) ); |
|
318 | - } |
|
319 | - |
|
320 | - $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
321 | - if ( $discount->exists() ) { |
|
322 | - $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
323 | - } else { |
|
324 | - $invoice->remove_discount( 'discount_code' ); |
|
325 | - } |
|
326 | - |
|
327 | - // Recalculate totals. |
|
328 | - $invoice->recalculate_total(); |
|
329 | - |
|
330 | - } |
|
331 | - |
|
332 | - // If we're creating a new user... |
|
333 | - if ( ! empty( $posted['wpinv_new_user'] ) && is_email( stripslashes( $posted['wpinv_email'] ) ) ) { |
|
334 | - |
|
335 | - // Attempt to create the user. |
|
336 | - $user = wpinv_create_user( sanitize_email( stripslashes( $posted['wpinv_email'] ) ), $invoice->get_first_name() . $invoice->get_last_name() ); |
|
337 | - |
|
338 | - // If successful, update the invoice author. |
|
339 | - if ( is_numeric( $user ) ) { |
|
340 | - $invoice->set_author( $user ); |
|
341 | - } else { |
|
342 | - wpinv_error_log( $user->get_error_message(), __( 'Invoice add new user', 'invoicing' ), __FILE__, __LINE__ ); |
|
343 | - } |
|
344 | - } |
|
345 | - |
|
346 | - // Do not send new invoice notifications. |
|
347 | - $GLOBALS['wpinv_skip_invoice_notification'] = true; |
|
348 | - |
|
349 | - // Save the invoice. |
|
350 | - $invoice->save(); |
|
351 | - |
|
352 | - // Save the user address. |
|
353 | - getpaid_save_invoice_user_address( $invoice ); |
|
354 | - |
|
355 | - // Undo do not send new invoice notifications. |
|
356 | - $GLOBALS['wpinv_skip_invoice_notification'] = false; |
|
357 | - |
|
358 | - // (Maybe) send new user notification. |
|
359 | - $should_send_notification = wpinv_get_option( 'disable_new_user_emails' ); |
|
360 | - if ( ! empty( $user ) && is_numeric( $user ) && apply_filters( 'getpaid_send_new_user_notification', empty( $should_send_notification ) ) ) { |
|
361 | - wp_send_new_user_notifications( $user, 'user' ); |
|
362 | - } |
|
363 | - |
|
364 | - if ( ! empty( $posted['send_to_customer'] ) && ! $invoice->is_draft() ) { |
|
365 | - getpaid()->get( 'invoice_emails' )->user_invoice( $invoice, true ); |
|
366 | - } |
|
367 | - |
|
368 | - // Fires after an invoice is saved. |
|
369 | - do_action( 'wpinv_invoice_metabox_saved', $invoice ); |
|
370 | - } |
|
272 | + } |
|
273 | + |
|
274 | + /** |
|
275 | + * Save meta box data. |
|
276 | + * |
|
277 | + * @param int $post_id |
|
278 | + * @param array $posted the posted data. |
|
279 | + */ |
|
280 | + public static function save( $post_id, $posted ) { |
|
281 | + |
|
282 | + // Prepare the invoice. |
|
283 | + $invoice = new WPInv_Invoice( $post_id ); |
|
284 | + |
|
285 | + // Load new data. |
|
286 | + $invoice->set_props( |
|
287 | + array( |
|
288 | + 'template' => isset( $posted['wpinv_template'] ) ? wpinv_clean( $posted['wpinv_template'] ) : null, |
|
289 | + 'email_cc' => isset( $posted['wpinv_cc'] ) ? wpinv_clean( $posted['wpinv_cc'] ) : null, |
|
290 | + 'disable_taxes' => ! empty( $posted['disable_taxes'] ), |
|
291 | + 'currency' => isset( $posted['wpinv_currency'] ) ? wpinv_clean( $posted['wpinv_currency'] ) : null, |
|
292 | + 'gateway' => ( $invoice->needs_payment() && isset( $posted['wpinv_gateway'] ) ) ? wpinv_clean( $posted['wpinv_gateway'] ) : null, |
|
293 | + 'address' => isset( $posted['wpinv_address'] ) ? wpinv_clean( $posted['wpinv_address'] ) : null, |
|
294 | + 'vat_number' => isset( $posted['wpinv_vat_number'] ) ? wpinv_clean( $posted['wpinv_vat_number'] ) : null, |
|
295 | + 'company' => isset( $posted['wpinv_company'] ) ? wpinv_clean( $posted['wpinv_company'] ) : null, |
|
296 | + 'company_id' => isset( $posted['wpinv_company_id'] ) ? wpinv_clean( $posted['wpinv_company_id'] ) : null, |
|
297 | + 'zip' => isset( $posted['wpinv_zip'] ) ? wpinv_clean( $posted['wpinv_zip'] ) : null, |
|
298 | + 'state' => isset( $posted['wpinv_state'] ) ? wpinv_clean( $posted['wpinv_state'] ) : null, |
|
299 | + 'city' => isset( $posted['wpinv_city'] ) ? wpinv_clean( $posted['wpinv_city'] ) : null, |
|
300 | + 'country' => isset( $posted['wpinv_country'] ) ? wpinv_clean( $posted['wpinv_country'] ) : null, |
|
301 | + 'phone' => isset( $posted['wpinv_phone'] ) ? wpinv_clean( $posted['wpinv_phone'] ) : null, |
|
302 | + 'first_name' => isset( $posted['wpinv_first_name'] ) ? wpinv_clean( $posted['wpinv_first_name'] ) : null, |
|
303 | + 'last_name' => isset( $posted['wpinv_last_name'] ) ? wpinv_clean( $posted['wpinv_last_name'] ) : null, |
|
304 | + 'author' => isset( $posted['post_author_override'] ) ? wpinv_clean( $posted['post_author_override'] ) : null, |
|
305 | + 'date_created' => isset( $posted['date_created'] ) ? wpinv_clean( $posted['date_created'] ) : null, |
|
306 | + 'date_completed' => isset( $posted['wpinv_date_completed'] ) ? wpinv_clean( $posted['wpinv_date_completed'] ) : null, |
|
307 | + 'due_date' => isset( $posted['wpinv_due_date'] ) ? wpinv_clean( $posted['wpinv_due_date'] ) : null, |
|
308 | + 'number' => isset( $posted['wpinv_number'] ) ? wpinv_clean( $posted['wpinv_number'] ) : null, |
|
309 | + 'status' => isset( $posted['wpinv_status'] ) ? wpinv_clean( $posted['wpinv_status'] ) : null, |
|
310 | + ) |
|
311 | + ); |
|
312 | + |
|
313 | + // Discount code. |
|
314 | + if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) { |
|
315 | + |
|
316 | + if ( isset( $posted['wpinv_discount_code'] ) ) { |
|
317 | + $invoice->set_discount_code( wpinv_clean( $posted['wpinv_discount_code'] ) ); |
|
318 | + } |
|
319 | + |
|
320 | + $discount = new WPInv_Discount( $invoice->get_discount_code() ); |
|
321 | + if ( $discount->exists() ) { |
|
322 | + $invoice->add_discount( getpaid_calculate_invoice_discount( $invoice, $discount ) ); |
|
323 | + } else { |
|
324 | + $invoice->remove_discount( 'discount_code' ); |
|
325 | + } |
|
326 | + |
|
327 | + // Recalculate totals. |
|
328 | + $invoice->recalculate_total(); |
|
329 | + |
|
330 | + } |
|
331 | + |
|
332 | + // If we're creating a new user... |
|
333 | + if ( ! empty( $posted['wpinv_new_user'] ) && is_email( stripslashes( $posted['wpinv_email'] ) ) ) { |
|
334 | + |
|
335 | + // Attempt to create the user. |
|
336 | + $user = wpinv_create_user( sanitize_email( stripslashes( $posted['wpinv_email'] ) ), $invoice->get_first_name() . $invoice->get_last_name() ); |
|
337 | + |
|
338 | + // If successful, update the invoice author. |
|
339 | + if ( is_numeric( $user ) ) { |
|
340 | + $invoice->set_author( $user ); |
|
341 | + } else { |
|
342 | + wpinv_error_log( $user->get_error_message(), __( 'Invoice add new user', 'invoicing' ), __FILE__, __LINE__ ); |
|
343 | + } |
|
344 | + } |
|
345 | + |
|
346 | + // Do not send new invoice notifications. |
|
347 | + $GLOBALS['wpinv_skip_invoice_notification'] = true; |
|
348 | + |
|
349 | + // Save the invoice. |
|
350 | + $invoice->save(); |
|
351 | + |
|
352 | + // Save the user address. |
|
353 | + getpaid_save_invoice_user_address( $invoice ); |
|
354 | + |
|
355 | + // Undo do not send new invoice notifications. |
|
356 | + $GLOBALS['wpinv_skip_invoice_notification'] = false; |
|
357 | + |
|
358 | + // (Maybe) send new user notification. |
|
359 | + $should_send_notification = wpinv_get_option( 'disable_new_user_emails' ); |
|
360 | + if ( ! empty( $user ) && is_numeric( $user ) && apply_filters( 'getpaid_send_new_user_notification', empty( $should_send_notification ) ) ) { |
|
361 | + wp_send_new_user_notifications( $user, 'user' ); |
|
362 | + } |
|
363 | + |
|
364 | + if ( ! empty( $posted['send_to_customer'] ) && ! $invoice->is_draft() ) { |
|
365 | + getpaid()->get( 'invoice_emails' )->user_invoice( $invoice, true ); |
|
366 | + } |
|
367 | + |
|
368 | + // Fires after an invoice is saved. |
|
369 | + do_action( 'wpinv_invoice_metabox_saved', $invoice ); |
|
370 | + } |
|
371 | 371 | } |
@@ -14,7 +14,7 @@ discard block |
||
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 |
||
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 |
||
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 |
||
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,49 +157,49 @@ discard block |
||
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' => __( 'Collected 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 | - } elseif ( $sub->is_last_renewal() ) { |
|
191 | - |
|
192 | - if ( isset( $fields['renews_on'] ) ) { |
|
193 | - $fields['renews_on'] = __( 'End Date', 'invoicing' ); |
|
194 | - } |
|
195 | - } |
|
196 | - |
|
197 | - $profile_id = $sub->get_profile_id(); |
|
198 | - if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) { |
|
199 | - unset( $fields['profile_id'] ); |
|
200 | - } |
|
201 | - |
|
202 | - ?> |
|
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' => __( 'Collected 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 | + } elseif ( $sub->is_last_renewal() ) { |
|
191 | + |
|
192 | + if ( isset( $fields['renews_on'] ) ) { |
|
193 | + $fields['renews_on'] = __( 'End Date', 'invoicing' ); |
|
194 | + } |
|
195 | + } |
|
196 | + |
|
197 | + $profile_id = $sub->get_profile_id(); |
|
198 | + if ( empty( $profile_id ) && isset( $fields['profile_id'] ) ) { |
|
199 | + unset( $fields['profile_id'] ); |
|
200 | + } |
|
201 | + |
|
202 | + ?> |
|
203 | 203 | |
204 | 204 | <table class="table table-borderless" style="font-size: 14px;"> |
205 | 205 | <tbody> |
@@ -233,20 +233,20 @@ discard block |
||
233 | 233 | */ |
234 | 234 | function getpaid_admin_subscription_metabox_display_customer( $subscription ) { |
235 | 235 | |
236 | - $username = __( '(Missing User)', 'invoicing' ); |
|
236 | + $username = __( '(Missing User)', 'invoicing' ); |
|
237 | 237 | |
238 | - $user = get_userdata( $subscription->get_customer_id() ); |
|
239 | - if ( $user ) { |
|
238 | + $user = get_userdata( $subscription->get_customer_id() ); |
|
239 | + if ( $user ) { |
|
240 | 240 | |
241 | - $username = sprintf( |
|
242 | - '<a href="user-edit.php?user_id=%s">%s</a>', |
|
243 | - absint( $user->ID ), |
|
244 | - ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
245 | - ); |
|
241 | + $username = sprintf( |
|
242 | + '<a href="user-edit.php?user_id=%s">%s</a>', |
|
243 | + absint( $user->ID ), |
|
244 | + ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
245 | + ); |
|
246 | 246 | |
247 | - } |
|
247 | + } |
|
248 | 248 | |
249 | - echo wp_kses_post( $username ); |
|
249 | + echo wp_kses_post( $username ); |
|
250 | 250 | } |
251 | 251 | add_action( 'getpaid_subscription_admin_display_customer', 'getpaid_admin_subscription_metabox_display_customer' ); |
252 | 252 | |
@@ -256,8 +256,8 @@ discard block |
||
256 | 256 | * @param WPInv_Subscription $subscription |
257 | 257 | */ |
258 | 258 | function getpaid_admin_subscription_metabox_display_amount( $subscription ) { |
259 | - $amount = getpaid_get_formatted_subscription_amount( $subscription ); |
|
260 | - echo wp_kses_post( "<span>$amount</span>" ); |
|
259 | + $amount = getpaid_get_formatted_subscription_amount( $subscription ); |
|
260 | + echo wp_kses_post( "<span>$amount</span>" ); |
|
261 | 261 | } |
262 | 262 | add_action( 'getpaid_subscription_admin_display_amount', 'getpaid_admin_subscription_metabox_display_amount' ); |
263 | 263 | |
@@ -268,11 +268,11 @@ discard block |
||
268 | 268 | */ |
269 | 269 | function getpaid_admin_subscription_metabox_display_id( $subscription ) { |
270 | 270 | |
271 | - printf( |
|
272 | - '<a href="%s">#%s</a>', |
|
273 | - esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $subscription->get_id() ) ) ), |
|
274 | - absint( $subscription->get_id() ) |
|
275 | - ); |
|
271 | + printf( |
|
272 | + '<a href="%s">#%s</a>', |
|
273 | + esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $subscription->get_id() ) ) ), |
|
274 | + absint( $subscription->get_id() ) |
|
275 | + ); |
|
276 | 276 | |
277 | 277 | } |
278 | 278 | add_action( 'getpaid_subscription_admin_display_subscription', 'getpaid_admin_subscription_metabox_display_id' ); |
@@ -284,24 +284,24 @@ discard block |
||
284 | 284 | */ |
285 | 285 | function getpaid_admin_subscription_metabox_display_start_date( $subscription ) { |
286 | 286 | |
287 | - if ( $subscription->has_status( 'active trialling' ) && getpaid_payment_gateway_supports( $subscription->get_gateway(), 'subscription_date_change' ) ) { |
|
288 | - aui()->input( |
|
289 | - array( |
|
290 | - 'type' => 'text', |
|
291 | - 'id' => 'wpinv_subscription_date_created', |
|
292 | - 'name' => 'wpinv_subscription_date_created', |
|
293 | - 'label' => __( 'Start Date', 'invoicing' ), |
|
294 | - 'label_type' => 'hidden', |
|
295 | - 'placeholder' => 'YYYY-MM-DD', |
|
296 | - 'value' => esc_attr( $subscription->get_date_created( 'edit' ) ), |
|
297 | - 'no_wrap' => true, |
|
298 | - 'size' => 'sm', |
|
299 | - ), |
|
300 | - true |
|
301 | - ); |
|
302 | - } else { |
|
303 | - echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) ); |
|
304 | - } |
|
287 | + if ( $subscription->has_status( 'active trialling' ) && getpaid_payment_gateway_supports( $subscription->get_gateway(), 'subscription_date_change' ) ) { |
|
288 | + aui()->input( |
|
289 | + array( |
|
290 | + 'type' => 'text', |
|
291 | + 'id' => 'wpinv_subscription_date_created', |
|
292 | + 'name' => 'wpinv_subscription_date_created', |
|
293 | + 'label' => __( 'Start Date', 'invoicing' ), |
|
294 | + 'label_type' => 'hidden', |
|
295 | + 'placeholder' => 'YYYY-MM-DD', |
|
296 | + 'value' => esc_attr( $subscription->get_date_created( 'edit' ) ), |
|
297 | + 'no_wrap' => true, |
|
298 | + 'size' => 'sm', |
|
299 | + ), |
|
300 | + true |
|
301 | + ); |
|
302 | + } else { |
|
303 | + echo esc_html( getpaid_format_date_value( $subscription->get_date_created() ) ); |
|
304 | + } |
|
305 | 305 | |
306 | 306 | } |
307 | 307 | add_action( 'getpaid_subscription_admin_display_start_date', 'getpaid_admin_subscription_metabox_display_start_date' ); |
@@ -313,24 +313,24 @@ discard block |
||
313 | 313 | */ |
314 | 314 | function getpaid_admin_subscription_metabox_display_renews_on( $subscription ) { |
315 | 315 | |
316 | - if ( $subscription->has_status( 'active trialling' ) && getpaid_payment_gateway_supports( $subscription->get_gateway(), 'subscription_date_change' ) ) { |
|
317 | - aui()->input( |
|
318 | - array( |
|
319 | - 'type' => 'text', |
|
320 | - 'id' => 'wpinv_subscription_expiration', |
|
321 | - 'name' => 'wpinv_subscription_expiration', |
|
322 | - 'label' => __( 'Renews On', 'invoicing' ), |
|
323 | - 'label_type' => 'hidden', |
|
324 | - 'placeholder' => 'YYYY-MM-DD', |
|
325 | - 'value' => esc_attr( $subscription->get_expiration( 'edit' ) ), |
|
326 | - 'no_wrap' => true, |
|
327 | - 'size' => 'sm', |
|
328 | - ), |
|
329 | - true |
|
330 | - ); |
|
331 | - } else { |
|
332 | - echo esc_html( getpaid_format_date_value( $subscription->get_expiration() ) ); |
|
333 | - } |
|
316 | + if ( $subscription->has_status( 'active trialling' ) && getpaid_payment_gateway_supports( $subscription->get_gateway(), 'subscription_date_change' ) ) { |
|
317 | + aui()->input( |
|
318 | + array( |
|
319 | + 'type' => 'text', |
|
320 | + 'id' => 'wpinv_subscription_expiration', |
|
321 | + 'name' => 'wpinv_subscription_expiration', |
|
322 | + 'label' => __( 'Renews On', 'invoicing' ), |
|
323 | + 'label_type' => 'hidden', |
|
324 | + 'placeholder' => 'YYYY-MM-DD', |
|
325 | + 'value' => esc_attr( $subscription->get_expiration( 'edit' ) ), |
|
326 | + 'no_wrap' => true, |
|
327 | + 'size' => 'sm', |
|
328 | + ), |
|
329 | + true |
|
330 | + ); |
|
331 | + } else { |
|
332 | + echo esc_html( getpaid_format_date_value( $subscription->get_expiration() ) ); |
|
333 | + } |
|
334 | 334 | } |
335 | 335 | add_action( 'getpaid_subscription_admin_display_renews_on', 'getpaid_admin_subscription_metabox_display_renews_on' ); |
336 | 336 | |
@@ -341,32 +341,32 @@ discard block |
||
341 | 341 | */ |
342 | 342 | function getpaid_admin_subscription_metabox_display_renewals( $subscription ) { |
343 | 343 | |
344 | - $max_bills = $subscription->get_bill_times(); |
|
345 | - $times_billed = (int) $subscription->get_times_billed(); |
|
346 | - |
|
347 | - if ( $subscription->has_status( 'active trialling' ) && getpaid_payment_gateway_supports( $subscription->get_gateway(), 'subscription_bill_times_change' ) ) { |
|
348 | - aui()->input( |
|
349 | - array( |
|
350 | - 'type' => 'number', |
|
351 | - 'id' => 'wpinv_subscription_max_bill_times', |
|
352 | - 'name' => 'wpinv_subscription_max_bill_times', |
|
353 | - 'label' => __( 'Maximum bill times', 'invoicing' ), |
|
354 | - 'label_type' => 'hidden', |
|
355 | - 'placeholder' => __( 'Unlimited', 'invoicing' ), |
|
356 | - 'value' => empty( $max_bills ) ? '' : (int) $max_bills, |
|
357 | - 'no_wrap' => true, |
|
358 | - 'size' => 'sm', |
|
359 | - 'input_group_left' => sprintf( |
|
360 | - // translators: %d: Number of times billed |
|
361 | - __( '%d of', 'invoicing' ), |
|
362 | - $times_billed |
|
363 | - ), |
|
364 | - ), |
|
365 | - true |
|
366 | - ); |
|
367 | - } else { |
|
368 | - echo esc_html( $times_billed ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
369 | - } |
|
344 | + $max_bills = $subscription->get_bill_times(); |
|
345 | + $times_billed = (int) $subscription->get_times_billed(); |
|
346 | + |
|
347 | + if ( $subscription->has_status( 'active trialling' ) && getpaid_payment_gateway_supports( $subscription->get_gateway(), 'subscription_bill_times_change' ) ) { |
|
348 | + aui()->input( |
|
349 | + array( |
|
350 | + 'type' => 'number', |
|
351 | + 'id' => 'wpinv_subscription_max_bill_times', |
|
352 | + 'name' => 'wpinv_subscription_max_bill_times', |
|
353 | + 'label' => __( 'Maximum bill times', 'invoicing' ), |
|
354 | + 'label_type' => 'hidden', |
|
355 | + 'placeholder' => __( 'Unlimited', 'invoicing' ), |
|
356 | + 'value' => empty( $max_bills ) ? '' : (int) $max_bills, |
|
357 | + 'no_wrap' => true, |
|
358 | + 'size' => 'sm', |
|
359 | + 'input_group_left' => sprintf( |
|
360 | + // translators: %d: Number of times billed |
|
361 | + __( '%d of', 'invoicing' ), |
|
362 | + $times_billed |
|
363 | + ), |
|
364 | + ), |
|
365 | + true |
|
366 | + ); |
|
367 | + } else { |
|
368 | + echo esc_html( $times_billed ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
369 | + } |
|
370 | 370 | } |
371 | 371 | add_action( 'getpaid_subscription_admin_display_renewals', 'getpaid_admin_subscription_metabox_display_renewals' ); |
372 | 372 | |
@@ -378,13 +378,13 @@ discard block |
||
378 | 378 | */ |
379 | 379 | function getpaid_admin_subscription_metabox_display_item( $subscription, $subscription_group = false ) { |
380 | 380 | |
381 | - if ( empty( $subscription_group ) ) { |
|
382 | - echo wp_kses_post( WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ) ); |
|
383 | - return; |
|
384 | - } |
|
381 | + if ( empty( $subscription_group ) ) { |
|
382 | + echo wp_kses_post( WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() ) ); |
|
383 | + return; |
|
384 | + } |
|
385 | 385 | |
386 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
387 | - echo wp_kses_post( implode( ' | ', $markup ) ); |
|
386 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
387 | + echo wp_kses_post( implode( ' | ', $markup ) ); |
|
388 | 388 | |
389 | 389 | } |
390 | 390 | add_action( 'getpaid_subscription_admin_display_item', 'getpaid_admin_subscription_metabox_display_item', 10, 2 ); |
@@ -396,13 +396,13 @@ discard block |
||
396 | 396 | */ |
397 | 397 | function getpaid_admin_subscription_metabox_display_gateway( $subscription ) { |
398 | 398 | |
399 | - $gateway = $subscription->get_gateway(); |
|
399 | + $gateway = $subscription->get_gateway(); |
|
400 | 400 | |
401 | - if ( ! empty( $gateway ) ) { |
|
402 | - echo esc_html( wpinv_get_gateway_admin_label( $gateway ) ); |
|
403 | - } else { |
|
404 | - echo '—'; |
|
405 | - } |
|
401 | + if ( ! empty( $gateway ) ) { |
|
402 | + echo esc_html( wpinv_get_gateway_admin_label( $gateway ) ); |
|
403 | + } else { |
|
404 | + echo '—'; |
|
405 | + } |
|
406 | 406 | |
407 | 407 | } |
408 | 408 | add_action( 'getpaid_subscription_admin_display_gateway', 'getpaid_admin_subscription_metabox_display_gateway' ); |
@@ -413,7 +413,7 @@ discard block |
||
413 | 413 | * @param WPInv_Subscription $subscription |
414 | 414 | */ |
415 | 415 | function getpaid_admin_subscription_metabox_display_status( $subscription ) { |
416 | - echo wp_kses_post( $subscription->get_status_label_html() ); |
|
416 | + echo wp_kses_post( $subscription->get_status_label_html() ); |
|
417 | 417 | } |
418 | 418 | add_action( 'getpaid_subscription_admin_display_status', 'getpaid_admin_subscription_metabox_display_status' ); |
419 | 419 | |
@@ -424,28 +424,28 @@ discard block |
||
424 | 424 | */ |
425 | 425 | function getpaid_admin_subscription_metabox_display_profile_id( $subscription ) { |
426 | 426 | |
427 | - $profile_id = $subscription->get_profile_id(); |
|
428 | - |
|
429 | - aui()->input( |
|
430 | - array( |
|
431 | - 'type' => 'text', |
|
432 | - 'id' => 'wpinv_subscription_profile_id', |
|
433 | - 'name' => 'wpinv_subscription_profile_id', |
|
434 | - 'label' => __( 'Profile Id', 'invoicing' ), |
|
435 | - 'label_type' => 'hidden', |
|
436 | - 'placeholder' => __( 'Profile Id', 'invoicing' ), |
|
437 | - 'value' => esc_attr( $profile_id ), |
|
438 | - 'input_group_right' => '', |
|
439 | - 'no_wrap' => true, |
|
440 | - 'size' => 'sm', |
|
441 | - ), |
|
442 | - true |
|
443 | - ); |
|
444 | - |
|
445 | - $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription ); |
|
446 | - if ( ! empty( $url ) ) { |
|
447 | - echo ' <a href="' . esc_url_raw( $url ) . '" title="' . esc_attr__( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>'; |
|
448 | - } |
|
427 | + $profile_id = $subscription->get_profile_id(); |
|
428 | + |
|
429 | + aui()->input( |
|
430 | + array( |
|
431 | + 'type' => 'text', |
|
432 | + 'id' => 'wpinv_subscription_profile_id', |
|
433 | + 'name' => 'wpinv_subscription_profile_id', |
|
434 | + 'label' => __( 'Profile Id', 'invoicing' ), |
|
435 | + 'label_type' => 'hidden', |
|
436 | + 'placeholder' => __( 'Profile Id', 'invoicing' ), |
|
437 | + 'value' => esc_attr( $profile_id ), |
|
438 | + 'input_group_right' => '', |
|
439 | + 'no_wrap' => true, |
|
440 | + 'size' => 'sm', |
|
441 | + ), |
|
442 | + true |
|
443 | + ); |
|
444 | + |
|
445 | + $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $subscription ); |
|
446 | + if ( ! empty( $url ) ) { |
|
447 | + echo ' <a href="' . esc_url_raw( $url ) . '" title="' . esc_attr__( 'View in Gateway', 'invoicing' ) . '" target="_blank"><i class="fas fa-external-link-alt fa-xs fa-fw align-top"></i></a>'; |
|
448 | + } |
|
449 | 449 | |
450 | 450 | } |
451 | 451 | add_action( 'getpaid_subscription_admin_display_profile_id', 'getpaid_admin_subscription_metabox_display_profile_id' ); |
@@ -457,40 +457,40 @@ discard block |
||
457 | 457 | */ |
458 | 458 | function getpaid_admin_subscription_update_metabox( $subscription ) { |
459 | 459 | |
460 | - ?> |
|
460 | + ?> |
|
461 | 461 | <div class="mt-3"> |
462 | 462 | |
463 | 463 | <?php |
464 | - aui()->select( |
|
465 | - array( |
|
466 | - 'options' => getpaid_get_subscription_statuses(), |
|
467 | - 'name' => 'subscription_status', |
|
468 | - 'id' => 'subscription_status_update_select', |
|
469 | - 'required' => true, |
|
470 | - 'no_wrap' => false, |
|
471 | - 'label' => __( 'Subscription Status', 'invoicing' ), |
|
472 | - 'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ), |
|
473 | - 'select2' => true, |
|
474 | - 'value' => $subscription->get_status( 'edit' ), |
|
475 | - ), |
|
476 | - true |
|
477 | - ); |
|
478 | - ?> |
|
464 | + aui()->select( |
|
465 | + array( |
|
466 | + 'options' => getpaid_get_subscription_statuses(), |
|
467 | + 'name' => 'subscription_status', |
|
468 | + 'id' => 'subscription_status_update_select', |
|
469 | + 'required' => true, |
|
470 | + 'no_wrap' => false, |
|
471 | + 'label' => __( 'Subscription Status', 'invoicing' ), |
|
472 | + 'help_text' => __( 'Updating the status will trigger related actions and hooks', 'invoicing' ), |
|
473 | + 'select2' => true, |
|
474 | + 'value' => $subscription->get_status( 'edit' ), |
|
475 | + ), |
|
476 | + true |
|
477 | + ); |
|
478 | + ?> |
|
479 | 479 | |
480 | 480 | <div class="mt-2 px-3 py-2 bg-light border-top" style="margin: -12px;"> |
481 | 481 | |
482 | 482 | <?php |
483 | - submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
483 | + submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
484 | 484 | |
485 | - $url = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ); |
|
486 | - $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
487 | - $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' ); |
|
485 | + $url = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ); |
|
486 | + $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
487 | + $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' ); |
|
488 | 488 | |
489 | - if ( $subscription->is_active() ) { |
|
490 | - echo "<a href='" . esc_url( $url ) . "' class='float-right text-muted' onclick='return confirm(\"" . esc_attr( $title ) . "\")'>" . esc_html( $anchor ) . "</a>"; |
|
491 | - } |
|
489 | + if ( $subscription->is_active() ) { |
|
490 | + echo "<a href='" . esc_url( $url ) . "' class='float-right text-muted' onclick='return confirm(\"" . esc_attr( $title ) . "\")'>" . esc_html( $anchor ) . "</a>"; |
|
491 | + } |
|
492 | 492 | |
493 | - echo '</div></div>'; |
|
493 | + echo '</div></div>'; |
|
494 | 494 | } |
495 | 495 | |
496 | 496 | /** |
@@ -501,33 +501,33 @@ discard block |
||
501 | 501 | */ |
502 | 502 | function getpaid_admin_subscription_invoice_details_metabox( $subscription, $strict = true ) { |
503 | 503 | |
504 | - $columns = apply_filters( |
|
505 | - 'getpaid_subscription_related_invoices_columns', |
|
506 | - array( |
|
507 | - 'invoice' => __( 'Invoice', 'invoicing' ), |
|
508 | - 'relationship' => __( 'Relationship', 'invoicing' ), |
|
509 | - 'date' => __( 'Date', 'invoicing' ), |
|
510 | - 'status' => __( 'Status', 'invoicing' ), |
|
511 | - 'total' => __( 'Total', 'invoicing' ), |
|
512 | - ), |
|
513 | - $subscription |
|
514 | - ); |
|
515 | - |
|
516 | - // Prepare the invoices. |
|
517 | - $payments = $subscription->get_child_payments( ! is_admin() ); |
|
518 | - $parent = $subscription->get_parent_invoice(); |
|
519 | - |
|
520 | - if ( $parent->exists() ) { |
|
521 | - $payments = array_merge( array( $parent ), $payments ); |
|
522 | - } |
|
523 | - |
|
524 | - $table_class = 'w-100 bg-white'; |
|
525 | - |
|
526 | - if ( ! is_admin() ) { |
|
527 | - $table_class = 'table table-bordered'; |
|
528 | - } |
|
529 | - |
|
530 | - ?> |
|
504 | + $columns = apply_filters( |
|
505 | + 'getpaid_subscription_related_invoices_columns', |
|
506 | + array( |
|
507 | + 'invoice' => __( 'Invoice', 'invoicing' ), |
|
508 | + 'relationship' => __( 'Relationship', 'invoicing' ), |
|
509 | + 'date' => __( 'Date', 'invoicing' ), |
|
510 | + 'status' => __( 'Status', 'invoicing' ), |
|
511 | + 'total' => __( 'Total', 'invoicing' ), |
|
512 | + ), |
|
513 | + $subscription |
|
514 | + ); |
|
515 | + |
|
516 | + // Prepare the invoices. |
|
517 | + $payments = $subscription->get_child_payments( ! is_admin() ); |
|
518 | + $parent = $subscription->get_parent_invoice(); |
|
519 | + |
|
520 | + if ( $parent->exists() ) { |
|
521 | + $payments = array_merge( array( $parent ), $payments ); |
|
522 | + } |
|
523 | + |
|
524 | + $table_class = 'w-100 bg-white'; |
|
525 | + |
|
526 | + if ( ! is_admin() ) { |
|
527 | + $table_class = 'table table-bordered'; |
|
528 | + } |
|
529 | + |
|
530 | + ?> |
|
531 | 531 | <div class="m-0" style="overflow: auto;"> |
532 | 532 | |
533 | 533 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -535,10 +535,10 @@ discard block |
||
535 | 535 | <thead> |
536 | 536 | <tr> |
537 | 537 | <?php |
538 | - foreach ( $columns as $key => $label ) { |
|
539 | - echo "<th class='subscription-invoice-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
540 | - } |
|
541 | - ?> |
|
538 | + foreach ( $columns as $key => $label ) { |
|
539 | + echo "<th class='subscription-invoice-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
540 | + } |
|
541 | + ?> |
|
542 | 542 | </tr> |
543 | 543 | </thead> |
544 | 544 | |
@@ -554,72 +554,72 @@ discard block |
||
554 | 554 | |
555 | 555 | <?php |
556 | 556 | |
557 | - foreach ( $payments as $payment ) : |
|
557 | + foreach ( $payments as $payment ) : |
|
558 | 558 | |
559 | - // Ensure that we have an invoice. |
|
560 | - $payment = new WPInv_Invoice( $payment ); |
|
559 | + // Ensure that we have an invoice. |
|
560 | + $payment = new WPInv_Invoice( $payment ); |
|
561 | 561 | |
562 | - // Abort if the invoice is invalid... |
|
563 | - if ( ! $payment->exists() ) { |
|
564 | - continue; |
|
565 | - } |
|
562 | + // Abort if the invoice is invalid... |
|
563 | + if ( ! $payment->exists() ) { |
|
564 | + continue; |
|
565 | + } |
|
566 | 566 | |
567 | - // ... or belongs to a different subscription. |
|
568 | - if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
569 | - continue; |
|
570 | - } |
|
567 | + // ... or belongs to a different subscription. |
|
568 | + if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
569 | + continue; |
|
570 | + } |
|
571 | 571 | |
572 | - echo '<tr>'; |
|
572 | + echo '<tr>'; |
|
573 | 573 | |
574 | - foreach ( array_keys( $columns ) as $key ) { |
|
574 | + foreach ( array_keys( $columns ) as $key ) { |
|
575 | 575 | |
576 | - echo "<td class='p-2 text-left'>"; |
|
576 | + echo "<td class='p-2 text-left'>"; |
|
577 | 577 | |
578 | - switch ( $key ) { |
|
578 | + switch ( $key ) { |
|
579 | 579 | |
580 | - case 'total': |
|
581 | - echo '<strong>'; |
|
582 | - wpinv_the_price( $payment->get_total(), $payment->get_currency() ); |
|
583 | - echo '</strong>'; |
|
584 | - break; |
|
580 | + case 'total': |
|
581 | + echo '<strong>'; |
|
582 | + wpinv_the_price( $payment->get_total(), $payment->get_currency() ); |
|
583 | + echo '</strong>'; |
|
584 | + break; |
|
585 | 585 | |
586 | - case 'relationship': |
|
587 | - echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' ); |
|
588 | - break; |
|
586 | + case 'relationship': |
|
587 | + echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' ); |
|
588 | + break; |
|
589 | 589 | |
590 | - case 'date': |
|
591 | - echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) ); |
|
592 | - break; |
|
590 | + case 'date': |
|
591 | + echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) ); |
|
592 | + break; |
|
593 | 593 | |
594 | - case 'status': |
|
595 | - $status = $payment->get_status_nicename(); |
|
596 | - if ( is_admin() ) { |
|
597 | - $status = $payment->get_status_label_html(); |
|
598 | - } |
|
594 | + case 'status': |
|
595 | + $status = $payment->get_status_nicename(); |
|
596 | + if ( is_admin() ) { |
|
597 | + $status = $payment->get_status_label_html(); |
|
598 | + } |
|
599 | 599 | |
600 | - echo wp_kses_post( $status ); |
|
601 | - break; |
|
600 | + echo wp_kses_post( $status ); |
|
601 | + break; |
|
602 | 602 | |
603 | - case 'invoice': |
|
604 | - $link = esc_url( get_edit_post_link( $payment->get_id() ) ); |
|
603 | + case 'invoice': |
|
604 | + $link = esc_url( get_edit_post_link( $payment->get_id() ) ); |
|
605 | 605 | |
606 | - if ( ! is_admin() ) { |
|
607 | - $link = esc_url( $payment->get_view_url() ); |
|
608 | - } |
|
606 | + if ( ! is_admin() ) { |
|
607 | + $link = esc_url( $payment->get_view_url() ); |
|
608 | + } |
|
609 | 609 | |
610 | - $invoice = esc_html( $payment->get_number() ); |
|
611 | - echo wp_kses_post( "<a href='$link'>$invoice</a>" ); |
|
612 | - break; |
|
613 | - } |
|
610 | + $invoice = esc_html( $payment->get_number() ); |
|
611 | + echo wp_kses_post( "<a href='$link'>$invoice</a>" ); |
|
612 | + break; |
|
613 | + } |
|
614 | 614 | |
615 | - echo '</td>'; |
|
615 | + echo '</td>'; |
|
616 | 616 | |
617 | - } |
|
617 | + } |
|
618 | 618 | |
619 | - echo '</tr>'; |
|
619 | + echo '</tr>'; |
|
620 | 620 | |
621 | - endforeach; |
|
622 | - ?> |
|
621 | + endforeach; |
|
622 | + ?> |
|
623 | 623 | |
624 | 624 | </tbody> |
625 | 625 | |
@@ -637,42 +637,42 @@ discard block |
||
637 | 637 | */ |
638 | 638 | function getpaid_admin_subscription_item_details_metabox( $subscription ) { |
639 | 639 | |
640 | - // Fetch the subscription group. |
|
641 | - $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() ); |
|
640 | + // Fetch the subscription group. |
|
641 | + $subscription_group = getpaid_get_invoice_subscription_group( $subscription->get_parent_payment_id(), $subscription->get_id() ); |
|
642 | 642 | |
643 | - if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) { |
|
644 | - return; |
|
645 | - } |
|
643 | + if ( empty( $subscription_group ) || empty( $subscription_group['items'] ) ) { |
|
644 | + return; |
|
645 | + } |
|
646 | 646 | |
647 | - // Prepare table columns. |
|
648 | - $columns = apply_filters( |
|
649 | - 'getpaid_subscription_item_details_columns', |
|
650 | - array( |
|
651 | - 'item_name' => __( 'Item', 'invoicing' ), |
|
652 | - 'price' => __( 'Price', 'invoicing' ), |
|
653 | - 'tax' => __( 'Tax', 'invoicing' ), |
|
654 | - 'discount' => __( 'Discount', 'invoicing' ), |
|
655 | - //'initial' => __( 'Initial Amount', 'invoicing' ), |
|
656 | - 'recurring' => __( 'Subtotal', 'invoicing' ), |
|
657 | - ), |
|
658 | - $subscription |
|
659 | - ); |
|
647 | + // Prepare table columns. |
|
648 | + $columns = apply_filters( |
|
649 | + 'getpaid_subscription_item_details_columns', |
|
650 | + array( |
|
651 | + 'item_name' => __( 'Item', 'invoicing' ), |
|
652 | + 'price' => __( 'Price', 'invoicing' ), |
|
653 | + 'tax' => __( 'Tax', 'invoicing' ), |
|
654 | + 'discount' => __( 'Discount', 'invoicing' ), |
|
655 | + //'initial' => __( 'Initial Amount', 'invoicing' ), |
|
656 | + 'recurring' => __( 'Subtotal', 'invoicing' ), |
|
657 | + ), |
|
658 | + $subscription |
|
659 | + ); |
|
660 | 660 | |
661 | - // Prepare the invoices. |
|
661 | + // Prepare the invoices. |
|
662 | 662 | |
663 | - $invoice = $subscription->get_parent_invoice(); |
|
663 | + $invoice = $subscription->get_parent_invoice(); |
|
664 | 664 | |
665 | - if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) { |
|
666 | - unset( $columns['tax'] ); |
|
667 | - } |
|
665 | + if ( ( ! wpinv_use_taxes() || ! $invoice->is_taxable() ) && isset( $columns['tax'] ) ) { |
|
666 | + unset( $columns['tax'] ); |
|
667 | + } |
|
668 | 668 | |
669 | - $table_class = 'w-100 bg-white'; |
|
669 | + $table_class = 'w-100 bg-white'; |
|
670 | 670 | |
671 | - if ( ! is_admin() ) { |
|
672 | - $table_class = 'table table-bordered'; |
|
673 | - } |
|
671 | + if ( ! is_admin() ) { |
|
672 | + $table_class = 'table table-bordered'; |
|
673 | + } |
|
674 | 674 | |
675 | - ?> |
|
675 | + ?> |
|
676 | 676 | <div class="m-0" style="overflow: auto;"> |
677 | 677 | |
678 | 678 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -681,10 +681,10 @@ discard block |
||
681 | 681 | <tr> |
682 | 682 | <?php |
683 | 683 | |
684 | - foreach ( $columns as $key => $label ) { |
|
685 | - echo "<th class='subscription-item-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
686 | - } |
|
687 | - ?> |
|
684 | + foreach ( $columns as $key => $label ) { |
|
685 | + echo "<th class='subscription-item-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
686 | + } |
|
687 | + ?> |
|
688 | 688 | </tr> |
689 | 689 | </thead> |
690 | 690 | |
@@ -692,106 +692,106 @@ discard block |
||
692 | 692 | |
693 | 693 | <?php |
694 | 694 | |
695 | - foreach ( $subscription_group['items'] as $subscription_group_item ) : |
|
695 | + foreach ( $subscription_group['items'] as $subscription_group_item ) : |
|
696 | 696 | |
697 | - echo '<tr>'; |
|
697 | + echo '<tr>'; |
|
698 | 698 | |
699 | - foreach ( array_keys( $columns ) as $key ) { |
|
699 | + foreach ( array_keys( $columns ) as $key ) { |
|
700 | 700 | |
701 | - $class = 'text-left'; |
|
701 | + $class = 'text-left'; |
|
702 | 702 | |
703 | - echo "<td class='p-2 text-left'>"; |
|
703 | + echo "<td class='p-2 text-left'>"; |
|
704 | 704 | |
705 | - switch ( $key ) { |
|
705 | + switch ( $key ) { |
|
706 | 706 | |
707 | - case 'item_name': |
|
708 | - $item_name = get_the_title( $subscription_group_item['item_id'] ); |
|
709 | - $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name; |
|
707 | + case 'item_name': |
|
708 | + $item_name = get_the_title( $subscription_group_item['item_id'] ); |
|
709 | + $item_name = empty( $item_name ) ? $subscription_group_item['item_name'] : $item_name; |
|
710 | 710 | |
711 | - if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) { |
|
712 | - echo esc_html( $item_name ); |
|
713 | - } else { |
|
714 | - printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] ); |
|
715 | - } |
|
711 | + if ( $invoice->get_template() == 'amount' || 1 == (float) $subscription_group_item['quantity'] ) { |
|
712 | + echo esc_html( $item_name ); |
|
713 | + } else { |
|
714 | + printf( '%1$s x %2$d', esc_html( $item_name ), (float) $subscription_group_item['quantity'] ); |
|
715 | + } |
|
716 | 716 | |
717 | - break; |
|
717 | + break; |
|
718 | 718 | |
719 | - case 'price': |
|
720 | - wpinv_the_price( $subscription_group_item['item_price'], $invoice->get_currency() ); |
|
721 | - break; |
|
719 | + case 'price': |
|
720 | + wpinv_the_price( $subscription_group_item['item_price'], $invoice->get_currency() ); |
|
721 | + break; |
|
722 | 722 | |
723 | - case 'tax': |
|
724 | - wpinv_the_price( $subscription_group_item['tax'], $invoice->get_currency() ); |
|
725 | - break; |
|
723 | + case 'tax': |
|
724 | + wpinv_the_price( $subscription_group_item['tax'], $invoice->get_currency() ); |
|
725 | + break; |
|
726 | 726 | |
727 | - case 'discount': |
|
728 | - wpinv_the_price( $subscription_group_item['discount'], $invoice->get_currency() ); |
|
729 | - break; |
|
727 | + case 'discount': |
|
728 | + wpinv_the_price( $subscription_group_item['discount'], $invoice->get_currency() ); |
|
729 | + break; |
|
730 | 730 | |
731 | - case 'initial': |
|
732 | - wpinv_the_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ); |
|
733 | - break; |
|
731 | + case 'initial': |
|
732 | + wpinv_the_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ); |
|
733 | + break; |
|
734 | 734 | |
735 | - case 'recurring': |
|
736 | - echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>' ); |
|
737 | - break; |
|
735 | + case 'recurring': |
|
736 | + echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_item['price'] * $subscription_group_item['quantity'], $invoice->get_currency() ) . '</strong>' ); |
|
737 | + break; |
|
738 | 738 | |
739 | - } |
|
739 | + } |
|
740 | 740 | |
741 | - echo '</td>'; |
|
741 | + echo '</td>'; |
|
742 | 742 | |
743 | - } |
|
743 | + } |
|
744 | 744 | |
745 | - echo '</tr>'; |
|
745 | + echo '</tr>'; |
|
746 | 746 | |
747 | - endforeach; |
|
747 | + endforeach; |
|
748 | 748 | |
749 | - foreach ( $subscription_group['fees'] as $subscription_group_fee ) : |
|
749 | + foreach ( $subscription_group['fees'] as $subscription_group_fee ) : |
|
750 | 750 | |
751 | - echo '<tr>'; |
|
751 | + echo '<tr>'; |
|
752 | 752 | |
753 | - foreach ( array_keys( $columns ) as $key ) { |
|
753 | + foreach ( array_keys( $columns ) as $key ) { |
|
754 | 754 | |
755 | - $class = 'text-left'; |
|
755 | + $class = 'text-left'; |
|
756 | 756 | |
757 | - echo "<td class='p-2 text-left'>"; |
|
757 | + echo "<td class='p-2 text-left'>"; |
|
758 | 758 | |
759 | - switch ( $key ) { |
|
759 | + switch ( $key ) { |
|
760 | 760 | |
761 | - case 'item_name': |
|
762 | - echo esc_html( $subscription_group_fee['name'] ); |
|
763 | - break; |
|
761 | + case 'item_name': |
|
762 | + echo esc_html( $subscription_group_fee['name'] ); |
|
763 | + break; |
|
764 | 764 | |
765 | - case 'price': |
|
766 | - wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
767 | - break; |
|
765 | + case 'price': |
|
766 | + wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
767 | + break; |
|
768 | 768 | |
769 | - case 'tax': |
|
770 | - echo '—'; |
|
771 | - break; |
|
769 | + case 'tax': |
|
770 | + echo '—'; |
|
771 | + break; |
|
772 | 772 | |
773 | - case 'discount': |
|
774 | - echo '—'; |
|
775 | - break; |
|
773 | + case 'discount': |
|
774 | + echo '—'; |
|
775 | + break; |
|
776 | 776 | |
777 | - case 'initial': |
|
778 | - wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
779 | - break; |
|
777 | + case 'initial': |
|
778 | + wpinv_the_price( $subscription_group_fee['initial_fee'], $invoice->get_currency() ); |
|
779 | + break; |
|
780 | 780 | |
781 | - case 'recurring': |
|
782 | - echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>' ); |
|
783 | - break; |
|
781 | + case 'recurring': |
|
782 | + echo wp_kses_post( '<strong>' . wpinv_price( $subscription_group_fee['recurring_fee'], $invoice->get_currency() ) . '</strong>' ); |
|
783 | + break; |
|
784 | 784 | |
785 | - } |
|
785 | + } |
|
786 | 786 | |
787 | - echo '</td>'; |
|
787 | + echo '</td>'; |
|
788 | 788 | |
789 | - } |
|
789 | + } |
|
790 | 790 | |
791 | - echo '</tr>'; |
|
791 | + echo '</tr>'; |
|
792 | 792 | |
793 | - endforeach; |
|
794 | - ?> |
|
793 | + endforeach; |
|
794 | + ?> |
|
795 | 795 | |
796 | 796 | </tbody> |
797 | 797 | |
@@ -810,38 +810,38 @@ discard block |
||
810 | 810 | */ |
811 | 811 | function getpaid_admin_subscription_related_subscriptions_metabox( $subscription, $skip_current = true ) { |
812 | 812 | |
813 | - // Fetch the subscription groups. |
|
814 | - $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() ); |
|
815 | - |
|
816 | - if ( empty( $subscription_groups ) ) { |
|
817 | - return; |
|
818 | - } |
|
819 | - |
|
820 | - // Prepare table columns. |
|
821 | - $columns = apply_filters( |
|
822 | - 'getpaid_subscription_related_subscriptions_columns', |
|
823 | - array( |
|
824 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
825 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
826 | - 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
827 | - 'renewals' => __( 'Payments', 'invoicing' ), |
|
828 | - 'item' => __( 'Items', 'invoicing' ), |
|
829 | - 'status' => __( 'Status', 'invoicing' ), |
|
830 | - ), |
|
831 | - $subscription |
|
832 | - ); |
|
833 | - |
|
834 | - if ( $subscription->get_status() == 'pending' ) { |
|
835 | - unset( $columns['start_date'], $columns['renewal_date'] ); |
|
836 | - } |
|
837 | - |
|
838 | - $table_class = 'w-100 bg-white'; |
|
839 | - |
|
840 | - if ( ! is_admin() ) { |
|
841 | - $table_class = 'table table-bordered'; |
|
842 | - } |
|
843 | - |
|
844 | - ?> |
|
813 | + // Fetch the subscription groups. |
|
814 | + $subscription_groups = getpaid_get_invoice_subscription_groups( $subscription->get_parent_payment_id() ); |
|
815 | + |
|
816 | + if ( empty( $subscription_groups ) ) { |
|
817 | + return; |
|
818 | + } |
|
819 | + |
|
820 | + // Prepare table columns. |
|
821 | + $columns = apply_filters( |
|
822 | + 'getpaid_subscription_related_subscriptions_columns', |
|
823 | + array( |
|
824 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
825 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
826 | + 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
827 | + 'renewals' => __( 'Payments', 'invoicing' ), |
|
828 | + 'item' => __( 'Items', 'invoicing' ), |
|
829 | + 'status' => __( 'Status', 'invoicing' ), |
|
830 | + ), |
|
831 | + $subscription |
|
832 | + ); |
|
833 | + |
|
834 | + if ( $subscription->get_status() == 'pending' ) { |
|
835 | + unset( $columns['start_date'], $columns['renewal_date'] ); |
|
836 | + } |
|
837 | + |
|
838 | + $table_class = 'w-100 bg-white'; |
|
839 | + |
|
840 | + if ( ! is_admin() ) { |
|
841 | + $table_class = 'table table-bordered'; |
|
842 | + } |
|
843 | + |
|
844 | + ?> |
|
845 | 845 | <div class="m-0" style="overflow: auto;"> |
846 | 846 | |
847 | 847 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -850,10 +850,10 @@ discard block |
||
850 | 850 | <tr> |
851 | 851 | <?php |
852 | 852 | |
853 | - foreach ( $columns as $key => $label ) { |
|
854 | - echo "<th class='related-subscription-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
855 | - } |
|
856 | - ?> |
|
853 | + foreach ( $columns as $key => $label ) { |
|
854 | + echo "<th class='related-subscription-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
855 | + } |
|
856 | + ?> |
|
857 | 857 | </tr> |
858 | 858 | </thead> |
859 | 859 | |
@@ -861,74 +861,74 @@ discard block |
||
861 | 861 | |
862 | 862 | <?php |
863 | 863 | |
864 | - foreach ( $subscription_groups as $subscription_group ) : |
|
864 | + foreach ( $subscription_groups as $subscription_group ) : |
|
865 | 865 | |
866 | - // Do not list current subscription. |
|
867 | - if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) { |
|
868 | - continue; |
|
869 | - } |
|
866 | + // Do not list current subscription. |
|
867 | + if ( $skip_current && (int) $subscription_group['subscription_id'] === $subscription->get_id() ) { |
|
868 | + continue; |
|
869 | + } |
|
870 | 870 | |
871 | - // Ensure the subscription exists. |
|
872 | - $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] ); |
|
871 | + // Ensure the subscription exists. |
|
872 | + $_suscription = new WPInv_Subscription( $subscription_group['subscription_id'] ); |
|
873 | 873 | |
874 | - if ( ! $_suscription->exists() ) { |
|
875 | - continue; |
|
876 | - } |
|
874 | + if ( ! $_suscription->exists() ) { |
|
875 | + continue; |
|
876 | + } |
|
877 | 877 | |
878 | - echo '<tr>'; |
|
878 | + echo '<tr>'; |
|
879 | 879 | |
880 | - foreach ( array_keys( $columns ) as $key ) { |
|
880 | + foreach ( array_keys( $columns ) as $key ) { |
|
881 | 881 | |
882 | - $class = 'text-left'; |
|
882 | + $class = 'text-left'; |
|
883 | 883 | |
884 | - echo "<td class='p-2 text-left'>"; |
|
884 | + echo "<td class='p-2 text-left'>"; |
|
885 | 885 | |
886 | - switch ( $key ) { |
|
886 | + switch ( $key ) { |
|
887 | 887 | |
888 | - case 'status': |
|
889 | - echo wp_kses_post( $_suscription->get_status_label_html() ); |
|
890 | - break; |
|
888 | + case 'status': |
|
889 | + echo wp_kses_post( $_suscription->get_status_label_html() ); |
|
890 | + break; |
|
891 | 891 | |
892 | - case 'item': |
|
893 | - $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
894 | - echo wp_kses_post( implode( ' | ', $markup ) ); |
|
895 | - break; |
|
892 | + case 'item': |
|
893 | + $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
894 | + echo wp_kses_post( implode( ' | ', $markup ) ); |
|
895 | + break; |
|
896 | 896 | |
897 | - case 'renewals': |
|
898 | - $max_bills = $_suscription->get_bill_times(); |
|
899 | - echo ( (int) $_suscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
900 | - break; |
|
897 | + case 'renewals': |
|
898 | + $max_bills = $_suscription->get_bill_times(); |
|
899 | + echo ( (int) $_suscription->get_times_billed() ) . ' / ' . ( empty( $max_bills ) ? '∞' : (int) $max_bills ); |
|
900 | + break; |
|
901 | 901 | |
902 | - case 'renewal_date': |
|
903 | - echo $_suscription->is_active() ? esc_html( getpaid_format_date_value( $_suscription->get_expiration() ) ) : '—'; |
|
904 | - break; |
|
902 | + case 'renewal_date': |
|
903 | + echo $_suscription->is_active() ? esc_html( getpaid_format_date_value( $_suscription->get_expiration() ) ) : '—'; |
|
904 | + break; |
|
905 | 905 | |
906 | - case 'start_date': |
|
907 | - echo 'pending' == $_suscription->get_status() ? '—' : esc_html( getpaid_format_date_value( $_suscription->get_date_created() ) ); |
|
908 | - break; |
|
906 | + case 'start_date': |
|
907 | + echo 'pending' == $_suscription->get_status() ? '—' : esc_html( getpaid_format_date_value( $_suscription->get_date_created() ) ); |
|
908 | + break; |
|
909 | 909 | |
910 | - case 'subscription': |
|
911 | - $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url(); |
|
912 | - printf( |
|
910 | + case 'subscription': |
|
911 | + $url = is_admin() ? admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $_suscription->get_id() ) ) : $_suscription->get_view_url(); |
|
912 | + printf( |
|
913 | 913 | '%1$s#%2$s%3$s', |
914 | 914 | '<a href="' . esc_url( $url ) . '">', |
915 | 915 | '<strong>' . intval( $_suscription->get_id() ) . '</strong>', |
916 | - '</a>' |
|
916 | + '</a>' |
|
917 | 917 | ); |
918 | 918 | |
919 | - echo wp_kses_post( WPInv_Subscriptions_List_Table::column_amount( $_suscription ) ); |
|
920 | - break; |
|
919 | + echo wp_kses_post( WPInv_Subscriptions_List_Table::column_amount( $_suscription ) ); |
|
920 | + break; |
|
921 | 921 | |
922 | - } |
|
922 | + } |
|
923 | 923 | |
924 | - echo '</td>'; |
|
924 | + echo '</td>'; |
|
925 | 925 | |
926 | - } |
|
926 | + } |
|
927 | 927 | |
928 | - echo '</tr>'; |
|
928 | + echo '</tr>'; |
|
929 | 929 | |
930 | - endforeach; |
|
931 | - ?> |
|
930 | + endforeach; |
|
931 | + ?> |
|
932 | 932 | |
933 | 933 | </tbody> |
934 | 934 |
@@ -13,17 +13,17 @@ discard block |
||
13 | 13 | class GetPaid_Manual_Gateway extends GetPaid_Payment_Gateway { |
14 | 14 | |
15 | 15 | /** |
16 | - * Payment method id. |
|
17 | - * |
|
18 | - * @var string |
|
19 | - */ |
|
16 | + * Payment method id. |
|
17 | + * |
|
18 | + * @var string |
|
19 | + */ |
|
20 | 20 | public $id = 'manual'; |
21 | 21 | |
22 | 22 | /** |
23 | - * An array of features that this gateway supports. |
|
24 | - * |
|
25 | - * @var array |
|
26 | - */ |
|
23 | + * An array of features that this gateway supports. |
|
24 | + * |
|
25 | + * @var array |
|
26 | + */ |
|
27 | 27 | protected $supports = array( |
28 | 28 | 'subscription', |
29 | 29 | 'addons', |
@@ -34,16 +34,16 @@ discard block |
||
34 | 34 | ); |
35 | 35 | |
36 | 36 | /** |
37 | - * Payment method order. |
|
38 | - * |
|
39 | - * @var int |
|
40 | - */ |
|
41 | - public $order = 11; |
|
37 | + * Payment method order. |
|
38 | + * |
|
39 | + * @var int |
|
40 | + */ |
|
41 | + public $order = 11; |
|
42 | 42 | |
43 | 43 | /** |
44 | - * Class constructor. |
|
45 | - */ |
|
46 | - public function __construct() { |
|
44 | + * Class constructor. |
|
45 | + */ |
|
46 | + public function __construct() { |
|
47 | 47 | parent::__construct(); |
48 | 48 | |
49 | 49 | $this->title = __( 'Test Gateway', 'invoicing' ); |
@@ -53,15 +53,15 @@ discard block |
||
53 | 53 | } |
54 | 54 | |
55 | 55 | /** |
56 | - * Process Payment. |
|
57 | - * |
|
58 | - * |
|
59 | - * @param WPInv_Invoice $invoice Invoice. |
|
60 | - * @param array $submission_data Posted checkout fields. |
|
61 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
62 | - * @return array |
|
63 | - */ |
|
64 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
56 | + * Process Payment. |
|
57 | + * |
|
58 | + * |
|
59 | + * @param WPInv_Invoice $invoice Invoice. |
|
60 | + * @param array $submission_data Posted checkout fields. |
|
61 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
62 | + * @return array |
|
63 | + */ |
|
64 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
65 | 65 | |
66 | 66 | // Mark it as paid. |
67 | 67 | $invoice->mark_paid(); |
@@ -91,12 +91,12 @@ discard block |
||
91 | 91 | } |
92 | 92 | |
93 | 93 | /** |
94 | - * (Maybe) renews a manual subscription profile. |
|
95 | - * |
|
96 | - * |
|
94 | + * (Maybe) renews a manual subscription profile. |
|
95 | + * |
|
96 | + * |
|
97 | 97 | * @param WPInv_Subscription $subscription |
98 | - */ |
|
99 | - public function maybe_renew_subscription( $subscription ) { |
|
98 | + */ |
|
99 | + public function maybe_renew_subscription( $subscription ) { |
|
100 | 100 | |
101 | 101 | // Ensure its our subscription && it's active. |
102 | 102 | if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
@@ -116,13 +116,13 @@ discard block |
||
116 | 116 | } |
117 | 117 | |
118 | 118 | /** |
119 | - * Processes invoice addons. |
|
120 | - * |
|
121 | - * @param WPInv_Invoice $invoice |
|
122 | - * @param GetPaid_Form_Item[] $items |
|
123 | - * @return WPInv_Invoice |
|
124 | - */ |
|
125 | - public function process_addons( $invoice, $items ) { |
|
119 | + * Processes invoice addons. |
|
120 | + * |
|
121 | + * @param WPInv_Invoice $invoice |
|
122 | + * @param GetPaid_Form_Item[] $items |
|
123 | + * @return WPInv_Invoice |
|
124 | + */ |
|
125 | + public function process_addons( $invoice, $items ) { |
|
126 | 126 | |
127 | 127 | foreach ( $items as $item ) { |
128 | 128 | $invoice->add_item( $item ); |
@@ -13,47 +13,47 @@ discard block |
||
13 | 13 | class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway { |
14 | 14 | |
15 | 15 | /** |
16 | - * Payment method id. |
|
17 | - * |
|
18 | - * @var string |
|
19 | - */ |
|
16 | + * Payment method id. |
|
17 | + * |
|
18 | + * @var string |
|
19 | + */ |
|
20 | 20 | public $id = 'bank_transfer'; |
21 | 21 | |
22 | - /** |
|
23 | - * An array of features that this gateway supports. |
|
24 | - * |
|
25 | - * @var array |
|
26 | - */ |
|
27 | - protected $supports = array( |
|
28 | - 'subscription', |
|
29 | - 'addons', |
|
30 | - 'single_subscription_group', |
|
31 | - 'multiple_subscription_groups', |
|
32 | - 'subscription_date_change', |
|
33 | - 'subscription_bill_times_change', |
|
34 | - ); |
|
22 | + /** |
|
23 | + * An array of features that this gateway supports. |
|
24 | + * |
|
25 | + * @var array |
|
26 | + */ |
|
27 | + protected $supports = array( |
|
28 | + 'subscription', |
|
29 | + 'addons', |
|
30 | + 'single_subscription_group', |
|
31 | + 'multiple_subscription_groups', |
|
32 | + 'subscription_date_change', |
|
33 | + 'subscription_bill_times_change', |
|
34 | + ); |
|
35 | + |
|
36 | + /** |
|
37 | + * Payment method order. |
|
38 | + * |
|
39 | + * @var int |
|
40 | + */ |
|
41 | + public $order = 8; |
|
35 | 42 | |
36 | 43 | /** |
37 | - * Payment method order. |
|
38 | - * |
|
39 | - * @var int |
|
40 | - */ |
|
41 | - public $order = 8; |
|
42 | - |
|
43 | - /** |
|
44 | - * Bank transfer instructions. |
|
45 | - */ |
|
46 | - public $instructions; |
|
47 | - |
|
48 | - /** |
|
49 | - * Locale array. |
|
50 | - */ |
|
51 | - public $locale; |
|
44 | + * Bank transfer instructions. |
|
45 | + */ |
|
46 | + public $instructions; |
|
52 | 47 | |
53 | 48 | /** |
54 | - * Class constructor. |
|
55 | - */ |
|
56 | - public function __construct() { |
|
49 | + * Locale array. |
|
50 | + */ |
|
51 | + public $locale; |
|
52 | + |
|
53 | + /** |
|
54 | + * Class constructor. |
|
55 | + */ |
|
56 | + public function __construct() { |
|
57 | 57 | parent::__construct(); |
58 | 58 | |
59 | 59 | $this->title = __( 'Direct bank transfer', 'invoicing' ); |
@@ -61,24 +61,24 @@ discard block |
||
61 | 61 | $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
62 | 62 | $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
63 | 63 | |
64 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
65 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
66 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
67 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
68 | - add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
69 | - add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
64 | + add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
65 | + add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
66 | + add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
67 | + add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
68 | + add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
69 | + add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
70 | 70 | |
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
74 | - * Process Payment. |
|
75 | - * |
|
76 | - * @param WPInv_Invoice $invoice Invoice. |
|
77 | - * @param array $submission_data Posted checkout fields. |
|
78 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
79 | - * @return array |
|
80 | - */ |
|
81 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
74 | + * Process Payment. |
|
75 | + * |
|
76 | + * @param WPInv_Invoice $invoice Invoice. |
|
77 | + * @param array $submission_data Posted checkout fields. |
|
78 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
79 | + * @return array |
|
80 | + */ |
|
81 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
82 | 82 | |
83 | 83 | // Add a transaction id. |
84 | 84 | $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) ); |
@@ -99,66 +99,66 @@ discard block |
||
99 | 99 | } |
100 | 100 | |
101 | 101 | /** |
102 | - * Output for the order received page. |
|
103 | - * |
|
104 | - * @param WPInv_Invoice $invoice Invoice. |
|
105 | - */ |
|
106 | - public function thankyou_page( $invoice ) { |
|
102 | + * Output for the order received page. |
|
103 | + * |
|
104 | + * @param WPInv_Invoice $invoice Invoice. |
|
105 | + */ |
|
106 | + public function thankyou_page( $invoice ) { |
|
107 | 107 | |
108 | 108 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
109 | 109 | |
110 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
110 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
111 | 111 | |
112 | 112 | if ( ! empty( $this->instructions ) ) { |
113 | 113 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
114 | - } |
|
114 | + } |
|
115 | 115 | |
116 | - $this->bank_details( $invoice ); |
|
116 | + $this->bank_details( $invoice ); |
|
117 | 117 | |
118 | - echo '</div>'; |
|
118 | + echo '</div>'; |
|
119 | 119 | |
120 | 120 | } |
121 | 121 | |
122 | - } |
|
122 | + } |
|
123 | 123 | |
124 | 124 | /** |
125 | - * Add content to the WPI emails. |
|
126 | - * |
|
127 | - * @param WPInv_Invoice $invoice Invoice. |
|
128 | - * @param string $email_type Email format: plain text or HTML. |
|
129 | - * @param bool $sent_to_admin Sent to admin. |
|
130 | - */ |
|
131 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
125 | + * Add content to the WPI emails. |
|
126 | + * |
|
127 | + * @param WPInv_Invoice $invoice Invoice. |
|
128 | + * @param string $email_type Email format: plain text or HTML. |
|
129 | + * @param bool $sent_to_admin Sent to admin. |
|
130 | + */ |
|
131 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
132 | 132 | |
133 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
133 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
134 | 134 | |
135 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
135 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
136 | 136 | |
137 | - if ( $this->instructions ) { |
|
138 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
137 | + if ( $this->instructions ) { |
|
138 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
139 | 139 | } |
140 | 140 | |
141 | - $this->bank_details( $invoice ); |
|
141 | + $this->bank_details( $invoice ); |
|
142 | 142 | |
143 | - echo '</div>'; |
|
143 | + echo '</div>'; |
|
144 | 144 | |
145 | - } |
|
145 | + } |
|
146 | 146 | |
147 | 147 | } |
148 | 148 | |
149 | 149 | /** |
150 | - * Get bank details and place into a list format. |
|
151 | - * |
|
152 | - * @param WPInv_Invoice $invoice Invoice. |
|
153 | - */ |
|
154 | - protected function bank_details( $invoice ) { |
|
150 | + * Get bank details and place into a list format. |
|
151 | + * |
|
152 | + * @param WPInv_Invoice $invoice Invoice. |
|
153 | + */ |
|
154 | + protected function bank_details( $invoice ) { |
|
155 | 155 | |
156 | - // Get the invoice country and country $locale. |
|
157 | - $country = $invoice->get_country(); |
|
158 | - $locale = $this->get_country_locale(); |
|
156 | + // Get the invoice country and country $locale. |
|
157 | + $country = $invoice->get_country(); |
|
158 | + $locale = $this->get_country_locale(); |
|
159 | 159 | |
160 | - // Get sortcode label in the $locale array and use appropriate one. |
|
161 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
160 | + // Get sortcode label in the $locale array and use appropriate one. |
|
161 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
162 | 162 | |
163 | 163 | $bank_fields = array( |
164 | 164 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -177,11 +177,11 @@ discard block |
||
177 | 177 | |
178 | 178 | if ( ! empty( $value ) ) { |
179 | 179 | $bank_info[ $field ] = array( |
180 | - 'label' => $label, |
|
181 | - 'value' => $value, |
|
182 | - ); |
|
180 | + 'label' => $label, |
|
181 | + 'value' => $value, |
|
182 | + ); |
|
183 | 183 | } |
184 | - } |
|
184 | + } |
|
185 | 185 | |
186 | 186 | $bank_info = apply_filters( 'wpinv_bank_info', $bank_info, $invoice ); |
187 | 187 | |
@@ -189,139 +189,139 @@ discard block |
||
189 | 189 | return; |
190 | 190 | } |
191 | 191 | |
192 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL; |
|
192 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL; |
|
193 | + |
|
194 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
195 | + |
|
196 | + foreach ( $bank_info as $key => $data ) { |
|
197 | + echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
198 | + } |
|
199 | + |
|
200 | + echo '</table>'; |
|
201 | + |
|
202 | + } |
|
193 | 203 | |
194 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
204 | + /** |
|
205 | + * Get country locale if localized. |
|
206 | + * |
|
207 | + * @return array |
|
208 | + */ |
|
209 | + public function get_country_locale() { |
|
210 | + |
|
211 | + if ( empty( $this->locale ) ) { |
|
212 | + |
|
213 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
214 | + $this->locale = apply_filters( |
|
215 | + 'getpaid_get_bank_transfer_locale', |
|
216 | + array( |
|
217 | + 'AU' => array( |
|
218 | + 'sortcode' => array( |
|
219 | + 'label' => __( 'BSB', 'invoicing' ), |
|
220 | + ), |
|
221 | + ), |
|
222 | + 'CA' => array( |
|
223 | + 'sortcode' => array( |
|
224 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
225 | + ), |
|
226 | + ), |
|
227 | + 'IN' => array( |
|
228 | + 'sortcode' => array( |
|
229 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
230 | + ), |
|
231 | + ), |
|
232 | + 'IT' => array( |
|
233 | + 'sortcode' => array( |
|
234 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
235 | + ), |
|
236 | + ), |
|
237 | + 'NZ' => array( |
|
238 | + 'sortcode' => array( |
|
239 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
240 | + ), |
|
241 | + ), |
|
242 | + 'SE' => array( |
|
243 | + 'sortcode' => array( |
|
244 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
245 | + ), |
|
246 | + ), |
|
247 | + 'US' => array( |
|
248 | + 'sortcode' => array( |
|
249 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
250 | + ), |
|
251 | + ), |
|
252 | + 'ZA' => array( |
|
253 | + 'sortcode' => array( |
|
254 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
255 | + ), |
|
256 | + ), |
|
257 | + ) |
|
258 | + ); |
|
195 | 259 | |
196 | - foreach ( $bank_info as $key => $data ) { |
|
197 | - echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
198 | - } |
|
260 | + } |
|
199 | 261 | |
200 | - echo '</table>'; |
|
262 | + return $this->locale; |
|
201 | 263 | |
202 | 264 | } |
203 | 265 | |
204 | 266 | /** |
205 | - * Get country locale if localized. |
|
206 | - * |
|
207 | - * @return array |
|
208 | - */ |
|
209 | - public function get_country_locale() { |
|
210 | - |
|
211 | - if ( empty( $this->locale ) ) { |
|
212 | - |
|
213 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
214 | - $this->locale = apply_filters( |
|
215 | - 'getpaid_get_bank_transfer_locale', |
|
216 | - array( |
|
217 | - 'AU' => array( |
|
218 | - 'sortcode' => array( |
|
219 | - 'label' => __( 'BSB', 'invoicing' ), |
|
220 | - ), |
|
221 | - ), |
|
222 | - 'CA' => array( |
|
223 | - 'sortcode' => array( |
|
224 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
225 | - ), |
|
226 | - ), |
|
227 | - 'IN' => array( |
|
228 | - 'sortcode' => array( |
|
229 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
230 | - ), |
|
231 | - ), |
|
232 | - 'IT' => array( |
|
233 | - 'sortcode' => array( |
|
234 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
235 | - ), |
|
236 | - ), |
|
237 | - 'NZ' => array( |
|
238 | - 'sortcode' => array( |
|
239 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
240 | - ), |
|
241 | - ), |
|
242 | - 'SE' => array( |
|
243 | - 'sortcode' => array( |
|
244 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
245 | - ), |
|
246 | - ), |
|
247 | - 'US' => array( |
|
248 | - 'sortcode' => array( |
|
249 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
250 | - ), |
|
251 | - ), |
|
252 | - 'ZA' => array( |
|
253 | - 'sortcode' => array( |
|
254 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
255 | - ), |
|
256 | - ), |
|
257 | - ) |
|
258 | - ); |
|
259 | - |
|
260 | - } |
|
261 | - |
|
262 | - return $this->locale; |
|
263 | - |
|
264 | - } |
|
265 | - |
|
266 | - /** |
|
267 | - * Filters the gateway settings. |
|
268 | - * |
|
269 | - * @param array $admin_settings |
|
270 | - */ |
|
271 | - public function admin_settings( $admin_settings ) { |
|
267 | + * Filters the gateway settings. |
|
268 | + * |
|
269 | + * @param array $admin_settings |
|
270 | + */ |
|
271 | + public function admin_settings( $admin_settings ) { |
|
272 | 272 | |
273 | 273 | $admin_settings['bank_transfer_desc']['std'] = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' ); |
274 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
274 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
275 | 275 | |
276 | - $locale = $this->get_country_locale(); |
|
276 | + $locale = $this->get_country_locale(); |
|
277 | 277 | |
278 | - // Get sortcode label in the $locale array and use appropriate one. |
|
279 | - $country = wpinv_default_billing_country(); |
|
280 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
278 | + // Get sortcode label in the $locale array and use appropriate one. |
|
279 | + $country = wpinv_default_billing_country(); |
|
280 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
281 | 281 | |
282 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
282 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
283 | 283 | 'type' => 'text', |
284 | 284 | 'id' => 'bank_transfer_ac_name', |
285 | 285 | 'name' => __( 'Account Name', 'invoicing' ), |
286 | - ); |
|
286 | + ); |
|
287 | 287 | |
288 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
288 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
289 | 289 | 'type' => 'text', |
290 | 290 | 'id' => 'bank_transfer_ac_no', |
291 | 291 | 'name' => __( 'Account Number', 'invoicing' ), |
292 | - ); |
|
292 | + ); |
|
293 | 293 | |
294 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
294 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
295 | 295 | 'type' => 'text', |
296 | 296 | 'id' => 'bank_transfer_bank_name', |
297 | 297 | 'name' => __( 'Bank Name', 'invoicing' ), |
298 | - ); |
|
298 | + ); |
|
299 | 299 | |
300 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
300 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
301 | 301 | 'type' => 'text', |
302 | 302 | 'id' => 'bank_transfer_ifsc', |
303 | 303 | 'name' => __( 'IFSC Code', 'invoicing' ), |
304 | - ); |
|
304 | + ); |
|
305 | 305 | |
306 | - $admin_settings['bank_transfer_iban'] = array( |
|
306 | + $admin_settings['bank_transfer_iban'] = array( |
|
307 | 307 | 'type' => 'text', |
308 | 308 | 'id' => 'bank_transfer_iban', |
309 | 309 | 'name' => __( 'IBAN', 'invoicing' ), |
310 | - ); |
|
310 | + ); |
|
311 | 311 | |
312 | - $admin_settings['bank_transfer_bic'] = array( |
|
312 | + $admin_settings['bank_transfer_bic'] = array( |
|
313 | 313 | 'type' => 'text', |
314 | 314 | 'id' => 'bank_transfer_bic', |
315 | 315 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
316 | - ); |
|
316 | + ); |
|
317 | 317 | |
318 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
319 | - 'type' => 'text', |
|
320 | - 'id' => 'bank_transfer_sort_code', |
|
321 | - 'name' => $sortcode, |
|
322 | - ); |
|
318 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
319 | + 'type' => 'text', |
|
320 | + 'id' => 'bank_transfer_sort_code', |
|
321 | + 'name' => $sortcode, |
|
322 | + ); |
|
323 | 323 | |
324 | - $admin_settings['bank_transfer_info'] = array( |
|
324 | + $admin_settings['bank_transfer_info'] = array( |
|
325 | 325 | 'id' => 'bank_transfer_info', |
326 | 326 | 'name' => __( 'Instructions', 'invoicing' ), |
327 | 327 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -331,17 +331,17 @@ discard block |
||
331 | 331 | 'rows' => 5, |
332 | 332 | ); |
333 | 333 | |
334 | - return $admin_settings; |
|
335 | - } |
|
334 | + return $admin_settings; |
|
335 | + } |
|
336 | 336 | |
337 | - /** |
|
338 | - * Processes invoice addons. |
|
339 | - * |
|
340 | - * @param WPInv_Invoice $invoice |
|
341 | - * @param GetPaid_Form_Item[] $items |
|
342 | - * @return WPInv_Invoice |
|
343 | - */ |
|
344 | - public function process_addons( $invoice, $items ) { |
|
337 | + /** |
|
338 | + * Processes invoice addons. |
|
339 | + * |
|
340 | + * @param WPInv_Invoice $invoice |
|
341 | + * @param GetPaid_Form_Item[] $items |
|
342 | + * @return WPInv_Invoice |
|
343 | + */ |
|
344 | + public function process_addons( $invoice, $items ) { |
|
345 | 345 | |
346 | 346 | foreach ( $items as $item ) { |
347 | 347 | $invoice->add_item( $item ); |
@@ -349,67 +349,67 @@ discard block |
||
349 | 349 | |
350 | 350 | $invoice->recalculate_total(); |
351 | 351 | $invoice->save(); |
352 | - } |
|
352 | + } |
|
353 | 353 | |
354 | - /** |
|
355 | - * (Maybe) renews a bank transfer subscription profile. |
|
356 | - * |
|
357 | - * |
|
354 | + /** |
|
355 | + * (Maybe) renews a bank transfer subscription profile. |
|
356 | + * |
|
357 | + * |
|
358 | 358 | * @param WPInv_Subscription $subscription |
359 | - */ |
|
360 | - public function maybe_renew_subscription( $subscription ) { |
|
359 | + */ |
|
360 | + public function maybe_renew_subscription( $subscription ) { |
|
361 | 361 | |
362 | 362 | // Ensure its our subscription && it's active. |
363 | 363 | if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
364 | - $subscription->create_payment(); |
|
364 | + $subscription->create_payment(); |
|
365 | 365 | } |
366 | 366 | |
367 | 367 | } |
368 | 368 | |
369 | - /** |
|
370 | - * Process a bank transfer payment. |
|
371 | - * |
|
372 | - * |
|
369 | + /** |
|
370 | + * Process a bank transfer payment. |
|
371 | + * |
|
372 | + * |
|
373 | 373 | * @param WPInv_Invoice $invoice |
374 | - */ |
|
375 | - public function invoice_paid( $invoice ) { |
|
376 | - |
|
377 | - // Abort if not paid by bank transfer. |
|
378 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
379 | - return; |
|
380 | - } |
|
381 | - |
|
382 | - // Is it a parent payment? |
|
383 | - if ( 0 == $invoice->get_parent_id() ) { |
|
384 | - |
|
385 | - // (Maybe) activate subscriptions. |
|
386 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
387 | - |
|
388 | - if ( ! empty( $subscriptions ) ) { |
|
389 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
390 | - |
|
391 | - foreach ( $subscriptions as $subscription ) { |
|
392 | - if ( $subscription->exists() ) { |
|
393 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
394 | - $expiry = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
395 | - |
|
396 | - $subscription->set_next_renewal_date( $expiry ); |
|
397 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
398 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
399 | - $subscription->activate(); |
|
400 | - } |
|
401 | - } |
|
402 | - } |
|
403 | - } else { |
|
404 | - |
|
405 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
406 | - |
|
407 | - // Renew the subscription. |
|
408 | - if ( $subscription && $subscription->exists() ) { |
|
409 | - $subscription->add_payment( array(), $invoice ); |
|
410 | - $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
411 | - } |
|
412 | - } |
|
374 | + */ |
|
375 | + public function invoice_paid( $invoice ) { |
|
376 | + |
|
377 | + // Abort if not paid by bank transfer. |
|
378 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
379 | + return; |
|
380 | + } |
|
381 | + |
|
382 | + // Is it a parent payment? |
|
383 | + if ( 0 == $invoice->get_parent_id() ) { |
|
384 | + |
|
385 | + // (Maybe) activate subscriptions. |
|
386 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
387 | + |
|
388 | + if ( ! empty( $subscriptions ) ) { |
|
389 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
390 | + |
|
391 | + foreach ( $subscriptions as $subscription ) { |
|
392 | + if ( $subscription->exists() ) { |
|
393 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
394 | + $expiry = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
395 | + |
|
396 | + $subscription->set_next_renewal_date( $expiry ); |
|
397 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
398 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
399 | + $subscription->activate(); |
|
400 | + } |
|
401 | + } |
|
402 | + } |
|
403 | + } else { |
|
404 | + |
|
405 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
406 | + |
|
407 | + // Renew the subscription. |
|
408 | + if ( $subscription && $subscription->exists() ) { |
|
409 | + $subscription->add_payment( array(), $invoice ); |
|
410 | + $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
411 | + } |
|
412 | + } |
|
413 | 413 | |
414 | 414 | } |
415 | 415 |
@@ -14,64 +14,64 @@ |
||
14 | 14 | * @return array|mixed|string|string[] |
15 | 15 | */ |
16 | 16 | function aui_bs_convert_sd_output( $output, $instance = '', $args = '', $sd = '' ) { |
17 | - global $aui_bs5; |
|
17 | + global $aui_bs5; |
|
18 | 18 | |
19 | - if ( $aui_bs5 ) { |
|
19 | + if ( $aui_bs5 ) { |
|
20 | 20 | |
21 | - $convert = array( |
|
22 | - 'ml-' => 'ms-', |
|
23 | - 'mr-' => 'me-', |
|
24 | - 'pl-' => 'ps-', |
|
25 | - 'pr-' => 'pe-', |
|
26 | - ' form-row' => ' row', |
|
27 | - ' embed-responsive-item' => '', |
|
28 | - ' embed-responsive' => ' ratio', |
|
29 | - '-1by1' => '-1x1', |
|
30 | - '-4by3' => '-4x3', |
|
31 | - '-16by9' => '-16x9', |
|
32 | - '-21by9' => '-21x9', |
|
33 | - 'geodir-lightbox-image' => 'aui-lightbox-image', |
|
34 | - ' badge-' => ' text-bg-', |
|
35 | - 'form-group' => 'mb-3', |
|
36 | - 'custom-select' => 'form-select', |
|
37 | - 'float-left' => 'float-start', |
|
38 | - 'float-right' => 'float-end', |
|
39 | - 'text-left' => 'text-start', |
|
40 | - 'text-sm-left' => 'text-sm-start', |
|
41 | - 'text-md-left' => 'text-md-start', |
|
42 | - 'text-lg-left' => 'text-lg-start', |
|
43 | - 'text-right' => 'text-end', |
|
44 | - 'text-sm-right' => 'text-sm-end', |
|
45 | - 'text-md-right' => 'text-md-end', |
|
46 | - 'text-lg-right' => 'text-lg-end', |
|
47 | - 'border-right' => 'border-end', |
|
48 | - 'border-left' => 'border-start', |
|
49 | - 'font-weight-' => 'fw-', |
|
50 | - 'btn-block' => 'w-100', |
|
51 | - 'rounded-left' => 'rounded-start', |
|
52 | - 'rounded-right' => 'rounded-end', |
|
53 | - 'font-italic' => 'fst-italic', |
|
21 | + $convert = array( |
|
22 | + 'ml-' => 'ms-', |
|
23 | + 'mr-' => 'me-', |
|
24 | + 'pl-' => 'ps-', |
|
25 | + 'pr-' => 'pe-', |
|
26 | + ' form-row' => ' row', |
|
27 | + ' embed-responsive-item' => '', |
|
28 | + ' embed-responsive' => ' ratio', |
|
29 | + '-1by1' => '-1x1', |
|
30 | + '-4by3' => '-4x3', |
|
31 | + '-16by9' => '-16x9', |
|
32 | + '-21by9' => '-21x9', |
|
33 | + 'geodir-lightbox-image' => 'aui-lightbox-image', |
|
34 | + ' badge-' => ' text-bg-', |
|
35 | + 'form-group' => 'mb-3', |
|
36 | + 'custom-select' => 'form-select', |
|
37 | + 'float-left' => 'float-start', |
|
38 | + 'float-right' => 'float-end', |
|
39 | + 'text-left' => 'text-start', |
|
40 | + 'text-sm-left' => 'text-sm-start', |
|
41 | + 'text-md-left' => 'text-md-start', |
|
42 | + 'text-lg-left' => 'text-lg-start', |
|
43 | + 'text-right' => 'text-end', |
|
44 | + 'text-sm-right' => 'text-sm-end', |
|
45 | + 'text-md-right' => 'text-md-end', |
|
46 | + 'text-lg-right' => 'text-lg-end', |
|
47 | + 'border-right' => 'border-end', |
|
48 | + 'border-left' => 'border-start', |
|
49 | + 'font-weight-' => 'fw-', |
|
50 | + 'btn-block' => 'w-100', |
|
51 | + 'rounded-left' => 'rounded-start', |
|
52 | + 'rounded-right' => 'rounded-end', |
|
53 | + 'font-italic' => 'fst-italic', |
|
54 | 54 | |
55 | 55 | // 'custom-control custom-checkbox' => 'form-check', |
56 | - // data |
|
57 | - ' data-toggle=' => ' data-bs-toggle=', |
|
58 | - 'data-ride=' => 'data-bs-ride=', |
|
59 | - 'data-controlnav=' => 'data-bs-controlnav=', |
|
60 | - 'data-slide=' => 'data-bs-slide=', |
|
61 | - 'data-slide-to=' => 'data-bs-slide-to=', |
|
62 | - 'data-target=' => 'data-bs-target=', |
|
63 | - 'data-dismiss="modal"' => 'data-bs-dismiss="modal"', |
|
64 | - 'class="close"' => 'class="btn-close"', |
|
65 | - '<span aria-hidden="true">×</span>' => '', |
|
66 | - ); |
|
67 | - $output = str_replace( |
|
68 | - array_keys( $convert ), |
|
69 | - array_values( $convert ), |
|
70 | - $output |
|
71 | - ); |
|
72 | - } |
|
56 | + // data |
|
57 | + ' data-toggle=' => ' data-bs-toggle=', |
|
58 | + 'data-ride=' => 'data-bs-ride=', |
|
59 | + 'data-controlnav=' => 'data-bs-controlnav=', |
|
60 | + 'data-slide=' => 'data-bs-slide=', |
|
61 | + 'data-slide-to=' => 'data-bs-slide-to=', |
|
62 | + 'data-target=' => 'data-bs-target=', |
|
63 | + 'data-dismiss="modal"' => 'data-bs-dismiss="modal"', |
|
64 | + 'class="close"' => 'class="btn-close"', |
|
65 | + '<span aria-hidden="true">×</span>' => '', |
|
66 | + ); |
|
67 | + $output = str_replace( |
|
68 | + array_keys( $convert ), |
|
69 | + array_values( $convert ), |
|
70 | + $output |
|
71 | + ); |
|
72 | + } |
|
73 | 73 | |
74 | - return $output; |
|
74 | + return $output; |
|
75 | 75 | } |
76 | 76 | |
77 | 77 | add_filter( 'wp_super_duper_widget_output', 'aui_bs_convert_sd_output', 10, 4 ); //$output, $instance, $args, $this |
@@ -57,8 +57,8 @@ discard block |
||
57 | 57 | 'getpaid-nonce', |
58 | 58 | 'getpaid-nonce' |
59 | 59 | ); |
60 | - $anchor = __( 'Deactivate', 'invoicing' ); |
|
61 | - $title = esc_attr__( 'Are you sure you want to deactivate this discount?', 'invoicing' ); |
|
60 | + $anchor = __( 'Deactivate', 'invoicing' ); |
|
61 | + $title = esc_attr__( 'Are you sure you want to deactivate this discount?', 'invoicing' ); |
|
62 | 62 | $row_actions['deactivate'] = "<a href='$url' onclick='return confirm(\"$title\")'>$anchor</a>"; |
63 | 63 | |
64 | 64 | } elseif ( in_array( strtolower( $discount->post_status ), array( 'pending', 'draft' ) ) && wpinv_current_user_can( 'activate_discount', array( 'discount' => (int) $discount->ID ) ) ) { |
@@ -73,8 +73,8 @@ discard block |
||
73 | 73 | 'getpaid-nonce', |
74 | 74 | 'getpaid-nonce' |
75 | 75 | ); |
76 | - $anchor = __( 'Activate', 'invoicing' ); |
|
77 | - $title = esc_attr__( 'Are you sure you want to activate this discount?', 'invoicing' ); |
|
76 | + $anchor = __( 'Activate', 'invoicing' ); |
|
77 | + $title = esc_attr__( 'Are you sure you want to activate this discount?', 'invoicing' ); |
|
78 | 78 | $row_actions['activate'] = "<a href='$url' onclick='return confirm(\"$title\")'>$anchor</a>"; |
79 | 79 | |
80 | 80 | } |
@@ -121,13 +121,13 @@ discard block |
||
121 | 121 | $types = wpinv_get_discount_types(); |
122 | 122 | |
123 | 123 | foreach ( $types as $name => $type ) { |
124 | - echo '<option value="' . esc_attr( $name ) . '"'; |
|
124 | + echo '<option value="' . esc_attr( $name ) . '"'; |
|
125 | 125 | |
126 | - if ( isset( $_GET['discount_type'] ) ) { |
|
127 | - selected( $name, sanitize_text_field( $_GET['discount_type'] ) ); |
|
126 | + if ( isset( $_GET['discount_type'] ) ) { |
|
127 | + selected( $name, sanitize_text_field( $_GET['discount_type'] ) ); |
|
128 | 128 | } |
129 | 129 | |
130 | - echo '>' . esc_html__( $type, 'invoicing' ) . '</option>'; |
|
130 | + echo '>' . esc_html__( $type, 'invoicing' ) . '</option>'; |
|
131 | 131 | } |
132 | 132 | ?> |
133 | 133 | </select> |
@@ -154,15 +154,15 @@ discard block |
||
154 | 154 | // Filter vat rule type |
155 | 155 | if ( isset( $_GET['discount_type'] ) && $_GET['discount_type'] !== '' ) { |
156 | 156 | $meta_query[] = array( |
157 | - 'key' => '_wpi_discount_type', |
|
158 | - 'value' => sanitize_key( urldecode( $_GET['discount_type'] ) ), |
|
159 | - 'compare' => '=', |
|
160 | - ); |
|
161 | - } |
|
157 | + 'key' => '_wpi_discount_type', |
|
158 | + 'value' => sanitize_key( urldecode( $_GET['discount_type'] ) ), |
|
159 | + 'compare' => '=', |
|
160 | + ); |
|
161 | + } |
|
162 | 162 | |
163 | 163 | if ( ! empty( $meta_query ) ) { |
164 | 164 | $vars['meta_query'] = $meta_query; |
165 | - } |
|
165 | + } |
|
166 | 166 | } |
167 | 167 | |
168 | 168 | return $vars; |
@@ -13,741 +13,741 @@ discard block |
||
13 | 13 | class GetPaid_Post_Types_Admin { |
14 | 14 | |
15 | 15 | /** |
16 | - * Hook in methods. |
|
17 | - */ |
|
18 | - public static function init() { |
|
19 | - |
|
20 | - // Init metaboxes. |
|
21 | - GetPaid_Metaboxes::init(); |
|
22 | - |
|
23 | - // Filter the post updated messages. |
|
24 | - add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' ); |
|
25 | - |
|
26 | - // Filter post actions. |
|
27 | - add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 ); |
|
28 | - add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 ); |
|
29 | - |
|
30 | - // Invoice table columns. |
|
31 | - add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 ); |
|
32 | - add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 ); |
|
33 | - add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) ); |
|
34 | - add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 ); |
|
35 | - |
|
36 | - // Items table columns. |
|
37 | - add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 ); |
|
38 | - add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 ); |
|
39 | - add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 ); |
|
40 | - add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 ); |
|
41 | - add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 ); |
|
42 | - add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 ); |
|
43 | - |
|
44 | - // Payment forms columns. |
|
45 | - add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 ); |
|
46 | - add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 ); |
|
47 | - add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 ); |
|
48 | - |
|
49 | - // Discount table columns. |
|
50 | - add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 ); |
|
51 | - add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 ); |
|
52 | - |
|
53 | - // Deleting posts. |
|
54 | - add_action( 'delete_post', array( __CLASS__, 'delete_post' ) ); |
|
55 | - add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 ); |
|
56 | - |
|
57 | - add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 ); |
|
58 | - } |
|
59 | - |
|
60 | - /** |
|
61 | - * Post updated messages. |
|
62 | - */ |
|
63 | - public static function post_updated_messages( $messages ) { |
|
64 | - global $post; |
|
65 | - |
|
66 | - $messages['wpi_discount'] = array( |
|
67 | - 0 => '', |
|
68 | - 1 => __( 'Discount updated.', 'invoicing' ), |
|
69 | - 2 => __( 'Custom field updated.', 'invoicing' ), |
|
70 | - 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
71 | - 4 => __( 'Discount updated.', 'invoicing' ), |
|
72 | - 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
73 | - 6 => __( 'Discount updated.', 'invoicing' ), |
|
74 | - 7 => __( 'Discount saved.', 'invoicing' ), |
|
75 | - 8 => __( 'Discount submitted.', 'invoicing' ), |
|
76 | - 9 => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
77 | - 10 => __( 'Discount draft updated.', 'invoicing' ), |
|
78 | - ); |
|
79 | - |
|
80 | - $messages['wpi_payment_form'] = array( |
|
81 | - 0 => '', |
|
82 | - 1 => __( 'Payment Form updated.', 'invoicing' ), |
|
83 | - 2 => __( 'Custom field updated.', 'invoicing' ), |
|
84 | - 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
85 | - 4 => __( 'Payment Form updated.', 'invoicing' ), |
|
86 | - 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
87 | - 6 => __( 'Payment Form updated.', 'invoicing' ), |
|
88 | - 7 => __( 'Payment Form saved.', 'invoicing' ), |
|
89 | - 8 => __( 'Payment Form submitted.', 'invoicing' ), |
|
90 | - 9 => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
91 | - 10 => __( 'Payment Form draft updated.', 'invoicing' ), |
|
92 | - ); |
|
93 | - |
|
94 | - return $messages; |
|
95 | - |
|
96 | - } |
|
97 | - |
|
98 | - /** |
|
99 | - * Post row actions. |
|
100 | - */ |
|
101 | - public static function post_row_actions( $actions, $post ) { |
|
102 | - |
|
103 | - $post = get_post( $post ); |
|
104 | - |
|
105 | - // We do not want to edit the default payment form. |
|
106 | - if ( 'wpi_payment_form' == $post->post_type ) { |
|
107 | - |
|
108 | - if ( wpinv_get_default_payment_form() === $post->ID ) { |
|
109 | - unset( $actions['trash'] ); |
|
110 | - unset( $actions['inline hide-if-no-js'] ); |
|
111 | - } |
|
112 | - |
|
113 | - $actions['duplicate'] = sprintf( |
|
114 | - '<a href="%1$s">%2$s</a>', |
|
115 | - esc_url( |
|
116 | - wp_nonce_url( |
|
117 | - add_query_arg( |
|
118 | - array( |
|
119 | - 'getpaid-admin-action' => 'duplicate_form', |
|
120 | - 'form_id' => $post->ID, |
|
121 | - ) |
|
122 | - ), |
|
123 | - 'getpaid-nonce', |
|
124 | - 'getpaid-nonce' |
|
125 | - ) |
|
126 | - ), |
|
127 | - esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
128 | - ); |
|
129 | - |
|
130 | - $actions['reset'] = sprintf( |
|
131 | - '<a href="%1$s" style="color: #800">%2$s</a>', |
|
132 | - esc_url( |
|
133 | - wp_nonce_url( |
|
134 | - add_query_arg( |
|
135 | - array( |
|
136 | - 'getpaid-admin-action' => 'reset_form_stats', |
|
137 | - 'form_id' => $post->ID, |
|
138 | - ) |
|
139 | - ), |
|
140 | - 'getpaid-nonce', |
|
141 | - 'getpaid-nonce' |
|
142 | - ) |
|
143 | - ), |
|
144 | - esc_html( __( 'Reset Stats', 'invoicing' ) ) |
|
145 | - ); |
|
146 | - } |
|
147 | - |
|
148 | - // Link to item payment form. |
|
149 | - if ( 'wpi_item' == $post->post_type ) { |
|
150 | - |
|
151 | - if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) { |
|
152 | - |
|
153 | - $actions['buy'] = sprintf( |
|
154 | - '<a href="%1$s">%2$s</a>', |
|
155 | - esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ), |
|
156 | - esc_html( __( 'Buy', 'invoicing' ) ) |
|
157 | - ); |
|
158 | - |
|
159 | - } |
|
16 | + * Hook in methods. |
|
17 | + */ |
|
18 | + public static function init() { |
|
19 | + |
|
20 | + // Init metaboxes. |
|
21 | + GetPaid_Metaboxes::init(); |
|
22 | + |
|
23 | + // Filter the post updated messages. |
|
24 | + add_filter( 'post_updated_messages', 'GetPaid_Post_Types_Admin::post_updated_messages' ); |
|
25 | + |
|
26 | + // Filter post actions. |
|
27 | + add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::post_row_actions', 10, 2 ); |
|
28 | + add_filter( 'post_row_actions', 'GetPaid_Post_Types_Admin::filter_invoice_row_actions', 90, 2 ); |
|
29 | + |
|
30 | + // Invoice table columns. |
|
31 | + add_filter( 'manage_wpi_invoice_posts_columns', array( __CLASS__, 'invoice_columns' ), 100 ); |
|
32 | + add_action( 'manage_wpi_invoice_posts_custom_column', array( __CLASS__, 'display_invoice_columns' ), 10, 2 ); |
|
33 | + add_filter( 'bulk_actions-edit-wpi_invoice', array( __CLASS__, 'invoice_bulk_actions' ) ); |
|
34 | + add_filter( 'handle_bulk_actions-edit-wpi_invoice', array( __CLASS__, 'handle_invoice_bulk_actions' ), 10, 3 ); |
|
35 | + |
|
36 | + // Items table columns. |
|
37 | + add_filter( 'manage_wpi_item_posts_columns', array( __CLASS__, 'item_columns' ), 100 ); |
|
38 | + add_filter( 'manage_edit-wpi_item_sortable_columns', array( __CLASS__, 'sortable_item_columns' ), 20 ); |
|
39 | + add_action( 'manage_wpi_item_posts_custom_column', array( __CLASS__, 'display_item_columns' ), 10, 2 ); |
|
40 | + add_action( 'restrict_manage_posts', array( __CLASS__, 'add_item_filters' ), 100 ); |
|
41 | + add_action( 'parse_query', array( __CLASS__, 'filter_item_query' ), 100 ); |
|
42 | + add_action( 'request', array( __CLASS__, 'reorder_items' ), 100 ); |
|
43 | + |
|
44 | + // Payment forms columns. |
|
45 | + add_filter( 'manage_wpi_payment_form_posts_columns', array( __CLASS__, 'payment_form_columns' ), 100 ); |
|
46 | + add_action( 'manage_wpi_payment_form_posts_custom_column', array( __CLASS__, 'display_payment_form_columns' ), 10, 2 ); |
|
47 | + add_filter( 'display_post_states', array( __CLASS__, 'filter_payment_form_state' ), 10, 2 ); |
|
48 | + |
|
49 | + // Discount table columns. |
|
50 | + add_filter( 'manage_wpi_discount_posts_columns', array( __CLASS__, 'discount_columns' ), 100 ); |
|
51 | + add_filter( 'bulk_actions-edit-wpi_discount', '__return_empty_array', 100 ); |
|
52 | + |
|
53 | + // Deleting posts. |
|
54 | + add_action( 'delete_post', array( __CLASS__, 'delete_post' ) ); |
|
55 | + add_filter( 'display_post_states', array( __CLASS__, 'filter_discount_state' ), 10, 2 ); |
|
56 | + |
|
57 | + add_filter( 'display_post_states', array( __CLASS__, 'add_display_post_states' ), 10, 2 ); |
|
58 | + } |
|
59 | + |
|
60 | + /** |
|
61 | + * Post updated messages. |
|
62 | + */ |
|
63 | + public static function post_updated_messages( $messages ) { |
|
64 | + global $post; |
|
65 | + |
|
66 | + $messages['wpi_discount'] = array( |
|
67 | + 0 => '', |
|
68 | + 1 => __( 'Discount updated.', 'invoicing' ), |
|
69 | + 2 => __( 'Custom field updated.', 'invoicing' ), |
|
70 | + 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
71 | + 4 => __( 'Discount updated.', 'invoicing' ), |
|
72 | + 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Discount restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
73 | + 6 => __( 'Discount updated.', 'invoicing' ), |
|
74 | + 7 => __( 'Discount saved.', 'invoicing' ), |
|
75 | + 8 => __( 'Discount submitted.', 'invoicing' ), |
|
76 | + 9 => wp_sprintf( __( 'Discount scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
77 | + 10 => __( 'Discount draft updated.', 'invoicing' ), |
|
78 | + ); |
|
79 | + |
|
80 | + $messages['wpi_payment_form'] = array( |
|
81 | + 0 => '', |
|
82 | + 1 => __( 'Payment Form updated.', 'invoicing' ), |
|
83 | + 2 => __( 'Custom field updated.', 'invoicing' ), |
|
84 | + 3 => __( 'Custom field deleted.', 'invoicing' ), |
|
85 | + 4 => __( 'Payment Form updated.', 'invoicing' ), |
|
86 | + 5 => isset( $_GET['revision'] ) ? wp_sprintf( __( 'Payment Form restored to revision from %s', 'invoicing' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, |
|
87 | + 6 => __( 'Payment Form updated.', 'invoicing' ), |
|
88 | + 7 => __( 'Payment Form saved.', 'invoicing' ), |
|
89 | + 8 => __( 'Payment Form submitted.', 'invoicing' ), |
|
90 | + 9 => wp_sprintf( __( 'Payment Form scheduled for: <strong>%1$s</strong>.', 'invoicing' ), date_i18n( __( 'M j, Y @ G:i', 'invoicing' ), strtotime( $post->post_date ) ) ), |
|
91 | + 10 => __( 'Payment Form draft updated.', 'invoicing' ), |
|
92 | + ); |
|
93 | + |
|
94 | + return $messages; |
|
95 | + |
|
96 | + } |
|
97 | + |
|
98 | + /** |
|
99 | + * Post row actions. |
|
100 | + */ |
|
101 | + public static function post_row_actions( $actions, $post ) { |
|
102 | + |
|
103 | + $post = get_post( $post ); |
|
104 | + |
|
105 | + // We do not want to edit the default payment form. |
|
106 | + if ( 'wpi_payment_form' == $post->post_type ) { |
|
107 | + |
|
108 | + if ( wpinv_get_default_payment_form() === $post->ID ) { |
|
109 | + unset( $actions['trash'] ); |
|
110 | + unset( $actions['inline hide-if-no-js'] ); |
|
111 | + } |
|
112 | + |
|
113 | + $actions['duplicate'] = sprintf( |
|
114 | + '<a href="%1$s">%2$s</a>', |
|
115 | + esc_url( |
|
116 | + wp_nonce_url( |
|
117 | + add_query_arg( |
|
118 | + array( |
|
119 | + 'getpaid-admin-action' => 'duplicate_form', |
|
120 | + 'form_id' => $post->ID, |
|
121 | + ) |
|
122 | + ), |
|
123 | + 'getpaid-nonce', |
|
124 | + 'getpaid-nonce' |
|
125 | + ) |
|
126 | + ), |
|
127 | + esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
128 | + ); |
|
129 | + |
|
130 | + $actions['reset'] = sprintf( |
|
131 | + '<a href="%1$s" style="color: #800">%2$s</a>', |
|
132 | + esc_url( |
|
133 | + wp_nonce_url( |
|
134 | + add_query_arg( |
|
135 | + array( |
|
136 | + 'getpaid-admin-action' => 'reset_form_stats', |
|
137 | + 'form_id' => $post->ID, |
|
138 | + ) |
|
139 | + ), |
|
140 | + 'getpaid-nonce', |
|
141 | + 'getpaid-nonce' |
|
142 | + ) |
|
143 | + ), |
|
144 | + esc_html( __( 'Reset Stats', 'invoicing' ) ) |
|
145 | + ); |
|
146 | + } |
|
147 | + |
|
148 | + // Link to item payment form. |
|
149 | + if ( 'wpi_item' == $post->post_type ) { |
|
150 | + |
|
151 | + if ( in_array( get_post_meta( $post->ID, '_wpinv_type', true ), array( '', 'fee', 'custom' ), true ) ) { |
|
152 | + |
|
153 | + $actions['buy'] = sprintf( |
|
154 | + '<a href="%1$s">%2$s</a>', |
|
155 | + esc_url( getpaid_embed_url( false, $post->ID . '|0' ) ), |
|
156 | + esc_html( __( 'Buy', 'invoicing' ) ) |
|
157 | + ); |
|
158 | + |
|
159 | + } |
|
160 | 160 | } |
161 | 161 | |
162 | - return $actions; |
|
163 | - } |
|
162 | + return $actions; |
|
163 | + } |
|
164 | 164 | |
165 | - /** |
|
165 | + /** |
|
166 | 166 | * Remove bulk edit option from admin side quote listing |
167 | 167 | * |
168 | 168 | * @since 1.0.0 |
169 | 169 | * @param array $actions post actions |
170 | - * @param WP_Post $post |
|
170 | + * @param WP_Post $post |
|
171 | 171 | * @return array $actions actions without edit option |
172 | 172 | */ |
173 | 173 | public static function filter_invoice_row_actions( $actions, $post ) { |
174 | 174 | |
175 | 175 | if ( getpaid_is_invoice_post_type( $post->post_type ) ) { |
176 | 176 | |
177 | - $actions = array(); |
|
178 | - $invoice = new WPInv_Invoice( $post ); |
|
179 | - |
|
180 | - $actions['edit'] = sprintf( |
|
181 | - '<a href="%1$s">%2$s</a>', |
|
182 | - esc_url( get_edit_post_link( $invoice->get_id() ) ), |
|
183 | - esc_html( __( 'Edit', 'invoicing' ) ) |
|
184 | - ); |
|
185 | - |
|
186 | - if ( ! $invoice->is_draft() ) { |
|
187 | - |
|
188 | - $actions['view'] = sprintf( |
|
189 | - '<a href="%1$s">%2$s</a>', |
|
190 | - esc_url( $invoice->get_view_url() ), |
|
191 | - sprintf( |
|
192 | - // translators: %s is the invoice type |
|
193 | - esc_html__( 'View %s', 'invoicing' ), |
|
194 | - getpaid_get_post_type_label( $invoice->get_post_type(), false ) |
|
195 | - ) |
|
196 | - ); |
|
197 | - |
|
198 | - $actions['send'] = sprintf( |
|
199 | - '<a href="%1$s">%2$s</a>', |
|
200 | - esc_url( |
|
201 | - wp_nonce_url( |
|
202 | - add_query_arg( |
|
203 | - array( |
|
204 | - 'getpaid-admin-action' => 'send_invoice', |
|
205 | - 'invoice_id' => $invoice->get_id(), |
|
206 | - ) |
|
207 | - ), |
|
208 | - 'getpaid-nonce', |
|
209 | - 'getpaid-nonce' |
|
210 | - ) |
|
211 | - ), |
|
212 | - esc_html( __( 'Send to Customer', 'invoicing' ) ) |
|
213 | - ); |
|
214 | - |
|
215 | - } |
|
216 | - |
|
217 | - $actions['duplicate'] = sprintf( |
|
218 | - '<a href="%1$s">%2$s</a>', |
|
219 | - esc_url( |
|
220 | - wp_nonce_url( |
|
221 | - add_query_arg( |
|
222 | - array( |
|
223 | - 'getpaid-admin-action' => 'duplicate_invoice', |
|
224 | - 'invoice_id' => $post->ID, |
|
225 | - ) |
|
226 | - ), |
|
227 | - 'getpaid-nonce', |
|
228 | - 'getpaid-nonce' |
|
229 | - ) |
|
230 | - ), |
|
231 | - esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
232 | - ); |
|
177 | + $actions = array(); |
|
178 | + $invoice = new WPInv_Invoice( $post ); |
|
179 | + |
|
180 | + $actions['edit'] = sprintf( |
|
181 | + '<a href="%1$s">%2$s</a>', |
|
182 | + esc_url( get_edit_post_link( $invoice->get_id() ) ), |
|
183 | + esc_html( __( 'Edit', 'invoicing' ) ) |
|
184 | + ); |
|
185 | + |
|
186 | + if ( ! $invoice->is_draft() ) { |
|
187 | + |
|
188 | + $actions['view'] = sprintf( |
|
189 | + '<a href="%1$s">%2$s</a>', |
|
190 | + esc_url( $invoice->get_view_url() ), |
|
191 | + sprintf( |
|
192 | + // translators: %s is the invoice type |
|
193 | + esc_html__( 'View %s', 'invoicing' ), |
|
194 | + getpaid_get_post_type_label( $invoice->get_post_type(), false ) |
|
195 | + ) |
|
196 | + ); |
|
197 | + |
|
198 | + $actions['send'] = sprintf( |
|
199 | + '<a href="%1$s">%2$s</a>', |
|
200 | + esc_url( |
|
201 | + wp_nonce_url( |
|
202 | + add_query_arg( |
|
203 | + array( |
|
204 | + 'getpaid-admin-action' => 'send_invoice', |
|
205 | + 'invoice_id' => $invoice->get_id(), |
|
206 | + ) |
|
207 | + ), |
|
208 | + 'getpaid-nonce', |
|
209 | + 'getpaid-nonce' |
|
210 | + ) |
|
211 | + ), |
|
212 | + esc_html( __( 'Send to Customer', 'invoicing' ) ) |
|
213 | + ); |
|
214 | + |
|
215 | + } |
|
216 | + |
|
217 | + $actions['duplicate'] = sprintf( |
|
218 | + '<a href="%1$s">%2$s</a>', |
|
219 | + esc_url( |
|
220 | + wp_nonce_url( |
|
221 | + add_query_arg( |
|
222 | + array( |
|
223 | + 'getpaid-admin-action' => 'duplicate_invoice', |
|
224 | + 'invoice_id' => $post->ID, |
|
225 | + ) |
|
226 | + ), |
|
227 | + 'getpaid-nonce', |
|
228 | + 'getpaid-nonce' |
|
229 | + ) |
|
230 | + ), |
|
231 | + esc_html( __( 'Duplicate', 'invoicing' ) ) |
|
232 | + ); |
|
233 | 233 | |
234 | 234 | } |
235 | 235 | |
236 | 236 | return $actions; |
237 | - } |
|
238 | - |
|
239 | - /** |
|
240 | - * Returns an array of invoice table columns. |
|
241 | - */ |
|
242 | - public static function invoice_columns( $columns ) { |
|
243 | - |
|
244 | - $columns = array( |
|
245 | - 'cb' => $columns['cb'], |
|
246 | - 'number' => __( 'Invoice', 'invoicing' ), |
|
247 | - 'customer' => __( 'Customer', 'invoicing' ), |
|
248 | - 'invoice_date' => __( 'Created', 'invoicing' ), |
|
249 | - 'payment_date' => __( 'Completed', 'invoicing' ), |
|
250 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
251 | - 'recurring' => __( 'Recurring', 'invoicing' ), |
|
252 | - 'status' => __( 'Status', 'invoicing' ), |
|
253 | - ); |
|
254 | - |
|
255 | - return apply_filters( 'wpi_invoice_table_columns', $columns ); |
|
256 | - } |
|
257 | - |
|
258 | - /** |
|
259 | - * Displays invoice table columns. |
|
260 | - */ |
|
261 | - public static function display_invoice_columns( $column_name, $post_id ) { |
|
262 | - |
|
263 | - $invoice = new WPInv_Invoice( $post_id ); |
|
264 | - |
|
265 | - switch ( $column_name ) { |
|
266 | - |
|
267 | - case 'invoice_date': |
|
268 | - $date_time = esc_attr( $invoice->get_created_date() ); |
|
269 | - $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
270 | - echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
271 | - break; |
|
272 | - |
|
273 | - case 'payment_date': |
|
274 | - if ( $invoice->is_paid() ) { |
|
275 | - $date_time = esc_attr( $invoice->get_completed_date() ); |
|
276 | - $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
277 | - echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
278 | - } else { |
|
279 | - echo '—'; |
|
280 | - } |
|
281 | - |
|
282 | - break; |
|
283 | - |
|
284 | - case 'amount': |
|
285 | - $amount = $invoice->get_total(); |
|
286 | - $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) ); |
|
287 | - |
|
288 | - if ( $invoice->is_refunded() ) { |
|
289 | - $refunded_amount = wpinv_price( 0, $invoice->get_currency() ); |
|
290 | - echo wp_kses_post( "<del>$formated_amount</del> <ins>$refunded_amount</ins>" ); |
|
291 | - } else { |
|
292 | - |
|
293 | - $discount = $invoice->get_total_discount(); |
|
294 | - |
|
295 | - if ( ! empty( $discount ) ) { |
|
296 | - $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() ); |
|
297 | - echo wp_kses_post( "<del>$new_amount</del> <ins>$formated_amount</ins>" ); |
|
298 | - } else { |
|
299 | - echo wp_kses_post( $formated_amount ); |
|
300 | - } |
|
301 | - } |
|
302 | - |
|
303 | - break; |
|
304 | - |
|
305 | - case 'status': |
|
306 | - $status = esc_html( $invoice->get_status() ); |
|
307 | - $status_label = esc_html( $invoice->get_status_nicename() ); |
|
308 | - |
|
309 | - // If it is paid, show the gateway title. |
|
310 | - if ( $invoice->is_paid() ) { |
|
311 | - $gateway = esc_html( $invoice->get_gateway_title() ); |
|
312 | - $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) ); |
|
313 | - |
|
314 | - echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" ); |
|
315 | - } else { |
|
316 | - echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" ); |
|
317 | - } |
|
318 | - |
|
319 | - // If it is not paid, display the overdue and view status. |
|
320 | - if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) { |
|
321 | - |
|
322 | - // Invoice view status. |
|
323 | - if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) { |
|
324 | - echo ' <i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
325 | - } else { |
|
326 | - echo ' <i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
327 | - } |
|
328 | - |
|
329 | - // Display the overview status. |
|
330 | - if ( wpinv_get_option( 'overdue_active' ) ) { |
|
331 | - $due_date = $invoice->get_due_date(); |
|
332 | - $fomatted = getpaid_format_date( $due_date ); |
|
333 | - |
|
334 | - if ( ! empty( $fomatted ) ) { |
|
335 | - $date = wp_sprintf( |
|
336 | - // translators: %s is the due date. |
|
337 | - __( 'Due %s', 'invoicing' ), |
|
338 | - $fomatted |
|
339 | - ); |
|
340 | - echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" ); |
|
341 | - } |
|
342 | - } |
|
343 | - } |
|
344 | - |
|
345 | - break; |
|
346 | - |
|
347 | - case 'recurring': |
|
348 | - if ( $invoice->is_recurring() ) { |
|
349 | - echo '<i class="fa fa-check" style="color:#43850a;"></i>'; |
|
350 | - } else { |
|
351 | - echo '<i class="fa fa-times" style="color:#616161;"></i>'; |
|
352 | - } |
|
353 | - break; |
|
354 | - |
|
355 | - case 'number': |
|
356 | - $edit_link = esc_url( get_edit_post_link( $invoice->get_id() ) ); |
|
357 | - $invoice_number = esc_html( $invoice->get_number() ); |
|
358 | - $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' ); |
|
359 | - |
|
360 | - echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" ); |
|
361 | - |
|
362 | - do_action( 'getpaid_admin_table_invoice_number_column', $invoice ); |
|
363 | - break; |
|
364 | - |
|
365 | - case 'customer': |
|
366 | - $customer_name = $invoice->get_user_full_name(); |
|
367 | - |
|
368 | - if ( empty( $customer_name ) ) { |
|
369 | - $customer_name = $invoice->get_email(); |
|
370 | - } |
|
371 | - |
|
372 | - if ( ! empty( $customer_name ) ) { |
|
373 | - $customer_details = esc_attr__( 'View Customer Details', 'invoicing' ); |
|
374 | - $view_link = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) ); |
|
375 | - echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" ); |
|
376 | - } else { |
|
377 | - echo '<div>—</div>'; |
|
378 | - } |
|
379 | - |
|
380 | - break; |
|
381 | - |
|
382 | - } |
|
383 | - |
|
384 | - } |
|
385 | - |
|
386 | - /** |
|
387 | - * Displays invoice bulk actions. |
|
388 | - */ |
|
389 | - public static function invoice_bulk_actions( $actions ) { |
|
390 | - $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' ); |
|
391 | - return $actions; |
|
392 | - } |
|
393 | - |
|
394 | - /** |
|
395 | - * Processes invoice bulk actions. |
|
396 | - */ |
|
397 | - public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) { |
|
398 | - |
|
399 | - if ( 'resend-invoice' === $action ) { |
|
400 | - foreach ( $post_ids as $post_id ) { |
|
401 | - getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true ); |
|
402 | - } |
|
403 | - } |
|
404 | - |
|
405 | - return $redirect_url; |
|
406 | - |
|
407 | - } |
|
408 | - |
|
409 | - /** |
|
410 | - * Returns an array of payment forms table columns. |
|
411 | - */ |
|
412 | - public static function payment_form_columns( $columns ) { |
|
413 | - |
|
414 | - $columns = array( |
|
415 | - 'cb' => $columns['cb'], |
|
416 | - 'title' => __( 'Name', 'invoicing' ), |
|
417 | - 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
418 | - 'earnings' => __( 'Revenue', 'invoicing' ), |
|
419 | - 'refunds' => __( 'Refunded', 'invoicing' ), |
|
420 | - 'items' => __( 'Items', 'invoicing' ), |
|
421 | - 'date' => __( 'Date', 'invoicing' ), |
|
422 | - ); |
|
423 | - |
|
424 | - return apply_filters( 'wpi_payment_form_table_columns', $columns ); |
|
425 | - |
|
426 | - } |
|
427 | - |
|
428 | - /** |
|
429 | - * Displays payment form table columns. |
|
430 | - */ |
|
431 | - public static function display_payment_form_columns( $column_name, $post_id ) { |
|
432 | - |
|
433 | - // Retrieve the payment form. |
|
434 | - $form = new GetPaid_Payment_Form( $post_id ); |
|
435 | - |
|
436 | - switch ( $column_name ) { |
|
437 | - |
|
438 | - case 'earnings': |
|
439 | - echo wp_kses_post( wpinv_price( $form->get_earned() ) ); |
|
440 | - break; |
|
441 | - |
|
442 | - case 'refunds': |
|
443 | - echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
444 | - break; |
|
445 | - |
|
446 | - case 'refunds': |
|
447 | - echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
448 | - break; |
|
449 | - |
|
450 | - case 'shortcode': |
|
451 | - if ( $form->is_default() ) { |
|
452 | - echo '—'; |
|
453 | - } else { |
|
454 | - echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>'; |
|
455 | - } |
|
456 | - |
|
457 | - break; |
|
237 | + } |
|
238 | + |
|
239 | + /** |
|
240 | + * Returns an array of invoice table columns. |
|
241 | + */ |
|
242 | + public static function invoice_columns( $columns ) { |
|
243 | + |
|
244 | + $columns = array( |
|
245 | + 'cb' => $columns['cb'], |
|
246 | + 'number' => __( 'Invoice', 'invoicing' ), |
|
247 | + 'customer' => __( 'Customer', 'invoicing' ), |
|
248 | + 'invoice_date' => __( 'Created', 'invoicing' ), |
|
249 | + 'payment_date' => __( 'Completed', 'invoicing' ), |
|
250 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
251 | + 'recurring' => __( 'Recurring', 'invoicing' ), |
|
252 | + 'status' => __( 'Status', 'invoicing' ), |
|
253 | + ); |
|
254 | + |
|
255 | + return apply_filters( 'wpi_invoice_table_columns', $columns ); |
|
256 | + } |
|
257 | + |
|
258 | + /** |
|
259 | + * Displays invoice table columns. |
|
260 | + */ |
|
261 | + public static function display_invoice_columns( $column_name, $post_id ) { |
|
262 | + |
|
263 | + $invoice = new WPInv_Invoice( $post_id ); |
|
264 | + |
|
265 | + switch ( $column_name ) { |
|
266 | + |
|
267 | + case 'invoice_date': |
|
268 | + $date_time = esc_attr( $invoice->get_created_date() ); |
|
269 | + $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
270 | + echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
271 | + break; |
|
272 | + |
|
273 | + case 'payment_date': |
|
274 | + if ( $invoice->is_paid() ) { |
|
275 | + $date_time = esc_attr( $invoice->get_completed_date() ); |
|
276 | + $date = esc_html( getpaid_format_date_value( $date_time, '—', true ) ); |
|
277 | + echo wp_kses_post( "<span title='$date_time'>$date</span>" ); |
|
278 | + } else { |
|
279 | + echo '—'; |
|
280 | + } |
|
281 | + |
|
282 | + break; |
|
283 | + |
|
284 | + case 'amount': |
|
285 | + $amount = $invoice->get_total(); |
|
286 | + $formated_amount = wp_kses_post( wpinv_price( $amount, $invoice->get_currency() ) ); |
|
287 | + |
|
288 | + if ( $invoice->is_refunded() ) { |
|
289 | + $refunded_amount = wpinv_price( 0, $invoice->get_currency() ); |
|
290 | + echo wp_kses_post( "<del>$formated_amount</del> <ins>$refunded_amount</ins>" ); |
|
291 | + } else { |
|
292 | + |
|
293 | + $discount = $invoice->get_total_discount(); |
|
294 | + |
|
295 | + if ( ! empty( $discount ) ) { |
|
296 | + $new_amount = wpinv_price( $amount + $discount, $invoice->get_currency() ); |
|
297 | + echo wp_kses_post( "<del>$new_amount</del> <ins>$formated_amount</ins>" ); |
|
298 | + } else { |
|
299 | + echo wp_kses_post( $formated_amount ); |
|
300 | + } |
|
301 | + } |
|
302 | + |
|
303 | + break; |
|
304 | + |
|
305 | + case 'status': |
|
306 | + $status = esc_html( $invoice->get_status() ); |
|
307 | + $status_label = esc_html( $invoice->get_status_nicename() ); |
|
308 | + |
|
309 | + // If it is paid, show the gateway title. |
|
310 | + if ( $invoice->is_paid() ) { |
|
311 | + $gateway = esc_html( $invoice->get_gateway_title() ); |
|
312 | + $gateway = wp_sprintf( esc_attr__( 'Paid via %s', 'invoicing' ), esc_html( $gateway ) ); |
|
313 | + |
|
314 | + echo wp_kses_post( "<mark class='wpi-help-tip getpaid-invoice-status $status' title='$gateway'><span>$status_label</span></mark>" ); |
|
315 | + } else { |
|
316 | + echo wp_kses_post( "<mark class='getpaid-invoice-status $status'><span>$status_label</span></mark>" ); |
|
317 | + } |
|
318 | + |
|
319 | + // If it is not paid, display the overdue and view status. |
|
320 | + if ( ! $invoice->is_paid() && ! $invoice->is_refunded() ) { |
|
321 | + |
|
322 | + // Invoice view status. |
|
323 | + if ( wpinv_is_invoice_viewed( $invoice->get_id() ) ) { |
|
324 | + echo ' <i class="fa fa-eye wpi-help-tip" title="' . esc_attr__( 'Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
325 | + } else { |
|
326 | + echo ' <i class="fa fa-eye-slash wpi-help-tip" title="' . esc_attr__( 'Not Viewed by Customer', 'invoicing' ) . '"></i>'; |
|
327 | + } |
|
328 | + |
|
329 | + // Display the overview status. |
|
330 | + if ( wpinv_get_option( 'overdue_active' ) ) { |
|
331 | + $due_date = $invoice->get_due_date(); |
|
332 | + $fomatted = getpaid_format_date( $due_date ); |
|
333 | + |
|
334 | + if ( ! empty( $fomatted ) ) { |
|
335 | + $date = wp_sprintf( |
|
336 | + // translators: %s is the due date. |
|
337 | + __( 'Due %s', 'invoicing' ), |
|
338 | + $fomatted |
|
339 | + ); |
|
340 | + echo wp_kses_post( "<p class='description' style='color: #888;' title='$due_date'>$fomatted</p>" ); |
|
341 | + } |
|
342 | + } |
|
343 | + } |
|
344 | + |
|
345 | + break; |
|
346 | + |
|
347 | + case 'recurring': |
|
348 | + if ( $invoice->is_recurring() ) { |
|
349 | + echo '<i class="fa fa-check" style="color:#43850a;"></i>'; |
|
350 | + } else { |
|
351 | + echo '<i class="fa fa-times" style="color:#616161;"></i>'; |
|
352 | + } |
|
353 | + break; |
|
354 | + |
|
355 | + case 'number': |
|
356 | + $edit_link = esc_url( get_edit_post_link( $invoice->get_id() ) ); |
|
357 | + $invoice_number = esc_html( $invoice->get_number() ); |
|
358 | + $invoice_details = esc_attr__( 'View Invoice Details', 'invoicing' ); |
|
359 | + |
|
360 | + echo wp_kses_post( "<a href='$edit_link' title='$invoice_details'><strong>$invoice_number</strong></a>" ); |
|
361 | + |
|
362 | + do_action( 'getpaid_admin_table_invoice_number_column', $invoice ); |
|
363 | + break; |
|
364 | + |
|
365 | + case 'customer': |
|
366 | + $customer_name = $invoice->get_user_full_name(); |
|
367 | + |
|
368 | + if ( empty( $customer_name ) ) { |
|
369 | + $customer_name = $invoice->get_email(); |
|
370 | + } |
|
371 | + |
|
372 | + if ( ! empty( $customer_name ) ) { |
|
373 | + $customer_details = esc_attr__( 'View Customer Details', 'invoicing' ); |
|
374 | + $view_link = esc_url( add_query_arg( 'user_id', $invoice->get_user_id(), admin_url( 'user-edit.php' ) ) ); |
|
375 | + echo wp_kses_post( "<a href='$view_link' title='$customer_details'><span>$customer_name</span></a>" ); |
|
376 | + } else { |
|
377 | + echo '<div>—</div>'; |
|
378 | + } |
|
379 | + |
|
380 | + break; |
|
458 | 381 | |
459 | - case 'items': |
|
460 | - $items = $form->get_items(); |
|
461 | - |
|
462 | - if ( $form->is_default() || empty( $items ) ) { |
|
463 | - echo '—'; |
|
464 | - return; |
|
465 | - } |
|
466 | - |
|
467 | - $_items = array(); |
|
468 | - |
|
469 | - foreach ( $items as $item ) { |
|
470 | - $url = $item->get_edit_url(); |
|
471 | - |
|
472 | - if ( empty( $url ) ) { |
|
473 | - $_items[] = esc_html( $item->get_name() ); |
|
474 | - } else { |
|
475 | - $_items[] = sprintf( |
|
476 | - '<a href="%s">%s</a>', |
|
477 | - esc_url( $url ), |
|
478 | - esc_html( $item->get_name() ) |
|
479 | - ); |
|
480 | - } |
|
382 | + } |
|
383 | + |
|
384 | + } |
|
385 | + |
|
386 | + /** |
|
387 | + * Displays invoice bulk actions. |
|
388 | + */ |
|
389 | + public static function invoice_bulk_actions( $actions ) { |
|
390 | + $actions['resend-invoice'] = __( 'Send to Customer', 'invoicing' ); |
|
391 | + return $actions; |
|
392 | + } |
|
393 | + |
|
394 | + /** |
|
395 | + * Processes invoice bulk actions. |
|
396 | + */ |
|
397 | + public static function handle_invoice_bulk_actions( $redirect_url, $action, $post_ids ) { |
|
398 | + |
|
399 | + if ( 'resend-invoice' === $action ) { |
|
400 | + foreach ( $post_ids as $post_id ) { |
|
401 | + getpaid()->get( 'invoice_emails' )->user_invoice( new WPInv_Invoice( $post_id ), true ); |
|
402 | + } |
|
403 | + } |
|
404 | + |
|
405 | + return $redirect_url; |
|
406 | + |
|
407 | + } |
|
408 | + |
|
409 | + /** |
|
410 | + * Returns an array of payment forms table columns. |
|
411 | + */ |
|
412 | + public static function payment_form_columns( $columns ) { |
|
413 | + |
|
414 | + $columns = array( |
|
415 | + 'cb' => $columns['cb'], |
|
416 | + 'title' => __( 'Name', 'invoicing' ), |
|
417 | + 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
418 | + 'earnings' => __( 'Revenue', 'invoicing' ), |
|
419 | + 'refunds' => __( 'Refunded', 'invoicing' ), |
|
420 | + 'items' => __( 'Items', 'invoicing' ), |
|
421 | + 'date' => __( 'Date', 'invoicing' ), |
|
422 | + ); |
|
423 | + |
|
424 | + return apply_filters( 'wpi_payment_form_table_columns', $columns ); |
|
425 | + |
|
426 | + } |
|
427 | + |
|
428 | + /** |
|
429 | + * Displays payment form table columns. |
|
430 | + */ |
|
431 | + public static function display_payment_form_columns( $column_name, $post_id ) { |
|
432 | + |
|
433 | + // Retrieve the payment form. |
|
434 | + $form = new GetPaid_Payment_Form( $post_id ); |
|
435 | + |
|
436 | + switch ( $column_name ) { |
|
437 | + |
|
438 | + case 'earnings': |
|
439 | + echo wp_kses_post( wpinv_price( $form->get_earned() ) ); |
|
440 | + break; |
|
441 | + |
|
442 | + case 'refunds': |
|
443 | + echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
444 | + break; |
|
445 | + |
|
446 | + case 'refunds': |
|
447 | + echo wp_kses_post( wpinv_price( $form->get_refunded() ) ); |
|
448 | + break; |
|
449 | + |
|
450 | + case 'shortcode': |
|
451 | + if ( $form->is_default() ) { |
|
452 | + echo '—'; |
|
453 | + } else { |
|
454 | + echo '<input onClick="this.select()" type="text" value="[getpaid form=' . esc_attr( $form->get_id() ) . ']" style="width: 100%;" readonly/>'; |
|
455 | + } |
|
456 | + |
|
457 | + break; |
|
458 | + |
|
459 | + case 'items': |
|
460 | + $items = $form->get_items(); |
|
461 | + |
|
462 | + if ( $form->is_default() || empty( $items ) ) { |
|
463 | + echo '—'; |
|
464 | + return; |
|
465 | + } |
|
466 | + |
|
467 | + $_items = array(); |
|
468 | + |
|
469 | + foreach ( $items as $item ) { |
|
470 | + $url = $item->get_edit_url(); |
|
471 | + |
|
472 | + if ( empty( $url ) ) { |
|
473 | + $_items[] = esc_html( $item->get_name() ); |
|
474 | + } else { |
|
475 | + $_items[] = sprintf( |
|
476 | + '<a href="%s">%s</a>', |
|
477 | + esc_url( $url ), |
|
478 | + esc_html( $item->get_name() ) |
|
479 | + ); |
|
480 | + } |
|
481 | 481 | } |
482 | 482 | |
483 | - echo wp_kses_post( implode( '<br>', $_items ) ); |
|
483 | + echo wp_kses_post( implode( '<br>', $_items ) ); |
|
484 | + |
|
485 | + break; |
|
486 | + |
|
487 | + } |
|
488 | + |
|
489 | + } |
|
490 | + |
|
491 | + /** |
|
492 | + * Filters post states. |
|
493 | + */ |
|
494 | + public static function filter_payment_form_state( $post_states, $post ) { |
|
495 | + |
|
496 | + if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) { |
|
497 | + $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' ); |
|
498 | + } |
|
499 | + |
|
500 | + return $post_states; |
|
501 | + |
|
502 | + } |
|
503 | + |
|
504 | + /** |
|
505 | + * Returns an array of coupon table columns. |
|
506 | + */ |
|
507 | + public static function discount_columns( $columns ) { |
|
508 | + |
|
509 | + $columns = array( |
|
510 | + 'cb' => $columns['cb'], |
|
511 | + 'title' => __( 'Name', 'invoicing' ), |
|
512 | + 'code' => __( 'Code', 'invoicing' ), |
|
513 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
514 | + 'usage' => __( 'Usage / Limit', 'invoicing' ), |
|
515 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
516 | + 'expiry_date' => __( 'Expiry Date', 'invoicing' ), |
|
517 | + ); |
|
518 | + |
|
519 | + return apply_filters( 'wpi_discount_table_columns', $columns ); |
|
520 | + } |
|
484 | 521 | |
485 | - break; |
|
522 | + /** |
|
523 | + * Filters post states. |
|
524 | + */ |
|
525 | + public static function filter_discount_state( $post_states, $post ) { |
|
486 | 526 | |
487 | - } |
|
527 | + if ( 'wpi_discount' === $post->post_type ) { |
|
488 | 528 | |
489 | - } |
|
529 | + $discount = new WPInv_Discount( $post ); |
|
490 | 530 | |
491 | - /** |
|
492 | - * Filters post states. |
|
493 | - */ |
|
494 | - public static function filter_payment_form_state( $post_states, $post ) { |
|
531 | + $status = $discount->is_expired() ? 'expired' : $discount->get_status(); |
|
495 | 532 | |
496 | - if ( 'wpi_payment_form' === $post->post_type && wpinv_get_default_payment_form() === $post->ID ) { |
|
497 | - $post_states['default_form'] = __( 'Default Payment Form', 'invoicing' ); |
|
498 | - } |
|
533 | + if ( 'publish' !== $status ) { |
|
534 | + return array( |
|
535 | + 'discount_status' => wpinv_discount_status( $status ), |
|
536 | + ); |
|
537 | + } |
|
538 | + |
|
539 | + return array(); |
|
540 | + |
|
541 | + } |
|
542 | + |
|
543 | + return $post_states; |
|
499 | 544 | |
500 | - return $post_states; |
|
545 | + } |
|
501 | 546 | |
502 | - } |
|
547 | + /** |
|
548 | + * Returns an array of items table columns. |
|
549 | + */ |
|
550 | + public static function item_columns( $columns ) { |
|
551 | + |
|
552 | + $columns = array( |
|
553 | + 'cb' => $columns['cb'], |
|
554 | + 'title' => __( 'Name', 'invoicing' ), |
|
555 | + 'price' => __( 'Price', 'invoicing' ), |
|
556 | + 'vat_rule' => __( 'Tax Rule', 'invoicing' ), |
|
557 | + 'vat_class' => __( 'Tax Class', 'invoicing' ), |
|
558 | + 'type' => __( 'Type', 'invoicing' ), |
|
559 | + 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
560 | + ); |
|
561 | + |
|
562 | + if ( ! wpinv_use_taxes() ) { |
|
563 | + unset( $columns['vat_rule'] ); |
|
564 | + unset( $columns['vat_class'] ); |
|
565 | + } |
|
503 | 566 | |
504 | - /** |
|
505 | - * Returns an array of coupon table columns. |
|
506 | - */ |
|
507 | - public static function discount_columns( $columns ) { |
|
567 | + return apply_filters( 'wpi_item_table_columns', $columns ); |
|
568 | + } |
|
508 | 569 | |
509 | - $columns = array( |
|
510 | - 'cb' => $columns['cb'], |
|
511 | - 'title' => __( 'Name', 'invoicing' ), |
|
512 | - 'code' => __( 'Code', 'invoicing' ), |
|
513 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
514 | - 'usage' => __( 'Usage / Limit', 'invoicing' ), |
|
515 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
516 | - 'expiry_date' => __( 'Expiry Date', 'invoicing' ), |
|
517 | - ); |
|
570 | + /** |
|
571 | + * Returns an array of sortable items table columns. |
|
572 | + */ |
|
573 | + public static function sortable_item_columns( $columns ) { |
|
574 | + |
|
575 | + return array_merge( |
|
576 | + $columns, |
|
577 | + array( |
|
578 | + 'price' => 'price', |
|
579 | + 'vat_rule' => 'vat_rule', |
|
580 | + 'vat_class' => 'vat_class', |
|
581 | + 'type' => 'type', |
|
582 | + ) |
|
583 | + ); |
|
518 | 584 | |
519 | - return apply_filters( 'wpi_discount_table_columns', $columns ); |
|
520 | - } |
|
585 | + } |
|
521 | 586 | |
522 | - /** |
|
523 | - * Filters post states. |
|
524 | - */ |
|
525 | - public static function filter_discount_state( $post_states, $post ) { |
|
587 | + /** |
|
588 | + * Displays items table columns. |
|
589 | + */ |
|
590 | + public static function display_item_columns( $column_name, $post_id ) { |
|
526 | 591 | |
527 | - if ( 'wpi_discount' === $post->post_type ) { |
|
592 | + $item = new WPInv_Item( $post_id ); |
|
528 | 593 | |
529 | - $discount = new WPInv_Discount( $post ); |
|
594 | + switch ( $column_name ) { |
|
530 | 595 | |
531 | - $status = $discount->is_expired() ? 'expired' : $discount->get_status(); |
|
596 | + case 'price': |
|
597 | + if ( ! $item->is_recurring() ) { |
|
598 | + echo wp_kses_post( $item->get_the_price() ); |
|
599 | + break; |
|
600 | + } |
|
532 | 601 | |
533 | - if ( 'publish' !== $status ) { |
|
534 | - return array( |
|
535 | - 'discount_status' => wpinv_discount_status( $status ), |
|
536 | - ); |
|
537 | - } |
|
602 | + $price = wp_sprintf( |
|
603 | + __( '%1$s / %2$s', 'invoicing' ), |
|
604 | + $item->get_the_price(), |
|
605 | + getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' ) |
|
606 | + ); |
|
538 | 607 | |
539 | - return array(); |
|
608 | + if ( $item->get_the_price() == $item->get_the_initial_price() ) { |
|
609 | + echo wp_kses_post( $price ); |
|
610 | + break; |
|
611 | + } |
|
540 | 612 | |
541 | - } |
|
613 | + echo wp_kses_post( $item->get_the_initial_price() ); |
|
542 | 614 | |
543 | - return $post_states; |
|
615 | + echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>'; |
|
616 | + break; |
|
544 | 617 | |
545 | - } |
|
618 | + case 'vat_rule': |
|
619 | + echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) ); |
|
620 | + break; |
|
546 | 621 | |
547 | - /** |
|
548 | - * Returns an array of items table columns. |
|
549 | - */ |
|
550 | - public static function item_columns( $columns ) { |
|
622 | + case 'vat_class': |
|
623 | + echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) ); |
|
624 | + break; |
|
551 | 625 | |
552 | - $columns = array( |
|
553 | - 'cb' => $columns['cb'], |
|
554 | - 'title' => __( 'Name', 'invoicing' ), |
|
555 | - 'price' => __( 'Price', 'invoicing' ), |
|
556 | - 'vat_rule' => __( 'Tax Rule', 'invoicing' ), |
|
557 | - 'vat_class' => __( 'Tax Class', 'invoicing' ), |
|
558 | - 'type' => __( 'Type', 'invoicing' ), |
|
559 | - 'shortcode' => __( 'Shortcode', 'invoicing' ), |
|
560 | - ); |
|
626 | + case 'shortcode': |
|
627 | + if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) { |
|
628 | + echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>'; |
|
629 | + } else { |
|
630 | + echo '—'; |
|
631 | + } |
|
561 | 632 | |
562 | - if ( ! wpinv_use_taxes() ) { |
|
563 | - unset( $columns['vat_rule'] ); |
|
564 | - unset( $columns['vat_class'] ); |
|
565 | - } |
|
633 | + break; |
|
566 | 634 | |
567 | - return apply_filters( 'wpi_item_table_columns', $columns ); |
|
568 | - } |
|
635 | + case 'type': |
|
636 | + echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' ); |
|
637 | + break; |
|
569 | 638 | |
570 | - /** |
|
571 | - * Returns an array of sortable items table columns. |
|
572 | - */ |
|
573 | - public static function sortable_item_columns( $columns ) { |
|
574 | - |
|
575 | - return array_merge( |
|
576 | - $columns, |
|
577 | - array( |
|
578 | - 'price' => 'price', |
|
579 | - 'vat_rule' => 'vat_rule', |
|
580 | - 'vat_class' => 'vat_class', |
|
581 | - 'type' => 'type', |
|
582 | - ) |
|
583 | - ); |
|
584 | - |
|
585 | - } |
|
586 | - |
|
587 | - /** |
|
588 | - * Displays items table columns. |
|
589 | - */ |
|
590 | - public static function display_item_columns( $column_name, $post_id ) { |
|
591 | - |
|
592 | - $item = new WPInv_Item( $post_id ); |
|
593 | - |
|
594 | - switch ( $column_name ) { |
|
595 | - |
|
596 | - case 'price': |
|
597 | - if ( ! $item->is_recurring() ) { |
|
598 | - echo wp_kses_post( $item->get_the_price() ); |
|
599 | - break; |
|
600 | - } |
|
601 | - |
|
602 | - $price = wp_sprintf( |
|
603 | - __( '%1$s / %2$s', 'invoicing' ), |
|
604 | - $item->get_the_price(), |
|
605 | - getpaid_get_subscription_period_label( $item->get_recurring_period(), $item->get_recurring_interval(), '' ) |
|
606 | - ); |
|
607 | - |
|
608 | - if ( $item->get_the_price() == $item->get_the_initial_price() ) { |
|
609 | - echo wp_kses_post( $price ); |
|
610 | - break; |
|
611 | - } |
|
612 | - |
|
613 | - echo wp_kses_post( $item->get_the_initial_price() ); |
|
614 | - |
|
615 | - echo '<span class="meta">' . wp_sprintf( esc_html__( 'then %s', 'invoicing' ), wp_kses_post( $price ) ) . '</span>'; |
|
616 | - break; |
|
617 | - |
|
618 | - case 'vat_rule': |
|
619 | - echo wp_kses_post( getpaid_get_tax_rule_label( $item->get_vat_rule() ) ); |
|
620 | - break; |
|
621 | - |
|
622 | - case 'vat_class': |
|
623 | - echo wp_kses_post( getpaid_get_tax_class_label( $item->get_vat_class() ) ); |
|
624 | - break; |
|
625 | - |
|
626 | - case 'shortcode': |
|
627 | - if ( $item->is_type( array( '', 'fee', 'custom' ) ) ) { |
|
628 | - echo '<input onClick="this.select()" type="text" value="[getpaid item=' . esc_attr( $item->get_id() ) . ' button=\'Buy Now\']" style="width: 100%;" readonly/>'; |
|
629 | - } else { |
|
630 | - echo '—'; |
|
631 | - } |
|
632 | - |
|
633 | - break; |
|
634 | - |
|
635 | - case 'type': |
|
636 | - echo wp_kses_post( wpinv_item_type( $item->get_id() ) . '<span class="meta">' . $item->get_custom_singular_name() . '</span>' ); |
|
637 | - break; |
|
638 | - |
|
639 | - } |
|
640 | - |
|
641 | - } |
|
642 | - |
|
643 | - /** |
|
644 | - * Lets users filter items using taxes. |
|
645 | - */ |
|
646 | - public static function add_item_filters( $post_type ) { |
|
647 | - |
|
648 | - // Abort if we're not dealing with items. |
|
649 | - if ( 'wpi_item' !== $post_type ) { |
|
650 | - return; |
|
651 | - } |
|
652 | - |
|
653 | - // Filter by vat rules. |
|
654 | - if ( wpinv_use_taxes() ) { |
|
655 | - |
|
656 | - // Sanitize selected vat rule. |
|
657 | - $vat_rule = ''; |
|
658 | - $vat_rules = getpaid_get_tax_rules(); |
|
659 | - if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
660 | - $vat_rule = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
661 | - } |
|
662 | - |
|
663 | - // Filter by VAT rule. |
|
664 | - wpinv_html_select( |
|
665 | - array( |
|
666 | - 'options' => array_merge( |
|
667 | - array( |
|
668 | - '' => __( 'All Tax Rules', 'invoicing' ), |
|
669 | - ), |
|
670 | - $vat_rules |
|
671 | - ), |
|
672 | - 'name' => 'vat_rule', |
|
673 | - 'id' => 'vat_rule', |
|
674 | - 'selected' => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '', |
|
675 | - 'show_option_all' => false, |
|
676 | - 'show_option_none' => false, |
|
677 | - ) |
|
678 | - ); |
|
679 | - |
|
680 | - // Filter by VAT class. |
|
681 | - |
|
682 | - // Sanitize selected vat rule. |
|
683 | - $vat_class = ''; |
|
684 | - $vat_classes = getpaid_get_tax_classes(); |
|
685 | - if ( isset( $_GET['vat_class'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
686 | - $vat_class = sanitize_text_field( $_GET['vat_class'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
687 | - } |
|
688 | - |
|
689 | - wpinv_html_select( |
|
690 | - array( |
|
691 | - 'options' => array_merge( |
|
692 | - array( |
|
693 | - '' => __( 'All Tax Classes', 'invoicing' ), |
|
694 | - ), |
|
695 | - $vat_classes |
|
696 | - ), |
|
697 | - 'name' => 'vat_class', |
|
698 | - 'id' => 'vat_class', |
|
699 | - 'selected' => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '', |
|
700 | - 'show_option_all' => false, |
|
701 | - 'show_option_none' => false, |
|
702 | - ) |
|
703 | - ); |
|
704 | - |
|
705 | - } |
|
706 | - |
|
707 | - // Filter by item type. |
|
708 | - $type = ''; |
|
709 | - if ( isset( $_GET['type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
710 | - $type = sanitize_text_field( $_GET['type'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
711 | - } |
|
712 | - |
|
713 | - wpinv_html_select( |
|
714 | - array( |
|
715 | - 'options' => array_merge( |
|
716 | - array( |
|
717 | - '' => __( 'All item types', 'invoicing' ), |
|
718 | - ), |
|
719 | - wpinv_get_item_types() |
|
720 | - ), |
|
721 | - 'name' => 'type', |
|
722 | - 'id' => 'type', |
|
723 | - 'selected' => in_array( $type, wpinv_item_types(), true ) ? $type : '', |
|
724 | - 'show_option_all' => false, |
|
725 | - 'show_option_none' => false, |
|
726 | - ) |
|
727 | - ); |
|
728 | - |
|
729 | - } |
|
730 | - |
|
731 | - /** |
|
732 | - * Filters the item query. |
|
733 | - */ |
|
734 | - public static function filter_item_query( $query ) { |
|
735 | - |
|
736 | - // modify the query only if it admin and main query. |
|
737 | - if ( ! ( is_admin() && $query->is_main_query() ) ) { |
|
738 | - return $query; |
|
739 | - } |
|
740 | - |
|
741 | - // we want to modify the query for our items. |
|
742 | - if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) { |
|
743 | - return $query; |
|
744 | - } |
|
745 | - |
|
746 | - if ( empty( $query->query_vars['meta_query'] ) ) { |
|
747 | - $query->query_vars['meta_query'] = array(); |
|
748 | - } |
|
749 | - |
|
750 | - // Filter vat rule type |
|
639 | + } |
|
640 | + |
|
641 | + } |
|
642 | + |
|
643 | + /** |
|
644 | + * Lets users filter items using taxes. |
|
645 | + */ |
|
646 | + public static function add_item_filters( $post_type ) { |
|
647 | + |
|
648 | + // Abort if we're not dealing with items. |
|
649 | + if ( 'wpi_item' !== $post_type ) { |
|
650 | + return; |
|
651 | + } |
|
652 | + |
|
653 | + // Filter by vat rules. |
|
654 | + if ( wpinv_use_taxes() ) { |
|
655 | + |
|
656 | + // Sanitize selected vat rule. |
|
657 | + $vat_rule = ''; |
|
658 | + $vat_rules = getpaid_get_tax_rules(); |
|
659 | + if ( isset( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
660 | + $vat_rule = sanitize_text_field( $_GET['vat_rule'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
661 | + } |
|
662 | + |
|
663 | + // Filter by VAT rule. |
|
664 | + wpinv_html_select( |
|
665 | + array( |
|
666 | + 'options' => array_merge( |
|
667 | + array( |
|
668 | + '' => __( 'All Tax Rules', 'invoicing' ), |
|
669 | + ), |
|
670 | + $vat_rules |
|
671 | + ), |
|
672 | + 'name' => 'vat_rule', |
|
673 | + 'id' => 'vat_rule', |
|
674 | + 'selected' => in_array( $vat_rule, array_keys( $vat_rules ), true ) ? $vat_rule : '', |
|
675 | + 'show_option_all' => false, |
|
676 | + 'show_option_none' => false, |
|
677 | + ) |
|
678 | + ); |
|
679 | + |
|
680 | + // Filter by VAT class. |
|
681 | + |
|
682 | + // Sanitize selected vat rule. |
|
683 | + $vat_class = ''; |
|
684 | + $vat_classes = getpaid_get_tax_classes(); |
|
685 | + if ( isset( $_GET['vat_class'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
686 | + $vat_class = sanitize_text_field( $_GET['vat_class'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
687 | + } |
|
688 | + |
|
689 | + wpinv_html_select( |
|
690 | + array( |
|
691 | + 'options' => array_merge( |
|
692 | + array( |
|
693 | + '' => __( 'All Tax Classes', 'invoicing' ), |
|
694 | + ), |
|
695 | + $vat_classes |
|
696 | + ), |
|
697 | + 'name' => 'vat_class', |
|
698 | + 'id' => 'vat_class', |
|
699 | + 'selected' => in_array( $vat_class, array_keys( $vat_classes ), true ) ? $vat_class : '', |
|
700 | + 'show_option_all' => false, |
|
701 | + 'show_option_none' => false, |
|
702 | + ) |
|
703 | + ); |
|
704 | + |
|
705 | + } |
|
706 | + |
|
707 | + // Filter by item type. |
|
708 | + $type = ''; |
|
709 | + if ( isset( $_GET['type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
710 | + $type = sanitize_text_field( $_GET['type'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
|
711 | + } |
|
712 | + |
|
713 | + wpinv_html_select( |
|
714 | + array( |
|
715 | + 'options' => array_merge( |
|
716 | + array( |
|
717 | + '' => __( 'All item types', 'invoicing' ), |
|
718 | + ), |
|
719 | + wpinv_get_item_types() |
|
720 | + ), |
|
721 | + 'name' => 'type', |
|
722 | + 'id' => 'type', |
|
723 | + 'selected' => in_array( $type, wpinv_item_types(), true ) ? $type : '', |
|
724 | + 'show_option_all' => false, |
|
725 | + 'show_option_none' => false, |
|
726 | + ) |
|
727 | + ); |
|
728 | + |
|
729 | + } |
|
730 | + |
|
731 | + /** |
|
732 | + * Filters the item query. |
|
733 | + */ |
|
734 | + public static function filter_item_query( $query ) { |
|
735 | + |
|
736 | + // modify the query only if it admin and main query. |
|
737 | + if ( ! ( is_admin() && $query->is_main_query() ) ) { |
|
738 | + return $query; |
|
739 | + } |
|
740 | + |
|
741 | + // we want to modify the query for our items. |
|
742 | + if ( empty( $query->query['post_type'] ) || 'wpi_item' !== $query->query['post_type'] ) { |
|
743 | + return $query; |
|
744 | + } |
|
745 | + |
|
746 | + if ( empty( $query->query_vars['meta_query'] ) ) { |
|
747 | + $query->query_vars['meta_query'] = array(); |
|
748 | + } |
|
749 | + |
|
750 | + // Filter vat rule type |
|
751 | 751 | if ( ! empty( $_GET['vat_rule'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
752 | 752 | $query->query_vars['meta_query'][] = array( |
753 | 753 | 'key' => '_wpinv_vat_rule', |
@@ -772,101 +772,101 @@ discard block |
||
772 | 772 | 'value' => sanitize_text_field( $_GET['type'] ), // phpcs:ignore WordPress.Security.NonceVerification.Recommended |
773 | 773 | 'compare' => '=', |
774 | 774 | ); |
775 | - } |
|
776 | - |
|
777 | - $query->query_vars['meta_query'][] = array( |
|
778 | - 'key' => '_wpinv_one_time', |
|
779 | - 'compare' => 'NOT EXISTS', |
|
780 | - ); |
|
781 | - } |
|
782 | - |
|
783 | - /** |
|
784 | - * Reorders items. |
|
785 | - */ |
|
786 | - public static function reorder_items( $vars ) { |
|
787 | - global $typenow; |
|
788 | - |
|
789 | - if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) { |
|
790 | - return $vars; |
|
791 | - } |
|
792 | - |
|
793 | - // By item type. |
|
794 | - if ( 'type' === $vars['orderby'] ) { |
|
795 | - return array_merge( |
|
796 | - $vars, |
|
797 | - array( |
|
798 | - 'meta_key' => '_wpinv_type', |
|
799 | - 'orderby' => 'meta_value', |
|
800 | - ) |
|
801 | - ); |
|
802 | - } |
|
803 | - |
|
804 | - // By vat class. |
|
805 | - if ( 'vat_class' === $vars['orderby'] ) { |
|
806 | - return array_merge( |
|
807 | - $vars, |
|
808 | - array( |
|
809 | - 'meta_key' => '_wpinv_vat_class', |
|
810 | - 'orderby' => 'meta_value', |
|
811 | - ) |
|
812 | - ); |
|
813 | - } |
|
814 | - |
|
815 | - // By vat rule. |
|
816 | - if ( 'vat_rule' === $vars['orderby'] ) { |
|
817 | - return array_merge( |
|
818 | - $vars, |
|
819 | - array( |
|
820 | - 'meta_key' => '_wpinv_vat_rule', |
|
821 | - 'orderby' => 'meta_value', |
|
822 | - ) |
|
823 | - ); |
|
824 | - } |
|
825 | - |
|
826 | - // By price. |
|
827 | - if ( 'price' === $vars['orderby'] ) { |
|
828 | - return array_merge( |
|
829 | - $vars, |
|
830 | - array( |
|
831 | - 'meta_key' => '_wpinv_price', |
|
832 | - 'orderby' => 'meta_value_num', |
|
833 | - ) |
|
834 | - ); |
|
835 | - } |
|
836 | - |
|
837 | - return $vars; |
|
838 | - |
|
839 | - } |
|
840 | - |
|
841 | - /** |
|
842 | - * Fired when deleting a post. |
|
843 | - */ |
|
844 | - public static function delete_post( $post_id ) { |
|
845 | - |
|
846 | - switch ( get_post_type( $post_id ) ) { |
|
847 | - |
|
848 | - case 'wpi_item': |
|
849 | - do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) ); |
|
850 | - break; |
|
851 | - |
|
852 | - case 'wpi_payment_form': |
|
853 | - do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) ); |
|
854 | - break; |
|
855 | - |
|
856 | - case 'wpi_discount': |
|
857 | - do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) ); |
|
858 | - break; |
|
859 | - |
|
860 | - case 'wpi_invoice': |
|
861 | - $invoice = new WPInv_Invoice( $post_id ); |
|
862 | - do_action( 'getpaid_before_delete_invoice', $invoice ); |
|
863 | - $invoice->get_data_store()->delete_items( $invoice ); |
|
864 | - $invoice->get_data_store()->delete_special_fields( $invoice ); |
|
865 | - break; |
|
866 | - } |
|
867 | - } |
|
868 | - |
|
869 | - /** |
|
775 | + } |
|
776 | + |
|
777 | + $query->query_vars['meta_query'][] = array( |
|
778 | + 'key' => '_wpinv_one_time', |
|
779 | + 'compare' => 'NOT EXISTS', |
|
780 | + ); |
|
781 | + } |
|
782 | + |
|
783 | + /** |
|
784 | + * Reorders items. |
|
785 | + */ |
|
786 | + public static function reorder_items( $vars ) { |
|
787 | + global $typenow; |
|
788 | + |
|
789 | + if ( 'wpi_item' !== $typenow || empty( $vars['orderby'] ) ) { |
|
790 | + return $vars; |
|
791 | + } |
|
792 | + |
|
793 | + // By item type. |
|
794 | + if ( 'type' === $vars['orderby'] ) { |
|
795 | + return array_merge( |
|
796 | + $vars, |
|
797 | + array( |
|
798 | + 'meta_key' => '_wpinv_type', |
|
799 | + 'orderby' => 'meta_value', |
|
800 | + ) |
|
801 | + ); |
|
802 | + } |
|
803 | + |
|
804 | + // By vat class. |
|
805 | + if ( 'vat_class' === $vars['orderby'] ) { |
|
806 | + return array_merge( |
|
807 | + $vars, |
|
808 | + array( |
|
809 | + 'meta_key' => '_wpinv_vat_class', |
|
810 | + 'orderby' => 'meta_value', |
|
811 | + ) |
|
812 | + ); |
|
813 | + } |
|
814 | + |
|
815 | + // By vat rule. |
|
816 | + if ( 'vat_rule' === $vars['orderby'] ) { |
|
817 | + return array_merge( |
|
818 | + $vars, |
|
819 | + array( |
|
820 | + 'meta_key' => '_wpinv_vat_rule', |
|
821 | + 'orderby' => 'meta_value', |
|
822 | + ) |
|
823 | + ); |
|
824 | + } |
|
825 | + |
|
826 | + // By price. |
|
827 | + if ( 'price' === $vars['orderby'] ) { |
|
828 | + return array_merge( |
|
829 | + $vars, |
|
830 | + array( |
|
831 | + 'meta_key' => '_wpinv_price', |
|
832 | + 'orderby' => 'meta_value_num', |
|
833 | + ) |
|
834 | + ); |
|
835 | + } |
|
836 | + |
|
837 | + return $vars; |
|
838 | + |
|
839 | + } |
|
840 | + |
|
841 | + /** |
|
842 | + * Fired when deleting a post. |
|
843 | + */ |
|
844 | + public static function delete_post( $post_id ) { |
|
845 | + |
|
846 | + switch ( get_post_type( $post_id ) ) { |
|
847 | + |
|
848 | + case 'wpi_item': |
|
849 | + do_action( 'getpaid_before_delete_item', new WPInv_Item( $post_id ) ); |
|
850 | + break; |
|
851 | + |
|
852 | + case 'wpi_payment_form': |
|
853 | + do_action( 'getpaid_before_delete_payment_form', new GetPaid_Payment_Form( $post_id ) ); |
|
854 | + break; |
|
855 | + |
|
856 | + case 'wpi_discount': |
|
857 | + do_action( 'getpaid_before_delete_discount', new WPInv_Discount( $post_id ) ); |
|
858 | + break; |
|
859 | + |
|
860 | + case 'wpi_invoice': |
|
861 | + $invoice = new WPInv_Invoice( $post_id ); |
|
862 | + do_action( 'getpaid_before_delete_invoice', $invoice ); |
|
863 | + $invoice->get_data_store()->delete_items( $invoice ); |
|
864 | + $invoice->get_data_store()->delete_special_fields( $invoice ); |
|
865 | + break; |
|
866 | + } |
|
867 | + } |
|
868 | + |
|
869 | + /** |
|
870 | 870 | * Add a post display state for special GetPaid pages in the page list table. |
871 | 871 | * |
872 | 872 | * @param array $post_states An array of post display states. |
@@ -880,21 +880,21 @@ discard block |
||
880 | 880 | $post_states['getpaid_success_page'] = __( 'GetPaid Receipt Page', 'invoicing' ); |
881 | 881 | } |
882 | 882 | |
883 | - foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) { |
|
883 | + foreach ( getpaid_get_invoice_post_types() as $post_type => $label ) { |
|
884 | 884 | |
885 | - if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) { |
|
886 | - $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf( |
|
887 | - __( 'GetPaid %s History Page', 'invoicing' ), |
|
888 | - $label |
|
889 | - ); |
|
890 | - } |
|
885 | + if ( wpinv_get_option( "{$post_type}_history_page", 0 ) == $post->ID ) { |
|
886 | + $post_states[ "getpaid_{$post_type}_history_page" ] = sprintf( |
|
887 | + __( 'GetPaid %s History Page', 'invoicing' ), |
|
888 | + $label |
|
889 | + ); |
|
890 | + } |
|
891 | 891 | } |
892 | 892 | |
893 | - if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) { |
|
893 | + if ( wpinv_get_option( 'invoice_subscription_page', 0 ) == $post->ID ) { |
|
894 | 894 | $post_states['getpaid_invoice_subscription_page'] = __( 'GetPaid Subscription Page', 'invoicing' ); |
895 | 895 | } |
896 | 896 | |
897 | - if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) { |
|
897 | + if ( wpinv_get_option( 'checkout_page', 0 ) == $post->ID ) { |
|
898 | 898 | $post_states['getpaid_checkout_page'] = __( 'GetPaid Checkout Page', 'invoicing' ); |
899 | 899 | } |
900 | 900 |
@@ -57,21 +57,21 @@ discard block |
||
57 | 57 | $args = wp_parse_args( |
58 | 58 | $args, |
59 | 59 | array( |
60 | - 'status' => array( 'publish' ), |
|
61 | - 'limit' => get_option( 'posts_per_page' ), |
|
62 | - 'page' => 1, |
|
63 | - 'exclude' => array(), |
|
64 | - 'orderby' => 'date', |
|
65 | - 'order' => 'DESC', |
|
66 | - 'type' => wpinv_item_types(), |
|
67 | - 'meta_query' => array( |
|
60 | + 'status' => array( 'publish' ), |
|
61 | + 'limit' => get_option( 'posts_per_page' ), |
|
62 | + 'page' => 1, |
|
63 | + 'exclude' => array(), |
|
64 | + 'orderby' => 'date', |
|
65 | + 'order' => 'DESC', |
|
66 | + 'type' => wpinv_item_types(), |
|
67 | + 'meta_query' => array( |
|
68 | 68 | array( |
69 | 69 | 'key' => '_wpinv_one_time', |
70 | 70 | 'compare' => 'NOT EXISTS', |
71 | 71 | ), |
72 | 72 | ), |
73 | - 'return' => 'objects', |
|
74 | - 'paginate' => false, |
|
73 | + 'return' => 'objects', |
|
74 | + 'paginate' => false, |
|
75 | 75 | ) |
76 | 76 | ); |
77 | 77 | |
@@ -211,9 +211,9 @@ discard block |
||
211 | 211 | |
212 | 212 | function wpinv_get_item_types() { |
213 | 213 | $item_types = array( |
214 | - 'custom' => __( 'Standard', 'invoicing' ), |
|
215 | - 'fee' => __( 'Fee', 'invoicing' ), |
|
216 | - ); |
|
214 | + 'custom' => __( 'Standard', 'invoicing' ), |
|
215 | + 'fee' => __( 'Fee', 'invoicing' ), |
|
216 | + ); |
|
217 | 217 | return apply_filters( 'wpinv_get_item_types', $item_types ); |
218 | 218 | } |
219 | 219 | |
@@ -255,16 +255,16 @@ discard block |
||
255 | 255 | $args = array(); |
256 | 256 | if ( $post_ids ) { |
257 | 257 | $args = array( |
258 | - 'fields' => 'ids', |
|
259 | - ); |
|
258 | + 'fields' => 'ids', |
|
259 | + ); |
|
260 | 260 | } |
261 | 261 | |
262 | 262 | $args = array_merge( |
263 | 263 | $args, |
264 | 264 | array( |
265 | 265 | 'post_type' => 'wpi_item', |
266 | - 'orderby' => 'rand', |
|
267 | - 'post_count' => $num, |
|
266 | + 'orderby' => 'rand', |
|
267 | + 'post_count' => $num, |
|
268 | 268 | 'meta_query' => array( |
269 | 269 | array( |
270 | 270 | 'key' => '_wpinv_one_time', |
@@ -439,10 +439,10 @@ discard block |
||
439 | 439 | $bill_times_less = $bill_times - 1; |
440 | 440 | |
441 | 441 | if ( ! empty( $bill_times ) ) { |
442 | - $bill_times = $item->get_recurring_interval() * $bill_times; |
|
442 | + $bill_times = $item->get_recurring_interval() * $bill_times; |
|
443 | 443 | $bill_times_less = getpaid_get_subscription_period_label( $item->get_recurring_period(), $bill_times - $item->get_recurring_interval() ); |
444 | - $bill_times = getpaid_get_subscription_period_label( $item->get_recurring_period(), $bill_times ); |
|
445 | - } |
|
444 | + $bill_times = getpaid_get_subscription_period_label( $item->get_recurring_period(), $bill_times ); |
|
445 | + } |
|
446 | 446 | |
447 | 447 | if ( $item instanceof GetPaid_Form_Item && false === $_initial_price ) { |
448 | 448 | $initial_price = wpinv_price( $item->get_sub_total(), $currency ); |