@@ -13,464 +13,464 @@ discard block |
||
13 | 13 | */ |
14 | 14 | abstract class GetPaid_Payment_Gateway { |
15 | 15 | |
16 | - /** |
|
17 | - * Set if the place checkout button should be renamed on selection. |
|
18 | - * |
|
19 | - * @var string |
|
20 | - */ |
|
21 | - public $checkout_button_text; |
|
22 | - |
|
23 | - /** |
|
24 | - * Boolean whether the method is enabled. |
|
25 | - * |
|
26 | - * @var bool |
|
27 | - */ |
|
28 | - public $enabled = true; |
|
29 | - |
|
30 | - /** |
|
31 | - * Payment method id. |
|
32 | - * |
|
33 | - * @var string |
|
34 | - */ |
|
35 | - public $id; |
|
36 | - |
|
37 | - /** |
|
38 | - * Payment method order. |
|
39 | - * |
|
40 | - * @var int |
|
41 | - */ |
|
42 | - public $order = 10; |
|
43 | - |
|
44 | - /** |
|
45 | - * Payment method title for the frontend. |
|
46 | - * |
|
47 | - * @var string |
|
48 | - */ |
|
49 | - public $title; |
|
50 | - |
|
51 | - /** |
|
52 | - * Payment method description for the frontend. |
|
53 | - * |
|
54 | - * @var string |
|
55 | - */ |
|
56 | - public $description; |
|
57 | - |
|
58 | - /** |
|
59 | - * Gateway title. |
|
60 | - * |
|
61 | - * @var string |
|
62 | - */ |
|
63 | - public $method_title = ''; |
|
64 | - |
|
65 | - /** |
|
66 | - * Gateway description. |
|
67 | - * |
|
68 | - * @var string |
|
69 | - */ |
|
70 | - public $method_description = ''; |
|
71 | - |
|
72 | - /** |
|
73 | - * Countries this gateway is allowed for. |
|
74 | - * |
|
75 | - * @var array |
|
76 | - */ |
|
77 | - public $countries; |
|
78 | - |
|
79 | - /** |
|
80 | - * Currencies this gateway is allowed for. |
|
81 | - * |
|
82 | - * @var array |
|
83 | - */ |
|
84 | - public $currencies; |
|
85 | - |
|
86 | - /** |
|
87 | - * Currencies this gateway is not allowed for. |
|
88 | - * |
|
89 | - * @var array |
|
90 | - */ |
|
91 | - public $exclude_currencies; |
|
92 | - |
|
93 | - /** |
|
94 | - * Maximum transaction amount, zero does not define a maximum. |
|
95 | - * |
|
96 | - * @var int |
|
97 | - */ |
|
98 | - public $max_amount = 0; |
|
99 | - |
|
100 | - /** |
|
101 | - * Optional URL to view a transaction. |
|
102 | - * |
|
103 | - * @var string |
|
104 | - */ |
|
105 | - public $view_transaction_url = ''; |
|
106 | - |
|
107 | - /** |
|
108 | - * Optional URL to view a subscription. |
|
109 | - * |
|
110 | - * @var string |
|
111 | - */ |
|
112 | - public $view_subscription_url = ''; |
|
113 | - |
|
114 | - /** |
|
115 | - * Optional label to show for "new payment method" in the payment |
|
116 | - * method/token selection radio selection. |
|
117 | - * |
|
118 | - * @var string |
|
119 | - */ |
|
120 | - public $new_method_label = ''; |
|
121 | - |
|
122 | - /** |
|
123 | - * Contains a user's saved tokens for this gateway. |
|
124 | - * |
|
125 | - * @var array |
|
126 | - */ |
|
127 | - protected $tokens = array(); |
|
128 | - |
|
129 | - /** |
|
130 | - * An array of features that this gateway supports. |
|
131 | - * |
|
132 | - * @var array |
|
133 | - */ |
|
134 | - protected $supports = array(); |
|
135 | - |
|
136 | - /** |
|
137 | - * Class constructor. |
|
138 | - */ |
|
139 | - public function __construct() { |
|
140 | - |
|
141 | - do_action( 'getpaid_before_init_payment_gateway_' . $this->id, $this ); |
|
142 | - |
|
143 | - // Register gateway. |
|
144 | - add_filter( 'wpinv_payment_gateways', array( $this, 'register_gateway' ) ); |
|
145 | - |
|
146 | - $this->enabled = wpinv_is_gateway_active( $this->id ); |
|
147 | - |
|
148 | - // Add support for various features. |
|
149 | - foreach ( $this->supports as $feature ) { |
|
150 | - add_filter( "wpinv_{$this->id}_support_{$feature}", '__return_true' ); |
|
151 | - add_filter( "getpaid_{$this->id}_support_{$feature}", '__return_true' ); |
|
152 | - add_filter( "getpaid_{$this->id}_supports_{$feature}", '__return_true' ); |
|
153 | - } |
|
154 | - |
|
155 | - // Invoice addons. |
|
156 | - if ( $this->supports( 'addons' ) ) { |
|
157 | - add_action( "getpaid_process_{$this->id}_invoice_addons", array( $this, 'process_addons' ), 10, 2 ); |
|
158 | - } |
|
159 | - |
|
160 | - // Gateway settings. |
|
161 | - add_filter( "wpinv_gateway_settings_{$this->id}", array( $this, 'admin_settings' ) ); |
|
162 | - |
|
163 | - // Gateway checkout fields. |
|
164 | - add_action( "wpinv_{$this->id}_cc_form", array( $this, 'payment_fields' ), 10, 2 ); |
|
165 | - |
|
166 | - // Process payment. |
|
167 | - add_action( "getpaid_gateway_{$this->id}", array( $this, 'process_payment' ), 10, 3 ); |
|
168 | - |
|
169 | - // Change the checkout button text. |
|
170 | - if ( ! empty( $this->checkout_button_text ) ) { |
|
171 | - add_filter( "getpaid_gateway_{$this->id}_checkout_button_label", array( $this, 'rename_checkout_button' ) ); |
|
172 | - } |
|
173 | - |
|
174 | - // Check if a gateway is valid for a given currency. |
|
175 | - add_filter( "getpaid_gateway_{$this->id}_is_valid_for_currency", array( $this, 'validate_currency' ), 10, 2 ); |
|
176 | - |
|
177 | - // Generate the transaction url. |
|
178 | - add_filter( "getpaid_gateway_{$this->id}_transaction_url", array( $this, 'filter_transaction_url' ), 10, 2 ); |
|
179 | - |
|
180 | - // Generate the subscription url. |
|
181 | - add_filter( 'getpaid_remote_subscription_profile_url', array( $this, 'generate_subscription_url' ), 10, 2 ); |
|
182 | - |
|
183 | - // Confirm payments. |
|
184 | - add_filter( "wpinv_payment_confirm_{$this->id}", array( $this, 'confirm_payment' ), 10, 2 ); |
|
185 | - |
|
186 | - // Verify IPNs. |
|
187 | - add_action( "wpinv_verify_{$this->id}_ipn", array( $this, 'verify_ipn' ) ); |
|
188 | - |
|
189 | - } |
|
190 | - |
|
191 | - /** |
|
192 | - * Checks if this gateway is a given gateway. |
|
193 | - * |
|
194 | - * @since 1.0.19 |
|
195 | - * @return bool |
|
196 | - */ |
|
197 | - public function is( $gateway ) { |
|
198 | - return $gateway == $this->id; |
|
199 | - } |
|
200 | - |
|
201 | - /** |
|
202 | - * Returns a users saved tokens for this gateway. |
|
203 | - * |
|
204 | - * @since 1.0.19 |
|
205 | - * @return array |
|
206 | - */ |
|
207 | - public function get_tokens( $sandbox = null ) { |
|
208 | - |
|
209 | - if ( is_user_logged_in() && $this->supports( 'tokens' ) && 0 == count( $this->tokens ) ) { |
|
210 | - $tokens = get_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", true ); |
|
211 | - |
|
212 | - if ( is_array( $tokens ) ) { |
|
213 | - $this->tokens = $tokens; |
|
214 | - } |
|
16 | + /** |
|
17 | + * Set if the place checkout button should be renamed on selection. |
|
18 | + * |
|
19 | + * @var string |
|
20 | + */ |
|
21 | + public $checkout_button_text; |
|
22 | + |
|
23 | + /** |
|
24 | + * Boolean whether the method is enabled. |
|
25 | + * |
|
26 | + * @var bool |
|
27 | + */ |
|
28 | + public $enabled = true; |
|
29 | + |
|
30 | + /** |
|
31 | + * Payment method id. |
|
32 | + * |
|
33 | + * @var string |
|
34 | + */ |
|
35 | + public $id; |
|
36 | + |
|
37 | + /** |
|
38 | + * Payment method order. |
|
39 | + * |
|
40 | + * @var int |
|
41 | + */ |
|
42 | + public $order = 10; |
|
43 | + |
|
44 | + /** |
|
45 | + * Payment method title for the frontend. |
|
46 | + * |
|
47 | + * @var string |
|
48 | + */ |
|
49 | + public $title; |
|
50 | + |
|
51 | + /** |
|
52 | + * Payment method description for the frontend. |
|
53 | + * |
|
54 | + * @var string |
|
55 | + */ |
|
56 | + public $description; |
|
57 | + |
|
58 | + /** |
|
59 | + * Gateway title. |
|
60 | + * |
|
61 | + * @var string |
|
62 | + */ |
|
63 | + public $method_title = ''; |
|
64 | + |
|
65 | + /** |
|
66 | + * Gateway description. |
|
67 | + * |
|
68 | + * @var string |
|
69 | + */ |
|
70 | + public $method_description = ''; |
|
71 | + |
|
72 | + /** |
|
73 | + * Countries this gateway is allowed for. |
|
74 | + * |
|
75 | + * @var array |
|
76 | + */ |
|
77 | + public $countries; |
|
78 | + |
|
79 | + /** |
|
80 | + * Currencies this gateway is allowed for. |
|
81 | + * |
|
82 | + * @var array |
|
83 | + */ |
|
84 | + public $currencies; |
|
85 | + |
|
86 | + /** |
|
87 | + * Currencies this gateway is not allowed for. |
|
88 | + * |
|
89 | + * @var array |
|
90 | + */ |
|
91 | + public $exclude_currencies; |
|
92 | + |
|
93 | + /** |
|
94 | + * Maximum transaction amount, zero does not define a maximum. |
|
95 | + * |
|
96 | + * @var int |
|
97 | + */ |
|
98 | + public $max_amount = 0; |
|
99 | + |
|
100 | + /** |
|
101 | + * Optional URL to view a transaction. |
|
102 | + * |
|
103 | + * @var string |
|
104 | + */ |
|
105 | + public $view_transaction_url = ''; |
|
106 | + |
|
107 | + /** |
|
108 | + * Optional URL to view a subscription. |
|
109 | + * |
|
110 | + * @var string |
|
111 | + */ |
|
112 | + public $view_subscription_url = ''; |
|
113 | + |
|
114 | + /** |
|
115 | + * Optional label to show for "new payment method" in the payment |
|
116 | + * method/token selection radio selection. |
|
117 | + * |
|
118 | + * @var string |
|
119 | + */ |
|
120 | + public $new_method_label = ''; |
|
121 | + |
|
122 | + /** |
|
123 | + * Contains a user's saved tokens for this gateway. |
|
124 | + * |
|
125 | + * @var array |
|
126 | + */ |
|
127 | + protected $tokens = array(); |
|
128 | + |
|
129 | + /** |
|
130 | + * An array of features that this gateway supports. |
|
131 | + * |
|
132 | + * @var array |
|
133 | + */ |
|
134 | + protected $supports = array(); |
|
135 | + |
|
136 | + /** |
|
137 | + * Class constructor. |
|
138 | + */ |
|
139 | + public function __construct() { |
|
140 | + |
|
141 | + do_action( 'getpaid_before_init_payment_gateway_' . $this->id, $this ); |
|
142 | + |
|
143 | + // Register gateway. |
|
144 | + add_filter( 'wpinv_payment_gateways', array( $this, 'register_gateway' ) ); |
|
145 | + |
|
146 | + $this->enabled = wpinv_is_gateway_active( $this->id ); |
|
147 | + |
|
148 | + // Add support for various features. |
|
149 | + foreach ( $this->supports as $feature ) { |
|
150 | + add_filter( "wpinv_{$this->id}_support_{$feature}", '__return_true' ); |
|
151 | + add_filter( "getpaid_{$this->id}_support_{$feature}", '__return_true' ); |
|
152 | + add_filter( "getpaid_{$this->id}_supports_{$feature}", '__return_true' ); |
|
153 | + } |
|
154 | + |
|
155 | + // Invoice addons. |
|
156 | + if ( $this->supports( 'addons' ) ) { |
|
157 | + add_action( "getpaid_process_{$this->id}_invoice_addons", array( $this, 'process_addons' ), 10, 2 ); |
|
158 | + } |
|
159 | + |
|
160 | + // Gateway settings. |
|
161 | + add_filter( "wpinv_gateway_settings_{$this->id}", array( $this, 'admin_settings' ) ); |
|
162 | + |
|
163 | + // Gateway checkout fields. |
|
164 | + add_action( "wpinv_{$this->id}_cc_form", array( $this, 'payment_fields' ), 10, 2 ); |
|
165 | + |
|
166 | + // Process payment. |
|
167 | + add_action( "getpaid_gateway_{$this->id}", array( $this, 'process_payment' ), 10, 3 ); |
|
168 | + |
|
169 | + // Change the checkout button text. |
|
170 | + if ( ! empty( $this->checkout_button_text ) ) { |
|
171 | + add_filter( "getpaid_gateway_{$this->id}_checkout_button_label", array( $this, 'rename_checkout_button' ) ); |
|
172 | + } |
|
173 | + |
|
174 | + // Check if a gateway is valid for a given currency. |
|
175 | + add_filter( "getpaid_gateway_{$this->id}_is_valid_for_currency", array( $this, 'validate_currency' ), 10, 2 ); |
|
176 | + |
|
177 | + // Generate the transaction url. |
|
178 | + add_filter( "getpaid_gateway_{$this->id}_transaction_url", array( $this, 'filter_transaction_url' ), 10, 2 ); |
|
179 | + |
|
180 | + // Generate the subscription url. |
|
181 | + add_filter( 'getpaid_remote_subscription_profile_url', array( $this, 'generate_subscription_url' ), 10, 2 ); |
|
182 | + |
|
183 | + // Confirm payments. |
|
184 | + add_filter( "wpinv_payment_confirm_{$this->id}", array( $this, 'confirm_payment' ), 10, 2 ); |
|
185 | + |
|
186 | + // Verify IPNs. |
|
187 | + add_action( "wpinv_verify_{$this->id}_ipn", array( $this, 'verify_ipn' ) ); |
|
188 | + |
|
189 | + } |
|
190 | + |
|
191 | + /** |
|
192 | + * Checks if this gateway is a given gateway. |
|
193 | + * |
|
194 | + * @since 1.0.19 |
|
195 | + * @return bool |
|
196 | + */ |
|
197 | + public function is( $gateway ) { |
|
198 | + return $gateway == $this->id; |
|
199 | + } |
|
200 | + |
|
201 | + /** |
|
202 | + * Returns a users saved tokens for this gateway. |
|
203 | + * |
|
204 | + * @since 1.0.19 |
|
205 | + * @return array |
|
206 | + */ |
|
207 | + public function get_tokens( $sandbox = null ) { |
|
208 | + |
|
209 | + if ( is_user_logged_in() && $this->supports( 'tokens' ) && 0 == count( $this->tokens ) ) { |
|
210 | + $tokens = get_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", true ); |
|
211 | + |
|
212 | + if ( is_array( $tokens ) ) { |
|
213 | + $this->tokens = $tokens; |
|
214 | + } |
|
215 | 215 | } |
216 | 216 | |
217 | - if ( ! is_bool( $sandbox ) ) { |
|
218 | - return $this->tokens; |
|
219 | - } |
|
220 | - |
|
221 | - // Filter tokens. |
|
222 | - $args = array( 'type' => $sandbox ? 'sandbox' : 'live' ); |
|
223 | - return wp_list_filter( $this->tokens, $args ); |
|
224 | - |
|
225 | - } |
|
226 | - |
|
227 | - /** |
|
228 | - * Saves a token for this gateway. |
|
229 | - * |
|
230 | - * @since 1.0.19 |
|
231 | - */ |
|
232 | - public function save_token( $token ) { |
|
233 | - |
|
234 | - $tokens = $this->get_tokens(); |
|
235 | - $tokens[] = $token; |
|
236 | - |
|
237 | - update_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", $tokens ); |
|
238 | - |
|
239 | - $this->tokens = $tokens; |
|
240 | - |
|
241 | - } |
|
242 | - |
|
243 | - /** |
|
244 | - * Return the title for admin screens. |
|
245 | - * |
|
246 | - * @return string |
|
247 | - */ |
|
248 | - public function get_method_title() { |
|
249 | - return apply_filters( 'getpaid_gateway_method_title', $this->method_title, $this ); |
|
250 | - } |
|
251 | - |
|
252 | - /** |
|
253 | - * Return the description for admin screens. |
|
254 | - * |
|
255 | - * @return string |
|
256 | - */ |
|
257 | - public function get_method_description() { |
|
258 | - return apply_filters( 'getpaid_gateway_method_description', $this->method_description, $this ); |
|
259 | - } |
|
260 | - |
|
261 | - /** |
|
262 | - * Get the success url. |
|
263 | - * |
|
264 | - * @param WPInv_Invoice $invoice Invoice object. |
|
265 | - * @return string |
|
266 | - */ |
|
267 | - public function get_return_url( $invoice ) { |
|
268 | - |
|
269 | - // Payment success url |
|
270 | - $return_url = add_query_arg( |
|
271 | - array( |
|
272 | - 'payment-confirm' => $this->id, |
|
273 | - 'invoice_key' => $invoice->get_key(), |
|
274 | - 'utm_nooverride' => 1, |
|
275 | - ), |
|
276 | - wpinv_get_success_page_uri() |
|
277 | - ); |
|
278 | - |
|
279 | - return apply_filters( 'getpaid_gateway_success_url', $return_url, $invoice, $this ); |
|
280 | - } |
|
281 | - |
|
282 | - /** |
|
283 | - * Confirms payments when rendering the success page. |
|
284 | - * |
|
285 | - * @param string $content Success page content. |
|
286 | - * @return string |
|
287 | - */ |
|
288 | - public function confirm_payment( $content ) { |
|
289 | - |
|
290 | - // Retrieve the invoice. |
|
291 | - $invoice_id = getpaid_get_current_invoice_id(); |
|
292 | - $invoice = wpinv_get_invoice( $invoice_id ); |
|
293 | - |
|
294 | - // Ensure that it exists and that it is pending payment. |
|
295 | - if ( empty( $invoice_id ) || ! $invoice->needs_payment() ) { |
|
296 | - return $content; |
|
297 | - } |
|
298 | - |
|
299 | - // Can the user view this invoice?? |
|
300 | - if ( ! wpinv_user_can_view_invoice( $invoice ) ) { |
|
301 | - return $content; |
|
302 | - } |
|
303 | - |
|
304 | - // Show payment processing indicator. |
|
305 | - return wpinv_get_template_html( 'wpinv-payment-processing.php', compact( 'invoice' ) ); |
|
306 | - } |
|
307 | - |
|
308 | - /** |
|
309 | - * Processes ipns and marks payments as complete. |
|
310 | - * |
|
311 | - * @return void |
|
312 | - */ |
|
313 | - public function verify_ipn() {} |
|
314 | - |
|
315 | - /** |
|
316 | - * Processes invoice addons. |
|
317 | - * |
|
318 | - * @param WPInv_Invoice $invoice |
|
319 | - * @param GetPaid_Form_Item[] $items |
|
320 | - * @return WPInv_Invoice |
|
321 | - */ |
|
322 | - public function process_addons( $invoice, $items ) { |
|
323 | - |
|
324 | - } |
|
325 | - |
|
326 | - /** |
|
327 | - * Get a link to the transaction on the 3rd party gateway site (if applicable). |
|
328 | - * |
|
329 | - * @param string $transaction_url transaction url. |
|
330 | - * @param WPInv_Invoice $invoice Invoice object. |
|
331 | - * @return string transaction URL, or empty string. |
|
332 | - */ |
|
333 | - public function filter_transaction_url( $transaction_url, $invoice ) { |
|
334 | - |
|
335 | - $transaction_id = $invoice->get_transaction_id(); |
|
336 | - |
|
337 | - if ( ! empty( $this->view_transaction_url ) && ! empty( $transaction_id ) ) { |
|
338 | - $transaction_url = sprintf( $this->view_transaction_url, $transaction_id ); |
|
339 | - $replace = $this->is_sandbox( $invoice ) ? 'sandbox.' : ''; |
|
340 | - $transaction_url = str_replace( '{sandbox}', $replace, $transaction_url ); |
|
341 | - } |
|
342 | - |
|
343 | - return $transaction_url; |
|
344 | - } |
|
345 | - |
|
346 | - /** |
|
347 | - * Get a link to the subscription on the 3rd party gateway site (if applicable). |
|
348 | - * |
|
349 | - * @param string $subscription_url transaction url. |
|
350 | - * @param WPInv_Subscription $subscription Subscription object. |
|
351 | - * @return string subscription URL, or empty string. |
|
352 | - */ |
|
353 | - public function generate_subscription_url( $subscription_url, $subscription ) { |
|
354 | - |
|
355 | - $profile_id = $subscription->get_profile_id(); |
|
356 | - |
|
357 | - if ( $this->id == $subscription->get_gateway() && ! empty( $this->view_subscription_url ) && ! empty( $profile_id ) ) { |
|
358 | - |
|
359 | - $subscription_url = sprintf( $this->view_subscription_url, $profile_id ); |
|
360 | - $replace = $this->is_sandbox( $subscription->get_parent_invoice() ) ? 'sandbox.' : ''; |
|
361 | - $subscription_url = str_replace( '{sandbox}', $replace, $subscription_url ); |
|
362 | - |
|
363 | - } |
|
364 | - |
|
365 | - return $subscription_url; |
|
366 | - } |
|
367 | - |
|
368 | - /** |
|
369 | - * Check if the gateway is available for use. |
|
370 | - * |
|
371 | - * @return bool |
|
372 | - */ |
|
373 | - public function is_available() { |
|
374 | - return ! empty( $this->enabled ); |
|
375 | - } |
|
376 | - |
|
377 | - /** |
|
378 | - * Return the gateway's title. |
|
379 | - * |
|
380 | - * @return string |
|
381 | - */ |
|
382 | - public function get_title() { |
|
383 | - return apply_filters( 'getpaid_gateway_title', $this->title, $this ); |
|
384 | - } |
|
385 | - |
|
386 | - /** |
|
387 | - * Return the gateway's description. |
|
388 | - * |
|
389 | - * @return string |
|
390 | - */ |
|
391 | - public function get_description() { |
|
392 | - return apply_filters( 'getpaid_gateway_description', $this->description, $this ); |
|
393 | - } |
|
394 | - |
|
395 | - /** |
|
396 | - * Process Payment. |
|
397 | - * |
|
398 | - * |
|
399 | - * @param WPInv_Invoice $invoice Invoice. |
|
400 | - * @param array $submission_data Posted checkout fields. |
|
401 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
402 | - * @return void |
|
403 | - */ |
|
404 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
405 | - // Process the payment then either redirect to the success page or the gateway. |
|
406 | - do_action( 'getpaid_process_invoice_payment_' . $this->id, $invoice, $submission_data, $submission ); |
|
407 | - } |
|
408 | - |
|
409 | - /** |
|
410 | - * Process refund. |
|
411 | - * |
|
412 | - * If the gateway declares 'refunds' support, this will allow it to refund. |
|
413 | - * a passed in amount. |
|
414 | - * |
|
415 | - * @param WPInv_Invoice $invoice Invoice. |
|
416 | - * @param float $amount Refund amount. |
|
417 | - * @param string $reason Refund reason. |
|
418 | - * @return WP_Error|bool True or false based on success, or a WP_Error object. |
|
419 | - */ |
|
420 | - public function process_refund( $invoice, $amount = null, $reason = '' ) { |
|
421 | - return apply_filters( 'getpaid_process_invoice_refund_' . $this->id, false, $invoice, $amount, $reason ); |
|
422 | - } |
|
423 | - |
|
424 | - /** |
|
425 | - * Displays the payment fields, credit cards etc. |
|
426 | - * |
|
427 | - * @param int $invoice_id 0 or invoice id. |
|
428 | - * @param GetPaid_Payment_Form $form Current payment form. |
|
429 | - */ |
|
430 | - public function payment_fields( $invoice_id, $form ) { |
|
431 | - do_action( 'getpaid_getpaid_gateway_payment_fields_' . $this->id, $invoice_id, $form ); |
|
432 | - } |
|
433 | - |
|
434 | - /** |
|
435 | - * Filters the gateway settings. |
|
436 | - * |
|
437 | - * @param array $admin_settings |
|
438 | - */ |
|
439 | - public function admin_settings( $admin_settings ) { |
|
440 | - return $admin_settings; |
|
441 | - } |
|
442 | - |
|
443 | - /** |
|
444 | - * Retrieves the value of a gateway setting. |
|
445 | - * |
|
446 | - * @param string $option |
|
447 | - */ |
|
448 | - public function get_option( $option, $default = false ) { |
|
449 | - return wpinv_get_option( $this->id . '_' . $option, $default ); |
|
450 | - } |
|
451 | - |
|
452 | - /** |
|
453 | - * Check if a gateway supports a given feature. |
|
454 | - * |
|
455 | - * Gateways should override this to declare support (or lack of support) for a feature. |
|
456 | - * For backward compatibility, gateways support 'products' by default, but nothing else. |
|
457 | - * |
|
458 | - * @param string $feature string The name of a feature to test support for. |
|
459 | - * @return bool True if the gateway supports the feature, false otherwise. |
|
460 | - * @since 1.0.19 |
|
461 | - */ |
|
462 | - public function supports( $feature ) { |
|
463 | - return getpaid_payment_gateway_supports( $this->id, $feature ); |
|
464 | - } |
|
465 | - |
|
466 | - /** |
|
467 | - * Returns the credit card form html. |
|
468 | - * |
|
469 | - * @param bool $save whether or not to display the save button. |
|
470 | - */ |
|
217 | + if ( ! is_bool( $sandbox ) ) { |
|
218 | + return $this->tokens; |
|
219 | + } |
|
220 | + |
|
221 | + // Filter tokens. |
|
222 | + $args = array( 'type' => $sandbox ? 'sandbox' : 'live' ); |
|
223 | + return wp_list_filter( $this->tokens, $args ); |
|
224 | + |
|
225 | + } |
|
226 | + |
|
227 | + /** |
|
228 | + * Saves a token for this gateway. |
|
229 | + * |
|
230 | + * @since 1.0.19 |
|
231 | + */ |
|
232 | + public function save_token( $token ) { |
|
233 | + |
|
234 | + $tokens = $this->get_tokens(); |
|
235 | + $tokens[] = $token; |
|
236 | + |
|
237 | + update_user_meta( get_current_user_id(), "getpaid_{$this->id}_tokens", $tokens ); |
|
238 | + |
|
239 | + $this->tokens = $tokens; |
|
240 | + |
|
241 | + } |
|
242 | + |
|
243 | + /** |
|
244 | + * Return the title for admin screens. |
|
245 | + * |
|
246 | + * @return string |
|
247 | + */ |
|
248 | + public function get_method_title() { |
|
249 | + return apply_filters( 'getpaid_gateway_method_title', $this->method_title, $this ); |
|
250 | + } |
|
251 | + |
|
252 | + /** |
|
253 | + * Return the description for admin screens. |
|
254 | + * |
|
255 | + * @return string |
|
256 | + */ |
|
257 | + public function get_method_description() { |
|
258 | + return apply_filters( 'getpaid_gateway_method_description', $this->method_description, $this ); |
|
259 | + } |
|
260 | + |
|
261 | + /** |
|
262 | + * Get the success url. |
|
263 | + * |
|
264 | + * @param WPInv_Invoice $invoice Invoice object. |
|
265 | + * @return string |
|
266 | + */ |
|
267 | + public function get_return_url( $invoice ) { |
|
268 | + |
|
269 | + // Payment success url |
|
270 | + $return_url = add_query_arg( |
|
271 | + array( |
|
272 | + 'payment-confirm' => $this->id, |
|
273 | + 'invoice_key' => $invoice->get_key(), |
|
274 | + 'utm_nooverride' => 1, |
|
275 | + ), |
|
276 | + wpinv_get_success_page_uri() |
|
277 | + ); |
|
278 | + |
|
279 | + return apply_filters( 'getpaid_gateway_success_url', $return_url, $invoice, $this ); |
|
280 | + } |
|
281 | + |
|
282 | + /** |
|
283 | + * Confirms payments when rendering the success page. |
|
284 | + * |
|
285 | + * @param string $content Success page content. |
|
286 | + * @return string |
|
287 | + */ |
|
288 | + public function confirm_payment( $content ) { |
|
289 | + |
|
290 | + // Retrieve the invoice. |
|
291 | + $invoice_id = getpaid_get_current_invoice_id(); |
|
292 | + $invoice = wpinv_get_invoice( $invoice_id ); |
|
293 | + |
|
294 | + // Ensure that it exists and that it is pending payment. |
|
295 | + if ( empty( $invoice_id ) || ! $invoice->needs_payment() ) { |
|
296 | + return $content; |
|
297 | + } |
|
298 | + |
|
299 | + // Can the user view this invoice?? |
|
300 | + if ( ! wpinv_user_can_view_invoice( $invoice ) ) { |
|
301 | + return $content; |
|
302 | + } |
|
303 | + |
|
304 | + // Show payment processing indicator. |
|
305 | + return wpinv_get_template_html( 'wpinv-payment-processing.php', compact( 'invoice' ) ); |
|
306 | + } |
|
307 | + |
|
308 | + /** |
|
309 | + * Processes ipns and marks payments as complete. |
|
310 | + * |
|
311 | + * @return void |
|
312 | + */ |
|
313 | + public function verify_ipn() {} |
|
314 | + |
|
315 | + /** |
|
316 | + * Processes invoice addons. |
|
317 | + * |
|
318 | + * @param WPInv_Invoice $invoice |
|
319 | + * @param GetPaid_Form_Item[] $items |
|
320 | + * @return WPInv_Invoice |
|
321 | + */ |
|
322 | + public function process_addons( $invoice, $items ) { |
|
323 | + |
|
324 | + } |
|
325 | + |
|
326 | + /** |
|
327 | + * Get a link to the transaction on the 3rd party gateway site (if applicable). |
|
328 | + * |
|
329 | + * @param string $transaction_url transaction url. |
|
330 | + * @param WPInv_Invoice $invoice Invoice object. |
|
331 | + * @return string transaction URL, or empty string. |
|
332 | + */ |
|
333 | + public function filter_transaction_url( $transaction_url, $invoice ) { |
|
334 | + |
|
335 | + $transaction_id = $invoice->get_transaction_id(); |
|
336 | + |
|
337 | + if ( ! empty( $this->view_transaction_url ) && ! empty( $transaction_id ) ) { |
|
338 | + $transaction_url = sprintf( $this->view_transaction_url, $transaction_id ); |
|
339 | + $replace = $this->is_sandbox( $invoice ) ? 'sandbox.' : ''; |
|
340 | + $transaction_url = str_replace( '{sandbox}', $replace, $transaction_url ); |
|
341 | + } |
|
342 | + |
|
343 | + return $transaction_url; |
|
344 | + } |
|
345 | + |
|
346 | + /** |
|
347 | + * Get a link to the subscription on the 3rd party gateway site (if applicable). |
|
348 | + * |
|
349 | + * @param string $subscription_url transaction url. |
|
350 | + * @param WPInv_Subscription $subscription Subscription object. |
|
351 | + * @return string subscription URL, or empty string. |
|
352 | + */ |
|
353 | + public function generate_subscription_url( $subscription_url, $subscription ) { |
|
354 | + |
|
355 | + $profile_id = $subscription->get_profile_id(); |
|
356 | + |
|
357 | + if ( $this->id == $subscription->get_gateway() && ! empty( $this->view_subscription_url ) && ! empty( $profile_id ) ) { |
|
358 | + |
|
359 | + $subscription_url = sprintf( $this->view_subscription_url, $profile_id ); |
|
360 | + $replace = $this->is_sandbox( $subscription->get_parent_invoice() ) ? 'sandbox.' : ''; |
|
361 | + $subscription_url = str_replace( '{sandbox}', $replace, $subscription_url ); |
|
362 | + |
|
363 | + } |
|
364 | + |
|
365 | + return $subscription_url; |
|
366 | + } |
|
367 | + |
|
368 | + /** |
|
369 | + * Check if the gateway is available for use. |
|
370 | + * |
|
371 | + * @return bool |
|
372 | + */ |
|
373 | + public function is_available() { |
|
374 | + return ! empty( $this->enabled ); |
|
375 | + } |
|
376 | + |
|
377 | + /** |
|
378 | + * Return the gateway's title. |
|
379 | + * |
|
380 | + * @return string |
|
381 | + */ |
|
382 | + public function get_title() { |
|
383 | + return apply_filters( 'getpaid_gateway_title', $this->title, $this ); |
|
384 | + } |
|
385 | + |
|
386 | + /** |
|
387 | + * Return the gateway's description. |
|
388 | + * |
|
389 | + * @return string |
|
390 | + */ |
|
391 | + public function get_description() { |
|
392 | + return apply_filters( 'getpaid_gateway_description', $this->description, $this ); |
|
393 | + } |
|
394 | + |
|
395 | + /** |
|
396 | + * Process Payment. |
|
397 | + * |
|
398 | + * |
|
399 | + * @param WPInv_Invoice $invoice Invoice. |
|
400 | + * @param array $submission_data Posted checkout fields. |
|
401 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
402 | + * @return void |
|
403 | + */ |
|
404 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
405 | + // Process the payment then either redirect to the success page or the gateway. |
|
406 | + do_action( 'getpaid_process_invoice_payment_' . $this->id, $invoice, $submission_data, $submission ); |
|
407 | + } |
|
408 | + |
|
409 | + /** |
|
410 | + * Process refund. |
|
411 | + * |
|
412 | + * If the gateway declares 'refunds' support, this will allow it to refund. |
|
413 | + * a passed in amount. |
|
414 | + * |
|
415 | + * @param WPInv_Invoice $invoice Invoice. |
|
416 | + * @param float $amount Refund amount. |
|
417 | + * @param string $reason Refund reason. |
|
418 | + * @return WP_Error|bool True or false based on success, or a WP_Error object. |
|
419 | + */ |
|
420 | + public function process_refund( $invoice, $amount = null, $reason = '' ) { |
|
421 | + return apply_filters( 'getpaid_process_invoice_refund_' . $this->id, false, $invoice, $amount, $reason ); |
|
422 | + } |
|
423 | + |
|
424 | + /** |
|
425 | + * Displays the payment fields, credit cards etc. |
|
426 | + * |
|
427 | + * @param int $invoice_id 0 or invoice id. |
|
428 | + * @param GetPaid_Payment_Form $form Current payment form. |
|
429 | + */ |
|
430 | + public function payment_fields( $invoice_id, $form ) { |
|
431 | + do_action( 'getpaid_getpaid_gateway_payment_fields_' . $this->id, $invoice_id, $form ); |
|
432 | + } |
|
433 | + |
|
434 | + /** |
|
435 | + * Filters the gateway settings. |
|
436 | + * |
|
437 | + * @param array $admin_settings |
|
438 | + */ |
|
439 | + public function admin_settings( $admin_settings ) { |
|
440 | + return $admin_settings; |
|
441 | + } |
|
442 | + |
|
443 | + /** |
|
444 | + * Retrieves the value of a gateway setting. |
|
445 | + * |
|
446 | + * @param string $option |
|
447 | + */ |
|
448 | + public function get_option( $option, $default = false ) { |
|
449 | + return wpinv_get_option( $this->id . '_' . $option, $default ); |
|
450 | + } |
|
451 | + |
|
452 | + /** |
|
453 | + * Check if a gateway supports a given feature. |
|
454 | + * |
|
455 | + * Gateways should override this to declare support (or lack of support) for a feature. |
|
456 | + * For backward compatibility, gateways support 'products' by default, but nothing else. |
|
457 | + * |
|
458 | + * @param string $feature string The name of a feature to test support for. |
|
459 | + * @return bool True if the gateway supports the feature, false otherwise. |
|
460 | + * @since 1.0.19 |
|
461 | + */ |
|
462 | + public function supports( $feature ) { |
|
463 | + return getpaid_payment_gateway_supports( $this->id, $feature ); |
|
464 | + } |
|
465 | + |
|
466 | + /** |
|
467 | + * Returns the credit card form html. |
|
468 | + * |
|
469 | + * @param bool $save whether or not to display the save button. |
|
470 | + */ |
|
471 | 471 | public function get_cc_form( $save = false ) { |
472 | 472 | |
473 | - ob_start(); |
|
473 | + ob_start(); |
|
474 | 474 | |
475 | 475 | $id_prefix = esc_attr( uniqid( $this->id ) ); |
476 | 476 | |
@@ -488,7 +488,7 @@ discard block |
||
488 | 488 | '11' => __( 'November', 'invoicing' ), |
489 | 489 | '12' => __( 'December', 'invoicing' ), |
490 | 490 | ); |
491 | - $months = apply_filters( 'getpaid_cc_months', $months, $this ); |
|
491 | + $months = apply_filters( 'getpaid_cc_months', $months, $this ); |
|
492 | 492 | |
493 | 493 | $year = (int) current_time( 'Y' ); |
494 | 494 | $years = array(); |
@@ -497,7 +497,7 @@ discard block |
||
497 | 497 | $years[ $year + $i ] = $year + $i; |
498 | 498 | } |
499 | 499 | |
500 | - $years = apply_filters( 'getpaid_cc_years', $years, $this ); |
|
500 | + $years = apply_filters( 'getpaid_cc_years', $years, $this ); |
|
501 | 501 | |
502 | 502 | ?> |
503 | 503 | <div class="<?php echo esc_attr( $this->id ); ?>-cc-form getpaid-cc-form mt-1"> |
@@ -531,7 +531,7 @@ discard block |
||
531 | 531 | <option disabled selected="selected"><?php esc_html_e( 'MM', 'invoicing' ); ?></option> |
532 | 532 | <?php |
533 | 533 | foreach ( $months as $key => $month ) { |
534 | - echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $month ) . '</option>'; |
|
534 | + echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $month ) . '</option>'; |
|
535 | 535 | } |
536 | 536 | ?> |
537 | 537 | </select> |
@@ -541,7 +541,7 @@ discard block |
||
541 | 541 | <option disabled selected="selected"><?php esc_html_e( 'YY', 'invoicing' ); ?></option> |
542 | 542 | <?php |
543 | 543 | foreach ( $years as $key => $year ) { |
544 | - echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $year ) . '</option>'; |
|
544 | + echo "<option value='" . esc_attr( $key ) . "'>" . esc_html( $year ) . '</option>'; |
|
545 | 545 | } |
546 | 546 | ?> |
547 | 547 | </select> |
@@ -556,203 +556,203 @@ discard block |
||
556 | 556 | 'name' => $this->id . '[cc_cvv2]', |
557 | 557 | 'id' => "$id_prefix-cc-cvv2", |
558 | 558 | 'label' => __( 'CCV', 'invoicing' ), |
559 | - 'label_type' => 'vertical', |
|
560 | - 'class' => 'form-control-sm', |
|
561 | - 'extra_attributes' => array( |
|
562 | - 'autocomplete' => 'cc-csc', |
|
563 | - 'maxlength' => 4 |
|
564 | - ), |
|
559 | + 'label_type' => 'vertical', |
|
560 | + 'class' => 'form-control-sm', |
|
561 | + 'extra_attributes' => array( |
|
562 | + 'autocomplete' => 'cc-csc', |
|
563 | + 'maxlength' => 4 |
|
564 | + ), |
|
565 | 565 | ), |
566 | - true |
|
566 | + true |
|
567 | 567 | ); |
568 | 568 | ?> |
569 | 569 | </div> |
570 | 570 | </div> |
571 | 571 | <?php |
572 | - if ( $save ) { |
|
573 | - $this->save_payment_method_checkbox(); |
|
574 | - } |
|
575 | - ?> |
|
572 | + if ( $save ) { |
|
573 | + $this->save_payment_method_checkbox(); |
|
574 | + } |
|
575 | + ?> |
|
576 | 576 | </div> |
577 | 577 | </div> |
578 | 578 | <?php |
579 | 579 | |
580 | - return ob_get_clean(); |
|
580 | + return ob_get_clean(); |
|
581 | + |
|
582 | + } |
|
583 | + |
|
584 | + /** |
|
585 | + * Displays a new payment method entry form. |
|
586 | + * |
|
587 | + * @since 1.0.19 |
|
588 | + */ |
|
589 | + public function new_payment_method_entry( $form ) { |
|
590 | + echo "<div class='getpaid-new-payment-method-form' style='display:none;'> " . wp_kses( $form, getpaid_allowed_html() ) . '</div>'; |
|
591 | + } |
|
592 | + |
|
593 | + /** |
|
594 | + * Grab and display our saved payment methods. |
|
595 | + * |
|
596 | + * @since 1.0.19 |
|
597 | + */ |
|
598 | + public function saved_payment_methods() { |
|
599 | + echo '<ul class="getpaid-saved-payment-methods list-unstyled m-0 mt-2" data-count="' . esc_attr( count( $this->get_tokens( $this->is_sandbox() ) ) ) . '">'; |
|
600 | + |
|
601 | + foreach ( $this->get_tokens( $this->is_sandbox() ) as $token ) { |
|
602 | + $this->get_saved_payment_method_option_html( $token ); |
|
603 | + } |
|
604 | + |
|
605 | + $this->get_new_payment_method_option_html(); |
|
606 | + echo '</ul>'; |
|
581 | 607 | |
582 | 608 | } |
583 | 609 | |
584 | - /** |
|
585 | - * Displays a new payment method entry form. |
|
586 | - * |
|
587 | - * @since 1.0.19 |
|
588 | - */ |
|
589 | - public function new_payment_method_entry( $form ) { |
|
590 | - echo "<div class='getpaid-new-payment-method-form' style='display:none;'> " . wp_kses( $form, getpaid_allowed_html() ) . '</div>'; |
|
591 | - } |
|
592 | - |
|
593 | - /** |
|
594 | - * Grab and display our saved payment methods. |
|
595 | - * |
|
596 | - * @since 1.0.19 |
|
597 | - */ |
|
598 | - public function saved_payment_methods() { |
|
599 | - echo '<ul class="getpaid-saved-payment-methods list-unstyled m-0 mt-2" data-count="' . esc_attr( count( $this->get_tokens( $this->is_sandbox() ) ) ) . '">'; |
|
600 | - |
|
601 | - foreach ( $this->get_tokens( $this->is_sandbox() ) as $token ) { |
|
602 | - $this->get_saved_payment_method_option_html( $token ); |
|
603 | - } |
|
604 | - |
|
605 | - $this->get_new_payment_method_option_html(); |
|
606 | - echo '</ul>'; |
|
607 | - |
|
608 | - } |
|
609 | - |
|
610 | - /** |
|
611 | - * Gets saved payment method HTML from a token. |
|
612 | - * |
|
613 | - * @since 1.0.19 |
|
614 | - * @param array $token Payment Token. |
|
615 | - * @return string Generated payment method HTML |
|
616 | - */ |
|
617 | - public function get_saved_payment_method_option_html( $token ) { |
|
618 | - |
|
619 | - printf( |
|
620 | - '<li class="getpaid-payment-method form-group mb-3"> |
|
610 | + /** |
|
611 | + * Gets saved payment method HTML from a token. |
|
612 | + * |
|
613 | + * @since 1.0.19 |
|
614 | + * @param array $token Payment Token. |
|
615 | + * @return string Generated payment method HTML |
|
616 | + */ |
|
617 | + public function get_saved_payment_method_option_html( $token ) { |
|
618 | + |
|
619 | + printf( |
|
620 | + '<li class="getpaid-payment-method form-group mb-3"> |
|
621 | 621 | <label> |
622 | 622 | <input name="getpaid-%1$s-payment-method" type="radio" value="%2$s" data-currency="%5$s" style="width:auto;" class="getpaid-saved-payment-method-token-input" %4$s /> |
623 | 623 | <span>%3$s</span> |
624 | 624 | </label> |
625 | 625 | </li>', |
626 | - esc_attr( $this->id ), |
|
627 | - esc_attr( $token['id'] ), |
|
628 | - esc_html( $token['name'] ), |
|
629 | - checked( empty( $token['default'] ), false, false ), |
|
630 | - empty( $token['currency'] ) ? 'none' : esc_attr( $token['currency'] ) |
|
631 | - ); |
|
632 | - |
|
633 | - } |
|
634 | - |
|
635 | - /** |
|
636 | - * Displays a radio button for entering a new payment method (new CC details) instead of using a saved method. |
|
637 | - * |
|
638 | - * @since 1.0.19 |
|
639 | - */ |
|
640 | - public function get_new_payment_method_option_html() { |
|
641 | - |
|
642 | - $label = apply_filters( 'getpaid_new_payment_method_label', $this->new_method_label ? $this->new_method_label : __( 'Use a new payment method', 'invoicing' ), $this ); |
|
643 | - |
|
644 | - printf( |
|
645 | - '<li class="getpaid-new-payment-method"> |
|
626 | + esc_attr( $this->id ), |
|
627 | + esc_attr( $token['id'] ), |
|
628 | + esc_html( $token['name'] ), |
|
629 | + checked( empty( $token['default'] ), false, false ), |
|
630 | + empty( $token['currency'] ) ? 'none' : esc_attr( $token['currency'] ) |
|
631 | + ); |
|
632 | + |
|
633 | + } |
|
634 | + |
|
635 | + /** |
|
636 | + * Displays a radio button for entering a new payment method (new CC details) instead of using a saved method. |
|
637 | + * |
|
638 | + * @since 1.0.19 |
|
639 | + */ |
|
640 | + public function get_new_payment_method_option_html() { |
|
641 | + |
|
642 | + $label = apply_filters( 'getpaid_new_payment_method_label', $this->new_method_label ? $this->new_method_label : __( 'Use a new payment method', 'invoicing' ), $this ); |
|
643 | + |
|
644 | + printf( |
|
645 | + '<li class="getpaid-new-payment-method"> |
|
646 | 646 | <label> |
647 | 647 | <input name="getpaid-%1$s-payment-method" type="radio" data-currency="none" value="new" style="width:auto;" /> |
648 | 648 | <span>%2$s</span> |
649 | 649 | </label> |
650 | 650 | </li>', |
651 | - esc_attr( $this->id ), |
|
652 | - esc_html( $label ) |
|
653 | - ); |
|
654 | - |
|
655 | - } |
|
656 | - |
|
657 | - /** |
|
658 | - * Outputs a checkbox for saving a new payment method to the database. |
|
659 | - * |
|
660 | - * @since 1.0.19 |
|
661 | - */ |
|
662 | - public function save_payment_method_checkbox() { |
|
663 | - |
|
664 | - aui()->input( |
|
665 | - array( |
|
666 | - 'type' => 'checkbox', |
|
667 | - 'name' => esc_attr( "getpaid-$this->id-new-payment-method" ), |
|
668 | - 'id' => esc_attr( uniqid( $this->id ) ), |
|
669 | - 'required' => false, |
|
670 | - 'label' => esc_html__( 'Save payment method', 'invoicing' ), |
|
671 | - 'value' => 'true', |
|
672 | - 'checked' => true, |
|
673 | - 'wrap_class' => 'getpaid-save-payment-method pt-1 pb-1', |
|
674 | - ), |
|
675 | - true |
|
676 | - ); |
|
677 | - |
|
678 | - } |
|
679 | - |
|
680 | - /** |
|
681 | - * Registers the gateway. |
|
682 | - * |
|
683 | - * @return array |
|
684 | - */ |
|
685 | - public function register_gateway( $gateways ) { |
|
686 | - |
|
687 | - $gateways[ $this->id ] = array( |
|
688 | - |
|
689 | - 'admin_label' => $this->method_title, |
|
651 | + esc_attr( $this->id ), |
|
652 | + esc_html( $label ) |
|
653 | + ); |
|
654 | + |
|
655 | + } |
|
656 | + |
|
657 | + /** |
|
658 | + * Outputs a checkbox for saving a new payment method to the database. |
|
659 | + * |
|
660 | + * @since 1.0.19 |
|
661 | + */ |
|
662 | + public function save_payment_method_checkbox() { |
|
663 | + |
|
664 | + aui()->input( |
|
665 | + array( |
|
666 | + 'type' => 'checkbox', |
|
667 | + 'name' => esc_attr( "getpaid-$this->id-new-payment-method" ), |
|
668 | + 'id' => esc_attr( uniqid( $this->id ) ), |
|
669 | + 'required' => false, |
|
670 | + 'label' => esc_html__( 'Save payment method', 'invoicing' ), |
|
671 | + 'value' => 'true', |
|
672 | + 'checked' => true, |
|
673 | + 'wrap_class' => 'getpaid-save-payment-method pt-1 pb-1', |
|
674 | + ), |
|
675 | + true |
|
676 | + ); |
|
677 | + |
|
678 | + } |
|
679 | + |
|
680 | + /** |
|
681 | + * Registers the gateway. |
|
682 | + * |
|
683 | + * @return array |
|
684 | + */ |
|
685 | + public function register_gateway( $gateways ) { |
|
686 | + |
|
687 | + $gateways[ $this->id ] = array( |
|
688 | + |
|
689 | + 'admin_label' => $this->method_title, |
|
690 | 690 | 'checkout_label' => $this->title, |
691 | - 'ordering' => $this->order, |
|
691 | + 'ordering' => $this->order, |
|
692 | 692 | |
693 | - ); |
|
693 | + ); |
|
694 | 694 | |
695 | - return $gateways; |
|
695 | + return $gateways; |
|
696 | 696 | |
697 | - } |
|
697 | + } |
|
698 | 698 | |
699 | - /** |
|
700 | - * Checks whether or not this is a sandbox request. |
|
701 | - * |
|
702 | - * @param WPInv_Invoice|null $invoice Invoice object or null. |
|
703 | - * @return bool |
|
704 | - */ |
|
705 | - public function is_sandbox( $invoice = null ) { |
|
699 | + /** |
|
700 | + * Checks whether or not this is a sandbox request. |
|
701 | + * |
|
702 | + * @param WPInv_Invoice|null $invoice Invoice object or null. |
|
703 | + * @return bool |
|
704 | + */ |
|
705 | + public function is_sandbox( $invoice = null ) { |
|
706 | 706 | |
707 | - if ( is_a( $invoice, 'WPInv_Invoice' ) && ! $invoice->needs_payment() ) { |
|
708 | - return $invoice->get_mode() === 'test'; |
|
709 | - } |
|
707 | + if ( is_a( $invoice, 'WPInv_Invoice' ) && ! $invoice->needs_payment() ) { |
|
708 | + return $invoice->get_mode() === 'test'; |
|
709 | + } |
|
710 | 710 | |
711 | - return wpinv_is_test_mode( $this->id ); |
|
711 | + return wpinv_is_test_mode( $this->id ); |
|
712 | 712 | |
713 | - } |
|
713 | + } |
|
714 | 714 | |
715 | - /** |
|
716 | - * Renames the checkout button |
|
717 | - * |
|
718 | - * @return string |
|
719 | - */ |
|
720 | - public function rename_checkout_button() { |
|
721 | - return $this->checkout_button_text; |
|
722 | - } |
|
715 | + /** |
|
716 | + * Renames the checkout button |
|
717 | + * |
|
718 | + * @return string |
|
719 | + */ |
|
720 | + public function rename_checkout_button() { |
|
721 | + return $this->checkout_button_text; |
|
722 | + } |
|
723 | 723 | |
724 | - /** |
|
725 | - * Validate gateway currency |
|
726 | - * |
|
727 | - * @return bool |
|
728 | - */ |
|
729 | - public function validate_currency( $validation, $currency ) { |
|
724 | + /** |
|
725 | + * Validate gateway currency |
|
726 | + * |
|
727 | + * @return bool |
|
728 | + */ |
|
729 | + public function validate_currency( $validation, $currency ) { |
|
730 | 730 | |
731 | - // Required currencies. |
|
732 | - if ( ! empty( $this->currencies ) && ! in_array( $currency, $this->currencies ) ) { |
|
733 | - return false; |
|
734 | - } |
|
731 | + // Required currencies. |
|
732 | + if ( ! empty( $this->currencies ) && ! in_array( $currency, $this->currencies ) ) { |
|
733 | + return false; |
|
734 | + } |
|
735 | 735 | |
736 | - // Excluded currencies. |
|
737 | - if ( ! empty( $this->exclude_currencies ) && in_array( $currency, $this->exclude_currencies ) ) { |
|
738 | - return false; |
|
739 | - } |
|
736 | + // Excluded currencies. |
|
737 | + if ( ! empty( $this->exclude_currencies ) && in_array( $currency, $this->exclude_currencies ) ) { |
|
738 | + return false; |
|
739 | + } |
|
740 | 740 | |
741 | - return $validation; |
|
742 | - } |
|
741 | + return $validation; |
|
742 | + } |
|
743 | 743 | |
744 | - /** |
|
745 | - * Displays an error |
|
746 | - * |
|
747 | - */ |
|
748 | - public function show_error( $code, $message, $type ) { |
|
744 | + /** |
|
745 | + * Displays an error |
|
746 | + * |
|
747 | + */ |
|
748 | + public function show_error( $code, $message, $type ) { |
|
749 | 749 | |
750 | - if ( is_admin() ) { |
|
751 | - getpaid_admin()->{"show_$type"}( $message ); |
|
752 | - } |
|
750 | + if ( is_admin() ) { |
|
751 | + getpaid_admin()->{"show_$type"}( $message ); |
|
752 | + } |
|
753 | 753 | |
754 | - wpinv_set_error( $code, $message, $type ); |
|
754 | + wpinv_set_error( $code, $message, $type ); |
|
755 | 755 | |
756 | - } |
|
756 | + } |
|
757 | 757 | |
758 | 758 | } |
@@ -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 | /** |
@@ -17,12 +17,12 @@ discard block |
||
17 | 17 | class GetPaid_Meta_Box_Item_Details { |
18 | 18 | |
19 | 19 | /** |
20 | - * Output the metabox. |
|
21 | - * |
|
22 | - * @param WP_Post $post |
|
23 | - */ |
|
20 | + * Output the metabox. |
|
21 | + * |
|
22 | + * @param WP_Post $post |
|
23 | + */ |
|
24 | 24 | public static function output( $post ) { |
25 | - global $aui_bs5; |
|
25 | + global $aui_bs5; |
|
26 | 26 | |
27 | 27 | // Prepare the item. |
28 | 28 | $item = new WPInv_Item( $post ); |
@@ -119,24 +119,24 @@ discard block |
||
119 | 119 | // Dynamic pricing. |
120 | 120 | if ( $item->supports_dynamic_pricing() ) { |
121 | 121 | |
122 | - do_action( 'wpinv_item_details_metabox_before_dynamic_pricing_checkbox', $item ); |
|
122 | + do_action( 'wpinv_item_details_metabox_before_dynamic_pricing_checkbox', $item ); |
|
123 | 123 | |
124 | - // NYP toggle. |
|
125 | - aui()->input( |
|
124 | + // NYP toggle. |
|
125 | + aui()->input( |
|
126 | 126 | array( |
127 | - 'id' => 'wpinv_name_your_price', |
|
128 | - 'name' => 'wpinv_name_your_price', |
|
129 | - 'type' => 'checkbox', |
|
130 | - 'label' => apply_filters( 'wpinv_name_your_price_toggle_text', __( 'Let customers name their price', 'invoicing' ) ), |
|
131 | - 'value' => '1', |
|
132 | - 'checked' => $item->user_can_set_their_price(), |
|
133 | - 'no_wrap' => true, |
|
134 | - 'switch' => 'sm', |
|
127 | + 'id' => 'wpinv_name_your_price', |
|
128 | + 'name' => 'wpinv_name_your_price', |
|
129 | + 'type' => 'checkbox', |
|
130 | + 'label' => apply_filters( 'wpinv_name_your_price_toggle_text', __( 'Let customers name their price', 'invoicing' ) ), |
|
131 | + 'value' => '1', |
|
132 | + 'checked' => $item->user_can_set_their_price(), |
|
133 | + 'no_wrap' => true, |
|
134 | + 'switch' => 'sm', |
|
135 | 135 | ), |
136 | 136 | true |
137 | 137 | ); |
138 | 138 | |
139 | - do_action( 'wpinv_item_details_metabox_dynamic_pricing_checkbox', $item ); |
|
139 | + do_action( 'wpinv_item_details_metabox_dynamic_pricing_checkbox', $item ); |
|
140 | 140 | |
141 | 141 | } |
142 | 142 | |
@@ -151,7 +151,7 @@ discard block |
||
151 | 151 | 'value' => '1', |
152 | 152 | 'checked' => $item->is_recurring(), |
153 | 153 | 'no_wrap' => true, |
154 | - 'switch' => 'sm', |
|
154 | + 'switch' => 'sm', |
|
155 | 155 | ), |
156 | 156 | true |
157 | 157 | ); |
@@ -293,35 +293,35 @@ discard block |
||
293 | 293 | } |
294 | 294 | |
295 | 295 | /** |
296 | - * Save meta box data. |
|
297 | - * |
|
298 | - * @param int $post_id |
|
299 | - */ |
|
300 | - public static function save( $post_id ) { |
|
296 | + * Save meta box data. |
|
297 | + * |
|
298 | + * @param int $post_id |
|
299 | + */ |
|
300 | + public static function save( $post_id ) { |
|
301 | 301 | |
302 | 302 | // Prepare the item. |
303 | 303 | $item = new WPInv_Item( $post_id ); |
304 | 304 | |
305 | 305 | // Load new data. |
306 | 306 | $item->set_props( |
307 | - array( |
|
308 | - 'price' => isset( $_POST['wpinv_item_price'] ) ? getpaid_standardize_amount( $_POST['wpinv_item_price'] ) : null, |
|
309 | - 'vat_rule' => isset( $_POST['wpinv_vat_rules'] ) ? wpinv_clean( $_POST['wpinv_vat_rules'] ) : null, |
|
310 | - 'vat_class' => isset( $_POST['wpinv_vat_class'] ) ? wpinv_clean( $_POST['wpinv_vat_class'] ) : null, |
|
311 | - 'type' => isset( $_POST['wpinv_item_type'] ) ? wpinv_clean( $_POST['wpinv_item_type'] ) : null, |
|
312 | - 'is_dynamic_pricing' => ! empty( $_POST['wpinv_name_your_price'] ), |
|
307 | + array( |
|
308 | + 'price' => isset( $_POST['wpinv_item_price'] ) ? getpaid_standardize_amount( $_POST['wpinv_item_price'] ) : null, |
|
309 | + 'vat_rule' => isset( $_POST['wpinv_vat_rules'] ) ? wpinv_clean( $_POST['wpinv_vat_rules'] ) : null, |
|
310 | + 'vat_class' => isset( $_POST['wpinv_vat_class'] ) ? wpinv_clean( $_POST['wpinv_vat_class'] ) : null, |
|
311 | + 'type' => isset( $_POST['wpinv_item_type'] ) ? wpinv_clean( $_POST['wpinv_item_type'] ) : null, |
|
312 | + 'is_dynamic_pricing' => ! empty( $_POST['wpinv_name_your_price'] ), |
|
313 | 313 | 'minimum_price' => isset( $_POST['wpinv_minimum_price'] ) ? getpaid_standardize_amount( $_POST['wpinv_minimum_price'] ) : null, |
314 | - 'is_recurring' => ! empty( $_POST['wpinv_is_recurring'] ), |
|
315 | - 'recurring_period' => isset( $_POST['wpinv_recurring_period'] ) ? wpinv_clean( $_POST['wpinv_recurring_period'] ) : null, |
|
316 | - 'recurring_interval' => isset( $_POST['wpinv_recurring_interval'] ) ? (int) $_POST['wpinv_recurring_interval'] : 1, |
|
317 | - 'recurring_limit' => isset( $_POST['wpinv_recurring_limit'] ) ? (int) $_POST['wpinv_recurring_limit'] : null, |
|
318 | - 'is_free_trial' => isset( $_POST['wpinv_trial_interval'] ) ? ( 0 != (int) $_POST['wpinv_trial_interval'] ) : null, |
|
319 | - 'trial_period' => isset( $_POST['wpinv_trial_period'] ) ? wpinv_clean( $_POST['wpinv_trial_period'] ) : null, |
|
320 | - 'trial_interval' => isset( $_POST['wpinv_trial_interval'] ) ? (int) $_POST['wpinv_trial_interval'] : null, |
|
321 | - ) |
|
314 | + 'is_recurring' => ! empty( $_POST['wpinv_is_recurring'] ), |
|
315 | + 'recurring_period' => isset( $_POST['wpinv_recurring_period'] ) ? wpinv_clean( $_POST['wpinv_recurring_period'] ) : null, |
|
316 | + 'recurring_interval' => isset( $_POST['wpinv_recurring_interval'] ) ? (int) $_POST['wpinv_recurring_interval'] : 1, |
|
317 | + 'recurring_limit' => isset( $_POST['wpinv_recurring_limit'] ) ? (int) $_POST['wpinv_recurring_limit'] : null, |
|
318 | + 'is_free_trial' => isset( $_POST['wpinv_trial_interval'] ) ? ( 0 != (int) $_POST['wpinv_trial_interval'] ) : null, |
|
319 | + 'trial_period' => isset( $_POST['wpinv_trial_period'] ) ? wpinv_clean( $_POST['wpinv_trial_period'] ) : null, |
|
320 | + 'trial_interval' => isset( $_POST['wpinv_trial_interval'] ) ? (int) $_POST['wpinv_trial_interval'] : null, |
|
321 | + ) |
|
322 | 322 | ); |
323 | 323 | |
324 | - $item->save(); |
|
325 | - do_action( 'getpaid_item_metabox_save', $post_id, $item ); |
|
326 | - } |
|
324 | + $item->save(); |
|
325 | + do_action( 'getpaid_item_metabox_save', $post_id, $item ); |
|
326 | + } |
|
327 | 327 | } |
@@ -8,7 +8,7 @@ discard block |
||
8 | 8 | } |
9 | 9 | |
10 | 10 | if ( ! class_exists( 'WP_List_Table' ) ) { |
11 | - include_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; |
|
11 | + include_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php'; |
|
12 | 12 | } |
13 | 13 | |
14 | 14 | /** |
@@ -16,471 +16,471 @@ discard block |
||
16 | 16 | */ |
17 | 17 | class WPInv_Subscriptions_List_Table extends WP_List_Table { |
18 | 18 | |
19 | - /** |
|
20 | - * URL of this page |
|
21 | - * |
|
22 | - * @var string |
|
23 | - * @since 1.0.19 |
|
24 | - */ |
|
25 | - public $base_url; |
|
26 | - |
|
27 | - /** |
|
28 | - * Query |
|
29 | - * |
|
30 | - * @var GetPaid_Subscriptions_Query |
|
31 | - * @since 1.0.19 |
|
32 | - */ |
|
33 | - public $query; |
|
34 | - |
|
35 | - /** |
|
36 | - * Total subscriptions |
|
37 | - * |
|
38 | - * @var string |
|
39 | - * @since 1.0.0 |
|
40 | - */ |
|
41 | - public $total_count; |
|
42 | - |
|
43 | - /** |
|
44 | - * Current status subscriptions |
|
45 | - * |
|
46 | - * @var string |
|
47 | - * @since 1.0.0 |
|
48 | - */ |
|
49 | - public $current_total_count; |
|
50 | - |
|
51 | - /** |
|
52 | - * Status counts |
|
53 | - * |
|
54 | - * @var array |
|
55 | - * @since 1.0.19 |
|
56 | - */ |
|
57 | - public $status_counts; |
|
58 | - |
|
59 | - /** |
|
60 | - * Number of results to show per page |
|
61 | - * |
|
62 | - * @var int |
|
63 | - * @since 1.0.0 |
|
64 | - */ |
|
65 | - public $per_page = 10; |
|
66 | - |
|
67 | - /** |
|
68 | - * Constructor function. |
|
69 | - */ |
|
70 | - public function __construct() { |
|
71 | - |
|
72 | - parent::__construct( |
|
73 | - array( |
|
74 | - 'singular' => 'subscription', |
|
75 | - 'plural' => 'subscriptions', |
|
76 | - ) |
|
77 | - ); |
|
78 | - |
|
79 | - $this->process_bulk_action(); |
|
80 | - |
|
81 | - $this->prepare_query(); |
|
82 | - |
|
83 | - $this->base_url = remove_query_arg( 'status' ); |
|
84 | - |
|
85 | - } |
|
86 | - |
|
87 | - /** |
|
88 | - * Prepares the display query |
|
89 | - */ |
|
90 | - public function prepare_query() { |
|
91 | - |
|
92 | - // Prepare query args. |
|
93 | - $query = array( |
|
94 | - 'number' => $this->per_page, |
|
95 | - 'paged' => $this->get_paged(), |
|
96 | - 'status' => ( isset( $_GET['status'] ) && array_key_exists( $_GET['status'], getpaid_get_subscription_statuses() ) ) ? sanitize_text_field( $_GET['status'] ) : 'all', |
|
97 | - 'orderby' => ( isset( $_GET['orderby'] ) ) ? sanitize_text_field( $_GET['orderby'] ) : 'id', |
|
98 | - 'order' => ( isset( $_GET['order'] ) ) ? sanitize_text_field( $_GET['order'] ) : 'DESC', |
|
99 | - 'customer_in' => $this->get_user_in(), |
|
100 | - ); |
|
101 | - |
|
102 | - if ( is_array( $query['customer_in'] ) && empty( $query['customer_in'] ) ) { |
|
103 | - $this->total_count = 0; |
|
104 | - $this->current_total_count = 0; |
|
105 | - $this->items = array(); |
|
106 | - $this->status_counts = array(); |
|
107 | - return; |
|
108 | - } |
|
109 | - |
|
110 | - // Prepare class properties. |
|
111 | - $this->query = new GetPaid_Subscriptions_Query( $query ); |
|
112 | - $this->total_count = $this->query->get_total(); |
|
113 | - $this->current_total_count = $this->query->get_total(); |
|
114 | - $this->items = $this->query->get_results(); |
|
115 | - $this->status_counts = getpaid_get_subscription_status_counts( $query ); |
|
116 | - |
|
117 | - if ( 'all' != $query['status'] ) { |
|
118 | - unset( $query['status'] ); |
|
119 | - $this->total_count = getpaid_get_subscriptions( $query, 'count' ); |
|
120 | - } |
|
121 | - |
|
122 | - } |
|
123 | - |
|
124 | - /** |
|
125 | - * Get user in. |
|
126 | - * |
|
127 | - */ |
|
128 | - public function get_user_in() { |
|
129 | - |
|
130 | - // Abort if no user. |
|
131 | - if ( empty( $_GET['s'] ) ) { |
|
132 | - return null; |
|
133 | - } |
|
134 | - |
|
135 | - // Or invalid user. |
|
136 | - $user = wp_unslash( sanitize_text_field( $_REQUEST['s'] ) ); |
|
137 | - |
|
138 | - if ( empty( $user ) ) { |
|
139 | - return null; |
|
140 | - } |
|
141 | - |
|
142 | - // Search matching users. |
|
143 | - $user = '*' . $user . '*'; |
|
144 | - $users = new WP_User_Query( |
|
145 | - array( |
|
146 | - 'fields' => 'ID', |
|
147 | - 'search' => $user, |
|
148 | - 'count_total' => false, |
|
149 | - ) |
|
150 | - ); |
|
151 | - |
|
152 | - return $users->get_results(); |
|
153 | - } |
|
154 | - |
|
155 | - /** |
|
156 | - * Gets the list of views available on this table. |
|
157 | - * |
|
158 | - * The format is an associative array: |
|
159 | - * - `'id' => 'link'` |
|
160 | - * |
|
161 | - * @since 1.0.0 |
|
162 | - * |
|
163 | - * @return array |
|
164 | - */ |
|
165 | - public function get_views() { |
|
166 | - |
|
167 | - $current = isset( $_GET['status'] ) ? sanitize_text_field( $_GET['status'] ) : 'all'; |
|
168 | - $views = array( |
|
169 | - |
|
170 | - 'all' => sprintf( |
|
171 | - '<a href="%s" %s>%s <span class="count">(%d)</span></a>', |
|
172 | - esc_url( add_query_arg( 'status', false, $this->base_url ) ), |
|
173 | - $current === 'all' ? ' class="current"' : '', |
|
174 | - __( 'All', 'invoicing' ), |
|
175 | - $this->total_count |
|
176 | - ), |
|
177 | - |
|
178 | - ); |
|
179 | - |
|
180 | - foreach ( array_filter( $this->status_counts ) as $status => $count ) { |
|
181 | - |
|
182 | - $views[ $status ] = sprintf( |
|
183 | - '<a href="%s" %s>%s <span class="count">(%d)</span></a>', |
|
184 | - esc_url( add_query_arg( 'status', urlencode( $status ), $this->base_url ) ), |
|
185 | - $current === $status ? ' class="current"' : '', |
|
186 | - esc_html( getpaid_get_subscription_status_label( $status ) ), |
|
187 | - $count |
|
188 | - ); |
|
189 | - |
|
190 | - } |
|
191 | - |
|
192 | - return $views; |
|
193 | - |
|
194 | - } |
|
195 | - |
|
196 | - /** |
|
197 | - * Render most columns |
|
198 | - * |
|
199 | - * @access private |
|
200 | - * @since 1.0.0 |
|
201 | - * @return string |
|
202 | - */ |
|
203 | - public function column_default( $item, $column_name ) { |
|
204 | - return apply_filters( "getpaid_subscriptions_table_column_$column_name", $item->$column_name ); |
|
205 | - } |
|
206 | - |
|
207 | - /** |
|
208 | - * This is how checkbox column renders. |
|
209 | - * |
|
210 | - * @param WPInv_Subscription $item |
|
211 | - * @return string |
|
212 | - */ |
|
213 | - public function column_cb( $item ) { |
|
214 | - return sprintf( '<input type="checkbox" name="id[]" value="%s" />', esc_html( $item->get_id() ) ); |
|
215 | - } |
|
216 | - |
|
217 | - /** |
|
218 | - * Status column |
|
219 | - * |
|
220 | - * @param WPInv_Subscription $item |
|
221 | - * @since 1.0.0 |
|
222 | - * @return string |
|
223 | - */ |
|
224 | - public function column_status( $item ) { |
|
225 | - return $item->get_status_label_html(); |
|
226 | - } |
|
227 | - |
|
228 | - /** |
|
229 | - * Subscription column |
|
230 | - * |
|
231 | - * @param WPInv_Subscription $item |
|
232 | - * @since 1.0.0 |
|
233 | - * @return string |
|
234 | - */ |
|
235 | - public function column_subscription( $item ) { |
|
236 | - |
|
237 | - $username = __( '(Missing User)', 'invoicing' ); |
|
238 | - |
|
239 | - $user = get_userdata( $item->get_customer_id() ); |
|
240 | - $capabilities = wpinv_current_user_can_manage_invoicing(); |
|
241 | - |
|
242 | - if ( $user ) { |
|
243 | - $username = sprintf( |
|
244 | - '<a href="user-edit.php?user_id=%s">%s</a>', |
|
245 | - absint( $user->ID ), |
|
246 | - ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
247 | - ); |
|
248 | - } |
|
249 | - |
|
250 | - // translators: $1: is opening link, $2: is subscription id number, $3: is closing link tag, $4: is user's name |
|
251 | - $column_content = sprintf( |
|
252 | - _x( '%1$s#%2$s%3$s for %4$s', 'Subscription title on admin table. (e.g.: #211 for John Doe)', 'invoicing' ), |
|
253 | - '<a href="' . esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $item->get_id() ) ) ) . '">', |
|
254 | - '<strong>' . esc_attr( $item->get_id() ) . '</strong>', |
|
255 | - '</a>', |
|
256 | - $username |
|
257 | - ); |
|
258 | - |
|
259 | - $row_actions = array(); |
|
260 | - |
|
261 | - // View subscription. |
|
262 | - $view_url = esc_url( add_query_arg( 'id', $item->get_id(), admin_url( 'admin.php?page=wpinv-subscriptions' ) ) ); |
|
263 | - $row_actions['view'] = '<a href="' . $view_url . '">' . __( 'View Subscription', 'invoicing' ) . '</a>'; |
|
264 | - |
|
265 | - // View invoice. |
|
266 | - $invoice = get_post( $item->get_parent_invoice_id() ); |
|
267 | - |
|
268 | - if ( ! empty( $invoice ) ) { |
|
269 | - $invoice_url = get_edit_post_link( $invoice ); |
|
270 | - $row_actions['invoice'] = '<a href="' . $invoice_url . '">' . __( 'View Invoice', 'invoicing' ) . '</a>'; |
|
271 | - } |
|
272 | - |
|
273 | - $delete_url = esc_url( |
|
274 | - wp_nonce_url( |
|
275 | - add_query_arg( |
|
276 | - array( |
|
277 | - 'getpaid-admin-action' => 'subscription_manual_delete', |
|
278 | - 'id' => $item->get_id(), |
|
279 | - ) |
|
280 | - ), |
|
281 | - 'getpaid-nonce', |
|
282 | - 'getpaid-nonce' |
|
283 | - ) |
|
284 | - ); |
|
285 | - $row_actions['delete'] = '<a class="text-danger" href="' . $delete_url . '">' . __( 'Delete Subscription', 'invoicing' ) . '</a>'; |
|
286 | - |
|
287 | - if ( ! $capabilities ) { |
|
288 | - $row_actions = array(); |
|
289 | - } |
|
290 | - |
|
291 | - $row_actions = $this->row_actions( apply_filters( 'getpaid_subscription_table_row_actions', $row_actions, $item ) ); |
|
292 | - |
|
293 | - return "<strong>$column_content</strong>" . $this->column_amount( $item ) . $row_actions; |
|
294 | - } |
|
295 | - |
|
296 | - /** |
|
297 | - * Renewal date column |
|
298 | - * |
|
299 | - * @param WPInv_Subscription $item |
|
300 | - * @since 1.0.0 |
|
301 | - * @return string |
|
302 | - */ |
|
303 | - public function column_renewal_date( $item ) { |
|
304 | - return getpaid_format_date_value( $item->get_expiration() ); |
|
305 | - } |
|
306 | - |
|
307 | - /** |
|
308 | - * Start date column |
|
309 | - * |
|
310 | - * @param WPInv_Subscription $item |
|
311 | - * @since 1.0.0 |
|
312 | - * @return string |
|
313 | - */ |
|
314 | - public function column_start_date( $item ) { |
|
315 | - |
|
316 | - $gateway = $item->get_parent_invoice()->get_gateway_title(); |
|
317 | - |
|
318 | - if ( empty( $gateway ) ) { |
|
319 | - return getpaid_format_date_value( $item->get_date_created() ); |
|
320 | - } |
|
321 | - |
|
322 | - $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $item ); |
|
323 | - if ( ! empty( $url ) ) { |
|
324 | - |
|
325 | - return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf( |
|
326 | - __( 'Via %s', 'invoicing' ), |
|
327 | - '<strong><a href="' . esc_url( $url ) . '" target="_blank">' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</a></strong>' |
|
328 | - ); |
|
329 | - |
|
330 | - } |
|
331 | - |
|
332 | - return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf( |
|
333 | - __( 'Via %s', 'invoicing' ), |
|
334 | - '<strong>' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</strong>' |
|
335 | - ); |
|
336 | - |
|
337 | - } |
|
338 | - |
|
339 | - /** |
|
340 | - * Amount column |
|
341 | - * |
|
342 | - * @param WPInv_Subscription $item |
|
343 | - * @since 1.0.19 |
|
344 | - * @return string |
|
345 | - */ |
|
346 | - public static function column_amount( $item ) { |
|
347 | - $amount = getpaid_get_formatted_subscription_amount( $item ); |
|
348 | - return "<span class='text-muted form-text mt-2 mb-2 ms-1 ml-1'>$amount</span>"; |
|
349 | - } |
|
350 | - |
|
351 | - /** |
|
352 | - * Billing Times column |
|
353 | - * |
|
354 | - * @param WPInv_Subscription $item |
|
355 | - * @since 1.0.0 |
|
356 | - * @return string |
|
357 | - */ |
|
358 | - public function column_renewals( $item ) { |
|
359 | - $max_bills = $item->get_bill_times(); |
|
360 | - return $item->get_times_billed() . ' / ' . ( empty( $max_bills ) ? '∞' : $max_bills ); |
|
361 | - } |
|
362 | - |
|
363 | - /** |
|
364 | - * Product ID column |
|
365 | - * |
|
366 | - * @param WPInv_Subscription $item |
|
367 | - * @since 1.0.0 |
|
368 | - * @return string |
|
369 | - */ |
|
370 | - public function column_item( $item ) { |
|
371 | - $subscription_group = getpaid_get_invoice_subscription_group( $item->get_parent_invoice_id(), $item->get_id() ); |
|
372 | - |
|
373 | - if ( empty( $subscription_group ) ) { |
|
374 | - return $this->generate_item_markup( $item->get_product_id() ); |
|
375 | - } |
|
376 | - |
|
377 | - $markup = array_map( array( $this, 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
378 | - return implode( ' | ', $markup ); |
|
379 | - |
|
380 | - } |
|
381 | - |
|
382 | - /** |
|
383 | - * Generates the items markup. |
|
384 | - * |
|
385 | - * @param int $item_id |
|
386 | - * @since 1.0.0 |
|
387 | - * @return string |
|
388 | - */ |
|
389 | - public static function generate_item_markup( $item_id ) { |
|
390 | - $item = get_post( $item_id ); |
|
391 | - |
|
392 | - if ( ! empty( $item ) ) { |
|
393 | - $link = get_edit_post_link( $item ); |
|
394 | - $name = esc_html( get_the_title( $item ) ); |
|
395 | - return wpinv_current_user_can_manage_invoicing() ? "<a href='" . ( $link ? esc_url( $link ) : '#' ) . "'>$name</a>" : $name; |
|
396 | - } else { |
|
397 | - return sprintf( __( 'Item #%s', 'invoicing' ), $item_id ); |
|
398 | - } |
|
399 | - |
|
400 | - } |
|
401 | - |
|
402 | - /** |
|
403 | - * Retrieve the current page number |
|
404 | - * |
|
405 | - * @return int |
|
406 | - */ |
|
407 | - public function get_paged() { |
|
408 | - return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1; |
|
409 | - } |
|
410 | - |
|
411 | - /** |
|
412 | - * Setup the final data for the table |
|
413 | - * |
|
414 | - */ |
|
415 | - public function prepare_items() { |
|
416 | - |
|
417 | - $columns = $this->get_columns(); |
|
418 | - $hidden = array(); |
|
419 | - $sortable = $this->get_sortable_columns(); |
|
420 | - |
|
421 | - $this->_column_headers = array( $columns, $hidden, $sortable ); |
|
422 | - |
|
423 | - $this->set_pagination_args( |
|
424 | - array( |
|
425 | - 'total_items' => $this->current_total_count, |
|
426 | - 'per_page' => $this->per_page, |
|
427 | - 'total_pages' => ceil( $this->current_total_count / $this->per_page ), |
|
428 | - ) |
|
429 | - ); |
|
430 | - } |
|
431 | - |
|
432 | - /** |
|
433 | - * Table columns |
|
434 | - * |
|
435 | - * @return array |
|
436 | - */ |
|
437 | - public function get_columns() { |
|
438 | - $columns = array( |
|
439 | - 'cb' => '<input type="checkbox" />', |
|
440 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
441 | - 'start_date' => __( 'Start Date', 'invoicing' ), |
|
442 | - 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
443 | - 'renewals' => __( 'Payments', 'invoicing' ), |
|
444 | - 'item' => __( 'Items', 'invoicing' ), |
|
445 | - 'status' => __( 'Status', 'invoicing' ), |
|
446 | - ); |
|
447 | - |
|
448 | - return apply_filters( 'manage_getpaid_subscriptions_table_columns', $columns ); |
|
449 | - } |
|
450 | - |
|
451 | - /** |
|
452 | - * Sortable table columns. |
|
453 | - * |
|
454 | - * @return array |
|
455 | - */ |
|
456 | - public function get_sortable_columns() { |
|
457 | - $sortable = array( |
|
458 | - 'subscription' => array( 'id', true ), |
|
459 | - 'start_date' => array( 'created', true ), |
|
460 | - 'renewal_date' => array( 'expiration', true ), |
|
461 | - 'renewals' => array( 'bill_times', true ), |
|
462 | - 'item' => array( 'product_id', true ), |
|
463 | - 'status' => array( 'status', true ), |
|
464 | - ); |
|
465 | - |
|
466 | - return apply_filters( 'manage_getpaid_subscriptions_sortable_table_columns', $sortable ); |
|
467 | - } |
|
468 | - |
|
469 | - /** |
|
470 | - * Whether the table has items to display or not |
|
471 | - * |
|
472 | - * @return bool |
|
473 | - */ |
|
474 | - public function has_items() { |
|
475 | - return ! empty( $this->current_total_count ); |
|
476 | - } |
|
477 | - |
|
478 | - /** |
|
479 | - * Processes bulk actions. |
|
480 | - * |
|
481 | - */ |
|
482 | - public function process_bulk_action() { |
|
483 | - |
|
484 | - } |
|
19 | + /** |
|
20 | + * URL of this page |
|
21 | + * |
|
22 | + * @var string |
|
23 | + * @since 1.0.19 |
|
24 | + */ |
|
25 | + public $base_url; |
|
26 | + |
|
27 | + /** |
|
28 | + * Query |
|
29 | + * |
|
30 | + * @var GetPaid_Subscriptions_Query |
|
31 | + * @since 1.0.19 |
|
32 | + */ |
|
33 | + public $query; |
|
34 | + |
|
35 | + /** |
|
36 | + * Total subscriptions |
|
37 | + * |
|
38 | + * @var string |
|
39 | + * @since 1.0.0 |
|
40 | + */ |
|
41 | + public $total_count; |
|
42 | + |
|
43 | + /** |
|
44 | + * Current status subscriptions |
|
45 | + * |
|
46 | + * @var string |
|
47 | + * @since 1.0.0 |
|
48 | + */ |
|
49 | + public $current_total_count; |
|
50 | + |
|
51 | + /** |
|
52 | + * Status counts |
|
53 | + * |
|
54 | + * @var array |
|
55 | + * @since 1.0.19 |
|
56 | + */ |
|
57 | + public $status_counts; |
|
58 | + |
|
59 | + /** |
|
60 | + * Number of results to show per page |
|
61 | + * |
|
62 | + * @var int |
|
63 | + * @since 1.0.0 |
|
64 | + */ |
|
65 | + public $per_page = 10; |
|
66 | + |
|
67 | + /** |
|
68 | + * Constructor function. |
|
69 | + */ |
|
70 | + public function __construct() { |
|
71 | + |
|
72 | + parent::__construct( |
|
73 | + array( |
|
74 | + 'singular' => 'subscription', |
|
75 | + 'plural' => 'subscriptions', |
|
76 | + ) |
|
77 | + ); |
|
78 | + |
|
79 | + $this->process_bulk_action(); |
|
80 | + |
|
81 | + $this->prepare_query(); |
|
82 | + |
|
83 | + $this->base_url = remove_query_arg( 'status' ); |
|
84 | + |
|
85 | + } |
|
86 | + |
|
87 | + /** |
|
88 | + * Prepares the display query |
|
89 | + */ |
|
90 | + public function prepare_query() { |
|
91 | + |
|
92 | + // Prepare query args. |
|
93 | + $query = array( |
|
94 | + 'number' => $this->per_page, |
|
95 | + 'paged' => $this->get_paged(), |
|
96 | + 'status' => ( isset( $_GET['status'] ) && array_key_exists( $_GET['status'], getpaid_get_subscription_statuses() ) ) ? sanitize_text_field( $_GET['status'] ) : 'all', |
|
97 | + 'orderby' => ( isset( $_GET['orderby'] ) ) ? sanitize_text_field( $_GET['orderby'] ) : 'id', |
|
98 | + 'order' => ( isset( $_GET['order'] ) ) ? sanitize_text_field( $_GET['order'] ) : 'DESC', |
|
99 | + 'customer_in' => $this->get_user_in(), |
|
100 | + ); |
|
101 | + |
|
102 | + if ( is_array( $query['customer_in'] ) && empty( $query['customer_in'] ) ) { |
|
103 | + $this->total_count = 0; |
|
104 | + $this->current_total_count = 0; |
|
105 | + $this->items = array(); |
|
106 | + $this->status_counts = array(); |
|
107 | + return; |
|
108 | + } |
|
109 | + |
|
110 | + // Prepare class properties. |
|
111 | + $this->query = new GetPaid_Subscriptions_Query( $query ); |
|
112 | + $this->total_count = $this->query->get_total(); |
|
113 | + $this->current_total_count = $this->query->get_total(); |
|
114 | + $this->items = $this->query->get_results(); |
|
115 | + $this->status_counts = getpaid_get_subscription_status_counts( $query ); |
|
116 | + |
|
117 | + if ( 'all' != $query['status'] ) { |
|
118 | + unset( $query['status'] ); |
|
119 | + $this->total_count = getpaid_get_subscriptions( $query, 'count' ); |
|
120 | + } |
|
121 | + |
|
122 | + } |
|
123 | + |
|
124 | + /** |
|
125 | + * Get user in. |
|
126 | + * |
|
127 | + */ |
|
128 | + public function get_user_in() { |
|
129 | + |
|
130 | + // Abort if no user. |
|
131 | + if ( empty( $_GET['s'] ) ) { |
|
132 | + return null; |
|
133 | + } |
|
134 | + |
|
135 | + // Or invalid user. |
|
136 | + $user = wp_unslash( sanitize_text_field( $_REQUEST['s'] ) ); |
|
137 | + |
|
138 | + if ( empty( $user ) ) { |
|
139 | + return null; |
|
140 | + } |
|
141 | + |
|
142 | + // Search matching users. |
|
143 | + $user = '*' . $user . '*'; |
|
144 | + $users = new WP_User_Query( |
|
145 | + array( |
|
146 | + 'fields' => 'ID', |
|
147 | + 'search' => $user, |
|
148 | + 'count_total' => false, |
|
149 | + ) |
|
150 | + ); |
|
151 | + |
|
152 | + return $users->get_results(); |
|
153 | + } |
|
154 | + |
|
155 | + /** |
|
156 | + * Gets the list of views available on this table. |
|
157 | + * |
|
158 | + * The format is an associative array: |
|
159 | + * - `'id' => 'link'` |
|
160 | + * |
|
161 | + * @since 1.0.0 |
|
162 | + * |
|
163 | + * @return array |
|
164 | + */ |
|
165 | + public function get_views() { |
|
166 | + |
|
167 | + $current = isset( $_GET['status'] ) ? sanitize_text_field( $_GET['status'] ) : 'all'; |
|
168 | + $views = array( |
|
169 | + |
|
170 | + 'all' => sprintf( |
|
171 | + '<a href="%s" %s>%s <span class="count">(%d)</span></a>', |
|
172 | + esc_url( add_query_arg( 'status', false, $this->base_url ) ), |
|
173 | + $current === 'all' ? ' class="current"' : '', |
|
174 | + __( 'All', 'invoicing' ), |
|
175 | + $this->total_count |
|
176 | + ), |
|
177 | + |
|
178 | + ); |
|
179 | + |
|
180 | + foreach ( array_filter( $this->status_counts ) as $status => $count ) { |
|
181 | + |
|
182 | + $views[ $status ] = sprintf( |
|
183 | + '<a href="%s" %s>%s <span class="count">(%d)</span></a>', |
|
184 | + esc_url( add_query_arg( 'status', urlencode( $status ), $this->base_url ) ), |
|
185 | + $current === $status ? ' class="current"' : '', |
|
186 | + esc_html( getpaid_get_subscription_status_label( $status ) ), |
|
187 | + $count |
|
188 | + ); |
|
189 | + |
|
190 | + } |
|
191 | + |
|
192 | + return $views; |
|
193 | + |
|
194 | + } |
|
195 | + |
|
196 | + /** |
|
197 | + * Render most columns |
|
198 | + * |
|
199 | + * @access private |
|
200 | + * @since 1.0.0 |
|
201 | + * @return string |
|
202 | + */ |
|
203 | + public function column_default( $item, $column_name ) { |
|
204 | + return apply_filters( "getpaid_subscriptions_table_column_$column_name", $item->$column_name ); |
|
205 | + } |
|
206 | + |
|
207 | + /** |
|
208 | + * This is how checkbox column renders. |
|
209 | + * |
|
210 | + * @param WPInv_Subscription $item |
|
211 | + * @return string |
|
212 | + */ |
|
213 | + public function column_cb( $item ) { |
|
214 | + return sprintf( '<input type="checkbox" name="id[]" value="%s" />', esc_html( $item->get_id() ) ); |
|
215 | + } |
|
216 | + |
|
217 | + /** |
|
218 | + * Status column |
|
219 | + * |
|
220 | + * @param WPInv_Subscription $item |
|
221 | + * @since 1.0.0 |
|
222 | + * @return string |
|
223 | + */ |
|
224 | + public function column_status( $item ) { |
|
225 | + return $item->get_status_label_html(); |
|
226 | + } |
|
227 | + |
|
228 | + /** |
|
229 | + * Subscription column |
|
230 | + * |
|
231 | + * @param WPInv_Subscription $item |
|
232 | + * @since 1.0.0 |
|
233 | + * @return string |
|
234 | + */ |
|
235 | + public function column_subscription( $item ) { |
|
236 | + |
|
237 | + $username = __( '(Missing User)', 'invoicing' ); |
|
238 | + |
|
239 | + $user = get_userdata( $item->get_customer_id() ); |
|
240 | + $capabilities = wpinv_current_user_can_manage_invoicing(); |
|
241 | + |
|
242 | + if ( $user ) { |
|
243 | + $username = sprintf( |
|
244 | + '<a href="user-edit.php?user_id=%s">%s</a>', |
|
245 | + absint( $user->ID ), |
|
246 | + ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email ) |
|
247 | + ); |
|
248 | + } |
|
249 | + |
|
250 | + // translators: $1: is opening link, $2: is subscription id number, $3: is closing link tag, $4: is user's name |
|
251 | + $column_content = sprintf( |
|
252 | + _x( '%1$s#%2$s%3$s for %4$s', 'Subscription title on admin table. (e.g.: #211 for John Doe)', 'invoicing' ), |
|
253 | + '<a href="' . esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $item->get_id() ) ) ) . '">', |
|
254 | + '<strong>' . esc_attr( $item->get_id() ) . '</strong>', |
|
255 | + '</a>', |
|
256 | + $username |
|
257 | + ); |
|
258 | + |
|
259 | + $row_actions = array(); |
|
260 | + |
|
261 | + // View subscription. |
|
262 | + $view_url = esc_url( add_query_arg( 'id', $item->get_id(), admin_url( 'admin.php?page=wpinv-subscriptions' ) ) ); |
|
263 | + $row_actions['view'] = '<a href="' . $view_url . '">' . __( 'View Subscription', 'invoicing' ) . '</a>'; |
|
264 | + |
|
265 | + // View invoice. |
|
266 | + $invoice = get_post( $item->get_parent_invoice_id() ); |
|
267 | + |
|
268 | + if ( ! empty( $invoice ) ) { |
|
269 | + $invoice_url = get_edit_post_link( $invoice ); |
|
270 | + $row_actions['invoice'] = '<a href="' . $invoice_url . '">' . __( 'View Invoice', 'invoicing' ) . '</a>'; |
|
271 | + } |
|
272 | + |
|
273 | + $delete_url = esc_url( |
|
274 | + wp_nonce_url( |
|
275 | + add_query_arg( |
|
276 | + array( |
|
277 | + 'getpaid-admin-action' => 'subscription_manual_delete', |
|
278 | + 'id' => $item->get_id(), |
|
279 | + ) |
|
280 | + ), |
|
281 | + 'getpaid-nonce', |
|
282 | + 'getpaid-nonce' |
|
283 | + ) |
|
284 | + ); |
|
285 | + $row_actions['delete'] = '<a class="text-danger" href="' . $delete_url . '">' . __( 'Delete Subscription', 'invoicing' ) . '</a>'; |
|
286 | + |
|
287 | + if ( ! $capabilities ) { |
|
288 | + $row_actions = array(); |
|
289 | + } |
|
290 | + |
|
291 | + $row_actions = $this->row_actions( apply_filters( 'getpaid_subscription_table_row_actions', $row_actions, $item ) ); |
|
292 | + |
|
293 | + return "<strong>$column_content</strong>" . $this->column_amount( $item ) . $row_actions; |
|
294 | + } |
|
295 | + |
|
296 | + /** |
|
297 | + * Renewal date column |
|
298 | + * |
|
299 | + * @param WPInv_Subscription $item |
|
300 | + * @since 1.0.0 |
|
301 | + * @return string |
|
302 | + */ |
|
303 | + public function column_renewal_date( $item ) { |
|
304 | + return getpaid_format_date_value( $item->get_expiration() ); |
|
305 | + } |
|
306 | + |
|
307 | + /** |
|
308 | + * Start date column |
|
309 | + * |
|
310 | + * @param WPInv_Subscription $item |
|
311 | + * @since 1.0.0 |
|
312 | + * @return string |
|
313 | + */ |
|
314 | + public function column_start_date( $item ) { |
|
315 | + |
|
316 | + $gateway = $item->get_parent_invoice()->get_gateway_title(); |
|
317 | + |
|
318 | + if ( empty( $gateway ) ) { |
|
319 | + return getpaid_format_date_value( $item->get_date_created() ); |
|
320 | + } |
|
321 | + |
|
322 | + $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $item ); |
|
323 | + if ( ! empty( $url ) ) { |
|
324 | + |
|
325 | + return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf( |
|
326 | + __( 'Via %s', 'invoicing' ), |
|
327 | + '<strong><a href="' . esc_url( $url ) . '" target="_blank">' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</a></strong>' |
|
328 | + ); |
|
329 | + |
|
330 | + } |
|
331 | + |
|
332 | + return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf( |
|
333 | + __( 'Via %s', 'invoicing' ), |
|
334 | + '<strong>' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</strong>' |
|
335 | + ); |
|
336 | + |
|
337 | + } |
|
338 | + |
|
339 | + /** |
|
340 | + * Amount column |
|
341 | + * |
|
342 | + * @param WPInv_Subscription $item |
|
343 | + * @since 1.0.19 |
|
344 | + * @return string |
|
345 | + */ |
|
346 | + public static function column_amount( $item ) { |
|
347 | + $amount = getpaid_get_formatted_subscription_amount( $item ); |
|
348 | + return "<span class='text-muted form-text mt-2 mb-2 ms-1 ml-1'>$amount</span>"; |
|
349 | + } |
|
350 | + |
|
351 | + /** |
|
352 | + * Billing Times column |
|
353 | + * |
|
354 | + * @param WPInv_Subscription $item |
|
355 | + * @since 1.0.0 |
|
356 | + * @return string |
|
357 | + */ |
|
358 | + public function column_renewals( $item ) { |
|
359 | + $max_bills = $item->get_bill_times(); |
|
360 | + return $item->get_times_billed() . ' / ' . ( empty( $max_bills ) ? '∞' : $max_bills ); |
|
361 | + } |
|
362 | + |
|
363 | + /** |
|
364 | + * Product ID column |
|
365 | + * |
|
366 | + * @param WPInv_Subscription $item |
|
367 | + * @since 1.0.0 |
|
368 | + * @return string |
|
369 | + */ |
|
370 | + public function column_item( $item ) { |
|
371 | + $subscription_group = getpaid_get_invoice_subscription_group( $item->get_parent_invoice_id(), $item->get_id() ); |
|
372 | + |
|
373 | + if ( empty( $subscription_group ) ) { |
|
374 | + return $this->generate_item_markup( $item->get_product_id() ); |
|
375 | + } |
|
376 | + |
|
377 | + $markup = array_map( array( $this, 'generate_item_markup' ), array_keys( $subscription_group['items'] ) ); |
|
378 | + return implode( ' | ', $markup ); |
|
379 | + |
|
380 | + } |
|
381 | + |
|
382 | + /** |
|
383 | + * Generates the items markup. |
|
384 | + * |
|
385 | + * @param int $item_id |
|
386 | + * @since 1.0.0 |
|
387 | + * @return string |
|
388 | + */ |
|
389 | + public static function generate_item_markup( $item_id ) { |
|
390 | + $item = get_post( $item_id ); |
|
391 | + |
|
392 | + if ( ! empty( $item ) ) { |
|
393 | + $link = get_edit_post_link( $item ); |
|
394 | + $name = esc_html( get_the_title( $item ) ); |
|
395 | + return wpinv_current_user_can_manage_invoicing() ? "<a href='" . ( $link ? esc_url( $link ) : '#' ) . "'>$name</a>" : $name; |
|
396 | + } else { |
|
397 | + return sprintf( __( 'Item #%s', 'invoicing' ), $item_id ); |
|
398 | + } |
|
399 | + |
|
400 | + } |
|
401 | + |
|
402 | + /** |
|
403 | + * Retrieve the current page number |
|
404 | + * |
|
405 | + * @return int |
|
406 | + */ |
|
407 | + public function get_paged() { |
|
408 | + return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1; |
|
409 | + } |
|
410 | + |
|
411 | + /** |
|
412 | + * Setup the final data for the table |
|
413 | + * |
|
414 | + */ |
|
415 | + public function prepare_items() { |
|
416 | + |
|
417 | + $columns = $this->get_columns(); |
|
418 | + $hidden = array(); |
|
419 | + $sortable = $this->get_sortable_columns(); |
|
420 | + |
|
421 | + $this->_column_headers = array( $columns, $hidden, $sortable ); |
|
422 | + |
|
423 | + $this->set_pagination_args( |
|
424 | + array( |
|
425 | + 'total_items' => $this->current_total_count, |
|
426 | + 'per_page' => $this->per_page, |
|
427 | + 'total_pages' => ceil( $this->current_total_count / $this->per_page ), |
|
428 | + ) |
|
429 | + ); |
|
430 | + } |
|
431 | + |
|
432 | + /** |
|
433 | + * Table columns |
|
434 | + * |
|
435 | + * @return array |
|
436 | + */ |
|
437 | + public function get_columns() { |
|
438 | + $columns = array( |
|
439 | + 'cb' => '<input type="checkbox" />', |
|
440 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
441 | + 'start_date' => __( 'Start Date', 'invoicing' ), |
|
442 | + 'renewal_date' => __( 'Next Payment', 'invoicing' ), |
|
443 | + 'renewals' => __( 'Payments', 'invoicing' ), |
|
444 | + 'item' => __( 'Items', 'invoicing' ), |
|
445 | + 'status' => __( 'Status', 'invoicing' ), |
|
446 | + ); |
|
447 | + |
|
448 | + return apply_filters( 'manage_getpaid_subscriptions_table_columns', $columns ); |
|
449 | + } |
|
450 | + |
|
451 | + /** |
|
452 | + * Sortable table columns. |
|
453 | + * |
|
454 | + * @return array |
|
455 | + */ |
|
456 | + public function get_sortable_columns() { |
|
457 | + $sortable = array( |
|
458 | + 'subscription' => array( 'id', true ), |
|
459 | + 'start_date' => array( 'created', true ), |
|
460 | + 'renewal_date' => array( 'expiration', true ), |
|
461 | + 'renewals' => array( 'bill_times', true ), |
|
462 | + 'item' => array( 'product_id', true ), |
|
463 | + 'status' => array( 'status', true ), |
|
464 | + ); |
|
465 | + |
|
466 | + return apply_filters( 'manage_getpaid_subscriptions_sortable_table_columns', $sortable ); |
|
467 | + } |
|
468 | + |
|
469 | + /** |
|
470 | + * Whether the table has items to display or not |
|
471 | + * |
|
472 | + * @return bool |
|
473 | + */ |
|
474 | + public function has_items() { |
|
475 | + return ! empty( $this->current_total_count ); |
|
476 | + } |
|
477 | + |
|
478 | + /** |
|
479 | + * Processes bulk actions. |
|
480 | + * |
|
481 | + */ |
|
482 | + public function process_bulk_action() { |
|
483 | + |
|
484 | + } |
|
485 | 485 | |
486 | 486 | } |
@@ -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' => $items_count > 1 ? __( 'Items', 'invoicing' ) : __( 'Item', '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' => $items_count > 1 ? __( 'Items', 'invoicing' ) : __( 'Item', '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' ); |
@@ -456,40 +456,40 @@ discard block |
||
456 | 456 | * @param WPInv_Subscription $subscription |
457 | 457 | */ |
458 | 458 | function getpaid_admin_subscription_update_metabox( $subscription ) { |
459 | - global $aui_bs5; |
|
459 | + global $aui_bs5; |
|
460 | 460 | |
461 | - ?> |
|
461 | + ?> |
|
462 | 462 | <div class="mt-3"> |
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 | <?php |
482 | - submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
482 | + submit_button( __( 'Update', 'invoicing' ), 'primary', 'submit', false ); |
|
483 | 483 | |
484 | - $url = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ); |
|
485 | - $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
486 | - $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' ); |
|
484 | + $url = wp_nonce_url( add_query_arg( 'getpaid-admin-action', 'subscription_manual_renew' ), 'getpaid-nonce', 'getpaid-nonce' ); |
|
485 | + $anchor = __( 'Renew Subscription', 'invoicing' ); |
|
486 | + $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' ); |
|
487 | 487 | |
488 | - if ( $subscription->is_active() ) { |
|
489 | - echo "<a href='" . esc_url( $url ) . "' class='" . ( $aui_bs5 ? 'float-end' : 'float-right' ) . " button button-secondary' onclick='return confirm(\"" . esc_attr( $title ) . "\")' title='" . esc_attr__( 'Renew subscription manually', 'invoicing' ) . "'>" . esc_html( $anchor ) . "</a>"; |
|
490 | - } |
|
488 | + if ( $subscription->is_active() ) { |
|
489 | + echo "<a href='" . esc_url( $url ) . "' class='" . ( $aui_bs5 ? 'float-end' : 'float-right' ) . " button button-secondary' onclick='return confirm(\"" . esc_attr( $title ) . "\")' title='" . esc_attr__( 'Renew subscription manually', 'invoicing' ) . "'>" . esc_html( $anchor ) . "</a>"; |
|
490 | + } |
|
491 | 491 | |
492 | - echo '</div></div>'; |
|
492 | + echo '</div></div>'; |
|
493 | 493 | } |
494 | 494 | |
495 | 495 | /** |
@@ -500,33 +500,33 @@ discard block |
||
500 | 500 | */ |
501 | 501 | function getpaid_admin_subscription_invoice_details_metabox( $subscription, $strict = true ) { |
502 | 502 | |
503 | - $columns = apply_filters( |
|
504 | - 'getpaid_subscription_related_invoices_columns', |
|
505 | - array( |
|
506 | - 'invoice' => __( 'Invoice', 'invoicing' ), |
|
507 | - 'relationship' => __( 'Relationship', 'invoicing' ), |
|
508 | - 'date' => __( 'Date', 'invoicing' ), |
|
509 | - 'status' => __( 'Status', 'invoicing' ), |
|
510 | - 'total' => __( 'Total', 'invoicing' ), |
|
511 | - ), |
|
512 | - $subscription |
|
513 | - ); |
|
514 | - |
|
515 | - // Prepare the invoices. |
|
516 | - $payments = $subscription->get_child_payments( ! is_admin() ); |
|
517 | - $parent = $subscription->get_parent_invoice(); |
|
518 | - |
|
519 | - if ( $parent->exists() ) { |
|
520 | - $payments = array_merge( array( $parent ), $payments ); |
|
521 | - } |
|
522 | - |
|
523 | - $table_class = 'w-100 bg-white'; |
|
524 | - |
|
525 | - if ( ! is_admin() ) { |
|
526 | - $table_class = 'table table-bordered'; |
|
527 | - } |
|
528 | - |
|
529 | - ?> |
|
503 | + $columns = apply_filters( |
|
504 | + 'getpaid_subscription_related_invoices_columns', |
|
505 | + array( |
|
506 | + 'invoice' => __( 'Invoice', 'invoicing' ), |
|
507 | + 'relationship' => __( 'Relationship', 'invoicing' ), |
|
508 | + 'date' => __( 'Date', 'invoicing' ), |
|
509 | + 'status' => __( 'Status', 'invoicing' ), |
|
510 | + 'total' => __( 'Total', 'invoicing' ), |
|
511 | + ), |
|
512 | + $subscription |
|
513 | + ); |
|
514 | + |
|
515 | + // Prepare the invoices. |
|
516 | + $payments = $subscription->get_child_payments( ! is_admin() ); |
|
517 | + $parent = $subscription->get_parent_invoice(); |
|
518 | + |
|
519 | + if ( $parent->exists() ) { |
|
520 | + $payments = array_merge( array( $parent ), $payments ); |
|
521 | + } |
|
522 | + |
|
523 | + $table_class = 'w-100 bg-white'; |
|
524 | + |
|
525 | + if ( ! is_admin() ) { |
|
526 | + $table_class = 'table table-bordered'; |
|
527 | + } |
|
528 | + |
|
529 | + ?> |
|
530 | 530 | <div class="m-0" style="overflow: auto;"> |
531 | 531 | |
532 | 532 | <table class="<?php echo esc_attr( $table_class ); ?>"> |
@@ -534,10 +534,10 @@ discard block |
||
534 | 534 | <thead> |
535 | 535 | <tr> |
536 | 536 | <?php |
537 | - foreach ( $columns as $key => $label ) { |
|
538 | - echo "<th class='subscription-invoice-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
539 | - } |
|
540 | - ?> |
|
537 | + foreach ( $columns as $key => $label ) { |
|
538 | + echo "<th class='subscription-invoice-field-" . esc_attr( $key ) . " bg-light p-2 text-left color-dark font-weight-bold'>" . esc_html( $label ) . "</th>"; |
|
539 | + } |
|
540 | + ?> |
|
541 | 541 | </tr> |
542 | 542 | </thead> |
543 | 543 | |
@@ -553,73 +553,73 @@ discard block |
||
553 | 553 | |
554 | 554 | <?php |
555 | 555 | |
556 | - foreach ( $payments as $payment ) : |
|
556 | + foreach ( $payments as $payment ) : |
|
557 | 557 | |
558 | - // Ensure that we have an invoice. |
|
559 | - $payment = new WPInv_Invoice( $payment ); |
|
558 | + // Ensure that we have an invoice. |
|
559 | + $payment = new WPInv_Invoice( $payment ); |
|
560 | 560 | |
561 | - // Abort if the invoice is invalid... |
|
562 | - if ( ! $payment->exists() ) { |
|
563 | - continue; |
|
564 | - } |
|
561 | + // Abort if the invoice is invalid... |
|
562 | + if ( ! $payment->exists() ) { |
|
563 | + continue; |
|
564 | + } |
|
565 | 565 | |
566 | - // ... or belongs to a different subscription. |
|
567 | - if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
568 | - continue; |
|
569 | - } |
|
566 | + // ... or belongs to a different subscription. |
|
567 | + if ( $strict && $payment->is_renewal() && $payment->get_subscription_id() && $payment->get_subscription_id() != $subscription->get_id() ) { |
|
568 | + continue; |
|
569 | + } |
|
570 | 570 | |
571 | - echo '<tr>'; |
|
571 | + echo '<tr>'; |
|
572 | 572 | |
573 | - foreach ( array_keys( $columns ) as $key ) { |
|
573 | + foreach ( array_keys( $columns ) as $key ) { |
|
574 | 574 | |
575 | - echo "<td class='p-2 text-left'>"; |
|
575 | + echo "<td class='p-2 text-left'>"; |
|
576 | 576 | |
577 | - switch ( $key ) { |
|
577 | + switch ( $key ) { |
|
578 | 578 | |
579 | - case 'total': |
|
580 | - echo '<strong>'; |
|
581 | - wpinv_the_price( $payment->get_total(), $payment->get_currency() ); |
|
582 | - echo '</strong>'; |
|
583 | - break; |
|
579 | + case 'total': |
|
580 | + echo '<strong>'; |
|
581 | + wpinv_the_price( $payment->get_total(), $payment->get_currency() ); |
|
582 | + echo '</strong>'; |
|
583 | + break; |
|
584 | 584 | |
585 | - case 'relationship': |
|
586 | - echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' ); |
|
587 | - break; |
|
585 | + case 'relationship': |
|
586 | + echo $payment->is_renewal() ? esc_html__( 'Renewal Invoice', 'invoicing' ) : esc_html__( 'Initial Invoice', 'invoicing' ); |
|
587 | + break; |
|
588 | 588 | |
589 | - case 'date': |
|
590 | - echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) ); |
|
591 | - break; |
|
589 | + case 'date': |
|
590 | + echo esc_html( getpaid_format_date_value( $payment->get_date_created() ) ); |
|
591 | + break; |
|
592 | 592 | |
593 | - case 'status': |
|
594 | - $status = $payment->get_status_nicename(); |
|
595 | - if ( is_admin() ) { |
|
596 | - $status = $payment->get_status_label_html(); |
|
597 | - } |
|
593 | + case 'status': |
|
594 | + $status = $payment->get_status_nicename(); |
|
595 | + if ( is_admin() ) { |
|
596 | + $status = $payment->get_status_label_html(); |
|
597 | + } |
|
598 | 598 | |
599 | - echo wp_kses_post( $status ); |
|
600 | - break; |
|
599 | + echo wp_kses_post( $status ); |
|
600 | + break; |
|
601 | 601 | |
602 | - case 'invoice': |
|
603 | - if ( ! is_admin() ) { |
|
604 | - $link = $payment->get_view_url(); |
|
605 | - } else { |
|
606 | - $link = get_edit_post_link( $payment->get_id() ); |
|
607 | - } |
|
602 | + case 'invoice': |
|
603 | + if ( ! is_admin() ) { |
|
604 | + $link = $payment->get_view_url(); |
|
605 | + } else { |
|
606 | + $link = get_edit_post_link( $payment->get_id() ); |
|
607 | + } |
|
608 | 608 | |
609 | - $invoice = esc_html( $payment->get_number() ); |
|
609 | + $invoice = esc_html( $payment->get_number() ); |
|
610 | 610 | |
611 | - echo wp_kses_post( "<a href='" . ( $link ? esc_url( $link ) : '#' ) . "'>$invoice</a>" ); |
|
612 | - break; |
|
613 | - } |
|
611 | + echo wp_kses_post( "<a href='" . ( $link ? esc_url( $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 |
@@ -50,7 +50,7 @@ discard block |
||
50 | 50 | */ |
51 | 51 | function getpaid_get_invoice_subscription_group( $invoice_id, $subscription_id ) { |
52 | 52 | $subscription_groups = getpaid_get_invoice_subscription_groups( $invoice_id ); |
53 | - $matching_group = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) ); |
|
53 | + $matching_group = wp_list_filter( $subscription_groups, compact( 'subscription_id' ) ); |
|
54 | 54 | return reset( $matching_group ); |
55 | 55 | } |
56 | 56 | |
@@ -63,11 +63,11 @@ discard block |
||
63 | 63 | */ |
64 | 64 | function getpaid_get_subscription( $subscription ) { |
65 | 65 | |
66 | - if ( ! is_a( $subscription, 'WPInv_Subscription' ) ) { |
|
67 | - $subscription = new WPInv_Subscription( $subscription ); |
|
68 | - } |
|
66 | + if ( ! is_a( $subscription, 'WPInv_Subscription' ) ) { |
|
67 | + $subscription = new WPInv_Subscription( $subscription ); |
|
68 | + } |
|
69 | 69 | |
70 | - return $subscription->exists() ? $subscription : false; |
|
70 | + return $subscription->exists() ? $subscription : false; |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -81,28 +81,28 @@ discard block |
||
81 | 81 | */ |
82 | 82 | function getpaid_get_subscriptions( $args = array(), $return = 'results' ) { |
83 | 83 | |
84 | - // Do not retrieve all fields if we just want the count. |
|
85 | - if ( 'count' == $return ) { |
|
86 | - $args['fields'] = 'id'; |
|
87 | - $args['number'] = 1; |
|
88 | - } |
|
84 | + // Do not retrieve all fields if we just want the count. |
|
85 | + if ( 'count' == $return ) { |
|
86 | + $args['fields'] = 'id'; |
|
87 | + $args['number'] = 1; |
|
88 | + } |
|
89 | 89 | |
90 | - // Do not count all matches if we just want the results. |
|
91 | - if ( 'results' == $return ) { |
|
92 | - $args['count_total'] = false; |
|
93 | - } |
|
90 | + // Do not count all matches if we just want the results. |
|
91 | + if ( 'results' == $return ) { |
|
92 | + $args['count_total'] = false; |
|
93 | + } |
|
94 | 94 | |
95 | - $query = new GetPaid_Subscriptions_Query( $args ); |
|
95 | + $query = new GetPaid_Subscriptions_Query( $args ); |
|
96 | 96 | |
97 | - if ( 'results' == $return ) { |
|
98 | - return $query->get_results(); |
|
99 | - } |
|
97 | + if ( 'results' == $return ) { |
|
98 | + return $query->get_results(); |
|
99 | + } |
|
100 | 100 | |
101 | - if ( 'count' == $return ) { |
|
102 | - return $query->get_total(); |
|
103 | - } |
|
101 | + if ( 'count' == $return ) { |
|
102 | + return $query->get_total(); |
|
103 | + } |
|
104 | 104 | |
105 | - return $query; |
|
105 | + return $query; |
|
106 | 106 | } |
107 | 107 | |
108 | 108 | /** |
@@ -112,18 +112,18 @@ discard block |
||
112 | 112 | */ |
113 | 113 | function getpaid_get_subscription_statuses() { |
114 | 114 | |
115 | - return apply_filters( |
|
116 | - 'getpaid_get_subscription_statuses', |
|
117 | - array( |
|
118 | - 'pending' => __( 'Pending', 'invoicing' ), |
|
119 | - 'trialling' => __( 'Trialing', 'invoicing' ), |
|
120 | - 'active' => __( 'Active', 'invoicing' ), |
|
121 | - 'failing' => __( 'Failing', 'invoicing' ), |
|
122 | - 'expired' => __( 'Expired', 'invoicing' ), |
|
123 | - 'completed' => __( 'Complete', 'invoicing' ), |
|
124 | - 'cancelled' => __( 'Cancelled', 'invoicing' ), |
|
125 | - ) |
|
126 | - ); |
|
115 | + return apply_filters( |
|
116 | + 'getpaid_get_subscription_statuses', |
|
117 | + array( |
|
118 | + 'pending' => __( 'Pending', 'invoicing' ), |
|
119 | + 'trialling' => __( 'Trialing', 'invoicing' ), |
|
120 | + 'active' => __( 'Active', 'invoicing' ), |
|
121 | + 'failing' => __( 'Failing', 'invoicing' ), |
|
122 | + 'expired' => __( 'Expired', 'invoicing' ), |
|
123 | + 'completed' => __( 'Complete', 'invoicing' ), |
|
124 | + 'cancelled' => __( 'Cancelled', 'invoicing' ), |
|
125 | + ) |
|
126 | + ); |
|
127 | 127 | |
128 | 128 | } |
129 | 129 | |
@@ -133,8 +133,8 @@ discard block |
||
133 | 133 | * @return string |
134 | 134 | */ |
135 | 135 | function getpaid_get_subscription_status_label( $status ) { |
136 | - $statuses = getpaid_get_subscription_statuses(); |
|
137 | - return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) ); |
|
136 | + $statuses = getpaid_get_subscription_statuses(); |
|
137 | + return isset( $statuses[ $status ] ) ? $statuses[ $status ] : ucfirst( sanitize_text_field( $status ) ); |
|
138 | 138 | } |
139 | 139 | |
140 | 140 | /** |
@@ -144,18 +144,18 @@ discard block |
||
144 | 144 | */ |
145 | 145 | function getpaid_get_subscription_status_classes() { |
146 | 146 | |
147 | - return apply_filters( |
|
148 | - 'getpaid_get_subscription_status_classes', |
|
149 | - array( |
|
150 | - 'pending' => 'bg-dark', |
|
151 | - 'trialling' => 'bg-info', |
|
152 | - 'active' => 'bg-success', |
|
153 | - 'failing' => 'bg-warning text-dark', |
|
154 | - 'expired' => 'bg-danger', |
|
155 | - 'completed' => 'bg-primary', |
|
156 | - 'cancelled' => 'bg-secondary', |
|
157 | - ) |
|
158 | - ); |
|
147 | + return apply_filters( |
|
148 | + 'getpaid_get_subscription_status_classes', |
|
149 | + array( |
|
150 | + 'pending' => 'bg-dark', |
|
151 | + 'trialling' => 'bg-info', |
|
152 | + 'active' => 'bg-success', |
|
153 | + 'failing' => 'bg-warning text-dark', |
|
154 | + 'expired' => 'bg-danger', |
|
155 | + 'completed' => 'bg-primary', |
|
156 | + 'cancelled' => 'bg-secondary', |
|
157 | + ) |
|
158 | + ); |
|
159 | 159 | |
160 | 160 | } |
161 | 161 | |
@@ -166,15 +166,15 @@ discard block |
||
166 | 166 | */ |
167 | 167 | function getpaid_get_subscription_status_counts( $args = array() ) { |
168 | 168 | |
169 | - $statuses = array_keys( getpaid_get_subscription_statuses() ); |
|
170 | - $counts = array(); |
|
169 | + $statuses = array_keys( getpaid_get_subscription_statuses() ); |
|
170 | + $counts = array(); |
|
171 | 171 | |
172 | - foreach ( $statuses as $status ) { |
|
173 | - $_args = wp_parse_args( "status=$status", $args ); |
|
174 | - $counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' ); |
|
175 | - } |
|
172 | + foreach ( $statuses as $status ) { |
|
173 | + $_args = wp_parse_args( "status=$status", $args ); |
|
174 | + $counts[ $status ] = getpaid_get_subscriptions( $_args, 'count' ); |
|
175 | + } |
|
176 | 176 | |
177 | - return $counts; |
|
177 | + return $counts; |
|
178 | 178 | |
179 | 179 | } |
180 | 180 | |
@@ -185,32 +185,32 @@ discard block |
||
185 | 185 | */ |
186 | 186 | function getpaid_get_subscription_periods() { |
187 | 187 | |
188 | - return apply_filters( |
|
189 | - 'getpaid_get_subscription_periods', |
|
190 | - array( |
|
188 | + return apply_filters( |
|
189 | + 'getpaid_get_subscription_periods', |
|
190 | + array( |
|
191 | 191 | |
192 | - 'day' => array( |
|
193 | - 'singular' => __( '%s day', 'invoicing' ), |
|
194 | - 'plural' => __( '%d days', 'invoicing' ), |
|
195 | - ), |
|
192 | + 'day' => array( |
|
193 | + 'singular' => __( '%s day', 'invoicing' ), |
|
194 | + 'plural' => __( '%d days', 'invoicing' ), |
|
195 | + ), |
|
196 | 196 | |
197 | - 'week' => array( |
|
198 | - 'singular' => __( '%s week', 'invoicing' ), |
|
199 | - 'plural' => __( '%d weeks', 'invoicing' ), |
|
200 | - ), |
|
197 | + 'week' => array( |
|
198 | + 'singular' => __( '%s week', 'invoicing' ), |
|
199 | + 'plural' => __( '%d weeks', 'invoicing' ), |
|
200 | + ), |
|
201 | 201 | |
202 | - 'month' => array( |
|
203 | - 'singular' => __( '%s month', 'invoicing' ), |
|
204 | - 'plural' => __( '%d months', 'invoicing' ), |
|
205 | - ), |
|
202 | + 'month' => array( |
|
203 | + 'singular' => __( '%s month', 'invoicing' ), |
|
204 | + 'plural' => __( '%d months', 'invoicing' ), |
|
205 | + ), |
|
206 | 206 | |
207 | - 'year' => array( |
|
208 | - 'singular' => __( '%s year', 'invoicing' ), |
|
209 | - 'plural' => __( '%d years', 'invoicing' ), |
|
210 | - ), |
|
207 | + 'year' => array( |
|
208 | + 'singular' => __( '%s year', 'invoicing' ), |
|
209 | + 'plural' => __( '%d years', 'invoicing' ), |
|
210 | + ), |
|
211 | 211 | |
212 | - ) |
|
213 | - ); |
|
212 | + ) |
|
213 | + ); |
|
214 | 214 | |
215 | 215 | } |
216 | 216 | |
@@ -221,7 +221,7 @@ discard block |
||
221 | 221 | * @return int |
222 | 222 | */ |
223 | 223 | function getpaid_get_subscription_trial_period_interval( $trial_period ) { |
224 | - return (int) preg_replace( '/[^0-9]/', '', $trial_period ); |
|
224 | + return (int) preg_replace( '/[^0-9]/', '', $trial_period ); |
|
225 | 225 | } |
226 | 226 | |
227 | 227 | /** |
@@ -231,7 +231,7 @@ discard block |
||
231 | 231 | * @return string |
232 | 232 | */ |
233 | 233 | function getpaid_get_subscription_trial_period_period( $trial_period ) { |
234 | - return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) ); |
|
234 | + return preg_replace( '/[^a-z]/', '', strtolower( $trial_period ) ); |
|
235 | 235 | } |
236 | 236 | |
237 | 237 | /** |
@@ -242,8 +242,8 @@ discard block |
||
242 | 242 | * @return string |
243 | 243 | */ |
244 | 244 | function getpaid_get_subscription_period_label( $period, $interval = 1, $singular_prefix = '1' ) { |
245 | - $label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label( $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix ); |
|
246 | - return strtolower( sanitize_text_field( $label ) ); |
|
245 | + $label = (int) $interval > 1 ? getpaid_get_plural_subscription_period_label( $period, $interval ) : getpaid_get_singular_subscription_period_label( $period, $singular_prefix ); |
|
246 | + return strtolower( sanitize_text_field( $label ) ); |
|
247 | 247 | } |
248 | 248 | |
249 | 249 | /** |
@@ -254,22 +254,22 @@ discard block |
||
254 | 254 | */ |
255 | 255 | function getpaid_get_singular_subscription_period_label( $period, $singular_prefix = '1' ) { |
256 | 256 | |
257 | - $periods = getpaid_get_subscription_periods(); |
|
258 | - $period = strtolower( $period ); |
|
257 | + $periods = getpaid_get_subscription_periods(); |
|
258 | + $period = strtolower( $period ); |
|
259 | 259 | |
260 | - if ( isset( $periods[ $period ] ) ) { |
|
261 | - return sprintf( $periods[ $period ]['singular'], $singular_prefix ); |
|
262 | - } |
|
260 | + if ( isset( $periods[ $period ] ) ) { |
|
261 | + return sprintf( $periods[ $period ]['singular'], $singular_prefix ); |
|
262 | + } |
|
263 | 263 | |
264 | - // Backwards compatibility. |
|
265 | - foreach ( $periods as $key => $data ) { |
|
266 | - if ( strpos( $key, $period ) === 0 ) { |
|
267 | - return sprintf( $data['singular'], $singular_prefix ); |
|
268 | - } |
|
269 | - } |
|
264 | + // Backwards compatibility. |
|
265 | + foreach ( $periods as $key => $data ) { |
|
266 | + if ( strpos( $key, $period ) === 0 ) { |
|
267 | + return sprintf( $data['singular'], $singular_prefix ); |
|
268 | + } |
|
269 | + } |
|
270 | 270 | |
271 | - // Invalid string. |
|
272 | - return ''; |
|
271 | + // Invalid string. |
|
272 | + return ''; |
|
273 | 273 | } |
274 | 274 | |
275 | 275 | /** |
@@ -281,22 +281,22 @@ discard block |
||
281 | 281 | */ |
282 | 282 | function getpaid_get_plural_subscription_period_label( $period, $interval ) { |
283 | 283 | |
284 | - $periods = getpaid_get_subscription_periods(); |
|
285 | - $period = strtolower( $period ); |
|
284 | + $periods = getpaid_get_subscription_periods(); |
|
285 | + $period = strtolower( $period ); |
|
286 | 286 | |
287 | - if ( isset( $periods[ $period ] ) ) { |
|
288 | - return sprintf( $periods[ $period ]['plural'], $interval ); |
|
289 | - } |
|
287 | + if ( isset( $periods[ $period ] ) ) { |
|
288 | + return sprintf( $periods[ $period ]['plural'], $interval ); |
|
289 | + } |
|
290 | 290 | |
291 | - // Backwards compatibility. |
|
292 | - foreach ( $periods as $key => $data ) { |
|
293 | - if ( strpos( $key, $period ) === 0 ) { |
|
294 | - return sprintf( $data['plural'], $interval ); |
|
295 | - } |
|
296 | - } |
|
291 | + // Backwards compatibility. |
|
292 | + foreach ( $periods as $key => $data ) { |
|
293 | + if ( strpos( $key, $period ) === 0 ) { |
|
294 | + return sprintf( $data['plural'], $interval ); |
|
295 | + } |
|
296 | + } |
|
297 | 297 | |
298 | - // Invalid string. |
|
299 | - return ''; |
|
298 | + // Invalid string. |
|
299 | + return ''; |
|
300 | 300 | } |
301 | 301 | |
302 | 302 | /** |
@@ -307,92 +307,92 @@ discard block |
||
307 | 307 | */ |
308 | 308 | function getpaid_get_formatted_subscription_amount( $subscription ) { |
309 | 309 | |
310 | - $initial = wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() ); |
|
311 | - $recurring = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() ); |
|
312 | - $period = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' ); |
|
313 | - $bill_times = $subscription->get_bill_times(); |
|
314 | - $bill_times_less = $bill_times - 1; |
|
315 | - |
|
316 | - if ( ! empty( $bill_times ) ) { |
|
317 | - $bill_times = $subscription->get_frequency() * $bill_times; |
|
318 | - $bill_times_less = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times - $subscription->get_frequency() ); |
|
319 | - $bill_times = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times ); |
|
320 | - } |
|
321 | - |
|
322 | - // Trial periods. |
|
323 | - if ( $subscription->has_trial_period() ) { |
|
324 | - |
|
325 | - $trial_period = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() ); |
|
326 | - $trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() ); |
|
327 | - |
|
328 | - if ( empty( $bill_times ) ) { |
|
329 | - |
|
330 | - return sprintf( |
|
331 | - // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period |
|
332 | - _x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ), |
|
333 | - $initial, |
|
334 | - getpaid_get_subscription_period_label( $trial_period, $trial_interval ), |
|
335 | - $recurring, |
|
336 | - $period |
|
337 | - ); |
|
338 | - |
|
339 | - } |
|
340 | - |
|
341 | - return sprintf( |
|
342 | - // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period, $5: is the bill times |
|
343 | - _x( '%1$s trial for %2$s then %3$s / %4$s for %5$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year for 4 years)', 'invoicing' ), |
|
344 | - $initial, |
|
345 | - getpaid_get_subscription_period_label( $trial_period, $trial_interval ), |
|
346 | - $recurring, |
|
347 | - $period, |
|
348 | - $bill_times |
|
349 | - ); |
|
350 | - |
|
351 | - } |
|
352 | - |
|
353 | - if ( $initial != $recurring ) { |
|
354 | - |
|
355 | - if ( empty( $bill_times ) ) { |
|
356 | - |
|
357 | - return sprintf( |
|
358 | - // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period |
|
359 | - _x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ), |
|
360 | - $initial, |
|
361 | - $recurring, |
|
362 | - $period |
|
363 | - ); |
|
364 | - |
|
365 | - } |
|
366 | - |
|
367 | - return sprintf( |
|
368 | - // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period, $4: is the bill times |
|
369 | - _x( 'Initial payment of %1$s which renews at %2$s / %3$s for %4$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year for 5 years)', 'invoicing' ), |
|
370 | - $initial, |
|
371 | - $recurring, |
|
372 | - $period, |
|
373 | - $bill_times_less |
|
374 | - ); |
|
375 | - |
|
376 | - } |
|
377 | - |
|
378 | - if ( empty( $bill_times ) ) { |
|
379 | - |
|
380 | - return sprintf( |
|
381 | - // translators: $1: is the recurring amount, $2: is the recurring period |
|
382 | - _x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ), |
|
383 | - $initial, |
|
384 | - $period |
|
385 | - ); |
|
386 | - |
|
387 | - } |
|
388 | - |
|
389 | - return sprintf( |
|
390 | - // translators: $1: is the bill times, $2: is the recurring amount, $3: is the recurring period |
|
391 | - _x( '%2$s / %3$s for %1$s', 'Subscription amount. (e.g.: $120 / year for 5 years)', 'invoicing' ), |
|
392 | - $bill_times, |
|
393 | - $initial, |
|
394 | - $period |
|
395 | - ); |
|
310 | + $initial = wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() ); |
|
311 | + $recurring = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() ); |
|
312 | + $period = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' ); |
|
313 | + $bill_times = $subscription->get_bill_times(); |
|
314 | + $bill_times_less = $bill_times - 1; |
|
315 | + |
|
316 | + if ( ! empty( $bill_times ) ) { |
|
317 | + $bill_times = $subscription->get_frequency() * $bill_times; |
|
318 | + $bill_times_less = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times - $subscription->get_frequency() ); |
|
319 | + $bill_times = getpaid_get_subscription_period_label( $subscription->get_period(), $bill_times ); |
|
320 | + } |
|
321 | + |
|
322 | + // Trial periods. |
|
323 | + if ( $subscription->has_trial_period() ) { |
|
324 | + |
|
325 | + $trial_period = getpaid_get_subscription_trial_period_period( $subscription->get_trial_period() ); |
|
326 | + $trial_interval = getpaid_get_subscription_trial_period_interval( $subscription->get_trial_period() ); |
|
327 | + |
|
328 | + if ( empty( $bill_times ) ) { |
|
329 | + |
|
330 | + return sprintf( |
|
331 | + // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period |
|
332 | + _x( '%1$s trial for %2$s then %3$s / %4$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year)', 'invoicing' ), |
|
333 | + $initial, |
|
334 | + getpaid_get_subscription_period_label( $trial_period, $trial_interval ), |
|
335 | + $recurring, |
|
336 | + $period |
|
337 | + ); |
|
338 | + |
|
339 | + } |
|
340 | + |
|
341 | + return sprintf( |
|
342 | + // translators: $1: is the initial amount, $2: is the trial period, $3: is the recurring amount, $4: is the recurring period, $5: is the bill times |
|
343 | + _x( '%1$s trial for %2$s then %3$s / %4$s for %5$s', 'Subscription amount. (e.g.: $10 trial for 1 month then $120 / year for 4 years)', 'invoicing' ), |
|
344 | + $initial, |
|
345 | + getpaid_get_subscription_period_label( $trial_period, $trial_interval ), |
|
346 | + $recurring, |
|
347 | + $period, |
|
348 | + $bill_times |
|
349 | + ); |
|
350 | + |
|
351 | + } |
|
352 | + |
|
353 | + if ( $initial != $recurring ) { |
|
354 | + |
|
355 | + if ( empty( $bill_times ) ) { |
|
356 | + |
|
357 | + return sprintf( |
|
358 | + // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period |
|
359 | + _x( 'Initial payment of %1$s which renews at %2$s / %3$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year)', 'invoicing' ), |
|
360 | + $initial, |
|
361 | + $recurring, |
|
362 | + $period |
|
363 | + ); |
|
364 | + |
|
365 | + } |
|
366 | + |
|
367 | + return sprintf( |
|
368 | + // translators: $1: is the initial amount, $2: is the recurring amount, $3: is the recurring period, $4: is the bill times |
|
369 | + _x( 'Initial payment of %1$s which renews at %2$s / %3$s for %4$s', 'Subscription amount. (e.g.:Initial payment of $100 which renews at $120 / year for 5 years)', 'invoicing' ), |
|
370 | + $initial, |
|
371 | + $recurring, |
|
372 | + $period, |
|
373 | + $bill_times_less |
|
374 | + ); |
|
375 | + |
|
376 | + } |
|
377 | + |
|
378 | + if ( empty( $bill_times ) ) { |
|
379 | + |
|
380 | + return sprintf( |
|
381 | + // translators: $1: is the recurring amount, $2: is the recurring period |
|
382 | + _x( '%1$s / %2$s', 'Subscription amount. (e.g.: $120 / year)', 'invoicing' ), |
|
383 | + $initial, |
|
384 | + $period |
|
385 | + ); |
|
386 | + |
|
387 | + } |
|
388 | + |
|
389 | + return sprintf( |
|
390 | + // translators: $1: is the bill times, $2: is the recurring amount, $3: is the recurring period |
|
391 | + _x( '%2$s / %3$s for %1$s', 'Subscription amount. (e.g.: $120 / year for 5 years)', 'invoicing' ), |
|
392 | + $bill_times, |
|
393 | + $initial, |
|
394 | + $period |
|
395 | + ); |
|
396 | 396 | |
397 | 397 | } |
398 | 398 | |
@@ -403,7 +403,7 @@ discard block |
||
403 | 403 | * @return WPInv_Subscription|false |
404 | 404 | */ |
405 | 405 | function getpaid_get_invoice_subscription( $invoice ) { |
406 | - return getpaid_subscriptions()->get_invoice_subscription( $invoice ); |
|
406 | + return getpaid_subscriptions()->get_invoice_subscription( $invoice ); |
|
407 | 407 | } |
408 | 408 | |
409 | 409 | /** |
@@ -412,10 +412,10 @@ discard block |
||
412 | 412 | * @param WPInv_Invoice $invoice |
413 | 413 | */ |
414 | 414 | function getpaid_activate_invoice_subscription( $invoice ) { |
415 | - $subscription = getpaid_get_invoice_subscription( $invoice ); |
|
416 | - if ( is_a( $subscription, 'WPInv_Subscription' ) ) { |
|
417 | - $subscription->activate(); |
|
418 | - } |
|
415 | + $subscription = getpaid_get_invoice_subscription( $invoice ); |
|
416 | + if ( is_a( $subscription, 'WPInv_Subscription' ) ) { |
|
417 | + $subscription->activate(); |
|
418 | + } |
|
419 | 419 | } |
420 | 420 | |
421 | 421 | /** |
@@ -424,7 +424,7 @@ discard block |
||
424 | 424 | * @return WPInv_Subscriptions |
425 | 425 | */ |
426 | 426 | function getpaid_subscriptions() { |
427 | - return getpaid()->get( 'subscriptions' ); |
|
427 | + return getpaid()->get( 'subscriptions' ); |
|
428 | 428 | } |
429 | 429 | |
430 | 430 | /** |
@@ -443,15 +443,15 @@ discard block |
||
443 | 443 | return false; |
444 | 444 | } |
445 | 445 | |
446 | - // Fetch the invoice subscription. |
|
447 | - $subscription = getpaid_get_subscriptions( |
|
448 | - array( |
|
449 | - 'invoice_in' => $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id(), |
|
450 | - 'number' => 1, |
|
451 | - ) |
|
452 | - ); |
|
446 | + // Fetch the invoice subscription. |
|
447 | + $subscription = getpaid_get_subscriptions( |
|
448 | + array( |
|
449 | + 'invoice_in' => $invoice->is_renewal() ? $invoice->get_parent_id() : $invoice->get_id(), |
|
450 | + 'number' => 1, |
|
451 | + ) |
|
452 | + ); |
|
453 | 453 | |
454 | - return empty( $subscription ) ? false : $subscription[0]; |
|
454 | + return empty( $subscription ) ? false : $subscription[0]; |
|
455 | 455 | |
456 | 456 | } |
457 | 457 | |
@@ -468,48 +468,48 @@ discard block |
||
468 | 468 | */ |
469 | 469 | function getpaid_get_recurring_item_key( $cart_item ) { |
470 | 470 | |
471 | - $cart_key = 'renews_'; |
|
472 | - $interval = $cart_item->get_recurring_interval(); |
|
473 | - $period = $cart_item->get_recurring_period( true ); |
|
474 | - $length = $cart_item->get_recurring_limit() * $interval; |
|
475 | - $trial_period = $cart_item->get_trial_period( true ); |
|
476 | - $trial_length = $cart_item->get_trial_interval(); |
|
477 | - |
|
478 | - // First start with the billing interval and period |
|
479 | - switch ( $interval ) { |
|
480 | - case 1: |
|
481 | - if ( 'day' == $period ) { |
|
482 | - $cart_key .= 'daily'; |
|
483 | - } else { |
|
484 | - $cart_key .= sprintf( '%sly', $period ); |
|
485 | - } |
|
486 | - break; |
|
487 | - case 2: |
|
488 | - $cart_key .= sprintf( 'every_2nd_%s', $period ); |
|
489 | - break; |
|
490 | - case 3: |
|
491 | - $cart_key .= sprintf( 'every_3rd_%s', $period ); |
|
492 | - break; |
|
493 | - default: |
|
494 | - $cart_key .= sprintf( 'every_%dth_%s', $interval, $period ); |
|
495 | - break; |
|
496 | - } |
|
497 | - |
|
498 | - // Maybe add the optional maximum billing periods... |
|
499 | - if ( $length > 0 ) { |
|
500 | - $cart_key .= '_for_'; |
|
501 | - $cart_key .= sprintf( '%d_%s', $length, $period ); |
|
502 | - if ( $length > 1 ) { |
|
503 | - $cart_key .= 's'; |
|
504 | - } |
|
505 | - } |
|
506 | - |
|
507 | - // And an optional free trial. |
|
508 | - if ( $cart_item->has_free_trial() ) { |
|
509 | - $cart_key .= sprintf( '_after_a_%d_%s_trial', $trial_length, $trial_period ); |
|
510 | - } |
|
511 | - |
|
512 | - return apply_filters( 'getpaid_get_recurring_item_key', $cart_key, $cart_item ); |
|
471 | + $cart_key = 'renews_'; |
|
472 | + $interval = $cart_item->get_recurring_interval(); |
|
473 | + $period = $cart_item->get_recurring_period( true ); |
|
474 | + $length = $cart_item->get_recurring_limit() * $interval; |
|
475 | + $trial_period = $cart_item->get_trial_period( true ); |
|
476 | + $trial_length = $cart_item->get_trial_interval(); |
|
477 | + |
|
478 | + // First start with the billing interval and period |
|
479 | + switch ( $interval ) { |
|
480 | + case 1: |
|
481 | + if ( 'day' == $period ) { |
|
482 | + $cart_key .= 'daily'; |
|
483 | + } else { |
|
484 | + $cart_key .= sprintf( '%sly', $period ); |
|
485 | + } |
|
486 | + break; |
|
487 | + case 2: |
|
488 | + $cart_key .= sprintf( 'every_2nd_%s', $period ); |
|
489 | + break; |
|
490 | + case 3: |
|
491 | + $cart_key .= sprintf( 'every_3rd_%s', $period ); |
|
492 | + break; |
|
493 | + default: |
|
494 | + $cart_key .= sprintf( 'every_%dth_%s', $interval, $period ); |
|
495 | + break; |
|
496 | + } |
|
497 | + |
|
498 | + // Maybe add the optional maximum billing periods... |
|
499 | + if ( $length > 0 ) { |
|
500 | + $cart_key .= '_for_'; |
|
501 | + $cart_key .= sprintf( '%d_%s', $length, $period ); |
|
502 | + if ( $length > 1 ) { |
|
503 | + $cart_key .= 's'; |
|
504 | + } |
|
505 | + } |
|
506 | + |
|
507 | + // And an optional free trial. |
|
508 | + if ( $cart_item->has_free_trial() ) { |
|
509 | + $cart_key .= sprintf( '_after_a_%d_%s_trial', $trial_length, $trial_period ); |
|
510 | + } |
|
511 | + |
|
512 | + return apply_filters( 'getpaid_get_recurring_item_key', $cart_key, $cart_item ); |
|
513 | 513 | } |
514 | 514 | |
515 | 515 | /** |
@@ -520,16 +520,16 @@ discard block |
||
520 | 520 | */ |
521 | 521 | function getpaid_get_subscription_groups( $invoice ) { |
522 | 522 | |
523 | - // Generate subscription groups. |
|
524 | - $subscription_groups = array(); |
|
525 | - foreach ( $invoice->get_items() as $item ) { |
|
523 | + // Generate subscription groups. |
|
524 | + $subscription_groups = array(); |
|
525 | + foreach ( $invoice->get_items() as $item ) { |
|
526 | 526 | |
527 | - if ( $item->is_recurring() ) { |
|
528 | - $subscription_groups[ getpaid_get_recurring_item_key( $item ) ][] = $item; |
|
529 | - } |
|
527 | + if ( $item->is_recurring() ) { |
|
528 | + $subscription_groups[ getpaid_get_recurring_item_key( $item ) ][] = $item; |
|
529 | + } |
|
530 | 530 | } |
531 | 531 | |
532 | - return $subscription_groups; |
|
532 | + return $subscription_groups; |
|
533 | 533 | } |
534 | 534 | |
535 | 535 | /** |
@@ -543,56 +543,56 @@ discard block |
||
543 | 543 | */ |
544 | 544 | function getpaid_calculate_subscription_totals( $invoice ) { |
545 | 545 | |
546 | - // Generate subscription groups. |
|
547 | - $subscription_groups = getpaid_get_subscription_groups( $invoice ); |
|
546 | + // Generate subscription groups. |
|
547 | + $subscription_groups = getpaid_get_subscription_groups( $invoice ); |
|
548 | 548 | |
549 | - // Now let's calculate the totals for each group of subscriptions |
|
550 | - $subscription_totals = array(); |
|
549 | + // Now let's calculate the totals for each group of subscriptions |
|
550 | + $subscription_totals = array(); |
|
551 | 551 | |
552 | - foreach ( $subscription_groups as $subscription_key => $items ) { |
|
552 | + foreach ( $subscription_groups as $subscription_key => $items ) { |
|
553 | 553 | |
554 | - if ( empty( $subscription_totals[ $subscription_key ] ) ) { |
|
554 | + if ( empty( $subscription_totals[ $subscription_key ] ) ) { |
|
555 | 555 | |
556 | - $subscription_totals[ $subscription_key ] = array( |
|
557 | - 'initial_total' => 0, |
|
558 | - 'recurring_total' => 0, |
|
559 | - 'items' => array(), |
|
560 | - 'trialling' => false, |
|
561 | - ); |
|
556 | + $subscription_totals[ $subscription_key ] = array( |
|
557 | + 'initial_total' => 0, |
|
558 | + 'recurring_total' => 0, |
|
559 | + 'items' => array(), |
|
560 | + 'trialling' => false, |
|
561 | + ); |
|
562 | 562 | |
563 | - } |
|
563 | + } |
|
564 | 564 | |
565 | - /** |
|
566 | - * Get the totals of the group. |
|
567 | - * @var GetPaid_Form_Item $item |
|
568 | - */ |
|
569 | - foreach ( $items as $item ) { |
|
565 | + /** |
|
566 | + * Get the totals of the group. |
|
567 | + * @var GetPaid_Form_Item $item |
|
568 | + */ |
|
569 | + foreach ( $items as $item ) { |
|
570 | 570 | |
571 | - $subscription_totals[ $subscription_key ]['items'][ $item->get_id() ] = $item->prepare_data_for_saving(); |
|
572 | - $subscription_totals[ $subscription_key ]['item_id'] = $item->get_id(); |
|
573 | - $subscription_totals[ $subscription_key ]['period'] = $item->get_recurring_period( true ); |
|
574 | - $subscription_totals[ $subscription_key ]['interval'] = $item->get_recurring_interval(); |
|
575 | - $subscription_totals[ $subscription_key ]['initial_total'] += $item->get_sub_total() + $item->item_tax - $item->item_discount; |
|
576 | - $subscription_totals[ $subscription_key ]['recurring_total'] += $item->get_recurring_sub_total() + $item->item_tax - $item->recurring_item_discount; |
|
577 | - $subscription_totals[ $subscription_key ]['recurring_limit'] = $item->get_recurring_limit(); |
|
571 | + $subscription_totals[ $subscription_key ]['items'][ $item->get_id() ] = $item->prepare_data_for_saving(); |
|
572 | + $subscription_totals[ $subscription_key ]['item_id'] = $item->get_id(); |
|
573 | + $subscription_totals[ $subscription_key ]['period'] = $item->get_recurring_period( true ); |
|
574 | + $subscription_totals[ $subscription_key ]['interval'] = $item->get_recurring_interval(); |
|
575 | + $subscription_totals[ $subscription_key ]['initial_total'] += $item->get_sub_total() + $item->item_tax - $item->item_discount; |
|
576 | + $subscription_totals[ $subscription_key ]['recurring_total'] += $item->get_recurring_sub_total() + $item->item_tax - $item->recurring_item_discount; |
|
577 | + $subscription_totals[ $subscription_key ]['recurring_limit'] = $item->get_recurring_limit(); |
|
578 | 578 | |
579 | - // Calculate the next renewal date. |
|
580 | - $period = $item->get_recurring_period( true ); |
|
581 | - $interval = $item->get_recurring_interval(); |
|
579 | + // Calculate the next renewal date. |
|
580 | + $period = $item->get_recurring_period( true ); |
|
581 | + $interval = $item->get_recurring_interval(); |
|
582 | 582 | |
583 | - // If the subscription item has a trial period... |
|
584 | - if ( $item->has_free_trial() ) { |
|
585 | - $period = $item->get_trial_period( true ); |
|
586 | - $interval = $item->get_trial_interval(); |
|
587 | - $subscription_totals[ $subscription_key ]['trialling'] = $interval . ' ' . $period; |
|
588 | - } |
|
583 | + // If the subscription item has a trial period... |
|
584 | + if ( $item->has_free_trial() ) { |
|
585 | + $period = $item->get_trial_period( true ); |
|
586 | + $interval = $item->get_trial_interval(); |
|
587 | + $subscription_totals[ $subscription_key ]['trialling'] = $interval . ' ' . $period; |
|
588 | + } |
|
589 | 589 | |
590 | - $subscription_totals[ $subscription_key ]['renews_on'] = date( 'Y-m-d H:i:s', strtotime( "+$interval $period", current_time( 'timestamp' ) ) ); |
|
590 | + $subscription_totals[ $subscription_key ]['renews_on'] = date( 'Y-m-d H:i:s', strtotime( "+$interval $period", current_time( 'timestamp' ) ) ); |
|
591 | 591 | |
592 | - } |
|
592 | + } |
|
593 | 593 | } |
594 | 594 | |
595 | - return apply_filters( 'getpaid_calculate_subscription_totals', $subscription_totals, $invoice ); |
|
595 | + return apply_filters( 'getpaid_calculate_subscription_totals', $subscription_totals, $invoice ); |
|
596 | 596 | } |
597 | 597 | |
598 | 598 | /** |
@@ -603,16 +603,16 @@ discard block |
||
603 | 603 | */ |
604 | 604 | function getpaid_should_group_subscriptions( $invoice ) { |
605 | 605 | |
606 | - $recurring_items = 0; |
|
606 | + $recurring_items = 0; |
|
607 | 607 | |
608 | - foreach ( $invoice->get_items() as $item ) { |
|
608 | + foreach ( $invoice->get_items() as $item ) { |
|
609 | 609 | |
610 | - if ( $item->is_recurring() ) { |
|
611 | - $recurring_items ++; |
|
612 | - } |
|
610 | + if ( $item->is_recurring() ) { |
|
611 | + $recurring_items ++; |
|
612 | + } |
|
613 | 613 | } |
614 | 614 | |
615 | - return apply_filters( 'getpaid_should_group_subscriptions', $recurring_items > 1, $invoice ); |
|
615 | + return apply_filters( 'getpaid_should_group_subscriptions', $recurring_items > 1, $invoice ); |
|
616 | 616 | } |
617 | 617 | |
618 | 618 | /** |
@@ -623,39 +623,39 @@ discard block |
||
623 | 623 | * @return int |
624 | 624 | */ |
625 | 625 | function getpaid_count_subscription_invoices( $parent_invoice_id, $subscription_id = false ) { |
626 | - global $wpdb; |
|
626 | + global $wpdb; |
|
627 | 627 | |
628 | - $parent_invoice_id = (int) $parent_invoice_id; |
|
628 | + $parent_invoice_id = (int) $parent_invoice_id; |
|
629 | 629 | |
630 | - if ( false === $subscription_id || ! (bool) get_post_meta( $parent_invoice_id, '_wpinv_subscription_id', true ) ) { |
|
630 | + if ( false === $subscription_id || ! (bool) get_post_meta( $parent_invoice_id, '_wpinv_subscription_id', true ) ) { |
|
631 | 631 | |
632 | - return (int) $wpdb->get_var( |
|
633 | - $wpdb->prepare( |
|
634 | - "SELECT COUNT(ID) FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )", |
|
635 | - $parent_invoice_id, |
|
636 | - $parent_invoice_id |
|
637 | - ) |
|
638 | - ); |
|
632 | + return (int) $wpdb->get_var( |
|
633 | + $wpdb->prepare( |
|
634 | + "SELECT COUNT(ID) FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )", |
|
635 | + $parent_invoice_id, |
|
636 | + $parent_invoice_id |
|
637 | + ) |
|
638 | + ); |
|
639 | 639 | |
640 | - } |
|
640 | + } |
|
641 | 641 | |
642 | - $invoice_ids = $wpdb->get_col( |
|
643 | - $wpdb->prepare( |
|
644 | - "SELECT ID FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )", |
|
645 | - $parent_invoice_id, |
|
646 | - $parent_invoice_id |
|
647 | - ) |
|
648 | - ); |
|
642 | + $invoice_ids = $wpdb->get_col( |
|
643 | + $wpdb->prepare( |
|
644 | + "SELECT ID FROM $wpdb->posts WHERE ( post_parent=%d OR ID=%d ) AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )", |
|
645 | + $parent_invoice_id, |
|
646 | + $parent_invoice_id |
|
647 | + ) |
|
648 | + ); |
|
649 | 649 | |
650 | - $count = 0; |
|
650 | + $count = 0; |
|
651 | 651 | |
652 | - foreach ( wp_parse_id_list( $invoice_ids ) as $invoice_id ) { |
|
652 | + foreach ( wp_parse_id_list( $invoice_ids ) as $invoice_id ) { |
|
653 | 653 | |
654 | - if ( $invoice_id == $parent_invoice_id || $subscription_id == (int) get_post_meta( $invoice_id, '_wpinv_subscription_id', true ) ) { |
|
655 | - $count ++; |
|
656 | - continue; |
|
657 | - } |
|
654 | + if ( $invoice_id == $parent_invoice_id || $subscription_id == (int) get_post_meta( $invoice_id, '_wpinv_subscription_id', true ) ) { |
|
655 | + $count ++; |
|
656 | + continue; |
|
657 | + } |
|
658 | 658 | } |
659 | 659 | |
660 | - return $count; |
|
660 | + return $count; |
|
661 | 661 | } |
@@ -12,49 +12,49 @@ discard block |
||
12 | 12 | */ |
13 | 13 | class GetPaid_Reports { |
14 | 14 | |
15 | - /** |
|
16 | - * Class constructor. |
|
17 | - * |
|
18 | - */ |
|
19 | - public function __construct() { |
|
20 | - add_action( 'admin_menu', array( $this, 'register_reports_page' ), 20 ); |
|
21 | - add_action( 'wpinv_reports_tab_reports', array( $this, 'display_reports_tab' ) ); |
|
22 | - add_action( 'wpinv_reports_tab_export', array( $this, 'display_exports_tab' ) ); |
|
23 | - add_action( 'getpaid_authenticated_admin_action_download_graph', array( $this, 'download_graph' ) ); |
|
24 | - add_action( 'getpaid_authenticated_admin_action_export_invoices', array( $this, 'export_invoices' ) ); |
|
25 | - |
|
26 | - } |
|
27 | - |
|
28 | - /** |
|
29 | - * Registers the reports page. |
|
30 | - * |
|
31 | - */ |
|
32 | - public function register_reports_page() { |
|
33 | - |
|
34 | - add_submenu_page( |
|
15 | + /** |
|
16 | + * Class constructor. |
|
17 | + * |
|
18 | + */ |
|
19 | + public function __construct() { |
|
20 | + add_action( 'admin_menu', array( $this, 'register_reports_page' ), 20 ); |
|
21 | + add_action( 'wpinv_reports_tab_reports', array( $this, 'display_reports_tab' ) ); |
|
22 | + add_action( 'wpinv_reports_tab_export', array( $this, 'display_exports_tab' ) ); |
|
23 | + add_action( 'getpaid_authenticated_admin_action_download_graph', array( $this, 'download_graph' ) ); |
|
24 | + add_action( 'getpaid_authenticated_admin_action_export_invoices', array( $this, 'export_invoices' ) ); |
|
25 | + |
|
26 | + } |
|
27 | + |
|
28 | + /** |
|
29 | + * Registers the reports page. |
|
30 | + * |
|
31 | + */ |
|
32 | + public function register_reports_page() { |
|
33 | + |
|
34 | + add_submenu_page( |
|
35 | 35 | 'wpinv', |
36 | 36 | __( 'Reports', 'invoicing' ), |
37 | 37 | __( 'Reports', 'invoicing' ), |
38 | 38 | wpinv_get_capability(), |
39 | 39 | 'wpinv-reports', |
40 | 40 | array( $this, 'display_reports_page' ) |
41 | - ); |
|
41 | + ); |
|
42 | 42 | |
43 | - } |
|
43 | + } |
|
44 | 44 | |
45 | - /** |
|
46 | - * Displays the reports page. |
|
47 | - * |
|
48 | - */ |
|
49 | - public function display_reports_page() { |
|
45 | + /** |
|
46 | + * Displays the reports page. |
|
47 | + * |
|
48 | + */ |
|
49 | + public function display_reports_page() { |
|
50 | 50 | |
51 | - // Prepare variables. |
|
52 | - $tabs = $this->get_tabs(); |
|
53 | - $current_tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'reports'; |
|
54 | - $current_tab = array_key_exists( $current_tab, $tabs ) ? $current_tab : 'reports'; |
|
51 | + // Prepare variables. |
|
52 | + $tabs = $this->get_tabs(); |
|
53 | + $current_tab = isset( $_GET['tab'] ) ? sanitize_text_field( $_GET['tab'] ) : 'reports'; |
|
54 | + $current_tab = array_key_exists( $current_tab, $tabs ) ? $current_tab : 'reports'; |
|
55 | 55 | |
56 | - // Display the current tab. |
|
57 | - ?> |
|
56 | + // Display the current tab. |
|
57 | + ?> |
|
58 | 58 | |
59 | 59 | <div class="wrap"> |
60 | 60 | |
@@ -63,19 +63,19 @@ discard block |
||
63 | 63 | <nav class="nav-tab-wrapper"> |
64 | 64 | |
65 | 65 | <?php |
66 | - foreach ( $tabs as $key => $label ) { |
|
66 | + foreach ( $tabs as $key => $label ) { |
|
67 | 67 | |
68 | - $key = sanitize_key( $key ); |
|
69 | - $label = esc_html( $label ); |
|
70 | - $class = $key == $current_tab ? 'nav-tab nav-tab-active' : 'nav-tab '; |
|
71 | - $url = esc_url( |
|
68 | + $key = sanitize_key( $key ); |
|
69 | + $label = esc_html( $label ); |
|
70 | + $class = $key == $current_tab ? 'nav-tab nav-tab-active' : 'nav-tab '; |
|
71 | + $url = esc_url( |
|
72 | 72 | add_query_arg( 'tab', $key, admin_url( 'admin.php?page=wpinv-reports' ) ) |
73 | 73 | ); |
74 | 74 | |
75 | - echo wp_kses_post( "\n\t\t\t<a href='$url' class='" . $class . "'>$label</a>" ); |
|
75 | + echo wp_kses_post( "\n\t\t\t<a href='$url' class='" . $class . "'>$label</a>" ); |
|
76 | 76 | |
77 | - } |
|
78 | - ?> |
|
77 | + } |
|
78 | + ?> |
|
79 | 79 | |
80 | 80 | </nav> |
81 | 81 | |
@@ -86,82 +86,82 @@ discard block |
||
86 | 86 | </div> |
87 | 87 | <?php |
88 | 88 | |
89 | - // Wordfence loads an unsupported version of chart js on our page. |
|
90 | - wp_deregister_style( 'chart-js' ); |
|
91 | - wp_deregister_script( 'chart-js' ); |
|
92 | - wp_enqueue_script( 'chart-js', WPINV_PLUGIN_URL . 'assets/js/chart.min.js', array( 'jquery' ), '3.7.1', true ); |
|
89 | + // Wordfence loads an unsupported version of chart js on our page. |
|
90 | + wp_deregister_style( 'chart-js' ); |
|
91 | + wp_deregister_script( 'chart-js' ); |
|
92 | + wp_enqueue_script( 'chart-js', WPINV_PLUGIN_URL . 'assets/js/chart.min.js', array( 'jquery' ), '3.7.1', true ); |
|
93 | 93 | |
94 | - } |
|
94 | + } |
|
95 | 95 | |
96 | - /** |
|
97 | - * Retrieves reports page tabs. |
|
98 | - * |
|
99 | - * @return array |
|
100 | - */ |
|
101 | - public function get_tabs() { |
|
96 | + /** |
|
97 | + * Retrieves reports page tabs. |
|
98 | + * |
|
99 | + * @return array |
|
100 | + */ |
|
101 | + public function get_tabs() { |
|
102 | 102 | |
103 | - $tabs = array( |
|
104 | - 'reports' => __( 'Reports', 'invoicing' ), |
|
105 | - 'export' => __( 'Export', 'invoicing' ), |
|
106 | - ); |
|
103 | + $tabs = array( |
|
104 | + 'reports' => __( 'Reports', 'invoicing' ), |
|
105 | + 'export' => __( 'Export', 'invoicing' ), |
|
106 | + ); |
|
107 | 107 | |
108 | - return apply_filters( 'getpaid_report_tabs', $tabs ); |
|
109 | - } |
|
108 | + return apply_filters( 'getpaid_report_tabs', $tabs ); |
|
109 | + } |
|
110 | 110 | |
111 | - /** |
|
112 | - * Displays the reports tab. |
|
113 | - * |
|
114 | - */ |
|
115 | - public function display_reports_tab() { |
|
111 | + /** |
|
112 | + * Displays the reports tab. |
|
113 | + * |
|
114 | + */ |
|
115 | + public function display_reports_tab() { |
|
116 | 116 | |
117 | - $reports = new GetPaid_Reports_Report(); |
|
118 | - $reports->display(); |
|
117 | + $reports = new GetPaid_Reports_Report(); |
|
118 | + $reports->display(); |
|
119 | 119 | |
120 | - } |
|
120 | + } |
|
121 | 121 | |
122 | - /** |
|
123 | - * Displays the exports tab. |
|
124 | - * |
|
125 | - */ |
|
126 | - public function display_exports_tab() { |
|
122 | + /** |
|
123 | + * Displays the exports tab. |
|
124 | + * |
|
125 | + */ |
|
126 | + public function display_exports_tab() { |
|
127 | 127 | |
128 | - $exports = new GetPaid_Reports_Export(); |
|
129 | - $exports->display(); |
|
128 | + $exports = new GetPaid_Reports_Export(); |
|
129 | + $exports->display(); |
|
130 | 130 | |
131 | - } |
|
131 | + } |
|
132 | 132 | |
133 | - /** |
|
134 | - * Donwnloads a graph. |
|
135 | - * |
|
136 | - * @param array $args |
|
137 | - */ |
|
138 | - public function download_graph( $args ) { |
|
133 | + /** |
|
134 | + * Donwnloads a graph. |
|
135 | + * |
|
136 | + * @param array $args |
|
137 | + */ |
|
138 | + public function download_graph( $args ) { |
|
139 | 139 | |
140 | - if ( ! empty( $args['graph'] ) ) { |
|
141 | - $downloader = new GetPaid_Graph_Downloader(); |
|
142 | - $downloader->download( $args['graph'] ); |
|
143 | - } |
|
140 | + if ( ! empty( $args['graph'] ) ) { |
|
141 | + $downloader = new GetPaid_Graph_Downloader(); |
|
142 | + $downloader->download( $args['graph'] ); |
|
143 | + } |
|
144 | 144 | |
145 | - } |
|
145 | + } |
|
146 | 146 | |
147 | - /** |
|
148 | - * Exports invoices. |
|
149 | - * |
|
150 | - * @param array $args |
|
151 | - */ |
|
152 | - public function export_invoices( $args ) { |
|
147 | + /** |
|
148 | + * Exports invoices. |
|
149 | + * |
|
150 | + * @param array $args |
|
151 | + */ |
|
152 | + public function export_invoices( $args ) { |
|
153 | 153 | |
154 | - if ( ! empty( $args['post_type'] ) ) { |
|
154 | + if ( ! empty( $args['post_type'] ) ) { |
|
155 | 155 | |
156 | - if ( 'subscriptions' === $args['post_type'] ) { |
|
157 | - $downloader = new GetPaid_Subscription_Exporter(); |
|
158 | - } else { |
|
159 | - $downloader = new GetPaid_Invoice_Exporter(); |
|
160 | - } |
|
156 | + if ( 'subscriptions' === $args['post_type'] ) { |
|
157 | + $downloader = new GetPaid_Subscription_Exporter(); |
|
158 | + } else { |
|
159 | + $downloader = new GetPaid_Invoice_Exporter(); |
|
160 | + } |
|
161 | 161 | |
162 | - $downloader->export( $args['post_type'], $args ); |
|
163 | - } |
|
162 | + $downloader->export( $args['post_type'], $args ); |
|
163 | + } |
|
164 | 164 | |
165 | - } |
|
165 | + } |
|
166 | 166 | |
167 | 167 | } |
@@ -12,142 +12,142 @@ |
||
12 | 12 | */ |
13 | 13 | class GetPaid_Daily_Maintenance { |
14 | 14 | |
15 | - /** |
|
16 | - * Class constructor. |
|
17 | - */ |
|
18 | - public function __construct() { |
|
19 | - |
|
20 | - // Clear deprecated events. |
|
21 | - add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) ); |
|
22 | - |
|
23 | - // (Maybe) schedule a cron that runs daily. |
|
24 | - add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) ); |
|
25 | - |
|
26 | - // Fired everyday at 7 a.m (this might vary for sites with few visitors) |
|
27 | - add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) ); |
|
28 | - add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) ); |
|
29 | - add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) ); |
|
30 | - add_action( 'getpaid_daily_maintenance', array( $this, 'check_renewing_subscriptions' ) ); |
|
31 | - add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) ); |
|
32 | - |
|
33 | - } |
|
34 | - |
|
35 | - /** |
|
36 | - * Schedules a cron to run every day at 7 a.m |
|
37 | - * |
|
38 | - */ |
|
39 | - public function maybe_create_scheduled_event() { |
|
40 | - |
|
41 | - if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) { |
|
42 | - $timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) ); |
|
43 | - wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' ); |
|
44 | - } |
|
45 | - |
|
46 | - } |
|
47 | - |
|
48 | - /** |
|
49 | - * Clears deprecated events. |
|
50 | - * |
|
51 | - */ |
|
52 | - public function maybe_clear_deprecated_events() { |
|
53 | - |
|
54 | - if ( ! get_option( 'wpinv_cleared_old_events' ) ) { |
|
55 | - wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' ); |
|
56 | - wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' ); |
|
57 | - update_option( 'wpinv_cleared_old_events', 1 ); |
|
58 | - } |
|
59 | - |
|
60 | - } |
|
61 | - |
|
62 | - /** |
|
63 | - * Fires the old hook for backwards compatibility. |
|
64 | - * |
|
65 | - */ |
|
66 | - public function backwards_compat() { |
|
67 | - do_action( 'wpinv_register_schedule_event_daily' ); |
|
68 | - } |
|
69 | - |
|
70 | - /** |
|
71 | - * Checks for subscriptions that are scheduled to renew. |
|
72 | - * |
|
73 | - */ |
|
74 | - public function check_renewing_subscriptions() { |
|
75 | - |
|
76 | - // Fetch subscriptions that expire today. |
|
77 | - $args = array( |
|
78 | - 'number' => -1, |
|
79 | - 'count_total' => false, |
|
80 | - 'status' => 'trialling active', |
|
81 | - 'date_expires_query' => array( |
|
82 | - array( |
|
83 | - 'year' => gmdate( 'Y' ), |
|
84 | - 'month' => gmdate( 'n' ), |
|
85 | - 'day' => gmdate( 'j' ), |
|
86 | - 'compare' => '=', |
|
87 | - ), |
|
88 | - ), |
|
89 | - ); |
|
90 | - |
|
91 | - $subscriptions = new GetPaid_Subscriptions_Query( $args ); |
|
92 | - |
|
93 | - foreach ( $subscriptions->get_results() as $subscription ) { |
|
94 | - /** @var WPInv_Subscription $subscription */ |
|
95 | - if ( $subscription->is_last_renewal() ) { |
|
96 | - $subscription->complete(); |
|
97 | - } else { |
|
98 | - do_action( 'getpaid_should_renew_subscription', $subscription, $subscription->get_parent_invoice() ); |
|
99 | - } |
|
100 | - } |
|
101 | - } |
|
102 | - |
|
103 | - /** |
|
104 | - * Expires expired subscriptions. |
|
105 | - * |
|
106 | - */ |
|
107 | - public function maybe_expire_subscriptions() { |
|
108 | - |
|
109 | - // Fetch expired subscriptions (skips those that expire today). |
|
110 | - $args = array( |
|
111 | - 'number' => -1, |
|
112 | - 'count_total' => false, |
|
113 | - 'status' => 'trialling active failing cancelled', |
|
114 | - 'date_expires_query' => array( |
|
115 | - 'before' => 'yesterday', |
|
116 | - 'inclusive' => false, |
|
117 | - ), |
|
118 | - ); |
|
119 | - |
|
120 | - $subscriptions = new GetPaid_Subscriptions_Query( $args ); |
|
121 | - |
|
122 | - foreach ( $subscriptions->get_results() as $subscription ) { |
|
123 | - if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', false, $subscription ) ) { |
|
124 | - $subscription->set_status( 'expired' ); |
|
125 | - $subscription->save(); |
|
126 | - } |
|
127 | - } |
|
128 | - |
|
129 | - } |
|
130 | - |
|
131 | - /** |
|
132 | - * Logs cron runs. |
|
133 | - * |
|
134 | - */ |
|
135 | - public function log_cron_run() { |
|
136 | - wpinv_error_log( 'GetPaid Daily Cron', false ); |
|
137 | - } |
|
138 | - |
|
139 | - /** |
|
140 | - * Updates GeoIP databases. |
|
141 | - * |
|
142 | - */ |
|
143 | - public function maybe_update_geoip_databases() { |
|
144 | - $updated = get_transient( 'getpaid_updated_geoip_databases' ); |
|
145 | - |
|
146 | - if ( false === $updated ) { |
|
147 | - set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS ); |
|
148 | - do_action( 'getpaid_update_geoip_databases' ); |
|
149 | - } |
|
150 | - |
|
151 | - } |
|
15 | + /** |
|
16 | + * Class constructor. |
|
17 | + */ |
|
18 | + public function __construct() { |
|
19 | + |
|
20 | + // Clear deprecated events. |
|
21 | + add_action( 'wp', array( $this, 'maybe_clear_deprecated_events' ) ); |
|
22 | + |
|
23 | + // (Maybe) schedule a cron that runs daily. |
|
24 | + add_action( 'wp', array( $this, 'maybe_create_scheduled_event' ) ); |
|
25 | + |
|
26 | + // Fired everyday at 7 a.m (this might vary for sites with few visitors) |
|
27 | + add_action( 'getpaid_daily_maintenance', array( $this, 'log_cron_run' ) ); |
|
28 | + add_action( 'getpaid_daily_maintenance', array( $this, 'backwards_compat' ) ); |
|
29 | + add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_expire_subscriptions' ) ); |
|
30 | + add_action( 'getpaid_daily_maintenance', array( $this, 'check_renewing_subscriptions' ) ); |
|
31 | + add_action( 'getpaid_daily_maintenance', array( $this, 'maybe_update_geoip_databases' ) ); |
|
32 | + |
|
33 | + } |
|
34 | + |
|
35 | + /** |
|
36 | + * Schedules a cron to run every day at 7 a.m |
|
37 | + * |
|
38 | + */ |
|
39 | + public function maybe_create_scheduled_event() { |
|
40 | + |
|
41 | + if ( ! wp_next_scheduled( 'getpaid_daily_maintenance' ) ) { |
|
42 | + $timestamp = strtotime( 'tomorrow 07:00:00', current_time( 'timestamp' ) ); |
|
43 | + wp_schedule_event( $timestamp, 'daily', 'getpaid_daily_maintenance' ); |
|
44 | + } |
|
45 | + |
|
46 | + } |
|
47 | + |
|
48 | + /** |
|
49 | + * Clears deprecated events. |
|
50 | + * |
|
51 | + */ |
|
52 | + public function maybe_clear_deprecated_events() { |
|
53 | + |
|
54 | + if ( ! get_option( 'wpinv_cleared_old_events' ) ) { |
|
55 | + wp_clear_scheduled_hook( 'wpinv_register_schedule_event_twicedaily' ); |
|
56 | + wp_clear_scheduled_hook( 'wpinv_register_schedule_event_daily' ); |
|
57 | + update_option( 'wpinv_cleared_old_events', 1 ); |
|
58 | + } |
|
59 | + |
|
60 | + } |
|
61 | + |
|
62 | + /** |
|
63 | + * Fires the old hook for backwards compatibility. |
|
64 | + * |
|
65 | + */ |
|
66 | + public function backwards_compat() { |
|
67 | + do_action( 'wpinv_register_schedule_event_daily' ); |
|
68 | + } |
|
69 | + |
|
70 | + /** |
|
71 | + * Checks for subscriptions that are scheduled to renew. |
|
72 | + * |
|
73 | + */ |
|
74 | + public function check_renewing_subscriptions() { |
|
75 | + |
|
76 | + // Fetch subscriptions that expire today. |
|
77 | + $args = array( |
|
78 | + 'number' => -1, |
|
79 | + 'count_total' => false, |
|
80 | + 'status' => 'trialling active', |
|
81 | + 'date_expires_query' => array( |
|
82 | + array( |
|
83 | + 'year' => gmdate( 'Y' ), |
|
84 | + 'month' => gmdate( 'n' ), |
|
85 | + 'day' => gmdate( 'j' ), |
|
86 | + 'compare' => '=', |
|
87 | + ), |
|
88 | + ), |
|
89 | + ); |
|
90 | + |
|
91 | + $subscriptions = new GetPaid_Subscriptions_Query( $args ); |
|
92 | + |
|
93 | + foreach ( $subscriptions->get_results() as $subscription ) { |
|
94 | + /** @var WPInv_Subscription $subscription */ |
|
95 | + if ( $subscription->is_last_renewal() ) { |
|
96 | + $subscription->complete(); |
|
97 | + } else { |
|
98 | + do_action( 'getpaid_should_renew_subscription', $subscription, $subscription->get_parent_invoice() ); |
|
99 | + } |
|
100 | + } |
|
101 | + } |
|
102 | + |
|
103 | + /** |
|
104 | + * Expires expired subscriptions. |
|
105 | + * |
|
106 | + */ |
|
107 | + public function maybe_expire_subscriptions() { |
|
108 | + |
|
109 | + // Fetch expired subscriptions (skips those that expire today). |
|
110 | + $args = array( |
|
111 | + 'number' => -1, |
|
112 | + 'count_total' => false, |
|
113 | + 'status' => 'trialling active failing cancelled', |
|
114 | + 'date_expires_query' => array( |
|
115 | + 'before' => 'yesterday', |
|
116 | + 'inclusive' => false, |
|
117 | + ), |
|
118 | + ); |
|
119 | + |
|
120 | + $subscriptions = new GetPaid_Subscriptions_Query( $args ); |
|
121 | + |
|
122 | + foreach ( $subscriptions->get_results() as $subscription ) { |
|
123 | + if ( apply_filters( 'getpaid_daily_maintenance_should_expire_subscription', false, $subscription ) ) { |
|
124 | + $subscription->set_status( 'expired' ); |
|
125 | + $subscription->save(); |
|
126 | + } |
|
127 | + } |
|
128 | + |
|
129 | + } |
|
130 | + |
|
131 | + /** |
|
132 | + * Logs cron runs. |
|
133 | + * |
|
134 | + */ |
|
135 | + public function log_cron_run() { |
|
136 | + wpinv_error_log( 'GetPaid Daily Cron', false ); |
|
137 | + } |
|
138 | + |
|
139 | + /** |
|
140 | + * Updates GeoIP databases. |
|
141 | + * |
|
142 | + */ |
|
143 | + public function maybe_update_geoip_databases() { |
|
144 | + $updated = get_transient( 'getpaid_updated_geoip_databases' ); |
|
145 | + |
|
146 | + if ( false === $updated ) { |
|
147 | + set_transient( 'getpaid_updated_geoip_databases', 1, 15 * DAY_IN_SECONDS ); |
|
148 | + do_action( 'getpaid_update_geoip_databases' ); |
|
149 | + } |
|
150 | + |
|
151 | + } |
|
152 | 152 | |
153 | 153 | } |
@@ -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' ), 12, 2 ); |
|
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' ), 12, 2 ); |
|
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 shortcode 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 shortcode 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 | 193 | |
194 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
194 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
195 | 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 | - } |
|
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 | 199 | |
200 | - echo '</table>'; |
|
200 | + echo '</table>'; |
|
201 | 201 | |
202 | 202 | } |
203 | 203 | |
204 | 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 | - ); |
|
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 ) { |
|
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 ) { |
|
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,98 +349,98 @@ discard block |
||
349 | 349 | |
350 | 350 | $invoice->recalculate_total(); |
351 | 351 | $invoice->save(); |
352 | - } |
|
353 | - |
|
354 | - /** |
|
355 | - * (Maybe) renews a bank transfer subscription profile. |
|
356 | - * |
|
357 | - * |
|
358 | - * @param WPInv_Subscription $subscription |
|
359 | - */ |
|
360 | - public function maybe_renew_subscription( $subscription, $parent_invoice ) { |
|
361 | - // Ensure its our subscription && it's active. |
|
362 | - if ( ! empty( $parent_invoice ) && $this->id === $parent_invoice->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
|
363 | - add_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 ); |
|
364 | - |
|
365 | - $invoice = $subscription->create_payment(); |
|
366 | - |
|
367 | - if ( ! empty( $invoice ) ) { |
|
368 | - $is_logged_in = is_user_logged_in(); |
|
369 | - |
|
370 | - // Cron run. |
|
371 | - if ( ! $is_logged_in ) { |
|
372 | - $note = wp_sprintf( __( 'Renewal %1$s created with the status "%2$s".', 'invoicing' ), $invoice->get_invoice_quote_type(), wpinv_status_nicename( $invoice->get_status(), $invoice ) ); |
|
373 | - |
|
374 | - $invoice->add_note( $note, false, $is_logged_in, ! $is_logged_in ); |
|
375 | - } |
|
376 | - } |
|
377 | - |
|
378 | - remove_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 ); |
|
379 | - } |
|
380 | - } |
|
381 | - |
|
382 | - /** |
|
383 | - * Process a bank transfer payment. |
|
384 | - * |
|
385 | - * |
|
352 | + } |
|
353 | + |
|
354 | + /** |
|
355 | + * (Maybe) renews a bank transfer subscription profile. |
|
356 | + * |
|
357 | + * |
|
358 | + * @param WPInv_Subscription $subscription |
|
359 | + */ |
|
360 | + public function maybe_renew_subscription( $subscription, $parent_invoice ) { |
|
361 | + // Ensure its our subscription && it's active. |
|
362 | + if ( ! empty( $parent_invoice ) && $this->id === $parent_invoice->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
|
363 | + add_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 ); |
|
364 | + |
|
365 | + $invoice = $subscription->create_payment(); |
|
366 | + |
|
367 | + if ( ! empty( $invoice ) ) { |
|
368 | + $is_logged_in = is_user_logged_in(); |
|
369 | + |
|
370 | + // Cron run. |
|
371 | + if ( ! $is_logged_in ) { |
|
372 | + $note = wp_sprintf( __( 'Renewal %1$s created with the status "%2$s".', 'invoicing' ), $invoice->get_invoice_quote_type(), wpinv_status_nicename( $invoice->get_status(), $invoice ) ); |
|
373 | + |
|
374 | + $invoice->add_note( $note, false, $is_logged_in, ! $is_logged_in ); |
|
375 | + } |
|
376 | + } |
|
377 | + |
|
378 | + remove_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 ); |
|
379 | + } |
|
380 | + } |
|
381 | + |
|
382 | + /** |
|
383 | + * Process a bank transfer payment. |
|
384 | + * |
|
385 | + * |
|
386 | 386 | * @param WPInv_Invoice $invoice |
387 | - */ |
|
388 | - public function invoice_paid( $invoice ) { |
|
389 | - |
|
390 | - // Abort if not paid by bank transfer. |
|
391 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
392 | - return; |
|
393 | - } |
|
394 | - |
|
395 | - // Is it a parent payment? |
|
396 | - if ( 0 == $invoice->get_parent_id() ) { |
|
397 | - |
|
398 | - // (Maybe) activate subscriptions. |
|
399 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
400 | - |
|
401 | - if ( ! empty( $subscriptions ) ) { |
|
402 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
403 | - |
|
404 | - foreach ( $subscriptions as $subscription ) { |
|
405 | - if ( $subscription->exists() ) { |
|
406 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
407 | - $expiry = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
408 | - |
|
409 | - $subscription->set_next_renewal_date( $expiry ); |
|
410 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
411 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
412 | - $subscription->activate(); |
|
413 | - } |
|
414 | - } |
|
415 | - } |
|
416 | - } else { |
|
417 | - |
|
418 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
419 | - |
|
420 | - // Renew the subscription. |
|
421 | - if ( $subscription && $subscription->exists() ) { |
|
422 | - $subscription->add_payment( array(), $invoice ); |
|
423 | - $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
424 | - } |
|
425 | - } |
|
387 | + */ |
|
388 | + public function invoice_paid( $invoice ) { |
|
389 | + |
|
390 | + // Abort if not paid by bank transfer. |
|
391 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
392 | + return; |
|
393 | + } |
|
394 | + |
|
395 | + // Is it a parent payment? |
|
396 | + if ( 0 == $invoice->get_parent_id() ) { |
|
397 | + |
|
398 | + // (Maybe) activate subscriptions. |
|
399 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
400 | + |
|
401 | + if ( ! empty( $subscriptions ) ) { |
|
402 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
403 | + |
|
404 | + foreach ( $subscriptions as $subscription ) { |
|
405 | + if ( $subscription->exists() ) { |
|
406 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
407 | + $expiry = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
408 | + |
|
409 | + $subscription->set_next_renewal_date( $expiry ); |
|
410 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
411 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
412 | + $subscription->activate(); |
|
413 | + } |
|
414 | + } |
|
415 | + } |
|
416 | + } else { |
|
417 | + |
|
418 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
419 | + |
|
420 | + // Renew the subscription. |
|
421 | + if ( $subscription && $subscription->exists() ) { |
|
422 | + $subscription->add_payment( array(), $invoice ); |
|
423 | + $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
424 | + } |
|
425 | + } |
|
426 | 426 | |
427 | 427 | } |
428 | 428 | |
429 | - /** |
|
430 | - * Force created from payment false to allow email for auto renewal generation invoice. |
|
431 | - * |
|
432 | - * @since 2.8.11 |
|
433 | - * |
|
434 | - * @param bool $is_payment_form_invoice True when invoice created via payment form else false. |
|
435 | - * @param int $invoice Invoice ID. |
|
436 | - * @return bool True when invoice created via payment form else false. |
|
437 | - */ |
|
438 | - public function force_is_payment_form_invoice( $is_payment_form_invoice, $invoice ) { |
|
439 | - if ( $is_payment_form_invoice ) { |
|
440 | - $is_payment_form_invoice = false; |
|
441 | - } |
|
442 | - |
|
443 | - return $is_payment_form_invoice; |
|
444 | - } |
|
429 | + /** |
|
430 | + * Force created from payment false to allow email for auto renewal generation invoice. |
|
431 | + * |
|
432 | + * @since 2.8.11 |
|
433 | + * |
|
434 | + * @param bool $is_payment_form_invoice True when invoice created via payment form else false. |
|
435 | + * @param int $invoice Invoice ID. |
|
436 | + * @return bool True when invoice created via payment form else false. |
|
437 | + */ |
|
438 | + public function force_is_payment_form_invoice( $is_payment_form_invoice, $invoice ) { |
|
439 | + if ( $is_payment_form_invoice ) { |
|
440 | + $is_payment_form_invoice = false; |
|
441 | + } |
|
442 | + |
|
443 | + return $is_payment_form_invoice; |
|
444 | + } |
|
445 | 445 | |
446 | 446 | } |
@@ -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(); |
@@ -90,35 +90,35 @@ discard block |
||
90 | 90 | |
91 | 91 | } |
92 | 92 | |
93 | - /** |
|
94 | - * (Maybe) renews a manual subscription profile. |
|
95 | - * |
|
96 | - * |
|
97 | - * @param WPInv_Subscription $subscription |
|
98 | - */ |
|
99 | - public function maybe_renew_subscription( $subscription, $parent_invoice ) { |
|
100 | - // Ensure its our subscription && it's active. |
|
101 | - if ( ! empty( $parent_invoice ) && $this->id === $parent_invoice->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
|
102 | - // Renew the subscription. |
|
103 | - $subscription->add_payment( |
|
104 | - array( |
|
105 | - 'transaction_id' => $subscription->get_parent_payment()->generate_key(), |
|
106 | - 'gateway' => $this->id, |
|
107 | - ) |
|
108 | - ); |
|
109 | - |
|
110 | - $subscription->renew(); |
|
111 | - } |
|
112 | - } |
|
93 | + /** |
|
94 | + * (Maybe) renews a manual subscription profile. |
|
95 | + * |
|
96 | + * |
|
97 | + * @param WPInv_Subscription $subscription |
|
98 | + */ |
|
99 | + public function maybe_renew_subscription( $subscription, $parent_invoice ) { |
|
100 | + // Ensure its our subscription && it's active. |
|
101 | + if ( ! empty( $parent_invoice ) && $this->id === $parent_invoice->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
|
102 | + // Renew the subscription. |
|
103 | + $subscription->add_payment( |
|
104 | + array( |
|
105 | + 'transaction_id' => $subscription->get_parent_payment()->generate_key(), |
|
106 | + 'gateway' => $this->id, |
|
107 | + ) |
|
108 | + ); |
|
109 | + |
|
110 | + $subscription->renew(); |
|
111 | + } |
|
112 | + } |
|
113 | 113 | |
114 | 114 | /** |
115 | - * Processes invoice addons. |
|
116 | - * |
|
117 | - * @param WPInv_Invoice $invoice |
|
118 | - * @param GetPaid_Form_Item[] $items |
|
119 | - * @return WPInv_Invoice |
|
120 | - */ |
|
121 | - public function process_addons( $invoice, $items ) { |
|
115 | + * Processes invoice addons. |
|
116 | + * |
|
117 | + * @param WPInv_Invoice $invoice |
|
118 | + * @param GetPaid_Form_Item[] $items |
|
119 | + * @return WPInv_Invoice |
|
120 | + */ |
|
121 | + public function process_addons( $invoice, $items ) { |
|
122 | 122 | |
123 | 123 | foreach ( $items as $item ) { |
124 | 124 | $invoice->add_item( $item ); |