@@ -14,144 +14,144 @@ discard block |
||
14 | 14 | */ |
15 | 15 | class WPInv_Subscriptions_Widget extends WP_Super_Duper { |
16 | 16 | |
17 | - /** |
|
18 | - * Register the widget with WordPress. |
|
19 | - * |
|
20 | - */ |
|
21 | - public function __construct() { |
|
22 | - |
|
23 | - $options = array( |
|
24 | - 'textdomain' => 'invoicing', |
|
25 | - 'block-icon' => 'controls-repeat', |
|
26 | - 'block-category'=> 'widgets', |
|
27 | - 'block-keywords'=> "['invoicing','subscriptions', 'getpaid']", |
|
28 | - 'class_name' => __CLASS__, |
|
29 | - 'base_id' => 'wpinv_subscriptions', |
|
30 | - 'name' => __( 'GetPaid > Subscriptions', 'invoicing' ), |
|
31 | - 'widget_ops' => array( |
|
32 | - 'classname' => 'getpaid-subscriptions bsui', |
|
33 | - 'description' => esc_html__( "Displays the current user's subscriptions.", 'invoicing' ), |
|
34 | - ), |
|
35 | - 'arguments' => array( |
|
36 | - 'title' => array( |
|
37 | - 'title' => __( 'Widget title', 'invoicing' ), |
|
38 | - 'desc' => __( 'Enter widget title.', 'invoicing' ), |
|
39 | - 'type' => 'text', |
|
40 | - 'desc_tip' => true, |
|
41 | - 'default' => '', |
|
42 | - 'advanced' => false |
|
43 | - ), |
|
44 | - ) |
|
45 | - |
|
46 | - ); |
|
47 | - |
|
48 | - |
|
49 | - parent::__construct( $options ); |
|
50 | - } |
|
51 | - |
|
52 | - /** |
|
53 | - * Retrieves current user's subscriptions. |
|
54 | - * |
|
55 | - * @return GetPaid_Subscriptions_Query |
|
56 | - */ |
|
57 | - public function get_subscriptions() { |
|
58 | - |
|
59 | - // Prepare license args. |
|
60 | - $args = array( |
|
61 | - 'customer_in' => get_current_user_id(), |
|
62 | - 'paged' => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1, |
|
63 | - ); |
|
64 | - |
|
65 | - return new GetPaid_Subscriptions_Query( $args ); |
|
66 | - |
|
67 | - } |
|
68 | - |
|
69 | - /** |
|
70 | - * The Super block output function. |
|
71 | - * |
|
72 | - * @param array $args |
|
73 | - * @param array $widget_args |
|
74 | - * @param string $content |
|
75 | - * |
|
76 | - * @return mixed|string|bool |
|
77 | - */ |
|
78 | - public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
79 | - |
|
80 | - // Ensure that the user is logged in. |
|
81 | - if ( ! is_user_logged_in() ) { |
|
82 | - |
|
83 | - return aui()->alert( |
|
84 | - array( |
|
85 | - 'content' => wp_kses_post( __( 'You need to log-in or create an account to view this section.', 'invoicing' ) ), |
|
86 | - 'type' => 'error', |
|
87 | - ) |
|
88 | - ); |
|
89 | - |
|
90 | - } |
|
91 | - |
|
92 | - // Are we displaying a single subscription? |
|
93 | - if ( isset( $_GET['subscription'] ) ) { |
|
94 | - return $this->display_single_subscription( trim( $_GET['subscription'] ) ); |
|
95 | - } |
|
96 | - |
|
97 | - // Retrieve the user's subscriptions. |
|
98 | - $subscriptions = $this->get_subscriptions(); |
|
99 | - |
|
100 | - // Start the output buffer. |
|
101 | - ob_start(); |
|
102 | - |
|
103 | - // Backwards compatibility. |
|
104 | - do_action( 'wpinv_before_user_subscriptions' ); |
|
105 | - |
|
106 | - // Display errors and notices. |
|
107 | - wpinv_print_errors(); |
|
108 | - |
|
109 | - do_action( 'getpaid_license_manager_before_subscriptions', $subscriptions ); |
|
110 | - |
|
111 | - // Print the table header. |
|
112 | - $this->print_table_header(); |
|
113 | - |
|
114 | - // Print table body. |
|
115 | - $this->print_table_body( $subscriptions->get_results() ); |
|
116 | - |
|
117 | - // Print table footer. |
|
118 | - $this->print_table_footer(); |
|
119 | - |
|
120 | - // Print the navigation. |
|
121 | - $this->print_navigation( $subscriptions->get_total() ); |
|
122 | - |
|
123 | - // Backwards compatibility. |
|
124 | - do_action( 'wpinv_after_user_subscriptions' ); |
|
125 | - |
|
126 | - // Return the output. |
|
127 | - return ob_get_clean(); |
|
128 | - |
|
129 | - } |
|
130 | - |
|
131 | - /** |
|
132 | - * Retrieves the subscription columns. |
|
133 | - * |
|
134 | - * @return array |
|
135 | - */ |
|
136 | - public function get_subscriptions_table_columns() { |
|
17 | + /** |
|
18 | + * Register the widget with WordPress. |
|
19 | + * |
|
20 | + */ |
|
21 | + public function __construct() { |
|
22 | + |
|
23 | + $options = array( |
|
24 | + 'textdomain' => 'invoicing', |
|
25 | + 'block-icon' => 'controls-repeat', |
|
26 | + 'block-category'=> 'widgets', |
|
27 | + 'block-keywords'=> "['invoicing','subscriptions', 'getpaid']", |
|
28 | + 'class_name' => __CLASS__, |
|
29 | + 'base_id' => 'wpinv_subscriptions', |
|
30 | + 'name' => __( 'GetPaid > Subscriptions', 'invoicing' ), |
|
31 | + 'widget_ops' => array( |
|
32 | + 'classname' => 'getpaid-subscriptions bsui', |
|
33 | + 'description' => esc_html__( "Displays the current user's subscriptions.", 'invoicing' ), |
|
34 | + ), |
|
35 | + 'arguments' => array( |
|
36 | + 'title' => array( |
|
37 | + 'title' => __( 'Widget title', 'invoicing' ), |
|
38 | + 'desc' => __( 'Enter widget title.', 'invoicing' ), |
|
39 | + 'type' => 'text', |
|
40 | + 'desc_tip' => true, |
|
41 | + 'default' => '', |
|
42 | + 'advanced' => false |
|
43 | + ), |
|
44 | + ) |
|
45 | + |
|
46 | + ); |
|
47 | + |
|
48 | + |
|
49 | + parent::__construct( $options ); |
|
50 | + } |
|
51 | + |
|
52 | + /** |
|
53 | + * Retrieves current user's subscriptions. |
|
54 | + * |
|
55 | + * @return GetPaid_Subscriptions_Query |
|
56 | + */ |
|
57 | + public function get_subscriptions() { |
|
58 | + |
|
59 | + // Prepare license args. |
|
60 | + $args = array( |
|
61 | + 'customer_in' => get_current_user_id(), |
|
62 | + 'paged' => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1, |
|
63 | + ); |
|
64 | + |
|
65 | + return new GetPaid_Subscriptions_Query( $args ); |
|
66 | + |
|
67 | + } |
|
68 | + |
|
69 | + /** |
|
70 | + * The Super block output function. |
|
71 | + * |
|
72 | + * @param array $args |
|
73 | + * @param array $widget_args |
|
74 | + * @param string $content |
|
75 | + * |
|
76 | + * @return mixed|string|bool |
|
77 | + */ |
|
78 | + public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
79 | + |
|
80 | + // Ensure that the user is logged in. |
|
81 | + if ( ! is_user_logged_in() ) { |
|
82 | + |
|
83 | + return aui()->alert( |
|
84 | + array( |
|
85 | + 'content' => wp_kses_post( __( 'You need to log-in or create an account to view this section.', 'invoicing' ) ), |
|
86 | + 'type' => 'error', |
|
87 | + ) |
|
88 | + ); |
|
89 | + |
|
90 | + } |
|
91 | + |
|
92 | + // Are we displaying a single subscription? |
|
93 | + if ( isset( $_GET['subscription'] ) ) { |
|
94 | + return $this->display_single_subscription( trim( $_GET['subscription'] ) ); |
|
95 | + } |
|
96 | + |
|
97 | + // Retrieve the user's subscriptions. |
|
98 | + $subscriptions = $this->get_subscriptions(); |
|
99 | + |
|
100 | + // Start the output buffer. |
|
101 | + ob_start(); |
|
102 | + |
|
103 | + // Backwards compatibility. |
|
104 | + do_action( 'wpinv_before_user_subscriptions' ); |
|
105 | + |
|
106 | + // Display errors and notices. |
|
107 | + wpinv_print_errors(); |
|
108 | + |
|
109 | + do_action( 'getpaid_license_manager_before_subscriptions', $subscriptions ); |
|
110 | + |
|
111 | + // Print the table header. |
|
112 | + $this->print_table_header(); |
|
113 | + |
|
114 | + // Print table body. |
|
115 | + $this->print_table_body( $subscriptions->get_results() ); |
|
116 | + |
|
117 | + // Print table footer. |
|
118 | + $this->print_table_footer(); |
|
119 | + |
|
120 | + // Print the navigation. |
|
121 | + $this->print_navigation( $subscriptions->get_total() ); |
|
122 | + |
|
123 | + // Backwards compatibility. |
|
124 | + do_action( 'wpinv_after_user_subscriptions' ); |
|
125 | + |
|
126 | + // Return the output. |
|
127 | + return ob_get_clean(); |
|
128 | + |
|
129 | + } |
|
130 | + |
|
131 | + /** |
|
132 | + * Retrieves the subscription columns. |
|
133 | + * |
|
134 | + * @return array |
|
135 | + */ |
|
136 | + public function get_subscriptions_table_columns() { |
|
137 | 137 | |
138 | - $columns = array( |
|
139 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
140 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
141 | - 'renewal-date' => __( 'Next payment', 'invoicing' ), |
|
142 | - 'status' => __( 'Status', 'invoicing' ), |
|
143 | - ); |
|
138 | + $columns = array( |
|
139 | + 'subscription' => __( 'Subscription', 'invoicing' ), |
|
140 | + 'amount' => __( 'Amount', 'invoicing' ), |
|
141 | + 'renewal-date' => __( 'Next payment', 'invoicing' ), |
|
142 | + 'status' => __( 'Status', 'invoicing' ), |
|
143 | + ); |
|
144 | 144 | |
145 | - return apply_filters( 'getpaid_frontend_subscriptions_table_columns', $columns ); |
|
146 | - } |
|
145 | + return apply_filters( 'getpaid_frontend_subscriptions_table_columns', $columns ); |
|
146 | + } |
|
147 | 147 | |
148 | - /** |
|
149 | - * Displays the table header. |
|
150 | - * |
|
151 | - */ |
|
152 | - public function print_table_header() { |
|
148 | + /** |
|
149 | + * Displays the table header. |
|
150 | + * |
|
151 | + */ |
|
152 | + public function print_table_header() { |
|
153 | 153 | |
154 | - ?> |
|
154 | + ?> |
|
155 | 155 | |
156 | 156 | <table class="table table-bordered table-striped"> |
157 | 157 | |
@@ -167,121 +167,121 @@ discard block |
||
167 | 167 | |
168 | 168 | <?php |
169 | 169 | |
170 | - } |
|
170 | + } |
|
171 | 171 | |
172 | - /** |
|
173 | - * Displays the table body. |
|
174 | - * |
|
175 | - * @param WPInv_Subscription[] $subscriptions |
|
176 | - */ |
|
177 | - public function print_table_body( $subscriptions ) { |
|
172 | + /** |
|
173 | + * Displays the table body. |
|
174 | + * |
|
175 | + * @param WPInv_Subscription[] $subscriptions |
|
176 | + */ |
|
177 | + public function print_table_body( $subscriptions ) { |
|
178 | 178 | |
179 | - if ( empty( $subscriptions ) ) { |
|
180 | - $this->print_table_body_no_subscriptions(); |
|
181 | - } else { |
|
182 | - $this->print_table_body_subscriptions( $subscriptions ); |
|
183 | - } |
|
179 | + if ( empty( $subscriptions ) ) { |
|
180 | + $this->print_table_body_no_subscriptions(); |
|
181 | + } else { |
|
182 | + $this->print_table_body_subscriptions( $subscriptions ); |
|
183 | + } |
|
184 | 184 | |
185 | - } |
|
185 | + } |
|
186 | 186 | |
187 | - /** |
|
188 | - * Displays the table body if no subscriptions were found. |
|
189 | - * |
|
190 | - */ |
|
191 | - public function print_table_body_no_subscriptions() { |
|
187 | + /** |
|
188 | + * Displays the table body if no subscriptions were found. |
|
189 | + * |
|
190 | + */ |
|
191 | + public function print_table_body_no_subscriptions() { |
|
192 | 192 | |
193 | - ?> |
|
193 | + ?> |
|
194 | 194 | <tbody> |
195 | 195 | |
196 | 196 | <tr> |
197 | 197 | <td colspan="<?php echo count( $this->get_subscriptions_table_columns() ); ?>"> |
198 | 198 | |
199 | 199 | <?php |
200 | - echo aui()->alert( |
|
201 | - array( |
|
202 | - 'content' => wp_kses_post( __( 'No subscriptions found.', 'invoicing' ) ), |
|
203 | - 'type' => 'warning', |
|
204 | - ) |
|
205 | - ); |
|
206 | - ?> |
|
200 | + echo aui()->alert( |
|
201 | + array( |
|
202 | + 'content' => wp_kses_post( __( 'No subscriptions found.', 'invoicing' ) ), |
|
203 | + 'type' => 'warning', |
|
204 | + ) |
|
205 | + ); |
|
206 | + ?> |
|
207 | 207 | |
208 | 208 | </td> |
209 | 209 | </tr> |
210 | 210 | |
211 | 211 | </tbody> |
212 | 212 | <?php |
213 | - } |
|
213 | + } |
|
214 | 214 | |
215 | - /** |
|
216 | - * Displays the table body if subscriptions were found. |
|
217 | - * |
|
218 | - * @param WPInv_Subscription[] $subscriptions |
|
219 | - */ |
|
220 | - public function print_table_body_subscriptions( $subscriptions ) { |
|
215 | + /** |
|
216 | + * Displays the table body if subscriptions were found. |
|
217 | + * |
|
218 | + * @param WPInv_Subscription[] $subscriptions |
|
219 | + */ |
|
220 | + public function print_table_body_subscriptions( $subscriptions ) { |
|
221 | 221 | |
222 | - ?> |
|
222 | + ?> |
|
223 | 223 | <tbody> |
224 | 224 | |
225 | 225 | <?php foreach ( $subscriptions as $subscription ) : ?> |
226 | 226 | <tr class="getpaid-subscriptions-table-row subscription-<?php echo (int) $subscription->get_id(); ?>"> |
227 | 227 | <?php |
228 | - wpinv_get_template( |
|
229 | - 'subscriptions/subscriptions-table-row.php', |
|
230 | - array( |
|
231 | - 'subscription' => $subscription, |
|
232 | - 'widget' => $this |
|
233 | - ) |
|
234 | - ); |
|
235 | - ?> |
|
228 | + wpinv_get_template( |
|
229 | + 'subscriptions/subscriptions-table-row.php', |
|
230 | + array( |
|
231 | + 'subscription' => $subscription, |
|
232 | + 'widget' => $this |
|
233 | + ) |
|
234 | + ); |
|
235 | + ?> |
|
236 | 236 | </tr> |
237 | 237 | <?php endforeach; ?> |
238 | 238 | |
239 | 239 | </tbody> |
240 | 240 | <?php |
241 | - } |
|
242 | - |
|
243 | - /** |
|
244 | - * Adds row actions to a column |
|
245 | - * |
|
246 | - * @param string $content column content |
|
247 | - * @param WPInv_Subscription $subscription |
|
248 | - * @since 1.0.0 |
|
249 | - * @return string |
|
250 | - */ |
|
251 | - public function add_row_actions( $content, $subscription ) { |
|
252 | - |
|
253 | - // Prepare row actions. |
|
254 | - $actions = array(); |
|
255 | - |
|
256 | - // View subscription action. |
|
257 | - $view_url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
258 | - $view_url = esc_url( add_query_arg( 'subscription', (int) $subscription->get_id(), $view_url ) ); |
|
259 | - $actions['view'] = "<a href='$view_url' class='text-decoration-none'>" . __( 'Manage Subscription', 'invoicing' ) . '</a>'; |
|
260 | - |
|
261 | - // Filter the actions. |
|
262 | - $actions = apply_filters( 'getpaid_subscriptions_table_subscription_actions', $actions, $subscription ); |
|
263 | - |
|
264 | - $sanitized = array(); |
|
265 | - foreach ( $actions as $key => $action ) { |
|
266 | - $key = sanitize_html_class( $key ); |
|
267 | - $action = wp_kses_post( $action ); |
|
268 | - $sanitized[] = "<span class='$key'>$action</span>"; |
|
269 | - } |
|
270 | - |
|
271 | - $row_actions = "<small class='form-text getpaid-subscription-item-actions'>"; |
|
272 | - $row_actions .= implode( ' | ', $sanitized ); |
|
273 | - $row_actions .= '</small>'; |
|
274 | - |
|
275 | - return $content . $row_actions; |
|
276 | - } |
|
277 | - |
|
278 | - /** |
|
279 | - * Displays the table footer. |
|
280 | - * |
|
281 | - */ |
|
282 | - public function print_table_footer() { |
|
283 | - |
|
284 | - ?> |
|
241 | + } |
|
242 | + |
|
243 | + /** |
|
244 | + * Adds row actions to a column |
|
245 | + * |
|
246 | + * @param string $content column content |
|
247 | + * @param WPInv_Subscription $subscription |
|
248 | + * @since 1.0.0 |
|
249 | + * @return string |
|
250 | + */ |
|
251 | + public function add_row_actions( $content, $subscription ) { |
|
252 | + |
|
253 | + // Prepare row actions. |
|
254 | + $actions = array(); |
|
255 | + |
|
256 | + // View subscription action. |
|
257 | + $view_url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
258 | + $view_url = esc_url( add_query_arg( 'subscription', (int) $subscription->get_id(), $view_url ) ); |
|
259 | + $actions['view'] = "<a href='$view_url' class='text-decoration-none'>" . __( 'Manage Subscription', 'invoicing' ) . '</a>'; |
|
260 | + |
|
261 | + // Filter the actions. |
|
262 | + $actions = apply_filters( 'getpaid_subscriptions_table_subscription_actions', $actions, $subscription ); |
|
263 | + |
|
264 | + $sanitized = array(); |
|
265 | + foreach ( $actions as $key => $action ) { |
|
266 | + $key = sanitize_html_class( $key ); |
|
267 | + $action = wp_kses_post( $action ); |
|
268 | + $sanitized[] = "<span class='$key'>$action</span>"; |
|
269 | + } |
|
270 | + |
|
271 | + $row_actions = "<small class='form-text getpaid-subscription-item-actions'>"; |
|
272 | + $row_actions .= implode( ' | ', $sanitized ); |
|
273 | + $row_actions .= '</small>'; |
|
274 | + |
|
275 | + return $content . $row_actions; |
|
276 | + } |
|
277 | + |
|
278 | + /** |
|
279 | + * Displays the table footer. |
|
280 | + * |
|
281 | + */ |
|
282 | + public function print_table_footer() { |
|
283 | + |
|
284 | + ?> |
|
285 | 285 | |
286 | 286 | <tfoot> |
287 | 287 | <tr> |
@@ -296,129 +296,129 @@ discard block |
||
296 | 296 | </table> |
297 | 297 | <?php |
298 | 298 | |
299 | - } |
|
299 | + } |
|
300 | 300 | |
301 | - /** |
|
302 | - * Displays the navigation. |
|
303 | - * |
|
304 | - * @param int $total |
|
305 | - */ |
|
306 | - public function print_navigation( $total ) { |
|
301 | + /** |
|
302 | + * Displays the navigation. |
|
303 | + * |
|
304 | + * @param int $total |
|
305 | + */ |
|
306 | + public function print_navigation( $total ) { |
|
307 | 307 | |
308 | - if ( $total < 1 ) { |
|
308 | + if ( $total < 1 ) { |
|
309 | 309 | |
310 | - // Out-of-bounds, run the query again without LIMIT for total count. |
|
311 | - $args = array( |
|
312 | - 'customer_in' => get_current_user_id(), |
|
313 | - 'fields' => 'id', |
|
314 | - ); |
|
310 | + // Out-of-bounds, run the query again without LIMIT for total count. |
|
311 | + $args = array( |
|
312 | + 'customer_in' => get_current_user_id(), |
|
313 | + 'fields' => 'id', |
|
314 | + ); |
|
315 | 315 | |
316 | - $count_query = new GetPaid_Subscriptions_Query( $args ); |
|
317 | - $total = $count_query->get_total(); |
|
318 | - } |
|
316 | + $count_query = new GetPaid_Subscriptions_Query( $args ); |
|
317 | + $total = $count_query->get_total(); |
|
318 | + } |
|
319 | 319 | |
320 | - // Abort if we do not have pages. |
|
321 | - if ( 2 > $total ) { |
|
322 | - return; |
|
323 | - } |
|
320 | + // Abort if we do not have pages. |
|
321 | + if ( 2 > $total ) { |
|
322 | + return; |
|
323 | + } |
|
324 | 324 | |
325 | - ?> |
|
325 | + ?> |
|
326 | 326 | |
327 | 327 | <div class="getpaid-subscriptions-pagination"> |
328 | 328 | <?php |
329 | - $big = 999999; |
|
330 | - |
|
331 | - echo getpaid_paginate_links( |
|
332 | - array( |
|
333 | - 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), |
|
334 | - 'format' => '?paged=%#%', |
|
335 | - 'total' => (int) ceil( $total / 10 ), |
|
336 | - ) |
|
337 | - ); |
|
338 | - ?> |
|
329 | + $big = 999999; |
|
330 | + |
|
331 | + echo getpaid_paginate_links( |
|
332 | + array( |
|
333 | + 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), |
|
334 | + 'format' => '?paged=%#%', |
|
335 | + 'total' => (int) ceil( $total / 10 ), |
|
336 | + ) |
|
337 | + ); |
|
338 | + ?> |
|
339 | 339 | </div> |
340 | 340 | |
341 | 341 | <?php |
342 | - } |
|
343 | - |
|
344 | - /** |
|
345 | - * Returns a single subscription's columns. |
|
346 | - * |
|
347 | - * @param WPInv_Subscription $subscription |
|
348 | - * |
|
349 | - * @return array |
|
350 | - */ |
|
351 | - public function get_single_subscription_columns( $subscription ) { |
|
352 | - |
|
353 | - // Prepare subscription detail columns. |
|
354 | - $fields = apply_filters( |
|
355 | - 'getpaid_single_subscription_details_fields', |
|
356 | - array( |
|
357 | - 'status' => __( 'Status', 'invoicing' ), |
|
358 | - 'initial_amount' => __( 'Initial amount', 'invoicing' ), |
|
359 | - 'recurring_amount' => __( 'Recurring amount', 'invoicing' ), |
|
360 | - 'start_date' => __( 'Start date', 'invoicing' ), |
|
361 | - 'expiry_date' => __( 'Next payment', 'invoicing' ), |
|
362 | - 'payments' => __( 'Payments', 'invoicing' ), |
|
363 | - 'item' => __( 'Item', 'invoicing' ), |
|
364 | - ), |
|
365 | - $subscription |
|
366 | - ); |
|
367 | - |
|
368 | - if ( ! $subscription->is_active() || $subscription->is_last_renewal() ) { |
|
369 | - $fields['expiry_date'] = __( 'End date', 'invoicing' ); |
|
370 | - } |
|
371 | - |
|
372 | - if ( $subscription->get_initial_amount() == $subscription->get_recurring_amount() ) { |
|
373 | - unset( $fields['initial_amount'] ); |
|
374 | - } |
|
375 | - |
|
376 | - return $fields; |
|
377 | - } |
|
378 | - |
|
379 | - /** |
|
380 | - * Displays a single subscription. |
|
381 | - * |
|
382 | - * @param string $subscription |
|
383 | - * |
|
384 | - * @return string |
|
385 | - */ |
|
386 | - public function display_single_subscription( $subscription ) { |
|
387 | - |
|
388 | - // Fetch the subscription. |
|
389 | - $subscription = new WPInv_Subscription( (int) $subscription ); |
|
390 | - |
|
391 | - if ( ! $subscription->get_id() ) { |
|
392 | - |
|
393 | - return aui()->alert( |
|
394 | - array( |
|
395 | - 'content' => wp_kses_post( __( 'Subscription not found.', 'invoicing' ) ), |
|
396 | - 'type' => 'error', |
|
397 | - ) |
|
398 | - ); |
|
399 | - |
|
400 | - } |
|
401 | - |
|
402 | - // Ensure that the user owns this subscription key. |
|
403 | - if ( get_current_user_id() != $subscription->get_customer_id() ) { |
|
404 | - |
|
405 | - return aui()->alert( |
|
406 | - array( |
|
407 | - 'content' => wp_kses_post( __( 'You do not have permission to view this subscription. Ensure that you are logged in to the account that owns the subscription.', 'invoicing' ) ), |
|
408 | - 'type' => 'error', |
|
409 | - ) |
|
410 | - ); |
|
411 | - |
|
412 | - } |
|
413 | - |
|
414 | - return wpinv_get_template_html( |
|
415 | - 'subscriptions/subscription-details.php', |
|
416 | - array( |
|
417 | - 'subscription' => $subscription, |
|
418 | - 'widget' => $this |
|
419 | - ) |
|
420 | - ); |
|
421 | - |
|
422 | - } |
|
342 | + } |
|
343 | + |
|
344 | + /** |
|
345 | + * Returns a single subscription's columns. |
|
346 | + * |
|
347 | + * @param WPInv_Subscription $subscription |
|
348 | + * |
|
349 | + * @return array |
|
350 | + */ |
|
351 | + public function get_single_subscription_columns( $subscription ) { |
|
352 | + |
|
353 | + // Prepare subscription detail columns. |
|
354 | + $fields = apply_filters( |
|
355 | + 'getpaid_single_subscription_details_fields', |
|
356 | + array( |
|
357 | + 'status' => __( 'Status', 'invoicing' ), |
|
358 | + 'initial_amount' => __( 'Initial amount', 'invoicing' ), |
|
359 | + 'recurring_amount' => __( 'Recurring amount', 'invoicing' ), |
|
360 | + 'start_date' => __( 'Start date', 'invoicing' ), |
|
361 | + 'expiry_date' => __( 'Next payment', 'invoicing' ), |
|
362 | + 'payments' => __( 'Payments', 'invoicing' ), |
|
363 | + 'item' => __( 'Item', 'invoicing' ), |
|
364 | + ), |
|
365 | + $subscription |
|
366 | + ); |
|
367 | + |
|
368 | + if ( ! $subscription->is_active() || $subscription->is_last_renewal() ) { |
|
369 | + $fields['expiry_date'] = __( 'End date', 'invoicing' ); |
|
370 | + } |
|
371 | + |
|
372 | + if ( $subscription->get_initial_amount() == $subscription->get_recurring_amount() ) { |
|
373 | + unset( $fields['initial_amount'] ); |
|
374 | + } |
|
375 | + |
|
376 | + return $fields; |
|
377 | + } |
|
378 | + |
|
379 | + /** |
|
380 | + * Displays a single subscription. |
|
381 | + * |
|
382 | + * @param string $subscription |
|
383 | + * |
|
384 | + * @return string |
|
385 | + */ |
|
386 | + public function display_single_subscription( $subscription ) { |
|
387 | + |
|
388 | + // Fetch the subscription. |
|
389 | + $subscription = new WPInv_Subscription( (int) $subscription ); |
|
390 | + |
|
391 | + if ( ! $subscription->get_id() ) { |
|
392 | + |
|
393 | + return aui()->alert( |
|
394 | + array( |
|
395 | + 'content' => wp_kses_post( __( 'Subscription not found.', 'invoicing' ) ), |
|
396 | + 'type' => 'error', |
|
397 | + ) |
|
398 | + ); |
|
399 | + |
|
400 | + } |
|
401 | + |
|
402 | + // Ensure that the user owns this subscription key. |
|
403 | + if ( get_current_user_id() != $subscription->get_customer_id() ) { |
|
404 | + |
|
405 | + return aui()->alert( |
|
406 | + array( |
|
407 | + 'content' => wp_kses_post( __( 'You do not have permission to view this subscription. Ensure that you are logged in to the account that owns the subscription.', 'invoicing' ) ), |
|
408 | + 'type' => 'error', |
|
409 | + ) |
|
410 | + ); |
|
411 | + |
|
412 | + } |
|
413 | + |
|
414 | + return wpinv_get_template_html( |
|
415 | + 'subscriptions/subscription-details.php', |
|
416 | + array( |
|
417 | + 'subscription' => $subscription, |
|
418 | + 'widget' => $this |
|
419 | + ) |
|
420 | + ); |
|
421 | + |
|
422 | + } |
|
423 | 423 | |
424 | 424 | } |
@@ -5,7 +5,7 @@ discard block |
||
5 | 5 | * @version 1.0.0 |
6 | 6 | */ |
7 | 7 | |
8 | -defined( 'ABSPATH' ) || exit; |
|
8 | +defined('ABSPATH') || exit; |
|
9 | 9 | |
10 | 10 | /** |
11 | 11 | * Contains the subscriptions widget. |
@@ -27,15 +27,15 @@ discard block |
||
27 | 27 | 'block-keywords'=> "['invoicing','subscriptions', 'getpaid']", |
28 | 28 | 'class_name' => __CLASS__, |
29 | 29 | 'base_id' => 'wpinv_subscriptions', |
30 | - 'name' => __( 'GetPaid > Subscriptions', 'invoicing' ), |
|
30 | + 'name' => __('GetPaid > Subscriptions', 'invoicing'), |
|
31 | 31 | 'widget_ops' => array( |
32 | 32 | 'classname' => 'getpaid-subscriptions bsui', |
33 | - 'description' => esc_html__( "Displays the current user's subscriptions.", 'invoicing' ), |
|
33 | + 'description' => esc_html__("Displays the current user's subscriptions.", 'invoicing'), |
|
34 | 34 | ), |
35 | 35 | 'arguments' => array( |
36 | 36 | 'title' => array( |
37 | - 'title' => __( 'Widget title', 'invoicing' ), |
|
38 | - 'desc' => __( 'Enter widget title.', 'invoicing' ), |
|
37 | + 'title' => __('Widget title', 'invoicing'), |
|
38 | + 'desc' => __('Enter widget title.', 'invoicing'), |
|
39 | 39 | 'type' => 'text', |
40 | 40 | 'desc_tip' => true, |
41 | 41 | 'default' => '', |
@@ -46,7 +46,7 @@ discard block |
||
46 | 46 | ); |
47 | 47 | |
48 | 48 | |
49 | - parent::__construct( $options ); |
|
49 | + parent::__construct($options); |
|
50 | 50 | } |
51 | 51 | |
52 | 52 | /** |
@@ -57,12 +57,12 @@ discard block |
||
57 | 57 | public function get_subscriptions() { |
58 | 58 | |
59 | 59 | // Prepare license args. |
60 | - $args = array( |
|
60 | + $args = array( |
|
61 | 61 | 'customer_in' => get_current_user_id(), |
62 | - 'paged' => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1, |
|
62 | + 'paged' => (get_query_var('paged')) ? absint(get_query_var('paged')) : 1, |
|
63 | 63 | ); |
64 | 64 | |
65 | - return new GetPaid_Subscriptions_Query( $args ); |
|
65 | + return new GetPaid_Subscriptions_Query($args); |
|
66 | 66 | |
67 | 67 | } |
68 | 68 | |
@@ -75,14 +75,14 @@ discard block |
||
75 | 75 | * |
76 | 76 | * @return mixed|string|bool |
77 | 77 | */ |
78 | - public function output( $args = array(), $widget_args = array(), $content = '' ) { |
|
78 | + public function output($args = array(), $widget_args = array(), $content = '') { |
|
79 | 79 | |
80 | 80 | // Ensure that the user is logged in. |
81 | - if ( ! is_user_logged_in() ) { |
|
81 | + if (!is_user_logged_in()) { |
|
82 | 82 | |
83 | 83 | return aui()->alert( |
84 | 84 | array( |
85 | - 'content' => wp_kses_post( __( 'You need to log-in or create an account to view this section.', 'invoicing' ) ), |
|
85 | + 'content' => wp_kses_post(__('You need to log-in or create an account to view this section.', 'invoicing')), |
|
86 | 86 | 'type' => 'error', |
87 | 87 | ) |
88 | 88 | ); |
@@ -90,8 +90,8 @@ discard block |
||
90 | 90 | } |
91 | 91 | |
92 | 92 | // Are we displaying a single subscription? |
93 | - if ( isset( $_GET['subscription'] ) ) { |
|
94 | - return $this->display_single_subscription( trim( $_GET['subscription'] ) ); |
|
93 | + if (isset($_GET['subscription'])) { |
|
94 | + return $this->display_single_subscription(trim($_GET['subscription'])); |
|
95 | 95 | } |
96 | 96 | |
97 | 97 | // Retrieve the user's subscriptions. |
@@ -101,27 +101,27 @@ discard block |
||
101 | 101 | ob_start(); |
102 | 102 | |
103 | 103 | // Backwards compatibility. |
104 | - do_action( 'wpinv_before_user_subscriptions' ); |
|
104 | + do_action('wpinv_before_user_subscriptions'); |
|
105 | 105 | |
106 | 106 | // Display errors and notices. |
107 | 107 | wpinv_print_errors(); |
108 | 108 | |
109 | - do_action( 'getpaid_license_manager_before_subscriptions', $subscriptions ); |
|
109 | + do_action('getpaid_license_manager_before_subscriptions', $subscriptions); |
|
110 | 110 | |
111 | 111 | // Print the table header. |
112 | 112 | $this->print_table_header(); |
113 | 113 | |
114 | 114 | // Print table body. |
115 | - $this->print_table_body( $subscriptions->get_results() ); |
|
115 | + $this->print_table_body($subscriptions->get_results()); |
|
116 | 116 | |
117 | 117 | // Print table footer. |
118 | 118 | $this->print_table_footer(); |
119 | 119 | |
120 | 120 | // Print the navigation. |
121 | - $this->print_navigation( $subscriptions->get_total() ); |
|
121 | + $this->print_navigation($subscriptions->get_total()); |
|
122 | 122 | |
123 | 123 | // Backwards compatibility. |
124 | - do_action( 'wpinv_after_user_subscriptions' ); |
|
124 | + do_action('wpinv_after_user_subscriptions'); |
|
125 | 125 | |
126 | 126 | // Return the output. |
127 | 127 | return ob_get_clean(); |
@@ -136,13 +136,13 @@ discard block |
||
136 | 136 | public function get_subscriptions_table_columns() { |
137 | 137 | |
138 | 138 | $columns = array( |
139 | - 'subscription' => __( 'Subscription', 'invoicing' ), |
|
140 | - 'amount' => __( 'Amount', 'invoicing' ), |
|
141 | - 'renewal-date' => __( 'Next payment', 'invoicing' ), |
|
142 | - 'status' => __( 'Status', 'invoicing' ), |
|
139 | + 'subscription' => __('Subscription', 'invoicing'), |
|
140 | + 'amount' => __('Amount', 'invoicing'), |
|
141 | + 'renewal-date' => __('Next payment', 'invoicing'), |
|
142 | + 'status' => __('Status', 'invoicing'), |
|
143 | 143 | ); |
144 | 144 | |
145 | - return apply_filters( 'getpaid_frontend_subscriptions_table_columns', $columns ); |
|
145 | + return apply_filters('getpaid_frontend_subscriptions_table_columns', $columns); |
|
146 | 146 | } |
147 | 147 | |
148 | 148 | /** |
@@ -157,9 +157,9 @@ discard block |
||
157 | 157 | |
158 | 158 | <thead> |
159 | 159 | <tr> |
160 | - <?php foreach ( $this->get_subscriptions_table_columns() as $key => $label ) : ?> |
|
161 | - <th scope="col" class="font-weight-bold getpaid-subscriptions-table-<?php echo sanitize_html_class( $key ); ?>"> |
|
162 | - <?php echo sanitize_text_field( $label ); ?> |
|
160 | + <?php foreach ($this->get_subscriptions_table_columns() as $key => $label) : ?> |
|
161 | + <th scope="col" class="font-weight-bold getpaid-subscriptions-table-<?php echo sanitize_html_class($key); ?>"> |
|
162 | + <?php echo sanitize_text_field($label); ?> |
|
163 | 163 | </th> |
164 | 164 | <?php endforeach; ?> |
165 | 165 | </tr> |
@@ -174,12 +174,12 @@ discard block |
||
174 | 174 | * |
175 | 175 | * @param WPInv_Subscription[] $subscriptions |
176 | 176 | */ |
177 | - public function print_table_body( $subscriptions ) { |
|
177 | + public function print_table_body($subscriptions) { |
|
178 | 178 | |
179 | - if ( empty( $subscriptions ) ) { |
|
179 | + if (empty($subscriptions)) { |
|
180 | 180 | $this->print_table_body_no_subscriptions(); |
181 | 181 | } else { |
182 | - $this->print_table_body_subscriptions( $subscriptions ); |
|
182 | + $this->print_table_body_subscriptions($subscriptions); |
|
183 | 183 | } |
184 | 184 | |
185 | 185 | } |
@@ -194,12 +194,12 @@ discard block |
||
194 | 194 | <tbody> |
195 | 195 | |
196 | 196 | <tr> |
197 | - <td colspan="<?php echo count( $this->get_subscriptions_table_columns() ); ?>"> |
|
197 | + <td colspan="<?php echo count($this->get_subscriptions_table_columns()); ?>"> |
|
198 | 198 | |
199 | 199 | <?php |
200 | 200 | echo aui()->alert( |
201 | 201 | array( |
202 | - 'content' => wp_kses_post( __( 'No subscriptions found.', 'invoicing' ) ), |
|
202 | + 'content' => wp_kses_post(__('No subscriptions found.', 'invoicing')), |
|
203 | 203 | 'type' => 'warning', |
204 | 204 | ) |
205 | 205 | ); |
@@ -217,12 +217,12 @@ discard block |
||
217 | 217 | * |
218 | 218 | * @param WPInv_Subscription[] $subscriptions |
219 | 219 | */ |
220 | - public function print_table_body_subscriptions( $subscriptions ) { |
|
220 | + public function print_table_body_subscriptions($subscriptions) { |
|
221 | 221 | |
222 | 222 | ?> |
223 | 223 | <tbody> |
224 | 224 | |
225 | - <?php foreach ( $subscriptions as $subscription ) : ?> |
|
225 | + <?php foreach ($subscriptions as $subscription) : ?> |
|
226 | 226 | <tr class="getpaid-subscriptions-table-row subscription-<?php echo (int) $subscription->get_id(); ?>"> |
227 | 227 | <?php |
228 | 228 | wpinv_get_template( |
@@ -248,28 +248,28 @@ discard block |
||
248 | 248 | * @since 1.0.0 |
249 | 249 | * @return string |
250 | 250 | */ |
251 | - public function add_row_actions( $content, $subscription ) { |
|
251 | + public function add_row_actions($content, $subscription) { |
|
252 | 252 | |
253 | 253 | // Prepare row actions. |
254 | 254 | $actions = array(); |
255 | 255 | |
256 | 256 | // View subscription action. |
257 | - $view_url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
258 | - $view_url = esc_url( add_query_arg( 'subscription', (int) $subscription->get_id(), $view_url ) ); |
|
259 | - $actions['view'] = "<a href='$view_url' class='text-decoration-none'>" . __( 'Manage Subscription', 'invoicing' ) . '</a>'; |
|
257 | + $view_url = getpaid_get_tab_url('gp-subscriptions', get_permalink((int) wpinv_get_option('invoice_subscription_page'))); |
|
258 | + $view_url = esc_url(add_query_arg('subscription', (int) $subscription->get_id(), $view_url)); |
|
259 | + $actions['view'] = "<a href='$view_url' class='text-decoration-none'>" . __('Manage Subscription', 'invoicing') . '</a>'; |
|
260 | 260 | |
261 | 261 | // Filter the actions. |
262 | - $actions = apply_filters( 'getpaid_subscriptions_table_subscription_actions', $actions, $subscription ); |
|
262 | + $actions = apply_filters('getpaid_subscriptions_table_subscription_actions', $actions, $subscription); |
|
263 | 263 | |
264 | - $sanitized = array(); |
|
265 | - foreach ( $actions as $key => $action ) { |
|
266 | - $key = sanitize_html_class( $key ); |
|
267 | - $action = wp_kses_post( $action ); |
|
264 | + $sanitized = array(); |
|
265 | + foreach ($actions as $key => $action) { |
|
266 | + $key = sanitize_html_class($key); |
|
267 | + $action = wp_kses_post($action); |
|
268 | 268 | $sanitized[] = "<span class='$key'>$action</span>"; |
269 | 269 | } |
270 | 270 | |
271 | 271 | $row_actions = "<small class='form-text getpaid-subscription-item-actions'>"; |
272 | - $row_actions .= implode( ' | ', $sanitized ); |
|
272 | + $row_actions .= implode(' | ', $sanitized); |
|
273 | 273 | $row_actions .= '</small>'; |
274 | 274 | |
275 | 275 | return $content . $row_actions; |
@@ -285,9 +285,9 @@ discard block |
||
285 | 285 | |
286 | 286 | <tfoot> |
287 | 287 | <tr> |
288 | - <?php foreach ( $this->get_subscriptions_table_columns() as $key => $label ) : ?> |
|
289 | - <th class="font-weight-bold getpaid-subscriptions-<?php echo sanitize_html_class( $key ); ?>"> |
|
290 | - <?php echo sanitize_text_field( $label ); ?> |
|
288 | + <?php foreach ($this->get_subscriptions_table_columns() as $key => $label) : ?> |
|
289 | + <th class="font-weight-bold getpaid-subscriptions-<?php echo sanitize_html_class($key); ?>"> |
|
290 | + <?php echo sanitize_text_field($label); ?> |
|
291 | 291 | </th> |
292 | 292 | <?php endforeach; ?> |
293 | 293 | </tr> |
@@ -303,22 +303,22 @@ discard block |
||
303 | 303 | * |
304 | 304 | * @param int $total |
305 | 305 | */ |
306 | - public function print_navigation( $total ) { |
|
306 | + public function print_navigation($total) { |
|
307 | 307 | |
308 | - if ( $total < 1 ) { |
|
308 | + if ($total < 1) { |
|
309 | 309 | |
310 | 310 | // Out-of-bounds, run the query again without LIMIT for total count. |
311 | - $args = array( |
|
311 | + $args = array( |
|
312 | 312 | 'customer_in' => get_current_user_id(), |
313 | 313 | 'fields' => 'id', |
314 | 314 | ); |
315 | 315 | |
316 | - $count_query = new GetPaid_Subscriptions_Query( $args ); |
|
316 | + $count_query = new GetPaid_Subscriptions_Query($args); |
|
317 | 317 | $total = $count_query->get_total(); |
318 | 318 | } |
319 | 319 | |
320 | 320 | // Abort if we do not have pages. |
321 | - if ( 2 > $total ) { |
|
321 | + if (2 > $total) { |
|
322 | 322 | return; |
323 | 323 | } |
324 | 324 | |
@@ -330,9 +330,9 @@ discard block |
||
330 | 330 | |
331 | 331 | echo getpaid_paginate_links( |
332 | 332 | array( |
333 | - 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), |
|
333 | + 'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), |
|
334 | 334 | 'format' => '?paged=%#%', |
335 | - 'total' => (int) ceil( $total / 10 ), |
|
335 | + 'total' => (int) ceil($total / 10), |
|
336 | 336 | ) |
337 | 337 | ); |
338 | 338 | ?> |
@@ -348,29 +348,29 @@ discard block |
||
348 | 348 | * |
349 | 349 | * @return array |
350 | 350 | */ |
351 | - public function get_single_subscription_columns( $subscription ) { |
|
351 | + public function get_single_subscription_columns($subscription) { |
|
352 | 352 | |
353 | 353 | // Prepare subscription detail columns. |
354 | 354 | $fields = apply_filters( |
355 | 355 | 'getpaid_single_subscription_details_fields', |
356 | 356 | array( |
357 | - 'status' => __( 'Status', 'invoicing' ), |
|
358 | - 'initial_amount' => __( 'Initial amount', 'invoicing' ), |
|
359 | - 'recurring_amount' => __( 'Recurring amount', 'invoicing' ), |
|
360 | - 'start_date' => __( 'Start date', 'invoicing' ), |
|
361 | - 'expiry_date' => __( 'Next payment', 'invoicing' ), |
|
362 | - 'payments' => __( 'Payments', 'invoicing' ), |
|
363 | - 'item' => __( 'Item', 'invoicing' ), |
|
357 | + 'status' => __('Status', 'invoicing'), |
|
358 | + 'initial_amount' => __('Initial amount', 'invoicing'), |
|
359 | + 'recurring_amount' => __('Recurring amount', 'invoicing'), |
|
360 | + 'start_date' => __('Start date', 'invoicing'), |
|
361 | + 'expiry_date' => __('Next payment', 'invoicing'), |
|
362 | + 'payments' => __('Payments', 'invoicing'), |
|
363 | + 'item' => __('Item', 'invoicing'), |
|
364 | 364 | ), |
365 | 365 | $subscription |
366 | 366 | ); |
367 | 367 | |
368 | - if ( ! $subscription->is_active() || $subscription->is_last_renewal() ) { |
|
369 | - $fields['expiry_date'] = __( 'End date', 'invoicing' ); |
|
368 | + if (!$subscription->is_active() || $subscription->is_last_renewal()) { |
|
369 | + $fields['expiry_date'] = __('End date', 'invoicing'); |
|
370 | 370 | } |
371 | 371 | |
372 | - if ( $subscription->get_initial_amount() == $subscription->get_recurring_amount() ) { |
|
373 | - unset( $fields['initial_amount'] ); |
|
372 | + if ($subscription->get_initial_amount() == $subscription->get_recurring_amount()) { |
|
373 | + unset($fields['initial_amount']); |
|
374 | 374 | } |
375 | 375 | |
376 | 376 | return $fields; |
@@ -383,16 +383,16 @@ discard block |
||
383 | 383 | * |
384 | 384 | * @return string |
385 | 385 | */ |
386 | - public function display_single_subscription( $subscription ) { |
|
386 | + public function display_single_subscription($subscription) { |
|
387 | 387 | |
388 | 388 | // Fetch the subscription. |
389 | - $subscription = new WPInv_Subscription( (int) $subscription ); |
|
389 | + $subscription = new WPInv_Subscription((int) $subscription); |
|
390 | 390 | |
391 | - if ( ! $subscription->get_id() ) { |
|
391 | + if (!$subscription->get_id()) { |
|
392 | 392 | |
393 | 393 | return aui()->alert( |
394 | 394 | array( |
395 | - 'content' => wp_kses_post( __( 'Subscription not found.', 'invoicing' ) ), |
|
395 | + 'content' => wp_kses_post(__('Subscription not found.', 'invoicing')), |
|
396 | 396 | 'type' => 'error', |
397 | 397 | ) |
398 | 398 | ); |
@@ -400,11 +400,11 @@ discard block |
||
400 | 400 | } |
401 | 401 | |
402 | 402 | // Ensure that the user owns this subscription key. |
403 | - if ( get_current_user_id() != $subscription->get_customer_id() ) { |
|
403 | + if (get_current_user_id() != $subscription->get_customer_id()) { |
|
404 | 404 | |
405 | 405 | return aui()->alert( |
406 | 406 | array( |
407 | - 'content' => wp_kses_post( __( 'You do not have permission to view this subscription. Ensure that you are logged in to the account that owns the subscription.', 'invoicing' ) ), |
|
407 | + 'content' => wp_kses_post(__('You do not have permission to view this subscription. Ensure that you are logged in to the account that owns the subscription.', 'invoicing')), |
|
408 | 408 | 'type' => 'error', |
409 | 409 | ) |
410 | 410 | ); |
@@ -67,7 +67,7 @@ discard block |
||
67 | 67 | * Checks if the current user cna view an invoice receipt. |
68 | 68 | */ |
69 | 69 | function wpinv_can_view_receipt( $invoice ) { |
70 | - return (bool) apply_filters( 'wpinv_can_view_receipt', wpinv_user_can_view_invoice( $invoice ), $invoice ); |
|
70 | + return (bool) apply_filters( 'wpinv_can_view_receipt', wpinv_user_can_view_invoice( $invoice ), $invoice ); |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -1256,21 +1256,21 @@ discard block |
||
1256 | 1256 | */ |
1257 | 1257 | function getpaid_get_invoice_status_classes() { |
1258 | 1258 | |
1259 | - return apply_filters( |
|
1260 | - 'getpaid_get_invoice_status_classes', |
|
1261 | - array( |
|
1259 | + return apply_filters( |
|
1260 | + 'getpaid_get_invoice_status_classes', |
|
1261 | + array( |
|
1262 | 1262 | 'wpi-quote-declined' => 'badge-danger', |
1263 | 1263 | 'wpi-failed' => 'badge-danger', |
1264 | - 'wpi-processing' => 'badge-info', |
|
1265 | - 'wpi-onhold' => 'badge-warning', |
|
1266 | - 'wpi-quote-accepted' => 'badge-success', |
|
1267 | - 'publish' => 'badge-success', |
|
1268 | - 'wpi-renewal' => 'badge-primary', |
|
1264 | + 'wpi-processing' => 'badge-info', |
|
1265 | + 'wpi-onhold' => 'badge-warning', |
|
1266 | + 'wpi-quote-accepted' => 'badge-success', |
|
1267 | + 'publish' => 'badge-success', |
|
1268 | + 'wpi-renewal' => 'badge-primary', |
|
1269 | 1269 | 'wpi-cancelled' => 'badge-secondary', |
1270 | 1270 | 'wpi-pending' => 'badge-dark', |
1271 | 1271 | 'wpi-quote-pending' => 'badge-dark', |
1272 | 1272 | 'wpi-refunded' => 'badge-secondary', |
1273 | - ) |
|
1274 | - ); |
|
1273 | + ) |
|
1274 | + ); |
|
1275 | 1275 | |
1276 | 1276 | } |
@@ -6,7 +6,7 @@ discard block |
||
6 | 6 | * @package Invoicing |
7 | 7 | */ |
8 | 8 | |
9 | -defined( 'ABSPATH' ) || exit; |
|
9 | +defined('ABSPATH') || exit; |
|
10 | 10 | |
11 | 11 | /** |
12 | 12 | * Retrieves the current invoice. |
@@ -14,15 +14,15 @@ discard block |
||
14 | 14 | function getpaid_get_current_invoice_id() { |
15 | 15 | |
16 | 16 | // Ensure that we have an invoice key. |
17 | - if ( empty( $_GET['invoice_key'] ) ) { |
|
17 | + if (empty($_GET['invoice_key'])) { |
|
18 | 18 | return 0; |
19 | 19 | } |
20 | 20 | |
21 | 21 | // Retrieve an invoice using the key. |
22 | - $invoice = new WPInv_Invoice( $_GET['invoice_key'] ); |
|
22 | + $invoice = new WPInv_Invoice($_GET['invoice_key']); |
|
23 | 23 | |
24 | 24 | // Compare the invoice key and the parsed key. |
25 | - if ( $invoice->get_id() != 0 && $invoice->get_key() == $_GET['invoice_key'] ) { |
|
25 | + if ($invoice->get_id() != 0 && $invoice->get_key() == $_GET['invoice_key']) { |
|
26 | 26 | return $invoice->get_id(); |
27 | 27 | } |
28 | 28 | |
@@ -32,42 +32,42 @@ discard block |
||
32 | 32 | /** |
33 | 33 | * Checks if the current user cna view an invoice. |
34 | 34 | */ |
35 | -function wpinv_user_can_view_invoice( $invoice ) { |
|
36 | - $invoice = new WPInv_Invoice( $invoice ); |
|
35 | +function wpinv_user_can_view_invoice($invoice) { |
|
36 | + $invoice = new WPInv_Invoice($invoice); |
|
37 | 37 | |
38 | 38 | // Abort if the invoice does not exist. |
39 | - if ( 0 == $invoice->get_id() ) { |
|
39 | + if (0 == $invoice->get_id()) { |
|
40 | 40 | return false; |
41 | 41 | } |
42 | 42 | |
43 | 43 | // Don't allow trash, draft status |
44 | - if ( $invoice->is_draft() ) { |
|
44 | + if ($invoice->is_draft()) { |
|
45 | 45 | return false; |
46 | 46 | } |
47 | 47 | |
48 | 48 | // If users are not required to login to check out, compare the invoice keys. |
49 | - if ( ! wpinv_require_login_to_checkout() && isset( $_GET['invoice_key'] ) && trim( $_GET['invoice_key'] ) == $invoice->get_key() ) { |
|
49 | + if (!wpinv_require_login_to_checkout() && isset($_GET['invoice_key']) && trim($_GET['invoice_key']) == $invoice->get_key()) { |
|
50 | 50 | return true; |
51 | 51 | } |
52 | 52 | |
53 | 53 | // Always enable for admins.. |
54 | - if ( wpinv_current_user_can_manage_invoicing() || current_user_can( 'view_invoices', $invoice->get_id() ) ) { // Admin user |
|
54 | + if (wpinv_current_user_can_manage_invoicing() || current_user_can('view_invoices', $invoice->get_id())) { // Admin user |
|
55 | 55 | return true; |
56 | 56 | } |
57 | 57 | |
58 | 58 | // Else, ensure that this is their invoice. |
59 | - if ( is_user_logged_in() && $invoice->get_user_id() == get_current_user_id() ) { |
|
59 | + if (is_user_logged_in() && $invoice->get_user_id() == get_current_user_id()) { |
|
60 | 60 | return true; |
61 | 61 | } |
62 | 62 | |
63 | - return apply_filters( 'wpinv_current_user_can_view_invoice', false, $invoice ); |
|
63 | + return apply_filters('wpinv_current_user_can_view_invoice', false, $invoice); |
|
64 | 64 | } |
65 | 65 | |
66 | 66 | /** |
67 | 67 | * Checks if the current user cna view an invoice receipt. |
68 | 68 | */ |
69 | -function wpinv_can_view_receipt( $invoice ) { |
|
70 | - return (bool) apply_filters( 'wpinv_can_view_receipt', wpinv_user_can_view_invoice( $invoice ), $invoice ); |
|
69 | +function wpinv_can_view_receipt($invoice) { |
|
70 | + return (bool) apply_filters('wpinv_can_view_receipt', wpinv_user_can_view_invoice($invoice), $invoice); |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -77,11 +77,11 @@ discard block |
||
77 | 77 | */ |
78 | 78 | function getpaid_get_invoice_post_types() { |
79 | 79 | $post_types = array( |
80 | - 'wpi_quote' => __( 'Quote', 'invoicing' ), |
|
81 | - 'wpi_invoice' => __( 'Invoice', 'invoicing' ), |
|
80 | + 'wpi_quote' => __('Quote', 'invoicing'), |
|
81 | + 'wpi_invoice' => __('Invoice', 'invoicing'), |
|
82 | 82 | ); |
83 | 83 | |
84 | - return apply_filters( 'getpaid_invoice_post_types', $post_types ); |
|
84 | + return apply_filters('getpaid_invoice_post_types', $post_types); |
|
85 | 85 | } |
86 | 86 | |
87 | 87 | /** |
@@ -90,8 +90,8 @@ discard block |
||
90 | 90 | * |
91 | 91 | * @param string $post_type The post type to check for. |
92 | 92 | */ |
93 | -function getpaid_is_invoice_post_type( $post_type ) { |
|
94 | - return is_scalar( $post_type ) && ! empty( $post_type ) && array_key_exists( $post_type, getpaid_get_invoice_post_types() ); |
|
93 | +function getpaid_is_invoice_post_type($post_type) { |
|
94 | + return is_scalar($post_type) && !empty($post_type) && array_key_exists($post_type, getpaid_get_invoice_post_types()); |
|
95 | 95 | } |
96 | 96 | |
97 | 97 | /** |
@@ -101,9 +101,9 @@ discard block |
||
101 | 101 | * @param bool $wp_error Whether to return false or WP_Error on failure. |
102 | 102 | * @return int|WP_Error|WPInv_Invoice The value 0 or WP_Error on failure. The WPInv_Invoice object on success. |
103 | 103 | */ |
104 | -function wpinv_create_invoice( $data = array(), $deprecated = null, $wp_error = false ) { |
|
105 | - $data[ 'invoice_id' ] = 0; |
|
106 | - return wpinv_insert_invoice( $data, $wp_error ); |
|
104 | +function wpinv_create_invoice($data = array(), $deprecated = null, $wp_error = false) { |
|
105 | + $data['invoice_id'] = 0; |
|
106 | + return wpinv_insert_invoice($data, $wp_error); |
|
107 | 107 | } |
108 | 108 | |
109 | 109 | /** |
@@ -113,36 +113,36 @@ discard block |
||
113 | 113 | * @param bool $wp_error Whether to return false or WP_Error on failure. |
114 | 114 | * @return int|WP_Error|WPInv_Invoice The value 0 or WP_Error on failure. The WPInv_Invoice object on success. |
115 | 115 | */ |
116 | -function wpinv_update_invoice( $data = array(), $wp_error = false ) { |
|
116 | +function wpinv_update_invoice($data = array(), $wp_error = false) { |
|
117 | 117 | |
118 | 118 | // Backwards compatibility. |
119 | - if ( ! empty( $data['ID'] ) ) { |
|
119 | + if (!empty($data['ID'])) { |
|
120 | 120 | $data['invoice_id'] = $data['ID']; |
121 | 121 | } |
122 | 122 | |
123 | 123 | // Do we have an invoice id? |
124 | - if ( empty( $data['invoice_id'] ) ) { |
|
125 | - return $wp_error ? new WP_Error( 'invalid_invoice_id', __( 'Invalid invoice ID.', 'invoicing' ) ) : 0; |
|
124 | + if (empty($data['invoice_id'])) { |
|
125 | + return $wp_error ? new WP_Error('invalid_invoice_id', __('Invalid invoice ID.', 'invoicing')) : 0; |
|
126 | 126 | } |
127 | 127 | |
128 | 128 | // Retrieve the invoice. |
129 | - $invoice = wpinv_get_invoice( $data['invoice_id'] ); |
|
129 | + $invoice = wpinv_get_invoice($data['invoice_id']); |
|
130 | 130 | |
131 | 131 | // And abort if it does not exist. |
132 | - if ( empty( $invoice ) ) { |
|
133 | - return $wp_error ? new WP_Error( 'missing_invoice', __( 'Invoice not found.', 'invoicing' ) ) : 0; |
|
132 | + if (empty($invoice)) { |
|
133 | + return $wp_error ? new WP_Error('missing_invoice', __('Invoice not found.', 'invoicing')) : 0; |
|
134 | 134 | } |
135 | 135 | |
136 | 136 | // Do not update totals for paid / refunded invoices. |
137 | - if ( $invoice->is_paid() || $invoice->is_refunded() ) { |
|
137 | + if ($invoice->is_paid() || $invoice->is_refunded()) { |
|
138 | 138 | |
139 | - if ( ! empty( $data['items'] ) || ! empty( $data['cart_details'] ) ) { |
|
140 | - return $wp_error ? new WP_Error( 'paid_invoice', __( 'You can not update cart items for invoices that have already been paid for.', 'invoicing' ) ) : 0; |
|
139 | + if (!empty($data['items']) || !empty($data['cart_details'])) { |
|
140 | + return $wp_error ? new WP_Error('paid_invoice', __('You can not update cart items for invoices that have already been paid for.', 'invoicing')) : 0; |
|
141 | 141 | } |
142 | 142 | |
143 | 143 | } |
144 | 144 | |
145 | - return wpinv_insert_invoice( $data, $wp_error ); |
|
145 | + return wpinv_insert_invoice($data, $wp_error); |
|
146 | 146 | |
147 | 147 | } |
148 | 148 | |
@@ -153,34 +153,34 @@ discard block |
||
153 | 153 | * @param bool $wp_error Whether to return false or WP_Error on failure. |
154 | 154 | * @return int|WP_Error|WPInv_Invoice The value 0 or WP_Error on failure. The WPInv_Invoice object on success. |
155 | 155 | */ |
156 | -function wpinv_insert_invoice( $data = array(), $wp_error = false ) { |
|
156 | +function wpinv_insert_invoice($data = array(), $wp_error = false) { |
|
157 | 157 | |
158 | 158 | // Ensure that we have invoice data. |
159 | - if ( empty( $data ) ) { |
|
159 | + if (empty($data)) { |
|
160 | 160 | return false; |
161 | 161 | } |
162 | 162 | |
163 | 163 | // The invoice id will be provided when updating an invoice. |
164 | - $data['invoice_id'] = ! empty( $data['invoice_id'] ) ? (int) $data['invoice_id'] : false; |
|
164 | + $data['invoice_id'] = !empty($data['invoice_id']) ? (int) $data['invoice_id'] : false; |
|
165 | 165 | |
166 | 166 | // Retrieve the invoice. |
167 | - $invoice = new WPInv_Invoice( $data['invoice_id'] ); |
|
167 | + $invoice = new WPInv_Invoice($data['invoice_id']); |
|
168 | 168 | |
169 | 169 | // Do we have an error? |
170 | - if ( ! empty( $invoice->last_error ) ) { |
|
171 | - return $wp_error ? new WP_Error( 'invalid_invoice_id', $invoice->last_error ) : 0; |
|
170 | + if (!empty($invoice->last_error)) { |
|
171 | + return $wp_error ? new WP_Error('invalid_invoice_id', $invoice->last_error) : 0; |
|
172 | 172 | } |
173 | 173 | |
174 | 174 | // Backwards compatibility (billing address). |
175 | - if ( ! empty( $data['user_info'] ) ) { |
|
175 | + if (!empty($data['user_info'])) { |
|
176 | 176 | |
177 | - foreach ( $data['user_info'] as $key => $value ) { |
|
177 | + foreach ($data['user_info'] as $key => $value) { |
|
178 | 178 | |
179 | - if ( $key == 'discounts' ) { |
|
179 | + if ($key == 'discounts') { |
|
180 | 180 | $value = (array) $value; |
181 | - $data[ 'discount_code' ] = empty( $value ) ? null : $value[0]; |
|
181 | + $data['discount_code'] = empty($value) ? null : $value[0]; |
|
182 | 182 | } else { |
183 | - $data[ $key ] = $value; |
|
183 | + $data[$key] = $value; |
|
184 | 184 | } |
185 | 185 | |
186 | 186 | } |
@@ -188,30 +188,30 @@ discard block |
||
188 | 188 | } |
189 | 189 | |
190 | 190 | // Backwards compatibility. |
191 | - if ( ! empty( $data['payment_details'] ) ) { |
|
191 | + if (!empty($data['payment_details'])) { |
|
192 | 192 | |
193 | - foreach ( $data['payment_details'] as $key => $value ) { |
|
194 | - $data[ $key ] = $value; |
|
193 | + foreach ($data['payment_details'] as $key => $value) { |
|
194 | + $data[$key] = $value; |
|
195 | 195 | } |
196 | 196 | |
197 | 197 | } |
198 | 198 | |
199 | 199 | // Set up the owner of the invoice. |
200 | - $user_id = ! empty( $data['user_id'] ) ? wpinv_clean( $data['user_id'] ) : get_current_user_id(); |
|
200 | + $user_id = !empty($data['user_id']) ? wpinv_clean($data['user_id']) : get_current_user_id(); |
|
201 | 201 | |
202 | 202 | // Make sure the user exists. |
203 | - if ( ! get_userdata( $user_id ) ) { |
|
204 | - return $wp_error ? new WP_Error( 'wpinv_invalid_user', __( 'There is no user with that ID.', 'invoicing' ) ) : 0; |
|
203 | + if (!get_userdata($user_id)) { |
|
204 | + return $wp_error ? new WP_Error('wpinv_invalid_user', __('There is no user with that ID.', 'invoicing')) : 0; |
|
205 | 205 | } |
206 | 206 | |
207 | - $address = wpinv_get_user_address( $user_id ); |
|
207 | + $address = wpinv_get_user_address($user_id); |
|
208 | 208 | |
209 | - foreach ( $address as $key => $value ) { |
|
209 | + foreach ($address as $key => $value) { |
|
210 | 210 | |
211 | - if ( $value == '' ) { |
|
212 | - $address[ $key ] = null; |
|
211 | + if ($value == '') { |
|
212 | + $address[$key] = null; |
|
213 | 213 | } else { |
214 | - $address[ $key ] = wpinv_clean( $value ); |
|
214 | + $address[$key] = wpinv_clean($value); |
|
215 | 215 | } |
216 | 216 | |
217 | 217 | } |
@@ -222,103 +222,103 @@ discard block |
||
222 | 222 | array( |
223 | 223 | |
224 | 224 | // Basic info. |
225 | - 'template' => isset( $data['template'] ) ? wpinv_clean( $data['template'] ) : null, |
|
226 | - 'email_cc' => isset( $data['email_cc'] ) ? wpinv_clean( $data['email_cc'] ) : null, |
|
227 | - 'date_created' => isset( $data['created_date'] ) ? wpinv_clean( $data['created_date'] ) : null, |
|
228 | - 'due_date' => isset( $data['due_date'] ) ? wpinv_clean( $data['due_date'] ) : null, |
|
229 | - 'date_completed' => isset( $data['date_completed'] ) ? wpinv_clean( $data['date_completed'] ) : null, |
|
230 | - 'number' => isset( $data['number'] ) ? wpinv_clean( $data['number'] ) : null, |
|
231 | - 'key' => isset( $data['key'] ) ? wpinv_clean( $data['key'] ) : null, |
|
232 | - 'status' => isset( $data['status'] ) ? wpinv_clean( $data['status'] ) : null, |
|
233 | - 'post_type' => isset( $data['post_type'] ) ? wpinv_clean( $data['post_type'] ) : null, |
|
234 | - 'user_ip' => isset( $data['ip'] ) ? wpinv_clean( $data['ip'] ) : wpinv_get_ip(), |
|
235 | - 'parent_id' => isset( $data['parent'] ) ? intval( $data['parent'] ) : null, |
|
236 | - 'mode' => isset( $data['mode'] ) ? wpinv_clean( $data['mode'] ) : null, |
|
237 | - 'description' => isset( $data['description'] ) ? wp_kses_post( $data['description'] ) : null, |
|
225 | + 'template' => isset($data['template']) ? wpinv_clean($data['template']) : null, |
|
226 | + 'email_cc' => isset($data['email_cc']) ? wpinv_clean($data['email_cc']) : null, |
|
227 | + 'date_created' => isset($data['created_date']) ? wpinv_clean($data['created_date']) : null, |
|
228 | + 'due_date' => isset($data['due_date']) ? wpinv_clean($data['due_date']) : null, |
|
229 | + 'date_completed' => isset($data['date_completed']) ? wpinv_clean($data['date_completed']) : null, |
|
230 | + 'number' => isset($data['number']) ? wpinv_clean($data['number']) : null, |
|
231 | + 'key' => isset($data['key']) ? wpinv_clean($data['key']) : null, |
|
232 | + 'status' => isset($data['status']) ? wpinv_clean($data['status']) : null, |
|
233 | + 'post_type' => isset($data['post_type']) ? wpinv_clean($data['post_type']) : null, |
|
234 | + 'user_ip' => isset($data['ip']) ? wpinv_clean($data['ip']) : wpinv_get_ip(), |
|
235 | + 'parent_id' => isset($data['parent']) ? intval($data['parent']) : null, |
|
236 | + 'mode' => isset($data['mode']) ? wpinv_clean($data['mode']) : null, |
|
237 | + 'description' => isset($data['description']) ? wp_kses_post($data['description']) : null, |
|
238 | 238 | |
239 | 239 | // Payment info. |
240 | - 'disable_taxes' => ! empty( $data['disable_taxes'] ), |
|
241 | - 'currency' => isset( $data['currency'] ) ? wpinv_clean( $data['currency'] ) : wpinv_get_currency(), |
|
242 | - 'gateway' => isset( $data['gateway'] ) ? wpinv_clean( $data['gateway'] ) : null, |
|
243 | - 'transaction_id' => isset( $data['transaction_id'] ) ? wpinv_clean( $data['transaction_id'] ) : null, |
|
244 | - 'discount_code' => isset( $data['discount_code'] ) ? wpinv_clean( $data['discount_code'] ) : null, |
|
245 | - 'payment_form' => isset( $data['payment_form'] ) ? intval( $data['payment_form'] ) : null, |
|
246 | - 'submission_id' => isset( $data['submission_id'] ) ? wpinv_clean( $data['submission_id'] ) : null, |
|
247 | - 'subscription_id' => isset( $data['subscription_id'] ) ? wpinv_clean( $data['subscription_id'] ) : null, |
|
248 | - 'is_viewed' => isset( $data['is_viewed'] ) ? wpinv_clean( $data['is_viewed'] ) : null, |
|
249 | - 'fees' => isset( $data['fees'] ) ? wpinv_clean( $data['fees'] ) : null, |
|
250 | - 'discounts' => isset( $data['discounts'] ) ? wpinv_clean( $data['discounts'] ) : null, |
|
251 | - 'taxes' => isset( $data['taxes'] ) ? wpinv_clean( $data['taxes'] ) : null, |
|
240 | + 'disable_taxes' => !empty($data['disable_taxes']), |
|
241 | + 'currency' => isset($data['currency']) ? wpinv_clean($data['currency']) : wpinv_get_currency(), |
|
242 | + 'gateway' => isset($data['gateway']) ? wpinv_clean($data['gateway']) : null, |
|
243 | + 'transaction_id' => isset($data['transaction_id']) ? wpinv_clean($data['transaction_id']) : null, |
|
244 | + 'discount_code' => isset($data['discount_code']) ? wpinv_clean($data['discount_code']) : null, |
|
245 | + 'payment_form' => isset($data['payment_form']) ? intval($data['payment_form']) : null, |
|
246 | + 'submission_id' => isset($data['submission_id']) ? wpinv_clean($data['submission_id']) : null, |
|
247 | + 'subscription_id' => isset($data['subscription_id']) ? wpinv_clean($data['subscription_id']) : null, |
|
248 | + 'is_viewed' => isset($data['is_viewed']) ? wpinv_clean($data['is_viewed']) : null, |
|
249 | + 'fees' => isset($data['fees']) ? wpinv_clean($data['fees']) : null, |
|
250 | + 'discounts' => isset($data['discounts']) ? wpinv_clean($data['discounts']) : null, |
|
251 | + 'taxes' => isset($data['taxes']) ? wpinv_clean($data['taxes']) : null, |
|
252 | 252 | |
253 | 253 | |
254 | 254 | // Billing details. |
255 | 255 | 'user_id' => $data['user_id'], |
256 | - 'first_name' => isset( $data['first_name'] ) ? wpinv_clean( $data['first_name'] ) : $address['first_name'], |
|
257 | - 'last_name' => isset( $data['last_name'] ) ? wpinv_clean( $data['last_name'] ) : $address['last_name'], |
|
258 | - 'address' => isset( $data['address'] ) ? wpinv_clean( $data['address'] ) : $address['address'] , |
|
259 | - 'vat_number' => isset( $data['vat_number'] ) ? wpinv_clean( $data['vat_number'] ) : $address['vat_number'], |
|
260 | - 'company' => isset( $data['company'] ) ? wpinv_clean( $data['company'] ) : $address['company'], |
|
261 | - 'zip' => isset( $data['zip'] ) ? wpinv_clean( $data['zip'] ) : $address['zip'], |
|
262 | - 'state' => isset( $data['state'] ) ? wpinv_clean( $data['state'] ) : $address['state'], |
|
263 | - 'city' => isset( $data['city'] ) ? wpinv_clean( $data['city'] ) : $address['city'], |
|
264 | - 'country' => isset( $data['country'] ) ? wpinv_clean( $data['country'] ) : $address['country'], |
|
265 | - 'phone' => isset( $data['phone'] ) ? wpinv_clean( $data['phone'] ) : $address['phone'], |
|
266 | - 'address_confirmed' => ! empty( $data['address_confirmed'] ), |
|
256 | + 'first_name' => isset($data['first_name']) ? wpinv_clean($data['first_name']) : $address['first_name'], |
|
257 | + 'last_name' => isset($data['last_name']) ? wpinv_clean($data['last_name']) : $address['last_name'], |
|
258 | + 'address' => isset($data['address']) ? wpinv_clean($data['address']) : $address['address'], |
|
259 | + 'vat_number' => isset($data['vat_number']) ? wpinv_clean($data['vat_number']) : $address['vat_number'], |
|
260 | + 'company' => isset($data['company']) ? wpinv_clean($data['company']) : $address['company'], |
|
261 | + 'zip' => isset($data['zip']) ? wpinv_clean($data['zip']) : $address['zip'], |
|
262 | + 'state' => isset($data['state']) ? wpinv_clean($data['state']) : $address['state'], |
|
263 | + 'city' => isset($data['city']) ? wpinv_clean($data['city']) : $address['city'], |
|
264 | + 'country' => isset($data['country']) ? wpinv_clean($data['country']) : $address['country'], |
|
265 | + 'phone' => isset($data['phone']) ? wpinv_clean($data['phone']) : $address['phone'], |
|
266 | + 'address_confirmed' => !empty($data['address_confirmed']), |
|
267 | 267 | |
268 | 268 | ) |
269 | 269 | |
270 | 270 | ); |
271 | 271 | |
272 | 272 | // Backwards compatibililty. |
273 | - if ( ! empty( $data['cart_details'] ) && is_array( $data['cart_details'] ) ) { |
|
273 | + if (!empty($data['cart_details']) && is_array($data['cart_details'])) { |
|
274 | 274 | $data['items'] = array(); |
275 | 275 | |
276 | - foreach( $data['cart_details'] as $_item ) { |
|
276 | + foreach ($data['cart_details'] as $_item) { |
|
277 | 277 | |
278 | 278 | // Ensure that we have an item id. |
279 | - if ( empty( $_item['id'] ) ) { |
|
279 | + if (empty($_item['id'])) { |
|
280 | 280 | continue; |
281 | 281 | } |
282 | 282 | |
283 | 283 | // Retrieve the item. |
284 | - $item = new GetPaid_Form_Item( $_item['id'] ); |
|
284 | + $item = new GetPaid_Form_Item($_item['id']); |
|
285 | 285 | |
286 | 286 | // Ensure that it is purchasable. |
287 | - if ( ! $item->can_purchase() ) { |
|
287 | + if (!$item->can_purchase()) { |
|
288 | 288 | continue; |
289 | 289 | } |
290 | 290 | |
291 | 291 | // Set quantity. |
292 | - if ( ! empty( $_item['quantity'] ) && is_numeric( $_item['quantity'] ) ) { |
|
293 | - $item->set_quantity( $_item['quantity'] ); |
|
292 | + if (!empty($_item['quantity']) && is_numeric($_item['quantity'])) { |
|
293 | + $item->set_quantity($_item['quantity']); |
|
294 | 294 | } |
295 | 295 | |
296 | 296 | // Set price. |
297 | - if ( isset( $_item['item_price'] ) ) { |
|
298 | - $item->set_price( $_item['item_price'] ); |
|
297 | + if (isset($_item['item_price'])) { |
|
298 | + $item->set_price($_item['item_price']); |
|
299 | 299 | } |
300 | 300 | |
301 | - if ( isset( $_item['custom_price'] ) ) { |
|
302 | - $item->set_price( $_item['custom_price'] ); |
|
301 | + if (isset($_item['custom_price'])) { |
|
302 | + $item->set_price($_item['custom_price']); |
|
303 | 303 | } |
304 | 304 | |
305 | 305 | // Set name. |
306 | - if ( ! empty( $_item['name'] ) ) { |
|
307 | - $item->set_name( $_item['name'] ); |
|
306 | + if (!empty($_item['name'])) { |
|
307 | + $item->set_name($_item['name']); |
|
308 | 308 | } |
309 | 309 | |
310 | 310 | // Set description. |
311 | - if ( isset( $_item['description'] ) ) { |
|
312 | - $item->set_custom_description( $_item['description'] ); |
|
311 | + if (isset($_item['description'])) { |
|
312 | + $item->set_custom_description($_item['description']); |
|
313 | 313 | } |
314 | 314 | |
315 | 315 | // Set meta. |
316 | - if ( isset( $_item['meta'] ) && is_array( $_item['meta'] ) ) { |
|
316 | + if (isset($_item['meta']) && is_array($_item['meta'])) { |
|
317 | 317 | |
318 | - $item->set_item_meta( $_item['meta'] ); |
|
318 | + $item->set_item_meta($_item['meta']); |
|
319 | 319 | |
320 | - if ( isset( $_item['meta']['description'] ) ) { |
|
321 | - $item->set_custom_description( $_item['meta']['description'] ); |
|
320 | + if (isset($_item['meta']['description'])) { |
|
321 | + $item->set_custom_description($_item['meta']['description']); |
|
322 | 322 | } |
323 | 323 | |
324 | 324 | } |
@@ -329,14 +329,14 @@ discard block |
||
329 | 329 | } |
330 | 330 | |
331 | 331 | // Add invoice items. |
332 | - if ( ! empty( $data['items'] ) && is_array( $data['items'] ) ) { |
|
332 | + if (!empty($data['items']) && is_array($data['items'])) { |
|
333 | 333 | |
334 | - $invoice->set_items( array() ); |
|
334 | + $invoice->set_items(array()); |
|
335 | 335 | |
336 | - foreach ( $data['items'] as $item ) { |
|
336 | + foreach ($data['items'] as $item) { |
|
337 | 337 | |
338 | - if ( is_object( $item ) && is_a( $item, 'GetPaid_Form_Item' ) && $item->can_purchase() ) { |
|
339 | - $invoice->add_item( $item ); |
|
338 | + if (is_object($item) && is_a($item, 'GetPaid_Form_Item') && $item->can_purchase()) { |
|
339 | + $invoice->add_item($item); |
|
340 | 340 | } |
341 | 341 | |
342 | 342 | } |
@@ -347,30 +347,30 @@ discard block |
||
347 | 347 | $invoice->recalculate_total(); |
348 | 348 | $invoice->save(); |
349 | 349 | |
350 | - if ( ! $invoice->get_id() ) { |
|
351 | - return $wp_error ? new WP_Error( 'wpinv_insert_invoice_error', __( 'An error occured when saving your invoice.', 'invoicing' ) ) : 0; |
|
350 | + if (!$invoice->get_id()) { |
|
351 | + return $wp_error ? new WP_Error('wpinv_insert_invoice_error', __('An error occured when saving your invoice.', 'invoicing')) : 0; |
|
352 | 352 | } |
353 | 353 | |
354 | 354 | // Add private note. |
355 | - if ( ! empty( $data['private_note'] ) ) { |
|
356 | - $invoice->add_note( $data['private_note'] ); |
|
355 | + if (!empty($data['private_note'])) { |
|
356 | + $invoice->add_note($data['private_note']); |
|
357 | 357 | } |
358 | 358 | |
359 | 359 | // User notes. |
360 | - if ( !empty( $data['user_note'] ) ) { |
|
361 | - $invoice->add_note( $data['user_note'], true ); |
|
360 | + if (!empty($data['user_note'])) { |
|
361 | + $invoice->add_note($data['user_note'], true); |
|
362 | 362 | } |
363 | 363 | |
364 | 364 | // Created via. |
365 | - if ( isset( $data['created_via'] ) ) { |
|
366 | - update_post_meta( $invoice->get_id(), 'wpinv_created_via', $data['created_via'] ); |
|
365 | + if (isset($data['created_via'])) { |
|
366 | + update_post_meta($invoice->get_id(), 'wpinv_created_via', $data['created_via']); |
|
367 | 367 | } |
368 | 368 | |
369 | 369 | // Backwards compatiblity. |
370 | - if ( $invoice->is_quote() ) { |
|
370 | + if ($invoice->is_quote()) { |
|
371 | 371 | |
372 | - if ( isset( $data['valid_until'] ) ) { |
|
373 | - update_post_meta( $invoice->get_id(), 'wpinv_quote_valid_until', $data['valid_until'] ); |
|
372 | + if (isset($data['valid_until'])) { |
|
373 | + update_post_meta($invoice->get_id(), 'wpinv_quote_valid_until', $data['valid_until']); |
|
374 | 374 | } |
375 | 375 | return $invoice; |
376 | 376 | |
@@ -385,18 +385,18 @@ discard block |
||
385 | 385 | * @param $bool $deprecated |
386 | 386 | * @return WPInv_Invoice|null |
387 | 387 | */ |
388 | -function wpinv_get_invoice( $invoice = 0, $deprecated = false ) { |
|
388 | +function wpinv_get_invoice($invoice = 0, $deprecated = false) { |
|
389 | 389 | |
390 | 390 | // If we are retrieving the invoice from the cart... |
391 | - if ( $deprecated && empty( $invoice ) ) { |
|
391 | + if ($deprecated && empty($invoice)) { |
|
392 | 392 | $invoice = (int) getpaid_get_current_invoice_id(); |
393 | 393 | } |
394 | 394 | |
395 | 395 | // Retrieve the invoice. |
396 | - $invoice = new WPInv_Invoice( $invoice ); |
|
396 | + $invoice = new WPInv_Invoice($invoice); |
|
397 | 397 | |
398 | 398 | // Check if it exists. |
399 | - if ( $invoice->get_id() != 0 ) { |
|
399 | + if ($invoice->get_id() != 0) { |
|
400 | 400 | return $invoice; |
401 | 401 | } |
402 | 402 | |
@@ -409,15 +409,15 @@ discard block |
||
409 | 409 | * @param array $args Args to search for. |
410 | 410 | * @return WPInv_Invoice[]|int[]|object |
411 | 411 | */ |
412 | -function wpinv_get_invoices( $args ) { |
|
412 | +function wpinv_get_invoices($args) { |
|
413 | 413 | |
414 | 414 | // Prepare args. |
415 | 415 | $args = wp_parse_args( |
416 | 416 | $args, |
417 | 417 | array( |
418 | - 'status' => array_keys( wpinv_get_invoice_statuses() ), |
|
418 | + 'status' => array_keys(wpinv_get_invoice_statuses()), |
|
419 | 419 | 'type' => 'wpi_invoice', |
420 | - 'limit' => get_option( 'posts_per_page' ), |
|
420 | + 'limit' => get_option('posts_per_page'), |
|
421 | 421 | 'return' => 'objects', |
422 | 422 | ) |
423 | 423 | ); |
@@ -435,24 +435,24 @@ discard block |
||
435 | 435 | 'post__in' => 'include', |
436 | 436 | ); |
437 | 437 | |
438 | - foreach ( $map_legacy as $to => $from ) { |
|
439 | - if ( isset( $args[ $from ] ) ) { |
|
440 | - $args[ $to ] = $args[ $from ]; |
|
441 | - unset( $args[ $from ] ); |
|
438 | + foreach ($map_legacy as $to => $from) { |
|
439 | + if (isset($args[$from])) { |
|
440 | + $args[$to] = $args[$from]; |
|
441 | + unset($args[$from]); |
|
442 | 442 | } |
443 | 443 | } |
444 | 444 | |
445 | 445 | // Backwards compatibility. |
446 | - if ( ! empty( $args['email'] ) && empty( $args['user'] ) ) { |
|
446 | + if (!empty($args['email']) && empty($args['user'])) { |
|
447 | 447 | $args['user'] = $args['email']; |
448 | - unset( $args['email'] ); |
|
448 | + unset($args['email']); |
|
449 | 449 | } |
450 | 450 | |
451 | 451 | // Handle cases where the user is set as an email. |
452 | - if ( ! empty( $args['author'] ) && is_email( $args['author'] ) ) { |
|
453 | - $user = get_user_by( 'email', $args['user'] ); |
|
452 | + if (!empty($args['author']) && is_email($args['author'])) { |
|
453 | + $user = get_user_by('email', $args['user']); |
|
454 | 454 | |
455 | - if ( $user ) { |
|
455 | + if ($user) { |
|
456 | 456 | $args['author'] = $user->user_email; |
457 | 457 | } |
458 | 458 | |
@@ -463,31 +463,31 @@ discard block |
||
463 | 463 | |
464 | 464 | // Show all posts. |
465 | 465 | $paginate = true; |
466 | - if ( isset( $args['paginate'] ) ) { |
|
466 | + if (isset($args['paginate'])) { |
|
467 | 467 | |
468 | 468 | $paginate = $args['paginate']; |
469 | - $args['no_found_rows'] = empty( $args['paginate'] ); |
|
470 | - unset( $args['paginate'] ); |
|
469 | + $args['no_found_rows'] = empty($args['paginate']); |
|
470 | + unset($args['paginate']); |
|
471 | 471 | |
472 | 472 | } |
473 | 473 | |
474 | 474 | // Whether to return objects or fields. |
475 | 475 | $return = $args['return']; |
476 | - unset( $args['return'] ); |
|
476 | + unset($args['return']); |
|
477 | 477 | |
478 | 478 | // Get invoices. |
479 | - $invoices = new WP_Query( apply_filters( 'wpinv_get_invoices_args', $args ) ); |
|
479 | + $invoices = new WP_Query(apply_filters('wpinv_get_invoices_args', $args)); |
|
480 | 480 | |
481 | 481 | // Prepare the results. |
482 | - if ( 'objects' === $return ) { |
|
483 | - $results = array_map( 'wpinv_get_invoice', $invoices->posts ); |
|
484 | - } elseif ( 'self' === $return ) { |
|
482 | + if ('objects' === $return) { |
|
483 | + $results = array_map('wpinv_get_invoice', $invoices->posts); |
|
484 | + } elseif ('self' === $return) { |
|
485 | 485 | return $invoices; |
486 | 486 | } else { |
487 | 487 | $results = $invoices->posts; |
488 | 488 | } |
489 | 489 | |
490 | - if ( $paginate ) { |
|
490 | + if ($paginate) { |
|
491 | 491 | return (object) array( |
492 | 492 | 'invoices' => $results, |
493 | 493 | 'total' => $invoices->found_posts, |
@@ -505,8 +505,8 @@ discard block |
||
505 | 505 | * @param string $transaction_id The transaction id to check. |
506 | 506 | * @return int Invoice id on success or 0 on failure |
507 | 507 | */ |
508 | -function wpinv_get_id_by_transaction_id( $transaction_id ) { |
|
509 | - return WPInv_Invoice::get_invoice_id_by_field( $transaction_id, 'transaction_id' ); |
|
508 | +function wpinv_get_id_by_transaction_id($transaction_id) { |
|
509 | + return WPInv_Invoice::get_invoice_id_by_field($transaction_id, 'transaction_id'); |
|
510 | 510 | } |
511 | 511 | |
512 | 512 | /** |
@@ -515,8 +515,8 @@ discard block |
||
515 | 515 | * @param string $invoice_number The invoice number to check. |
516 | 516 | * @return int Invoice id on success or 0 on failure |
517 | 517 | */ |
518 | -function wpinv_get_id_by_invoice_number( $invoice_number ) { |
|
519 | - return WPInv_Invoice::get_invoice_id_by_field( $invoice_number, 'number' ); |
|
518 | +function wpinv_get_id_by_invoice_number($invoice_number) { |
|
519 | + return WPInv_Invoice::get_invoice_id_by_field($invoice_number, 'number'); |
|
520 | 520 | } |
521 | 521 | |
522 | 522 | /** |
@@ -525,8 +525,8 @@ discard block |
||
525 | 525 | * @param string $invoice_key The invoice key to check. |
526 | 526 | * @return int Invoice id on success or 0 on failure |
527 | 527 | */ |
528 | -function wpinv_get_invoice_id_by_key( $invoice_key ) { |
|
529 | - return WPInv_Invoice::get_invoice_id_by_field( $invoice_key, 'key' ); |
|
528 | +function wpinv_get_invoice_id_by_key($invoice_key) { |
|
529 | + return WPInv_Invoice::get_invoice_id_by_field($invoice_key, 'key'); |
|
530 | 530 | } |
531 | 531 | |
532 | 532 | /** |
@@ -536,19 +536,19 @@ discard block |
||
536 | 536 | * @param string $type Optionally filter by type i.e customer|system |
537 | 537 | * @return array|null |
538 | 538 | */ |
539 | -function wpinv_get_invoice_notes( $invoice = 0, $type = '' ) { |
|
539 | +function wpinv_get_invoice_notes($invoice = 0, $type = '') { |
|
540 | 540 | |
541 | 541 | // Prepare the invoice. |
542 | - $invoice = wpinv_get_invoice( $invoice ); |
|
543 | - if ( empty( $invoice ) ) { |
|
542 | + $invoice = wpinv_get_invoice($invoice); |
|
543 | + if (empty($invoice)) { |
|
544 | 544 | return NULL; |
545 | 545 | } |
546 | 546 | |
547 | 547 | // Fetch notes. |
548 | - $notes = getpaid_notes()->get_invoice_notes( $invoice->get_id(), $type ); |
|
548 | + $notes = getpaid_notes()->get_invoice_notes($invoice->get_id(), $type); |
|
549 | 549 | |
550 | 550 | // Filter the notes. |
551 | - return apply_filters( 'wpinv_invoice_notes', $notes, $invoice->get_id(), $type ); |
|
551 | + return apply_filters('wpinv_invoice_notes', $notes, $invoice->get_id(), $type); |
|
552 | 552 | } |
553 | 553 | |
554 | 554 | /** |
@@ -556,10 +556,10 @@ discard block |
||
556 | 556 | * |
557 | 557 | * @param string $post_type |
558 | 558 | */ |
559 | -function wpinv_get_user_invoices_columns( $post_type = 'wpi_invoice' ) { |
|
559 | +function wpinv_get_user_invoices_columns($post_type = 'wpi_invoice') { |
|
560 | 560 | |
561 | - $label = getpaid_get_post_type_label( $post_type, false ); |
|
562 | - $label = empty( $label ) ? __( 'Invoice', 'invoicing' ) : sanitize_text_field( $label ); |
|
561 | + $label = getpaid_get_post_type_label($post_type, false); |
|
562 | + $label = empty($label) ? __('Invoice', 'invoicing') : sanitize_text_field($label); |
|
563 | 563 | $columns = array( |
564 | 564 | |
565 | 565 | 'invoice-number' => array( |
@@ -568,22 +568,22 @@ discard block |
||
568 | 568 | ), |
569 | 569 | |
570 | 570 | 'created-date' => array( |
571 | - 'title' => __( 'Created Date', 'invoicing' ), |
|
571 | + 'title' => __('Created Date', 'invoicing'), |
|
572 | 572 | 'class' => 'text-left' |
573 | 573 | ), |
574 | 574 | |
575 | 575 | 'payment-date' => array( |
576 | - 'title' => __( 'Payment Date', 'invoicing' ), |
|
576 | + 'title' => __('Payment Date', 'invoicing'), |
|
577 | 577 | 'class' => 'text-left' |
578 | 578 | ), |
579 | 579 | |
580 | 580 | 'invoice-status' => array( |
581 | - 'title' => __( 'Status', 'invoicing' ), |
|
581 | + 'title' => __('Status', 'invoicing'), |
|
582 | 582 | 'class' => 'text-center' |
583 | 583 | ), |
584 | 584 | |
585 | 585 | 'invoice-total' => array( |
586 | - 'title' => __( 'Total', 'invoicing' ), |
|
586 | + 'title' => __('Total', 'invoicing'), |
|
587 | 587 | 'class' => 'text-right' |
588 | 588 | ), |
589 | 589 | |
@@ -594,7 +594,7 @@ discard block |
||
594 | 594 | |
595 | 595 | ); |
596 | 596 | |
597 | - return apply_filters( 'wpinv_user_invoices_columns', $columns, $post_type ); |
|
597 | + return apply_filters('wpinv_user_invoices_columns', $columns, $post_type); |
|
598 | 598 | } |
599 | 599 | |
600 | 600 | /** |
@@ -604,59 +604,59 @@ discard block |
||
604 | 604 | |
605 | 605 | // Find the invoice. |
606 | 606 | $invoice_id = getpaid_get_current_invoice_id(); |
607 | - $invoice = new WPInv_Invoice( $invoice_id ); |
|
607 | + $invoice = new WPInv_Invoice($invoice_id); |
|
608 | 608 | |
609 | 609 | // Abort if non was found. |
610 | - if ( empty( $invoice_id ) || $invoice->is_draft() ) { |
|
610 | + if (empty($invoice_id) || $invoice->is_draft()) { |
|
611 | 611 | |
612 | 612 | return aui()->alert( |
613 | 613 | array( |
614 | 614 | 'type' => 'warning', |
615 | - 'content' => __( 'We could not find your invoice', 'invoicing' ), |
|
615 | + 'content' => __('We could not find your invoice', 'invoicing'), |
|
616 | 616 | ) |
617 | 617 | ); |
618 | 618 | |
619 | 619 | } |
620 | 620 | |
621 | 621 | // Can the user view this invoice? |
622 | - if ( ! wpinv_can_view_receipt( $invoice_id ) ) { |
|
622 | + if (!wpinv_can_view_receipt($invoice_id)) { |
|
623 | 623 | |
624 | 624 | return aui()->alert( |
625 | 625 | array( |
626 | 626 | 'type' => 'warning', |
627 | - 'content' => __( 'You are not allowed to view this receipt', 'invoicing' ), |
|
627 | + 'content' => __('You are not allowed to view this receipt', 'invoicing'), |
|
628 | 628 | ) |
629 | 629 | ); |
630 | 630 | |
631 | 631 | } |
632 | 632 | |
633 | 633 | // Load the template. |
634 | - return wpinv_get_template_html( 'invoice-receipt.php', compact( 'invoice' ) ); |
|
634 | + return wpinv_get_template_html('invoice-receipt.php', compact('invoice')); |
|
635 | 635 | |
636 | 636 | } |
637 | 637 | |
638 | 638 | /** |
639 | 639 | * Displays the invoice history. |
640 | 640 | */ |
641 | -function getpaid_invoice_history( $user_id = 0, $post_type = 'wpi_invoice' ) { |
|
641 | +function getpaid_invoice_history($user_id = 0, $post_type = 'wpi_invoice') { |
|
642 | 642 | |
643 | 643 | // Ensure that we have a user id. |
644 | - if ( empty( $user_id ) || ! is_numeric( $user_id ) ) { |
|
644 | + if (empty($user_id) || !is_numeric($user_id)) { |
|
645 | 645 | $user_id = get_current_user_id(); |
646 | 646 | } |
647 | 647 | |
648 | - $label = getpaid_get_post_type_label( $post_type ); |
|
649 | - $label = empty( $label ) ? __( 'Invoices', 'invoicing' ) : sanitize_text_field( $label ); |
|
648 | + $label = getpaid_get_post_type_label($post_type); |
|
649 | + $label = empty($label) ? __('Invoices', 'invoicing') : sanitize_text_field($label); |
|
650 | 650 | |
651 | 651 | // View user id. |
652 | - if ( empty( $user_id ) ) { |
|
652 | + if (empty($user_id)) { |
|
653 | 653 | |
654 | 654 | return aui()->alert( |
655 | 655 | array( |
656 | 656 | 'type' => 'warning', |
657 | 657 | 'content' => sprintf( |
658 | - __( 'You must be logged in to view your %s.', 'invoicing' ), |
|
659 | - strtolower( $label ) |
|
658 | + __('You must be logged in to view your %s.', 'invoicing'), |
|
659 | + strtolower($label) |
|
660 | 660 | ) |
661 | 661 | ) |
662 | 662 | ); |
@@ -667,23 +667,23 @@ discard block |
||
667 | 667 | $invoices = wpinv_get_invoices( |
668 | 668 | |
669 | 669 | array( |
670 | - 'page' => ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1, |
|
670 | + 'page' => (get_query_var('paged')) ? absint(get_query_var('paged')) : 1, |
|
671 | 671 | 'user' => $user_id, |
672 | 672 | 'paginate' => true, |
673 | 673 | 'type' => $post_type, |
674 | - 'status' => array_keys( wpinv_get_invoice_statuses( false, false, $post_type ) ), |
|
674 | + 'status' => array_keys(wpinv_get_invoice_statuses(false, false, $post_type)), |
|
675 | 675 | ) |
676 | 676 | |
677 | 677 | ); |
678 | 678 | |
679 | - if ( empty( $invoices->total ) ) { |
|
679 | + if (empty($invoices->total)) { |
|
680 | 680 | |
681 | 681 | return aui()->alert( |
682 | 682 | array( |
683 | 683 | 'type' => 'info', |
684 | 684 | 'content' => sprintf( |
685 | - __( 'No %s found.', 'invoicing' ), |
|
686 | - strtolower( $label ) |
|
685 | + __('No %s found.', 'invoicing'), |
|
686 | + strtolower($label) |
|
687 | 687 | ) |
688 | 688 | ) |
689 | 689 | ); |
@@ -691,38 +691,38 @@ discard block |
||
691 | 691 | } |
692 | 692 | |
693 | 693 | // Load the template. |
694 | - return wpinv_get_template_html( 'invoice-history.php', compact( 'invoices', 'post_type' ) ); |
|
694 | + return wpinv_get_template_html('invoice-history.php', compact('invoices', 'post_type')); |
|
695 | 695 | |
696 | 696 | } |
697 | 697 | |
698 | 698 | /** |
699 | 699 | * Formats an invoice number given an invoice type. |
700 | 700 | */ |
701 | -function wpinv_format_invoice_number( $number, $type = '' ) { |
|
701 | +function wpinv_format_invoice_number($number, $type = '') { |
|
702 | 702 | |
703 | 703 | // Allow other plugins to overide this. |
704 | - $check = apply_filters( 'wpinv_pre_format_invoice_number', null, $number, $type ); |
|
705 | - if ( null !== $check ) { |
|
704 | + $check = apply_filters('wpinv_pre_format_invoice_number', null, $number, $type); |
|
705 | + if (null !== $check) { |
|
706 | 706 | return $check; |
707 | 707 | } |
708 | 708 | |
709 | 709 | // Ensure that we have a numeric number. |
710 | - if ( ! is_numeric( $number ) ) { |
|
710 | + if (!is_numeric($number)) { |
|
711 | 711 | return $number; |
712 | 712 | } |
713 | 713 | |
714 | 714 | // Format the number. |
715 | - $padd = absint( (int) wpinv_get_option( 'invoice_number_padd', 5 ) ); |
|
716 | - $prefix = sanitize_text_field( (string) wpinv_get_option( 'invoice_number_prefix', 'INV-' ) ); |
|
717 | - $prefix = sanitize_text_field( apply_filters( 'getpaid_invoice_type_prefix', $prefix, $type ) ); |
|
718 | - $postfix = sanitize_text_field( (string) wpinv_get_option( 'invoice_number_postfix' ) ); |
|
719 | - $postfix = sanitize_text_field( apply_filters( 'getpaid_invoice_type_postfix', $postfix, $type ) ); |
|
720 | - $formatted_number = zeroise( absint( $number ), $padd ); |
|
715 | + $padd = absint((int) wpinv_get_option('invoice_number_padd', 5)); |
|
716 | + $prefix = sanitize_text_field((string) wpinv_get_option('invoice_number_prefix', 'INV-')); |
|
717 | + $prefix = sanitize_text_field(apply_filters('getpaid_invoice_type_prefix', $prefix, $type)); |
|
718 | + $postfix = sanitize_text_field((string) wpinv_get_option('invoice_number_postfix')); |
|
719 | + $postfix = sanitize_text_field(apply_filters('getpaid_invoice_type_postfix', $postfix, $type)); |
|
720 | + $formatted_number = zeroise(absint($number), $padd); |
|
721 | 721 | |
722 | 722 | // Add the prefix and post fix. |
723 | 723 | $formatted_number = $prefix . $formatted_number . $postfix; |
724 | 724 | |
725 | - return apply_filters( 'wpinv_format_invoice_number', $formatted_number, $number, $prefix, $postfix, $padd ); |
|
725 | + return apply_filters('wpinv_format_invoice_number', $formatted_number, $number, $prefix, $postfix, $padd); |
|
726 | 726 | } |
727 | 727 | |
728 | 728 | /** |
@@ -731,58 +731,58 @@ discard block |
||
731 | 731 | * @param string $type. |
732 | 732 | * @return int|null|bool |
733 | 733 | */ |
734 | -function wpinv_get_next_invoice_number( $type = '' ) { |
|
734 | +function wpinv_get_next_invoice_number($type = '') { |
|
735 | 735 | |
736 | 736 | // Allow plugins to overide this. |
737 | - $check = apply_filters( 'wpinv_get_pre_next_invoice_number', null, $type ); |
|
738 | - if ( null !== $check ) { |
|
737 | + $check = apply_filters('wpinv_get_pre_next_invoice_number', null, $type); |
|
738 | + if (null !== $check) { |
|
739 | 739 | return $check; |
740 | 740 | } |
741 | 741 | |
742 | 742 | // Ensure sequential invoice numbers is active. |
743 | - if ( ! wpinv_sequential_number_active() ) { |
|
743 | + if (!wpinv_sequential_number_active()) { |
|
744 | 744 | return false; |
745 | 745 | } |
746 | 746 | |
747 | 747 | // Retrieve the current number and the start number. |
748 | - $number = (int) get_option( 'wpinv_last_invoice_number', 0 ); |
|
749 | - $start = absint( (int) wpinv_get_option( 'invoice_sequence_start', 1 ) ); |
|
748 | + $number = (int) get_option('wpinv_last_invoice_number', 0); |
|
749 | + $start = absint((int) wpinv_get_option('invoice_sequence_start', 1)); |
|
750 | 750 | |
751 | 751 | // Ensure that we are starting at a positive integer. |
752 | - $start = max( $start, 1 ); |
|
752 | + $start = max($start, 1); |
|
753 | 753 | |
754 | 754 | // If this is the first invoice, use the start number. |
755 | - $number = max( $start, $number ); |
|
755 | + $number = max($start, $number); |
|
756 | 756 | |
757 | 757 | // Format the invoice number. |
758 | - $formatted_number = wpinv_format_invoice_number( $number, $type ); |
|
758 | + $formatted_number = wpinv_format_invoice_number($number, $type); |
|
759 | 759 | |
760 | 760 | // Ensure that this number is unique. |
761 | - $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $formatted_number, 'number' ); |
|
761 | + $invoice_id = WPInv_Invoice::get_invoice_id_by_field($formatted_number, 'number'); |
|
762 | 762 | |
763 | 763 | // We found a match. Nice. |
764 | - if ( empty( $invoice_id ) ) { |
|
765 | - update_option( 'wpinv_last_invoice_number', $number ); |
|
766 | - return apply_filters( 'wpinv_get_next_invoice_number', $number ); |
|
764 | + if (empty($invoice_id)) { |
|
765 | + update_option('wpinv_last_invoice_number', $number); |
|
766 | + return apply_filters('wpinv_get_next_invoice_number', $number); |
|
767 | 767 | } |
768 | 768 | |
769 | - update_option( 'wpinv_last_invoice_number', $number + 1 ); |
|
770 | - return wpinv_get_next_invoice_number( $type ); |
|
769 | + update_option('wpinv_last_invoice_number', $number + 1); |
|
770 | + return wpinv_get_next_invoice_number($type); |
|
771 | 771 | |
772 | 772 | } |
773 | 773 | |
774 | 774 | /** |
775 | 775 | * The prefix used for invoice paths. |
776 | 776 | */ |
777 | -function wpinv_post_name_prefix( $post_type = 'wpi_invoice' ) { |
|
778 | - return apply_filters( 'wpinv_post_name_prefix', 'inv-', $post_type ); |
|
777 | +function wpinv_post_name_prefix($post_type = 'wpi_invoice') { |
|
778 | + return apply_filters('wpinv_post_name_prefix', 'inv-', $post_type); |
|
779 | 779 | } |
780 | 780 | |
781 | -function wpinv_generate_post_name( $post_ID ) { |
|
782 | - $prefix = wpinv_post_name_prefix( get_post_type( $post_ID ) ); |
|
783 | - $post_name = sanitize_title( $prefix . $post_ID ); |
|
781 | +function wpinv_generate_post_name($post_ID) { |
|
782 | + $prefix = wpinv_post_name_prefix(get_post_type($post_ID)); |
|
783 | + $post_name = sanitize_title($prefix . $post_ID); |
|
784 | 784 | |
785 | - return apply_filters( 'wpinv_generate_post_name', $post_name, $post_ID, $prefix ); |
|
785 | + return apply_filters('wpinv_generate_post_name', $post_name, $post_ID, $prefix); |
|
786 | 786 | } |
787 | 787 | |
788 | 788 | /** |
@@ -790,8 +790,8 @@ discard block |
||
790 | 790 | * |
791 | 791 | * @param int|string|object|WPInv_Invoice|WPInv_Legacy_Invoice|WP_Post $invoice Invoice id, key, transaction id, number or object. |
792 | 792 | */ |
793 | -function wpinv_is_invoice_viewed( $invoice ) { |
|
794 | - $invoice = new WPInv_Invoice( $invoice ); |
|
793 | +function wpinv_is_invoice_viewed($invoice) { |
|
794 | + $invoice = new WPInv_Invoice($invoice); |
|
795 | 795 | return (bool) $invoice->get_is_viewed(); |
796 | 796 | } |
797 | 797 | |
@@ -800,17 +800,17 @@ discard block |
||
800 | 800 | * |
801 | 801 | * @param int|string|object|WPInv_Invoice|WPInv_Legacy_Invoice|WP_Post $invoice Invoice id, key, transaction id, number or object. |
802 | 802 | */ |
803 | -function getpaid_maybe_mark_invoice_as_viewed( $invoice ) { |
|
804 | - $invoice = new WPInv_Invoice( $invoice ); |
|
803 | +function getpaid_maybe_mark_invoice_as_viewed($invoice) { |
|
804 | + $invoice = new WPInv_Invoice($invoice); |
|
805 | 805 | |
806 | - if ( get_current_user_id() == $invoice->get_user_id() && ! $invoice->get_is_viewed() ) { |
|
807 | - $invoice->set_is_viewed( true ); |
|
806 | + if (get_current_user_id() == $invoice->get_user_id() && !$invoice->get_is_viewed()) { |
|
807 | + $invoice->set_is_viewed(true); |
|
808 | 808 | $invoice->save(); |
809 | 809 | } |
810 | 810 | |
811 | 811 | } |
812 | -add_action( 'wpinv_invoice_print_before_display', 'getpaid_maybe_mark_invoice_as_viewed' ); |
|
813 | -add_action( 'wpinv_before_receipt', 'getpaid_maybe_mark_invoice_as_viewed' ); |
|
812 | +add_action('wpinv_invoice_print_before_display', 'getpaid_maybe_mark_invoice_as_viewed'); |
|
813 | +add_action('wpinv_before_receipt', 'getpaid_maybe_mark_invoice_as_viewed'); |
|
814 | 814 | |
815 | 815 | /** |
816 | 816 | * Processes an invoice refund. |
@@ -819,27 +819,27 @@ discard block |
||
819 | 819 | * @param array $status_transition |
820 | 820 | * @todo: descrease customer/store earnings |
821 | 821 | */ |
822 | -function getpaid_maybe_process_refund( $invoice, $status_transition ) { |
|
822 | +function getpaid_maybe_process_refund($invoice, $status_transition) { |
|
823 | 823 | |
824 | - if ( empty( $status_transition['from'] ) || ! in_array( $status_transition['from'], array( 'publish', 'wpi-processing', 'wpi-renewal' ) ) ) { |
|
824 | + if (empty($status_transition['from']) || !in_array($status_transition['from'], array('publish', 'wpi-processing', 'wpi-renewal'))) { |
|
825 | 825 | return; |
826 | 826 | } |
827 | 827 | |
828 | 828 | $discount_code = $invoice->get_discount_code(); |
829 | - if ( ! empty( $discount_code ) ) { |
|
830 | - $discount = wpinv_get_discount_obj( $discount_code ); |
|
829 | + if (!empty($discount_code)) { |
|
830 | + $discount = wpinv_get_discount_obj($discount_code); |
|
831 | 831 | |
832 | - if ( $discount->exists() ) { |
|
832 | + if ($discount->exists()) { |
|
833 | 833 | $discount->increase_usage( -1 ); |
834 | 834 | } |
835 | 835 | |
836 | 836 | } |
837 | 837 | |
838 | - do_action( 'wpinv_pre_refund_invoice', $invoice, $invoice->get_id() ); |
|
839 | - do_action( 'wpinv_refund_invoice', $invoice, $invoice->get_id() ); |
|
840 | - do_action( 'wpinv_post_refund_invoice', $invoice, $invoice->get_id() ); |
|
838 | + do_action('wpinv_pre_refund_invoice', $invoice, $invoice->get_id()); |
|
839 | + do_action('wpinv_refund_invoice', $invoice, $invoice->get_id()); |
|
840 | + do_action('wpinv_post_refund_invoice', $invoice, $invoice->get_id()); |
|
841 | 841 | } |
842 | -add_action( 'getpaid_invoice_status_wpi-refunded', 'getpaid_maybe_process_refund', 10, 2 ); |
|
842 | +add_action('getpaid_invoice_status_wpi-refunded', 'getpaid_maybe_process_refund', 10, 2); |
|
843 | 843 | |
844 | 844 | |
845 | 845 | /** |
@@ -847,48 +847,48 @@ discard block |
||
847 | 847 | * |
848 | 848 | * @param int $invoice_id |
849 | 849 | */ |
850 | -function getpaid_process_invoice_payment( $invoice_id ) { |
|
850 | +function getpaid_process_invoice_payment($invoice_id) { |
|
851 | 851 | |
852 | 852 | // Fetch the invoice. |
853 | - $invoice = new WPInv_Invoice( $invoice_id ); |
|
853 | + $invoice = new WPInv_Invoice($invoice_id); |
|
854 | 854 | |
855 | 855 | // We only want to do this once. |
856 | - if ( 1 == get_post_meta( $invoice->get_id(), 'wpinv_processed_payment', true ) ) { |
|
856 | + if (1 == get_post_meta($invoice->get_id(), 'wpinv_processed_payment', true)) { |
|
857 | 857 | return; |
858 | 858 | } |
859 | 859 | |
860 | - update_post_meta( $invoice->get_id(), 'wpinv_processed_payment', 1 ); |
|
860 | + update_post_meta($invoice->get_id(), 'wpinv_processed_payment', 1); |
|
861 | 861 | |
862 | 862 | // Fires when processing a payment. |
863 | - do_action( 'getpaid_process_payment', $invoice ); |
|
863 | + do_action('getpaid_process_payment', $invoice); |
|
864 | 864 | |
865 | 865 | // Fire an action for each invoice item. |
866 | - foreach( $invoice->get_items() as $item ) { |
|
867 | - do_action( 'getpaid_process_item_payment', $item, $invoice ); |
|
866 | + foreach ($invoice->get_items() as $item) { |
|
867 | + do_action('getpaid_process_item_payment', $item, $invoice); |
|
868 | 868 | } |
869 | 869 | |
870 | 870 | // Increase discount usage. |
871 | 871 | $discount_code = $invoice->get_discount_code(); |
872 | - if ( ! empty( $discount_code ) && ! $invoice->is_renewal() ) { |
|
873 | - $discount = wpinv_get_discount_obj( $discount_code ); |
|
872 | + if (!empty($discount_code) && !$invoice->is_renewal()) { |
|
873 | + $discount = wpinv_get_discount_obj($discount_code); |
|
874 | 874 | |
875 | - if ( $discount->exists() ) { |
|
875 | + if ($discount->exists()) { |
|
876 | 876 | $discount->increase_usage(); |
877 | 877 | } |
878 | 878 | |
879 | 879 | } |
880 | 880 | |
881 | 881 | // Record reverse vat. |
882 | - if ( 'invoice' == $invoice->get_type() && wpinv_use_taxes() && ! $invoice->get_disable_taxes() ) { |
|
882 | + if ('invoice' == $invoice->get_type() && wpinv_use_taxes() && !$invoice->get_disable_taxes()) { |
|
883 | 883 | |
884 | - if ( wpinv_same_country_exempt_vat() && wpinv_is_base_country( $invoice->get_country() ) ) { |
|
885 | - $invoice->add_note( __( 'VAT was reverse charged', 'invoicing' ), false, false, true ); |
|
884 | + if (wpinv_same_country_exempt_vat() && wpinv_is_base_country($invoice->get_country())) { |
|
885 | + $invoice->add_note(__('VAT was reverse charged', 'invoicing'), false, false, true); |
|
886 | 886 | } |
887 | 887 | |
888 | 888 | } |
889 | 889 | |
890 | 890 | } |
891 | -add_action( 'getpaid_invoice_payment_status_changed', 'getpaid_process_invoice_payment' ); |
|
891 | +add_action('getpaid_invoice_payment_status_changed', 'getpaid_process_invoice_payment'); |
|
892 | 892 | |
893 | 893 | /** |
894 | 894 | * Returns an array of invoice item columns |
@@ -896,13 +896,13 @@ discard block |
||
896 | 896 | * @param int|WPInv_Invoice $invoice |
897 | 897 | * @return array |
898 | 898 | */ |
899 | -function getpaid_invoice_item_columns( $invoice ) { |
|
899 | +function getpaid_invoice_item_columns($invoice) { |
|
900 | 900 | |
901 | 901 | // Prepare the invoice. |
902 | - $invoice = new WPInv_Invoice( $invoice ); |
|
902 | + $invoice = new WPInv_Invoice($invoice); |
|
903 | 903 | |
904 | 904 | // Abort if there is no invoice. |
905 | - if ( 0 == $invoice->get_id() ) { |
|
905 | + if (0 == $invoice->get_id()) { |
|
906 | 906 | return array(); |
907 | 907 | } |
908 | 908 | |
@@ -910,47 +910,47 @@ discard block |
||
910 | 910 | $columns = apply_filters( |
911 | 911 | 'getpaid_invoice_item_columns', |
912 | 912 | array( |
913 | - 'name' => __( 'Item', 'invoicing' ), |
|
914 | - 'price' => __( 'Price', 'invoicing' ), |
|
915 | - 'quantity' => __( 'Quantity', 'invoicing' ), |
|
916 | - 'subtotal' => __( 'Subtotal', 'invoicing' ), |
|
913 | + 'name' => __('Item', 'invoicing'), |
|
914 | + 'price' => __('Price', 'invoicing'), |
|
915 | + 'quantity' => __('Quantity', 'invoicing'), |
|
916 | + 'subtotal' => __('Subtotal', 'invoicing'), |
|
917 | 917 | ), |
918 | 918 | $invoice |
919 | 919 | ); |
920 | 920 | |
921 | 921 | // Quantities. |
922 | - if ( isset( $columns[ 'quantity' ] ) ) { |
|
922 | + if (isset($columns['quantity'])) { |
|
923 | 923 | |
924 | - if ( 'hours' == $invoice->get_template() ) { |
|
925 | - $columns[ 'quantity' ] = __( 'Hours', 'invoicing' ); |
|
924 | + if ('hours' == $invoice->get_template()) { |
|
925 | + $columns['quantity'] = __('Hours', 'invoicing'); |
|
926 | 926 | } |
927 | 927 | |
928 | - if ( ! wpinv_item_quantities_enabled() || 'amount' == $invoice->get_template() ) { |
|
929 | - unset( $columns[ 'quantity' ] ); |
|
928 | + if (!wpinv_item_quantities_enabled() || 'amount' == $invoice->get_template()) { |
|
929 | + unset($columns['quantity']); |
|
930 | 930 | } |
931 | 931 | |
932 | 932 | } |
933 | 933 | |
934 | 934 | |
935 | 935 | // Price. |
936 | - if ( isset( $columns[ 'price' ] ) ) { |
|
936 | + if (isset($columns['price'])) { |
|
937 | 937 | |
938 | - if ( 'amount' == $invoice->get_template() ) { |
|
939 | - $columns[ 'price' ] = __( 'Amount', 'invoicing' ); |
|
938 | + if ('amount' == $invoice->get_template()) { |
|
939 | + $columns['price'] = __('Amount', 'invoicing'); |
|
940 | 940 | } |
941 | 941 | |
942 | - if ( 'hours' == $invoice->get_template() ) { |
|
943 | - $columns[ 'price' ] = __( 'Rate', 'invoicing' ); |
|
942 | + if ('hours' == $invoice->get_template()) { |
|
943 | + $columns['price'] = __('Rate', 'invoicing'); |
|
944 | 944 | } |
945 | 945 | |
946 | 946 | } |
947 | 947 | |
948 | 948 | |
949 | 949 | // Sub total. |
950 | - if ( isset( $columns[ 'subtotal' ] ) ) { |
|
950 | + if (isset($columns['subtotal'])) { |
|
951 | 951 | |
952 | - if ( 'amount' == $invoice->get_template() ) { |
|
953 | - unset( $columns[ 'subtotal' ] ); |
|
952 | + if ('amount' == $invoice->get_template()) { |
|
953 | + unset($columns['subtotal']); |
|
954 | 954 | } |
955 | 955 | |
956 | 956 | } |
@@ -964,30 +964,30 @@ discard block |
||
964 | 964 | * @param int|WPInv_Invoice $invoice |
965 | 965 | * @return array |
966 | 966 | */ |
967 | -function getpaid_invoice_totals_rows( $invoice ) { |
|
967 | +function getpaid_invoice_totals_rows($invoice) { |
|
968 | 968 | |
969 | 969 | // Prepare the invoice. |
970 | - $invoice = new WPInv_Invoice( $invoice ); |
|
970 | + $invoice = new WPInv_Invoice($invoice); |
|
971 | 971 | |
972 | 972 | // Abort if there is no invoice. |
973 | - if ( 0 == $invoice->get_id() ) { |
|
973 | + if (0 == $invoice->get_id()) { |
|
974 | 974 | return array(); |
975 | 975 | } |
976 | 976 | |
977 | 977 | $totals = apply_filters( |
978 | 978 | 'getpaid_invoice_totals_rows', |
979 | 979 | array( |
980 | - 'subtotal' => __( 'Subtotal', 'invoicing' ), |
|
981 | - 'tax' => __( 'Tax', 'invoicing' ), |
|
982 | - 'fee' => __( 'Fee', 'invoicing' ), |
|
983 | - 'discount' => __( 'Discount', 'invoicing' ), |
|
984 | - 'total' => __( 'Total', 'invoicing' ), |
|
980 | + 'subtotal' => __('Subtotal', 'invoicing'), |
|
981 | + 'tax' => __('Tax', 'invoicing'), |
|
982 | + 'fee' => __('Fee', 'invoicing'), |
|
983 | + 'discount' => __('Discount', 'invoicing'), |
|
984 | + 'total' => __('Total', 'invoicing'), |
|
985 | 985 | ), |
986 | 986 | $invoice |
987 | 987 | ); |
988 | 988 | |
989 | - if ( ( $invoice->get_disable_taxes() || ! wpinv_use_taxes() ) && isset( $totals['tax'] ) ) { |
|
990 | - unset( $totals['tax'] ); |
|
989 | + if (($invoice->get_disable_taxes() || !wpinv_use_taxes()) && isset($totals['tax'])) { |
|
990 | + unset($totals['tax']); |
|
991 | 991 | } |
992 | 992 | |
993 | 993 | return $totals; |
@@ -998,47 +998,47 @@ discard block |
||
998 | 998 | * |
999 | 999 | * @param WPInv_Invoice $invoice |
1000 | 1000 | */ |
1001 | -function getpaid_new_invoice( $invoice ) { |
|
1001 | +function getpaid_new_invoice($invoice) { |
|
1002 | 1002 | |
1003 | - if ( ! $invoice->get_status() ) { |
|
1003 | + if (!$invoice->get_status()) { |
|
1004 | 1004 | return; |
1005 | 1005 | } |
1006 | 1006 | |
1007 | 1007 | // Add an invoice created note. |
1008 | 1008 | $invoice->add_note( |
1009 | 1009 | sprintf( |
1010 | - __( '%s created with the status "%s".', 'invoicing' ), |
|
1011 | - ucfirst( $invoice->get_invoice_quote_type() ), |
|
1012 | - wpinv_status_nicename( $invoice->get_status(), $invoice ) |
|
1010 | + __('%s created with the status "%s".', 'invoicing'), |
|
1011 | + ucfirst($invoice->get_invoice_quote_type()), |
|
1012 | + wpinv_status_nicename($invoice->get_status(), $invoice) |
|
1013 | 1013 | ) |
1014 | 1014 | ); |
1015 | 1015 | |
1016 | 1016 | } |
1017 | -add_action( 'getpaid_new_invoice', 'getpaid_new_invoice' ); |
|
1017 | +add_action('getpaid_new_invoice', 'getpaid_new_invoice'); |
|
1018 | 1018 | |
1019 | 1019 | /** |
1020 | 1020 | * This function updates invoice caches. |
1021 | 1021 | * |
1022 | 1022 | * @param WPInv_Invoice $invoice |
1023 | 1023 | */ |
1024 | -function getpaid_update_invoice_caches( $invoice ) { |
|
1024 | +function getpaid_update_invoice_caches($invoice) { |
|
1025 | 1025 | |
1026 | 1026 | // Cache invoice number. |
1027 | - wp_cache_set( $invoice->get_number(), $invoice->get_id(), "getpaid_invoice_numbers_to_invoice_ids" ); |
|
1027 | + wp_cache_set($invoice->get_number(), $invoice->get_id(), "getpaid_invoice_numbers_to_invoice_ids"); |
|
1028 | 1028 | |
1029 | 1029 | // Cache invoice key. |
1030 | - wp_cache_set( $invoice->get_key(), $invoice->get_id(), "getpaid_invoice_keys_to_invoice_ids" ); |
|
1030 | + wp_cache_set($invoice->get_key(), $invoice->get_id(), "getpaid_invoice_keys_to_invoice_ids"); |
|
1031 | 1031 | |
1032 | 1032 | // (Maybe) cache transaction id. |
1033 | 1033 | $transaction_id = $invoice->get_transaction_id(); |
1034 | 1034 | |
1035 | - if ( ! empty( $transaction_id ) ) { |
|
1036 | - wp_cache_set( $transaction_id, $invoice->get_id(), "getpaid_invoice_transaction_ids_to_invoice_ids" ); |
|
1035 | + if (!empty($transaction_id)) { |
|
1036 | + wp_cache_set($transaction_id, $invoice->get_id(), "getpaid_invoice_transaction_ids_to_invoice_ids"); |
|
1037 | 1037 | } |
1038 | 1038 | |
1039 | 1039 | } |
1040 | -add_action( 'getpaid_new_invoice', 'getpaid_update_invoice_caches', 5 ); |
|
1041 | -add_action( 'getpaid_update_invoice', 'getpaid_update_invoice_caches', 5 ); |
|
1040 | +add_action('getpaid_new_invoice', 'getpaid_update_invoice_caches', 5); |
|
1041 | +add_action('getpaid_update_invoice', 'getpaid_update_invoice_caches', 5); |
|
1042 | 1042 | |
1043 | 1043 | /** |
1044 | 1044 | * Duplicates an invoice. |
@@ -1048,7 +1048,7 @@ discard block |
||
1048 | 1048 | * @param WPInv_Invoice $old_invoice The invoice to duplicate |
1049 | 1049 | * @return WPInv_Invoice The new invoice. |
1050 | 1050 | */ |
1051 | -function getpaid_duplicate_invoice( $old_invoice ) { |
|
1051 | +function getpaid_duplicate_invoice($old_invoice) { |
|
1052 | 1052 | |
1053 | 1053 | // Create the new invoice. |
1054 | 1054 | $invoice = new WPInv_Invoice(); |
@@ -1109,123 +1109,123 @@ discard block |
||
1109 | 1109 | * @param WPInv_Invoice $invoice |
1110 | 1110 | * @return array |
1111 | 1111 | */ |
1112 | -function getpaid_get_invoice_meta( $invoice ) { |
|
1112 | +function getpaid_get_invoice_meta($invoice) { |
|
1113 | 1113 | |
1114 | 1114 | // Load the invoice meta. |
1115 | 1115 | $meta = array( |
1116 | 1116 | |
1117 | 1117 | 'number' => array( |
1118 | 1118 | 'label' => sprintf( |
1119 | - __( '%s Number', 'invoicing' ), |
|
1120 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
1119 | + __('%s Number', 'invoicing'), |
|
1120 | + ucfirst($invoice->get_invoice_quote_type()) |
|
1121 | 1121 | ), |
1122 | - 'value' => sanitize_text_field( $invoice->get_number() ), |
|
1122 | + 'value' => sanitize_text_field($invoice->get_number()), |
|
1123 | 1123 | ), |
1124 | 1124 | |
1125 | 1125 | 'status' => array( |
1126 | 1126 | 'label' => sprintf( |
1127 | - __( '%s Status', 'invoicing' ), |
|
1128 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
1127 | + __('%s Status', 'invoicing'), |
|
1128 | + ucfirst($invoice->get_invoice_quote_type()) |
|
1129 | 1129 | ), |
1130 | 1130 | 'value' => $invoice->get_status_label_html(), |
1131 | 1131 | ), |
1132 | 1132 | |
1133 | 1133 | 'date' => array( |
1134 | 1134 | 'label' => sprintf( |
1135 | - __( '%s Date', 'invoicing' ), |
|
1136 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
1135 | + __('%s Date', 'invoicing'), |
|
1136 | + ucfirst($invoice->get_invoice_quote_type()) |
|
1137 | 1137 | ), |
1138 | - 'value' => getpaid_format_date( $invoice->get_created_date() ), |
|
1138 | + 'value' => getpaid_format_date($invoice->get_created_date()), |
|
1139 | 1139 | ), |
1140 | 1140 | |
1141 | 1141 | 'date_paid' => array( |
1142 | - 'label' => __( 'Paid On', 'invoicing' ), |
|
1143 | - 'value' => getpaid_format_date( $invoice->get_completed_date() ), |
|
1142 | + 'label' => __('Paid On', 'invoicing'), |
|
1143 | + 'value' => getpaid_format_date($invoice->get_completed_date()), |
|
1144 | 1144 | ), |
1145 | 1145 | |
1146 | 1146 | 'gateway' => array( |
1147 | - 'label' => __( 'Payment Method', 'invoicing' ), |
|
1148 | - 'value' => sanitize_text_field( $invoice->get_gateway_title() ), |
|
1147 | + 'label' => __('Payment Method', 'invoicing'), |
|
1148 | + 'value' => sanitize_text_field($invoice->get_gateway_title()), |
|
1149 | 1149 | ), |
1150 | 1150 | |
1151 | 1151 | 'transaction_id' => array( |
1152 | - 'label' => __( 'Transaction ID', 'invoicing' ), |
|
1153 | - 'value' => sanitize_text_field( $invoice->get_transaction_id() ), |
|
1152 | + 'label' => __('Transaction ID', 'invoicing'), |
|
1153 | + 'value' => sanitize_text_field($invoice->get_transaction_id()), |
|
1154 | 1154 | ), |
1155 | 1155 | |
1156 | 1156 | 'due_date' => array( |
1157 | - 'label' => __( 'Due Date', 'invoicing' ), |
|
1158 | - 'value' => getpaid_format_date( $invoice->get_due_date() ), |
|
1157 | + 'label' => __('Due Date', 'invoicing'), |
|
1158 | + 'value' => getpaid_format_date($invoice->get_due_date()), |
|
1159 | 1159 | ), |
1160 | 1160 | |
1161 | 1161 | 'vat_number' => array( |
1162 | - 'label' => __( 'VAT Number', 'invoicing' ), |
|
1163 | - 'value' => sanitize_text_field( $invoice->get_vat_number() ), |
|
1162 | + 'label' => __('VAT Number', 'invoicing'), |
|
1163 | + 'value' => sanitize_text_field($invoice->get_vat_number()), |
|
1164 | 1164 | ), |
1165 | 1165 | |
1166 | 1166 | ); |
1167 | 1167 | |
1168 | 1168 | // If it is not paid, remove the date of payment. |
1169 | - if ( ! $invoice->is_paid() ) { |
|
1170 | - unset( $meta[ 'date_paid' ] ); |
|
1171 | - unset( $meta[ 'transaction_id' ] ); |
|
1169 | + if (!$invoice->is_paid()) { |
|
1170 | + unset($meta['date_paid']); |
|
1171 | + unset($meta['transaction_id']); |
|
1172 | 1172 | } |
1173 | 1173 | |
1174 | - if ( ! $invoice->is_paid() || 'none' == $invoice->get_gateway() ) { |
|
1175 | - unset( $meta[ 'gateway' ] ); |
|
1174 | + if (!$invoice->is_paid() || 'none' == $invoice->get_gateway()) { |
|
1175 | + unset($meta['gateway']); |
|
1176 | 1176 | } |
1177 | 1177 | |
1178 | 1178 | // Only display the due date if due dates are enabled. |
1179 | - if ( ! $invoice->needs_payment() || ! wpinv_get_option( 'overdue_active' ) ) { |
|
1180 | - unset( $meta[ 'due_date' ] ); |
|
1179 | + if (!$invoice->needs_payment() || !wpinv_get_option('overdue_active')) { |
|
1180 | + unset($meta['due_date']); |
|
1181 | 1181 | } |
1182 | 1182 | |
1183 | 1183 | // Only display the vat number if taxes are enabled. |
1184 | - if ( ! wpinv_use_taxes() ) { |
|
1185 | - unset( $meta[ 'vat_number' ] ); |
|
1184 | + if (!wpinv_use_taxes()) { |
|
1185 | + unset($meta['vat_number']); |
|
1186 | 1186 | } |
1187 | 1187 | |
1188 | - if ( $invoice->is_recurring() ) { |
|
1188 | + if ($invoice->is_recurring()) { |
|
1189 | 1189 | |
1190 | 1190 | // Link to the parent invoice. |
1191 | - if ( $invoice->is_renewal() ) { |
|
1191 | + if ($invoice->is_renewal()) { |
|
1192 | 1192 | |
1193 | - $meta[ 'parent' ] = array( |
|
1193 | + $meta['parent'] = array( |
|
1194 | 1194 | |
1195 | 1195 | 'label' => sprintf( |
1196 | - __( 'Parent %s', 'invoicing' ), |
|
1197 | - ucfirst( $invoice->get_invoice_quote_type() ) |
|
1196 | + __('Parent %s', 'invoicing'), |
|
1197 | + ucfirst($invoice->get_invoice_quote_type()) |
|
1198 | 1198 | ), |
1199 | 1199 | |
1200 | - 'value' => wpinv_invoice_link( $invoice->get_parent_id() ), |
|
1200 | + 'value' => wpinv_invoice_link($invoice->get_parent_id()), |
|
1201 | 1201 | |
1202 | 1202 | ); |
1203 | 1203 | |
1204 | 1204 | } |
1205 | 1205 | |
1206 | - $subscription = wpinv_get_subscription( $invoice ); |
|
1206 | + $subscription = wpinv_get_subscription($invoice); |
|
1207 | 1207 | |
1208 | - if ( ! empty ( $subscription ) ) { |
|
1208 | + if (!empty ($subscription)) { |
|
1209 | 1209 | |
1210 | 1210 | // Display the renewal date. |
1211 | - if ( $subscription->is_active() && 'cancelled' != $subscription->get_status() ) { |
|
1211 | + if ($subscription->is_active() && 'cancelled' != $subscription->get_status()) { |
|
1212 | 1212 | |
1213 | - $meta[ 'renewal_date' ] = array( |
|
1213 | + $meta['renewal_date'] = array( |
|
1214 | 1214 | |
1215 | - 'label' => __( 'Renews On', 'invoicing' ), |
|
1216 | - 'value' => getpaid_format_date( $subscription->get_expiration() ), |
|
1215 | + 'label' => __('Renews On', 'invoicing'), |
|
1216 | + 'value' => getpaid_format_date($subscription->get_expiration()), |
|
1217 | 1217 | |
1218 | 1218 | ); |
1219 | 1219 | |
1220 | 1220 | } |
1221 | 1221 | |
1222 | - if ( $invoice->is_parent() ) { |
|
1222 | + if ($invoice->is_parent()) { |
|
1223 | 1223 | |
1224 | 1224 | // Display the recurring amount. |
1225 | - $meta[ 'recurring_total' ] = array( |
|
1225 | + $meta['recurring_total'] = array( |
|
1226 | 1226 | |
1227 | - 'label' => __( 'Recurring Amount', 'invoicing' ), |
|
1228 | - 'value' => wpinv_price( $subscription->get_recurring_amount(), $invoice->get_currency() ), |
|
1227 | + 'label' => __('Recurring Amount', 'invoicing'), |
|
1228 | + 'value' => wpinv_price($subscription->get_recurring_amount(), $invoice->get_currency()), |
|
1229 | 1229 | |
1230 | 1230 | ); |
1231 | 1231 | |
@@ -1235,15 +1235,15 @@ discard block |
||
1235 | 1235 | } |
1236 | 1236 | |
1237 | 1237 | // Add the invoice total to the meta. |
1238 | - $meta[ 'invoice_total' ] = array( |
|
1238 | + $meta['invoice_total'] = array( |
|
1239 | 1239 | |
1240 | - 'label' => __( 'Total Amount', 'invoicing' ), |
|
1241 | - 'value' => wpinv_price( $invoice->get_total(), $invoice->get_currency() ), |
|
1240 | + 'label' => __('Total Amount', 'invoicing'), |
|
1241 | + 'value' => wpinv_price($invoice->get_total(), $invoice->get_currency()), |
|
1242 | 1242 | |
1243 | 1243 | ); |
1244 | 1244 | |
1245 | 1245 | // Provide a way for third party plugins to filter the meta. |
1246 | - $meta = apply_filters( 'getpaid_invoice_meta_data', $meta, $invoice ); |
|
1246 | + $meta = apply_filters('getpaid_invoice_meta_data', $meta, $invoice); |
|
1247 | 1247 | |
1248 | 1248 | return $meta; |
1249 | 1249 |
@@ -6,7 +6,7 @@ discard block |
||
6 | 6 | * @package Invoicing |
7 | 7 | */ |
8 | 8 | |
9 | -defined( 'ABSPATH' ) || exit; |
|
9 | +defined('ABSPATH') || exit; |
|
10 | 10 | |
11 | 11 | /** |
12 | 12 | * The Subscription Class |
@@ -68,27 +68,27 @@ discard block |
||
68 | 68 | * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
69 | 69 | * @param bool $deprecated |
70 | 70 | */ |
71 | - function __construct( $subscription = 0, $deprecated = false ) { |
|
71 | + function __construct($subscription = 0, $deprecated = false) { |
|
72 | 72 | |
73 | - parent::__construct( $subscription ); |
|
73 | + parent::__construct($subscription); |
|
74 | 74 | |
75 | - if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
76 | - $this->set_id( $subscription ); |
|
77 | - } elseif ( $subscription instanceof self ) { |
|
78 | - $this->set_id( $subscription->get_id() ); |
|
79 | - } elseif ( ! empty( $subscription->id ) ) { |
|
80 | - $this->set_id( $subscription->id ); |
|
81 | - } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
82 | - $this->set_id( $subscription_id ); |
|
75 | + if (!$deprecated && !empty($subscription) && is_numeric($subscription)) { |
|
76 | + $this->set_id($subscription); |
|
77 | + } elseif ($subscription instanceof self) { |
|
78 | + $this->set_id($subscription->get_id()); |
|
79 | + } elseif (!empty($subscription->id)) { |
|
80 | + $this->set_id($subscription->id); |
|
81 | + } elseif ($deprecated && $subscription_id = self::get_subscription_id_by_field($subscription, 'profile_id')) { |
|
82 | + $this->set_id($subscription_id); |
|
83 | 83 | } else { |
84 | - $this->set_object_read( true ); |
|
84 | + $this->set_object_read(true); |
|
85 | 85 | } |
86 | 86 | |
87 | 87 | // Load the datastore. |
88 | - $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
88 | + $this->data_store = GetPaid_Data_Store::load($this->data_store_name); |
|
89 | 89 | |
90 | - if ( $this->get_id() > 0 ) { |
|
91 | - $this->data_store->read( $this ); |
|
90 | + if ($this->get_id() > 0) { |
|
91 | + $this->data_store->read($this); |
|
92 | 92 | } |
93 | 93 | |
94 | 94 | } |
@@ -103,17 +103,17 @@ discard block |
||
103 | 103 | * @since 1.0.19 |
104 | 104 | * @return int |
105 | 105 | */ |
106 | - public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
106 | + public static function get_subscription_id_by_field($value, $field = 'profile_id') { |
|
107 | 107 | global $wpdb; |
108 | 108 | |
109 | 109 | // Trim the value. |
110 | - $value = trim( $value ); |
|
110 | + $value = trim($value); |
|
111 | 111 | |
112 | - if ( empty( $value ) ) { |
|
112 | + if (empty($value)) { |
|
113 | 113 | return 0; |
114 | 114 | } |
115 | 115 | |
116 | - if ( 'invoice_id' == $field ) { |
|
116 | + if ('invoice_id' == $field) { |
|
117 | 117 | $field = 'parent_payment_id'; |
118 | 118 | } |
119 | 119 | |
@@ -125,28 +125,28 @@ discard block |
||
125 | 125 | ); |
126 | 126 | |
127 | 127 | // Ensure a field has been passed. |
128 | - if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
128 | + if (empty($field) || !in_array($field, $fields)) { |
|
129 | 129 | return 0; |
130 | 130 | } |
131 | 131 | |
132 | 132 | // Maybe retrieve from the cache. |
133 | - $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
134 | - if ( ! empty( $subscription_id ) ) { |
|
133 | + $subscription_id = wp_cache_get($value, "getpaid_subscription_{$field}s_to_subscription_ids"); |
|
134 | + if (!empty($subscription_id)) { |
|
135 | 135 | return $subscription_id; |
136 | 136 | } |
137 | 137 | |
138 | 138 | // Fetch from the db. |
139 | 139 | $table = $wpdb->prefix . 'wpinv_subscriptions'; |
140 | 140 | $subscription_id = (int) $wpdb->get_var( |
141 | - $wpdb->prepare( "SELECT `id` FROM $table WHERE `$field`=%s LIMIT 1", $value ) |
|
141 | + $wpdb->prepare("SELECT `id` FROM $table WHERE `$field`=%s LIMIT 1", $value) |
|
142 | 142 | ); |
143 | 143 | |
144 | - if ( empty( $subscription_id ) ) { |
|
144 | + if (empty($subscription_id)) { |
|
145 | 145 | return 0; |
146 | 146 | } |
147 | 147 | |
148 | 148 | // Update the cache with our data. |
149 | - wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
149 | + wp_cache_set($value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids"); |
|
150 | 150 | |
151 | 151 | return $subscription_id; |
152 | 152 | } |
@@ -155,17 +155,17 @@ discard block |
||
155 | 155 | * Clears the subscription's cache. |
156 | 156 | */ |
157 | 157 | public function clear_cache() { |
158 | - wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
159 | - wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
160 | - wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
161 | - wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
158 | + wp_cache_delete($this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids'); |
|
159 | + wp_cache_delete($this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids'); |
|
160 | + wp_cache_delete($this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids'); |
|
161 | + wp_cache_delete($this->get_id(), 'getpaid_subscriptions'); |
|
162 | 162 | } |
163 | 163 | |
164 | 164 | /** |
165 | 165 | * Checks if a subscription key is set. |
166 | 166 | */ |
167 | - public function _isset( $key ) { |
|
168 | - return isset( $this->data[$key] ) || method_exists( $this, "get_$key" ); |
|
167 | + public function _isset($key) { |
|
168 | + return isset($this->data[$key]) || method_exists($this, "get_$key"); |
|
169 | 169 | } |
170 | 170 | |
171 | 171 | /* |
@@ -190,8 +190,8 @@ discard block |
||
190 | 190 | * @param string $context View or edit context. |
191 | 191 | * @return int |
192 | 192 | */ |
193 | - public function get_customer_id( $context = 'view' ) { |
|
194 | - return (int) $this->get_prop( 'customer_id', $context ); |
|
193 | + public function get_customer_id($context = 'view') { |
|
194 | + return (int) $this->get_prop('customer_id', $context); |
|
195 | 195 | } |
196 | 196 | |
197 | 197 | /** |
@@ -201,8 +201,8 @@ discard block |
||
201 | 201 | * @param string $context View or edit context. |
202 | 202 | * @return WP_User|false WP_User object on success, false on failure. |
203 | 203 | */ |
204 | - public function get_customer( $context = 'view' ) { |
|
205 | - return get_userdata( $this->get_customer_id( $context ) ); |
|
204 | + public function get_customer($context = 'view') { |
|
205 | + return get_userdata($this->get_customer_id($context)); |
|
206 | 206 | } |
207 | 207 | |
208 | 208 | /** |
@@ -212,8 +212,8 @@ discard block |
||
212 | 212 | * @param string $context View or edit context. |
213 | 213 | * @return int |
214 | 214 | */ |
215 | - public function get_parent_invoice_id( $context = 'view' ) { |
|
216 | - return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
215 | + public function get_parent_invoice_id($context = 'view') { |
|
216 | + return (int) $this->get_prop('parent_payment_id', $context); |
|
217 | 217 | } |
218 | 218 | |
219 | 219 | /** |
@@ -223,8 +223,8 @@ discard block |
||
223 | 223 | * @param string $context View or edit context. |
224 | 224 | * @return int |
225 | 225 | */ |
226 | - public function get_parent_payment_id( $context = 'view' ) { |
|
227 | - return $this->get_parent_invoice_id( $context ); |
|
226 | + public function get_parent_payment_id($context = 'view') { |
|
227 | + return $this->get_parent_invoice_id($context); |
|
228 | 228 | } |
229 | 229 | |
230 | 230 | /** |
@@ -233,8 +233,8 @@ discard block |
||
233 | 233 | * @since 1.0.0 |
234 | 234 | * @return int |
235 | 235 | */ |
236 | - public function get_original_payment_id( $context = 'view' ) { |
|
237 | - return $this->get_parent_invoice_id( $context ); |
|
236 | + public function get_original_payment_id($context = 'view') { |
|
237 | + return $this->get_parent_invoice_id($context); |
|
238 | 238 | } |
239 | 239 | |
240 | 240 | /** |
@@ -244,8 +244,8 @@ discard block |
||
244 | 244 | * @param string $context View or edit context. |
245 | 245 | * @return WPInv_Invoice |
246 | 246 | */ |
247 | - public function get_parent_invoice( $context = 'view' ) { |
|
248 | - return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
247 | + public function get_parent_invoice($context = 'view') { |
|
248 | + return new WPInv_Invoice($this->get_parent_invoice_id($context)); |
|
249 | 249 | } |
250 | 250 | |
251 | 251 | /** |
@@ -255,8 +255,8 @@ discard block |
||
255 | 255 | * @param string $context View or edit context. |
256 | 256 | * @return WPInv_Invoice |
257 | 257 | */ |
258 | - public function get_parent_payment( $context = 'view' ) { |
|
259 | - return $this->get_parent_invoice( $context ); |
|
258 | + public function get_parent_payment($context = 'view') { |
|
259 | + return $this->get_parent_invoice($context); |
|
260 | 260 | } |
261 | 261 | |
262 | 262 | /** |
@@ -266,8 +266,8 @@ discard block |
||
266 | 266 | * @param string $context View or edit context. |
267 | 267 | * @return int |
268 | 268 | */ |
269 | - public function get_product_id( $context = 'view' ) { |
|
270 | - return (int) $this->get_prop( 'product_id', $context ); |
|
269 | + public function get_product_id($context = 'view') { |
|
270 | + return (int) $this->get_prop('product_id', $context); |
|
271 | 271 | } |
272 | 272 | |
273 | 273 | /** |
@@ -277,8 +277,8 @@ discard block |
||
277 | 277 | * @param string $context View or edit context. |
278 | 278 | * @return WPInv_Item |
279 | 279 | */ |
280 | - public function get_product( $context = 'view' ) { |
|
281 | - return new WPInv_Item( $this->get_product_id( $context ) ); |
|
280 | + public function get_product($context = 'view') { |
|
281 | + return new WPInv_Item($this->get_product_id($context)); |
|
282 | 282 | } |
283 | 283 | |
284 | 284 | /** |
@@ -290,8 +290,8 @@ discard block |
||
290 | 290 | * @param string $context View or edit context. |
291 | 291 | * @return string |
292 | 292 | */ |
293 | - public function get_gateway( $context = 'view' ) { |
|
294 | - return $this->get_parent_invoice( $context )->get_gateway(); |
|
293 | + public function get_gateway($context = 'view') { |
|
294 | + return $this->get_parent_invoice($context)->get_gateway(); |
|
295 | 295 | } |
296 | 296 | |
297 | 297 | /** |
@@ -301,8 +301,8 @@ discard block |
||
301 | 301 | * @param string $context View or edit context. |
302 | 302 | * @return string |
303 | 303 | */ |
304 | - public function get_period( $context = 'view' ) { |
|
305 | - return $this->get_prop( 'period', $context ); |
|
304 | + public function get_period($context = 'view') { |
|
305 | + return $this->get_prop('period', $context); |
|
306 | 306 | } |
307 | 307 | |
308 | 308 | /** |
@@ -312,8 +312,8 @@ discard block |
||
312 | 312 | * @param string $context View or edit context. |
313 | 313 | * @return int |
314 | 314 | */ |
315 | - public function get_frequency( $context = 'view' ) { |
|
316 | - return (int) $this->get_prop( 'frequency', $context ); |
|
315 | + public function get_frequency($context = 'view') { |
|
316 | + return (int) $this->get_prop('frequency', $context); |
|
317 | 317 | } |
318 | 318 | |
319 | 319 | /** |
@@ -323,8 +323,8 @@ discard block |
||
323 | 323 | * @param string $context View or edit context. |
324 | 324 | * @return float |
325 | 325 | */ |
326 | - public function get_initial_amount( $context = 'view' ) { |
|
327 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
326 | + public function get_initial_amount($context = 'view') { |
|
327 | + return (float) wpinv_sanitize_amount($this->get_prop('initial_amount', $context)); |
|
328 | 328 | } |
329 | 329 | |
330 | 330 | /** |
@@ -334,8 +334,8 @@ discard block |
||
334 | 334 | * @param string $context View or edit context. |
335 | 335 | * @return float |
336 | 336 | */ |
337 | - public function get_recurring_amount( $context = 'view' ) { |
|
338 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
337 | + public function get_recurring_amount($context = 'view') { |
|
338 | + return (float) wpinv_sanitize_amount($this->get_prop('recurring_amount', $context)); |
|
339 | 339 | } |
340 | 340 | |
341 | 341 | /** |
@@ -345,8 +345,8 @@ discard block |
||
345 | 345 | * @param string $context View or edit context. |
346 | 346 | * @return int |
347 | 347 | */ |
348 | - public function get_bill_times( $context = 'view' ) { |
|
349 | - return (int) $this->get_prop( 'bill_times', $context ); |
|
348 | + public function get_bill_times($context = 'view') { |
|
349 | + return (int) $this->get_prop('bill_times', $context); |
|
350 | 350 | } |
351 | 351 | |
352 | 352 | /** |
@@ -356,8 +356,8 @@ discard block |
||
356 | 356 | * @param string $context View or edit context. |
357 | 357 | * @return string |
358 | 358 | */ |
359 | - public function get_transaction_id( $context = 'view' ) { |
|
360 | - return $this->get_prop( 'transaction_id', $context ); |
|
359 | + public function get_transaction_id($context = 'view') { |
|
360 | + return $this->get_prop('transaction_id', $context); |
|
361 | 361 | } |
362 | 362 | |
363 | 363 | /** |
@@ -367,8 +367,8 @@ discard block |
||
367 | 367 | * @param string $context View or edit context. |
368 | 368 | * @return string |
369 | 369 | */ |
370 | - public function get_created( $context = 'view' ) { |
|
371 | - return $this->get_prop( 'created', $context ); |
|
370 | + public function get_created($context = 'view') { |
|
371 | + return $this->get_prop('created', $context); |
|
372 | 372 | } |
373 | 373 | |
374 | 374 | /** |
@@ -378,8 +378,8 @@ discard block |
||
378 | 378 | * @param string $context View or edit context. |
379 | 379 | * @return string |
380 | 380 | */ |
381 | - public function get_date_created( $context = 'view' ) { |
|
382 | - return $this->get_created( $context ); |
|
381 | + public function get_date_created($context = 'view') { |
|
382 | + return $this->get_created($context); |
|
383 | 383 | } |
384 | 384 | |
385 | 385 | /** |
@@ -390,7 +390,7 @@ discard block |
||
390 | 390 | */ |
391 | 391 | public function get_time_created() { |
392 | 392 | $created = $this->get_date_created(); |
393 | - return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
393 | + return empty($created) ? current_time('timestamp') : strtotime($created, current_time('timestamp')); |
|
394 | 394 | } |
395 | 395 | |
396 | 396 | /** |
@@ -400,11 +400,11 @@ discard block |
||
400 | 400 | * @param string $context View or edit context. |
401 | 401 | * @return string |
402 | 402 | */ |
403 | - public function get_date_created_gmt( $context = 'view' ) { |
|
404 | - $date = $this->get_date_created( $context ); |
|
403 | + public function get_date_created_gmt($context = 'view') { |
|
404 | + $date = $this->get_date_created($context); |
|
405 | 405 | |
406 | - if ( $date ) { |
|
407 | - $date = get_gmt_from_date( $date ); |
|
406 | + if ($date) { |
|
407 | + $date = get_gmt_from_date($date); |
|
408 | 408 | } |
409 | 409 | return $date; |
410 | 410 | } |
@@ -416,8 +416,8 @@ discard block |
||
416 | 416 | * @param string $context View or edit context. |
417 | 417 | * @return string |
418 | 418 | */ |
419 | - public function get_next_renewal_date( $context = 'view' ) { |
|
420 | - return $this->get_prop( 'expiration', $context ); |
|
419 | + public function get_next_renewal_date($context = 'view') { |
|
420 | + return $this->get_prop('expiration', $context); |
|
421 | 421 | } |
422 | 422 | |
423 | 423 | /** |
@@ -427,8 +427,8 @@ discard block |
||
427 | 427 | * @param string $context View or edit context. |
428 | 428 | * @return string |
429 | 429 | */ |
430 | - public function get_expiration( $context = 'view' ) { |
|
431 | - return $this->get_next_renewal_date( $context ); |
|
430 | + public function get_expiration($context = 'view') { |
|
431 | + return $this->get_next_renewal_date($context); |
|
432 | 432 | } |
433 | 433 | |
434 | 434 | /** |
@@ -440,12 +440,12 @@ discard block |
||
440 | 440 | public function get_expiration_time() { |
441 | 441 | $expiration = $this->get_expiration(); |
442 | 442 | |
443 | - if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
444 | - return current_time( 'timestamp' ); |
|
443 | + if (empty($expiration) || '0000-00-00 00:00:00' == $expiration) { |
|
444 | + return current_time('timestamp'); |
|
445 | 445 | } |
446 | 446 | |
447 | - $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
448 | - return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
447 | + $expiration = strtotime($expiration, current_time('timestamp')); |
|
448 | + return $expiration < current_time('timestamp') ? current_time('timestamp') : $expiration; |
|
449 | 449 | } |
450 | 450 | |
451 | 451 | /** |
@@ -455,11 +455,11 @@ discard block |
||
455 | 455 | * @param string $context View or edit context. |
456 | 456 | * @return string |
457 | 457 | */ |
458 | - public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
459 | - $date = $this->get_next_renewal_date( $context ); |
|
458 | + public function get_next_renewal_date_gmt($context = 'view') { |
|
459 | + $date = $this->get_next_renewal_date($context); |
|
460 | 460 | |
461 | - if ( $date ) { |
|
462 | - $date = get_gmt_from_date( $date ); |
|
461 | + if ($date) { |
|
462 | + $date = get_gmt_from_date($date); |
|
463 | 463 | } |
464 | 464 | return $date; |
465 | 465 | } |
@@ -471,8 +471,8 @@ discard block |
||
471 | 471 | * @param string $context View or edit context. |
472 | 472 | * @return string |
473 | 473 | */ |
474 | - public function get_trial_period( $context = 'view' ) { |
|
475 | - return $this->get_prop( 'trial_period', $context ); |
|
474 | + public function get_trial_period($context = 'view') { |
|
475 | + return $this->get_prop('trial_period', $context); |
|
476 | 476 | } |
477 | 477 | |
478 | 478 | /** |
@@ -482,8 +482,8 @@ discard block |
||
482 | 482 | * @param string $context View or edit context. |
483 | 483 | * @return string |
484 | 484 | */ |
485 | - public function get_status( $context = 'view' ) { |
|
486 | - return $this->get_prop( 'status', $context ); |
|
485 | + public function get_status($context = 'view') { |
|
486 | + return $this->get_prop('status', $context); |
|
487 | 487 | } |
488 | 488 | |
489 | 489 | /** |
@@ -493,8 +493,8 @@ discard block |
||
493 | 493 | * @param string $context View or edit context. |
494 | 494 | * @return string |
495 | 495 | */ |
496 | - public function get_profile_id( $context = 'view' ) { |
|
497 | - return $this->get_prop( 'profile_id', $context ); |
|
496 | + public function get_profile_id($context = 'view') { |
|
497 | + return $this->get_prop('profile_id', $context); |
|
498 | 498 | } |
499 | 499 | |
500 | 500 | /* |
@@ -509,8 +509,8 @@ discard block |
||
509 | 509 | * @since 1.0.19 |
510 | 510 | * @param int $value The customer's id. |
511 | 511 | */ |
512 | - public function set_customer_id( $value ) { |
|
513 | - $this->set_prop( 'customer_id', (int) $value ); |
|
512 | + public function set_customer_id($value) { |
|
513 | + $this->set_prop('customer_id', (int) $value); |
|
514 | 514 | } |
515 | 515 | |
516 | 516 | /** |
@@ -519,8 +519,8 @@ discard block |
||
519 | 519 | * @since 1.0.19 |
520 | 520 | * @param int $value The parent invoice id. |
521 | 521 | */ |
522 | - public function set_parent_invoice_id( $value ) { |
|
523 | - $this->set_prop( 'parent_payment_id', (int) $value ); |
|
522 | + public function set_parent_invoice_id($value) { |
|
523 | + $this->set_prop('parent_payment_id', (int) $value); |
|
524 | 524 | } |
525 | 525 | |
526 | 526 | /** |
@@ -529,8 +529,8 @@ discard block |
||
529 | 529 | * @since 1.0.19 |
530 | 530 | * @param int $value The parent invoice id. |
531 | 531 | */ |
532 | - public function set_parent_payment_id( $value ) { |
|
533 | - $this->set_parent_invoice_id( $value ); |
|
532 | + public function set_parent_payment_id($value) { |
|
533 | + $this->set_parent_invoice_id($value); |
|
534 | 534 | } |
535 | 535 | |
536 | 536 | /** |
@@ -539,8 +539,8 @@ discard block |
||
539 | 539 | * @since 1.0.19 |
540 | 540 | * @param int $value The parent invoice id. |
541 | 541 | */ |
542 | - public function set_original_payment_id( $value ) { |
|
543 | - $this->set_parent_invoice_id( $value ); |
|
542 | + public function set_original_payment_id($value) { |
|
543 | + $this->set_parent_invoice_id($value); |
|
544 | 544 | } |
545 | 545 | |
546 | 546 | /** |
@@ -549,8 +549,8 @@ discard block |
||
549 | 549 | * @since 1.0.19 |
550 | 550 | * @param int $value The subscription product id. |
551 | 551 | */ |
552 | - public function set_product_id( $value ) { |
|
553 | - $this->set_prop( 'product_id', (int) $value ); |
|
552 | + public function set_product_id($value) { |
|
553 | + $this->set_prop('product_id', (int) $value); |
|
554 | 554 | } |
555 | 555 | |
556 | 556 | /** |
@@ -559,8 +559,8 @@ discard block |
||
559 | 559 | * @since 1.0.19 |
560 | 560 | * @param string $value The renewal period. |
561 | 561 | */ |
562 | - public function set_period( $value ) { |
|
563 | - $this->set_prop( 'period', $value ); |
|
562 | + public function set_period($value) { |
|
563 | + $this->set_prop('period', $value); |
|
564 | 564 | } |
565 | 565 | |
566 | 566 | /** |
@@ -569,9 +569,9 @@ discard block |
||
569 | 569 | * @since 1.0.19 |
570 | 570 | * @param int $value The subscription frequency. |
571 | 571 | */ |
572 | - public function set_frequency( $value ) { |
|
573 | - $value = empty( $value ) ? 1 : (int) $value; |
|
574 | - $this->set_prop( 'frequency', absint( $value ) ); |
|
572 | + public function set_frequency($value) { |
|
573 | + $value = empty($value) ? 1 : (int) $value; |
|
574 | + $this->set_prop('frequency', absint($value)); |
|
575 | 575 | } |
576 | 576 | |
577 | 577 | /** |
@@ -580,8 +580,8 @@ discard block |
||
580 | 580 | * @since 1.0.19 |
581 | 581 | * @param float $value The initial subcription amount. |
582 | 582 | */ |
583 | - public function set_initial_amount( $value ) { |
|
584 | - $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
583 | + public function set_initial_amount($value) { |
|
584 | + $this->set_prop('initial_amount', wpinv_sanitize_amount($value)); |
|
585 | 585 | } |
586 | 586 | |
587 | 587 | /** |
@@ -590,8 +590,8 @@ discard block |
||
590 | 590 | * @since 1.0.19 |
591 | 591 | * @param float $value The recurring subcription amount. |
592 | 592 | */ |
593 | - public function set_recurring_amount( $value ) { |
|
594 | - $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
593 | + public function set_recurring_amount($value) { |
|
594 | + $this->set_prop('recurring_amount', wpinv_sanitize_amount($value)); |
|
595 | 595 | } |
596 | 596 | |
597 | 597 | /** |
@@ -600,8 +600,8 @@ discard block |
||
600 | 600 | * @since 1.0.19 |
601 | 601 | * @param int $value Bill times. |
602 | 602 | */ |
603 | - public function set_bill_times( $value ) { |
|
604 | - $this->set_prop( 'bill_times', (int) $value ); |
|
603 | + public function set_bill_times($value) { |
|
604 | + $this->set_prop('bill_times', (int) $value); |
|
605 | 605 | } |
606 | 606 | |
607 | 607 | /** |
@@ -610,8 +610,8 @@ discard block |
||
610 | 610 | * @since 1.0.19 |
611 | 611 | * @param string $value Bill times. |
612 | 612 | */ |
613 | - public function set_transaction_id( $value ) { |
|
614 | - $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
613 | + public function set_transaction_id($value) { |
|
614 | + $this->set_prop('transaction_id', sanitize_text_field($value)); |
|
615 | 615 | } |
616 | 616 | |
617 | 617 | /** |
@@ -620,15 +620,15 @@ discard block |
||
620 | 620 | * @since 1.0.19 |
621 | 621 | * @param string $value strtotime compliant date. |
622 | 622 | */ |
623 | - public function set_created( $value ) { |
|
624 | - $date = strtotime( $value ); |
|
623 | + public function set_created($value) { |
|
624 | + $date = strtotime($value); |
|
625 | 625 | |
626 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
627 | - $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
626 | + if ($date && $value !== '0000-00-00 00:00:00') { |
|
627 | + $this->set_prop('created', date('Y-m-d H:i:s', $date)); |
|
628 | 628 | return; |
629 | 629 | } |
630 | 630 | |
631 | - $this->set_prop( 'created', '' ); |
|
631 | + $this->set_prop('created', ''); |
|
632 | 632 | |
633 | 633 | } |
634 | 634 | |
@@ -638,8 +638,8 @@ discard block |
||
638 | 638 | * @since 1.0.19 |
639 | 639 | * @param string $value strtotime compliant date. |
640 | 640 | */ |
641 | - public function set_date_created( $value ) { |
|
642 | - $this->set_created( $value ); |
|
641 | + public function set_date_created($value) { |
|
642 | + $this->set_created($value); |
|
643 | 643 | } |
644 | 644 | |
645 | 645 | /** |
@@ -648,15 +648,15 @@ discard block |
||
648 | 648 | * @since 1.0.19 |
649 | 649 | * @param string $value strtotime compliant date. |
650 | 650 | */ |
651 | - public function set_next_renewal_date( $value ) { |
|
652 | - $date = strtotime( $value ); |
|
651 | + public function set_next_renewal_date($value) { |
|
652 | + $date = strtotime($value); |
|
653 | 653 | |
654 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
655 | - $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
654 | + if ($date && $value !== '0000-00-00 00:00:00') { |
|
655 | + $this->set_prop('expiration', date('Y-m-d H:i:s', $date)); |
|
656 | 656 | return; |
657 | 657 | } |
658 | 658 | |
659 | - $this->set_prop( 'expiration', '' ); |
|
659 | + $this->set_prop('expiration', ''); |
|
660 | 660 | |
661 | 661 | } |
662 | 662 | |
@@ -666,8 +666,8 @@ discard block |
||
666 | 666 | * @since 1.0.19 |
667 | 667 | * @param string $value strtotime compliant date. |
668 | 668 | */ |
669 | - public function set_expiration( $value ) { |
|
670 | - $this->set_next_renewal_date( $value ); |
|
669 | + public function set_expiration($value) { |
|
670 | + $this->set_next_renewal_date($value); |
|
671 | 671 | } |
672 | 672 | |
673 | 673 | /** |
@@ -676,8 +676,8 @@ discard block |
||
676 | 676 | * @since 1.0.19 |
677 | 677 | * @param string $value trial period e.g 1 year. |
678 | 678 | */ |
679 | - public function set_trial_period( $value ) { |
|
680 | - $this->set_prop( 'trial_period', $value ); |
|
679 | + public function set_trial_period($value) { |
|
680 | + $this->set_prop('trial_period', $value); |
|
681 | 681 | } |
682 | 682 | |
683 | 683 | /** |
@@ -686,19 +686,19 @@ discard block |
||
686 | 686 | * @since 1.0.19 |
687 | 687 | * @param string $new_status New subscription status. |
688 | 688 | */ |
689 | - public function set_status( $new_status ) { |
|
689 | + public function set_status($new_status) { |
|
690 | 690 | |
691 | 691 | // Abort if this is not a valid status; |
692 | - if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
692 | + if (!array_key_exists($new_status, getpaid_get_subscription_statuses())) { |
|
693 | 693 | return; |
694 | 694 | } |
695 | 695 | |
696 | 696 | $old_status = $this->get_status(); |
697 | - $this->set_prop( 'status', $new_status ); |
|
697 | + $this->set_prop('status', $new_status); |
|
698 | 698 | |
699 | - if ( true === $this->object_read && $old_status !== $new_status ) { |
|
699 | + if (true === $this->object_read && $old_status !== $new_status) { |
|
700 | 700 | $this->status_transition = array( |
701 | - 'from' => ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $old_status, |
|
701 | + 'from' => !empty($this->status_transition['from']) ? $this->status_transition['from'] : $old_status, |
|
702 | 702 | 'to' => $new_status, |
703 | 703 | ); |
704 | 704 | } |
@@ -711,8 +711,8 @@ discard block |
||
711 | 711 | * @since 1.0.19 |
712 | 712 | * @param string $value the remote profile id. |
713 | 713 | */ |
714 | - public function set_profile_id( $value ) { |
|
715 | - $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
714 | + public function set_profile_id($value) { |
|
715 | + $this->set_prop('profile_id', sanitize_text_field($value)); |
|
716 | 716 | } |
717 | 717 | |
718 | 718 | /* |
@@ -730,8 +730,8 @@ discard block |
||
730 | 730 | * @param string|array String or array of strings to check for. |
731 | 731 | * @return bool |
732 | 732 | */ |
733 | - public function has_status( $status ) { |
|
734 | - return in_array( $this->get_status(), wpinv_clean( wpinv_parse_list( $status ) ) ); |
|
733 | + public function has_status($status) { |
|
734 | + return in_array($this->get_status(), wpinv_clean(wpinv_parse_list($status))); |
|
735 | 735 | } |
736 | 736 | |
737 | 737 | /** |
@@ -741,7 +741,7 @@ discard block |
||
741 | 741 | */ |
742 | 742 | public function has_trial_period() { |
743 | 743 | $period = $this->get_trial_period(); |
744 | - return ! empty( $period ); |
|
744 | + return !empty($period); |
|
745 | 745 | } |
746 | 746 | |
747 | 747 | /** |
@@ -750,7 +750,7 @@ discard block |
||
750 | 750 | * @return bool |
751 | 751 | */ |
752 | 752 | public function is_active() { |
753 | - return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
753 | + return $this->has_status('active trialling') && !$this->is_expired(); |
|
754 | 754 | } |
755 | 755 | |
756 | 756 | /** |
@@ -759,7 +759,7 @@ discard block |
||
759 | 759 | * @return bool |
760 | 760 | */ |
761 | 761 | public function is_expired() { |
762 | - return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
762 | + return $this->has_status('expired') || ($this->has_status('active cancelled trialling') && $this->get_expiration_time() < current_time('mysql')); |
|
763 | 763 | } |
764 | 764 | |
765 | 765 | /** |
@@ -769,7 +769,7 @@ discard block |
||
769 | 769 | */ |
770 | 770 | public function is_last_renewal() { |
771 | 771 | $max_bills = $this->get_bill_times(); |
772 | - return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
772 | + return !empty($max_bills) && $max_bills <= $this->get_times_billed(); |
|
773 | 773 | } |
774 | 774 | |
775 | 775 | /* |
@@ -784,11 +784,11 @@ discard block |
||
784 | 784 | /** |
785 | 785 | * Backwards compatibilty. |
786 | 786 | */ |
787 | - public function create( $data = array() ) { |
|
787 | + public function create($data = array()) { |
|
788 | 788 | |
789 | 789 | // Set the properties. |
790 | - if ( is_array( $data ) ) { |
|
791 | - $this->set_props( $data ); |
|
790 | + if (is_array($data)) { |
|
791 | + $this->set_props($data); |
|
792 | 792 | } |
793 | 793 | |
794 | 794 | // Save the item. |
@@ -799,8 +799,8 @@ discard block |
||
799 | 799 | /** |
800 | 800 | * Backwards compatibilty. |
801 | 801 | */ |
802 | - public function update( $args = array() ) { |
|
803 | - return $this->create( $args ); |
|
802 | + public function update($args = array()) { |
|
803 | + return $this->create($args); |
|
804 | 804 | } |
805 | 805 | |
806 | 806 | /** |
@@ -809,12 +809,12 @@ discard block |
||
809 | 809 | * @since 1.0.0 |
810 | 810 | * @return WP_Post[] |
811 | 811 | */ |
812 | - public function get_child_payments( $hide_pending = true ) { |
|
812 | + public function get_child_payments($hide_pending = true) { |
|
813 | 813 | |
814 | - $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
814 | + $statuses = array('publish', 'wpi-processing', 'wpi-renewal'); |
|
815 | 815 | |
816 | - if ( ! $hide_pending ) { |
|
817 | - $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
816 | + if (!$hide_pending) { |
|
817 | + $statuses = array_keys(wpinv_get_invoice_statuses()); |
|
818 | 818 | } |
819 | 819 | |
820 | 820 | return get_posts( |
@@ -846,7 +846,7 @@ discard block |
||
846 | 846 | ); |
847 | 847 | |
848 | 848 | // Maybe include parent invoice. |
849 | - if ( $this->get_parent_payment()->is_paid() ) { |
|
849 | + if ($this->get_parent_payment()->is_paid()) { |
|
850 | 850 | $count++; |
851 | 851 | } |
852 | 852 | |
@@ -862,7 +862,7 @@ discard block |
||
862 | 862 | public function get_times_billed() { |
863 | 863 | $times_billed = $this->get_total_payments(); |
864 | 864 | |
865 | - if ( (float) $this->get_initial_amount() == 0 && $times_billed > 0 ) { |
|
865 | + if ((float) $this->get_initial_amount() == 0 && $times_billed > 0) { |
|
866 | 866 | $times_billed--; |
867 | 867 | } |
868 | 868 | |
@@ -877,49 +877,49 @@ discard block |
||
877 | 877 | * @param WPInv_Invoice $invoice If adding an existing invoice. |
878 | 878 | * @return bool |
879 | 879 | */ |
880 | - public function add_payment( $args = array(), $invoice = false ) { |
|
880 | + public function add_payment($args = array(), $invoice = false) { |
|
881 | 881 | |
882 | 882 | // Process each payment once. |
883 | - if ( ! empty( $args['transaction_id'] ) && $this->payment_exists( $args['transaction_id'] ) ) { |
|
883 | + if (!empty($args['transaction_id']) && $this->payment_exists($args['transaction_id'])) { |
|
884 | 884 | return false; |
885 | 885 | } |
886 | 886 | |
887 | 887 | // Are we creating a new invoice? |
888 | - if ( empty( $invoice ) ) { |
|
888 | + if (empty($invoice)) { |
|
889 | 889 | $invoice = $this->create_payment(); |
890 | 890 | |
891 | - if ( empty( $invoice ) ) { |
|
891 | + if (empty($invoice)) { |
|
892 | 892 | return false; |
893 | 893 | } |
894 | 894 | |
895 | 895 | } |
896 | 896 | |
897 | - $invoice->set_status( 'wpi-renewal' ); |
|
897 | + $invoice->set_status('wpi-renewal'); |
|
898 | 898 | |
899 | 899 | // Maybe set a transaction id. |
900 | - if ( ! empty( $args['transaction_id'] ) ) { |
|
901 | - $invoice->set_transaction_id( $args['transaction_id'] ); |
|
900 | + if (!empty($args['transaction_id'])) { |
|
901 | + $invoice->set_transaction_id($args['transaction_id']); |
|
902 | 902 | } |
903 | 903 | |
904 | 904 | // Set the completed date. |
905 | - $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
905 | + $invoice->set_completed_date(current_time('mysql')); |
|
906 | 906 | |
907 | 907 | // And the gateway. |
908 | - if ( ! empty( $args['gateway'] ) ) { |
|
909 | - $invoice->set_gateway( $args['gateway'] ); |
|
908 | + if (!empty($args['gateway'])) { |
|
909 | + $invoice->set_gateway($args['gateway']); |
|
910 | 910 | } |
911 | 911 | |
912 | 912 | $invoice->save(); |
913 | 913 | |
914 | - if ( ! $invoice->exists() ) { |
|
914 | + if (!$invoice->exists()) { |
|
915 | 915 | return false; |
916 | 916 | } |
917 | 917 | |
918 | - do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
919 | - do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
920 | - do_action( 'wpinv_recurring_record_payment', $invoice->get_id(), $this->get_parent_invoice_id(), $invoice->get_recurring_total(), $invoice->get_transaction_id() ); |
|
918 | + do_action('getpaid_after_create_subscription_renewal_invoice', $invoice, $this); |
|
919 | + do_action('wpinv_recurring_add_subscription_payment', $invoice, $this); |
|
920 | + do_action('wpinv_recurring_record_payment', $invoice->get_id(), $this->get_parent_invoice_id(), $invoice->get_recurring_total(), $invoice->get_transaction_id()); |
|
921 | 921 | |
922 | - update_post_meta( $invoice->get_id(), '_wpinv_subscription_id', $this->id ); |
|
922 | + update_post_meta($invoice->get_id(), '_wpinv_subscription_id', $this->id); |
|
923 | 923 | |
924 | 924 | return $invoice->get_id(); |
925 | 925 | } |
@@ -934,15 +934,15 @@ discard block |
||
934 | 934 | |
935 | 935 | $parent_invoice = $this->get_parent_payment(); |
936 | 936 | |
937 | - if ( ! $parent_invoice->exists() ) { |
|
937 | + if (!$parent_invoice->exists()) { |
|
938 | 938 | return false; |
939 | 939 | } |
940 | 940 | |
941 | 941 | // Duplicate the parent invoice. |
942 | - $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
943 | - $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
942 | + $invoice = getpaid_duplicate_invoice($parent_invoice); |
|
943 | + $invoice->set_parent_id($parent_invoice->get_id()); |
|
944 | 944 | $invoice->recalculate_total(); |
945 | - $invoice->set_status( 'wpi-pending' ); |
|
945 | + $invoice->set_status('wpi-pending'); |
|
946 | 946 | $invoice->save(); |
947 | 947 | |
948 | 948 | return $invoice->exists() ? $invoice : false; |
@@ -957,20 +957,20 @@ discard block |
||
957 | 957 | public function renew() { |
958 | 958 | |
959 | 959 | // Complete subscription if applicable |
960 | - if ( $this->is_last_renewal() ) { |
|
960 | + if ($this->is_last_renewal()) { |
|
961 | 961 | return $this->complete(); |
962 | 962 | } |
963 | 963 | |
964 | 964 | // Calculate new expiration |
965 | 965 | $frequency = $this->get_frequency(); |
966 | 966 | $period = $this->get_period(); |
967 | - $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
967 | + $new_expiration = strtotime("+ $frequency $period", $this->get_expiration_time()); |
|
968 | 968 | |
969 | - $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
970 | - $this->set_status( 'active' ); |
|
969 | + $this->set_expiration(date('Y-m-d H:i:s', $new_expiration)); |
|
970 | + $this->set_status('active'); |
|
971 | 971 | return $this->save(); |
972 | 972 | |
973 | - do_action( 'getpaid_subscription_renewed', $this ); |
|
973 | + do_action('getpaid_subscription_renewed', $this); |
|
974 | 974 | |
975 | 975 | } |
976 | 976 | |
@@ -985,11 +985,11 @@ discard block |
||
985 | 985 | public function complete() { |
986 | 986 | |
987 | 987 | // Only mark a subscription as complete if it's not already cancelled. |
988 | - if ( $this->has_status( 'cancelled' ) ) { |
|
988 | + if ($this->has_status('cancelled')) { |
|
989 | 989 | return false; |
990 | 990 | } |
991 | 991 | |
992 | - $this->set_status( 'completed' ); |
|
992 | + $this->set_status('completed'); |
|
993 | 993 | return $this->save(); |
994 | 994 | |
995 | 995 | } |
@@ -1001,14 +1001,14 @@ discard block |
||
1001 | 1001 | * @param bool $check_expiration |
1002 | 1002 | * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
1003 | 1003 | */ |
1004 | - public function expire( $check_expiration = false ) { |
|
1004 | + public function expire($check_expiration = false) { |
|
1005 | 1005 | |
1006 | - if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
1006 | + if ($check_expiration && $this->get_expiration_time() > current_time('timestamp')) { |
|
1007 | 1007 | // Do not mark as expired since real expiration date is in the future |
1008 | 1008 | return false; |
1009 | 1009 | } |
1010 | 1010 | |
1011 | - $this->set_status( 'expired' ); |
|
1011 | + $this->set_status('expired'); |
|
1012 | 1012 | return $this->save(); |
1013 | 1013 | |
1014 | 1014 | } |
@@ -1020,7 +1020,7 @@ discard block |
||
1020 | 1020 | * @return int Subscription id. |
1021 | 1021 | */ |
1022 | 1022 | public function failing() { |
1023 | - $this->set_status( 'failing' ); |
|
1023 | + $this->set_status('failing'); |
|
1024 | 1024 | return $this->save(); |
1025 | 1025 | } |
1026 | 1026 | |
@@ -1031,7 +1031,7 @@ discard block |
||
1031 | 1031 | * @return int Subscription id. |
1032 | 1032 | */ |
1033 | 1033 | public function cancel() { |
1034 | - $this->set_status( 'cancelled' ); |
|
1034 | + $this->set_status('cancelled'); |
|
1035 | 1035 | return $this->save(); |
1036 | 1036 | } |
1037 | 1037 | |
@@ -1042,7 +1042,7 @@ discard block |
||
1042 | 1042 | * @return bool |
1043 | 1043 | */ |
1044 | 1044 | public function can_cancel() { |
1045 | - return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
1045 | + return apply_filters('wpinv_subscription_can_cancel', $this->has_status($this->get_cancellable_statuses()), $this); |
|
1046 | 1046 | } |
1047 | 1047 | |
1048 | 1048 | /** |
@@ -1053,7 +1053,7 @@ discard block |
||
1053 | 1053 | * @return array |
1054 | 1054 | */ |
1055 | 1055 | public function get_cancellable_statuses() { |
1056 | - return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) ); |
|
1056 | + return apply_filters('wpinv_recurring_cancellable_statuses', array('active', 'trialling', 'failing')); |
|
1057 | 1057 | } |
1058 | 1058 | |
1059 | 1059 | /** |
@@ -1063,8 +1063,8 @@ discard block |
||
1063 | 1063 | * @return string |
1064 | 1064 | */ |
1065 | 1065 | public function get_cancel_url() { |
1066 | - $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
1067 | - return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
1066 | + $url = getpaid_get_authenticated_action_url('subscription_cancel', $this->get_view_url()); |
|
1067 | + return apply_filters('wpinv_subscription_cancel_url', $url, $this); |
|
1068 | 1068 | } |
1069 | 1069 | |
1070 | 1070 | /** |
@@ -1075,10 +1075,10 @@ discard block |
||
1075 | 1075 | */ |
1076 | 1076 | public function get_view_url() { |
1077 | 1077 | |
1078 | - $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
1079 | - $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
1078 | + $url = getpaid_get_tab_url('gp-subscriptions', get_permalink((int) wpinv_get_option('invoice_subscription_page'))); |
|
1079 | + $url = add_query_arg('subscription', $this->get_id(), $url); |
|
1080 | 1080 | |
1081 | - return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
1081 | + return apply_filters('getpaid_get_subscription_view_url', $url, $this); |
|
1082 | 1082 | } |
1083 | 1083 | |
1084 | 1084 | /** |
@@ -1091,7 +1091,7 @@ discard block |
||
1091 | 1091 | * @return bool |
1092 | 1092 | */ |
1093 | 1093 | public function can_renew() { |
1094 | - return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
1094 | + return apply_filters('wpinv_subscription_can_renew', true, $this); |
|
1095 | 1095 | } |
1096 | 1096 | |
1097 | 1097 | /** |
@@ -1101,8 +1101,8 @@ discard block |
||
1101 | 1101 | * @return string |
1102 | 1102 | */ |
1103 | 1103 | public function get_renew_url() { |
1104 | - $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
1105 | - return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
1104 | + $url = wp_nonce_url(add_query_arg(array('getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id)), 'getpaid-nonce'); |
|
1105 | + return apply_filters('wpinv_subscription_renew_url', $url, $this); |
|
1106 | 1106 | } |
1107 | 1107 | |
1108 | 1108 | /** |
@@ -1112,7 +1112,7 @@ discard block |
||
1112 | 1112 | * @return bool |
1113 | 1113 | */ |
1114 | 1114 | public function can_update() { |
1115 | - return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
1115 | + return apply_filters('wpinv_subscription_can_update', false, $this); |
|
1116 | 1116 | } |
1117 | 1117 | |
1118 | 1118 | /** |
@@ -1122,8 +1122,8 @@ discard block |
||
1122 | 1122 | * @return string |
1123 | 1123 | */ |
1124 | 1124 | public function get_update_url() { |
1125 | - $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
1126 | - return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
1125 | + $url = add_query_arg(array('action' => 'update', 'subscription_id' => $this->get_id())); |
|
1126 | + return apply_filters('wpinv_subscription_update_url', $url, $this); |
|
1127 | 1127 | } |
1128 | 1128 | |
1129 | 1129 | /** |
@@ -1133,7 +1133,7 @@ discard block |
||
1133 | 1133 | * @return string |
1134 | 1134 | */ |
1135 | 1135 | public function get_status_label() { |
1136 | - return getpaid_get_subscription_status_label( $this->get_status() ); |
|
1136 | + return getpaid_get_subscription_status_label($this->get_status()); |
|
1137 | 1137 | } |
1138 | 1138 | |
1139 | 1139 | /** |
@@ -1144,7 +1144,7 @@ discard block |
||
1144 | 1144 | */ |
1145 | 1145 | public function get_status_class() { |
1146 | 1146 | $statuses = getpaid_get_subscription_status_classes(); |
1147 | - return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
1147 | + return isset($statuses[$this->get_status()]) ? $statuses[$this->get_status()] : 'badge-dark'; |
|
1148 | 1148 | } |
1149 | 1149 | |
1150 | 1150 | /** |
@@ -1155,9 +1155,9 @@ discard block |
||
1155 | 1155 | */ |
1156 | 1156 | public function get_status_label_html() { |
1157 | 1157 | |
1158 | - $status_label = sanitize_text_field( $this->get_status_label() ); |
|
1159 | - $class = esc_attr( $this->get_status_class() ); |
|
1160 | - $status = sanitize_html_class( $this->get_status() ); |
|
1158 | + $status_label = sanitize_text_field($this->get_status_label()); |
|
1159 | + $class = esc_attr($this->get_status_class()); |
|
1160 | + $status = sanitize_html_class($this->get_status()); |
|
1161 | 1161 | |
1162 | 1162 | return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
1163 | 1163 | } |
@@ -1169,9 +1169,9 @@ discard block |
||
1169 | 1169 | * @param string $txn_id The transaction ID from the merchant processor |
1170 | 1170 | * @return bool |
1171 | 1171 | */ |
1172 | - public function payment_exists( $txn_id = '' ) { |
|
1173 | - $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
1174 | - return ! empty( $invoice_id ); |
|
1172 | + public function payment_exists($txn_id = '') { |
|
1173 | + $invoice_id = WPInv_Invoice::get_invoice_id_by_field($txn_id, 'transaction_id'); |
|
1174 | + return !empty($invoice_id); |
|
1175 | 1175 | } |
1176 | 1176 | |
1177 | 1177 | /** |
@@ -1183,35 +1183,35 @@ discard block |
||
1183 | 1183 | // Reset status transition variable. |
1184 | 1184 | $this->status_transition = false; |
1185 | 1185 | |
1186 | - if ( $status_transition ) { |
|
1186 | + if ($status_transition) { |
|
1187 | 1187 | try { |
1188 | 1188 | |
1189 | 1189 | // Fire a hook for the status change. |
1190 | - do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
1191 | - do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
1190 | + do_action('wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition); |
|
1191 | + do_action('getpaid_subscription_' . $status_transition['to'], $this, $status_transition); |
|
1192 | 1192 | |
1193 | - if ( ! empty( $status_transition['from'] ) ) { |
|
1193 | + if (!empty($status_transition['from'])) { |
|
1194 | 1194 | |
1195 | 1195 | /* translators: 1: old subscription status 2: new subscription status */ |
1196 | - $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
1196 | + $transition_note = sprintf(__('Subscription status changed from %1$s to %2$s.', 'invoicing'), getpaid_get_subscription_status_label($status_transition['from']), getpaid_get_subscription_status_label($status_transition['to'])); |
|
1197 | 1197 | |
1198 | 1198 | // Note the transition occurred. |
1199 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
1199 | + $this->get_parent_payment()->add_note($transition_note, false, false, true); |
|
1200 | 1200 | |
1201 | 1201 | // Fire another hook. |
1202 | - do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
1203 | - do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
1202 | + do_action('getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this); |
|
1203 | + do_action('getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to']); |
|
1204 | 1204 | |
1205 | 1205 | } else { |
1206 | 1206 | /* translators: %s: new invoice status */ |
1207 | - $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
1207 | + $transition_note = sprintf(__('Subscription status set to %s.', 'invoicing'), getpaid_get_subscription_status_label($status_transition['to'])); |
|
1208 | 1208 | |
1209 | 1209 | // Note the transition occurred. |
1210 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
1210 | + $this->get_parent_payment()->add_note($transition_note, false, false, true); |
|
1211 | 1211 | |
1212 | 1212 | } |
1213 | - } catch ( Exception $e ) { |
|
1214 | - $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
1213 | + } catch (Exception $e) { |
|
1214 | + $this->get_parent_payment()->add_note(__('Error during subscription status transition.', 'invoicing') . ' ' . $e->getMessage()); |
|
1215 | 1215 | } |
1216 | 1216 | } |
1217 | 1217 | |
@@ -1237,7 +1237,7 @@ discard block |
||
1237 | 1237 | */ |
1238 | 1238 | public function activate() { |
1239 | 1239 | $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
1240 | - $this->set_status( $status ); |
|
1240 | + $this->set_status($status); |
|
1241 | 1241 | return $this->save(); |
1242 | 1242 | } |
1243 | 1243 |
@@ -15,125 +15,125 @@ discard block |
||
15 | 15 | */ |
16 | 16 | class WPInv_Subscription extends GetPaid_Data { |
17 | 17 | |
18 | - /** |
|
19 | - * Which data store to load. |
|
20 | - * |
|
21 | - * @var string |
|
22 | - */ |
|
23 | - protected $data_store_name = 'subscription'; |
|
24 | - |
|
25 | - /** |
|
26 | - * This is the name of this object type. |
|
27 | - * |
|
28 | - * @var string |
|
29 | - */ |
|
30 | - protected $object_type = 'subscription'; |
|
31 | - |
|
32 | - /** |
|
33 | - * Item Data array. This is the core item data exposed in APIs. |
|
34 | - * |
|
35 | - * @since 1.0.19 |
|
36 | - * @var array |
|
37 | - */ |
|
38 | - protected $data = array( |
|
39 | - 'customer_id' => 0, |
|
40 | - 'frequency' => 1, |
|
41 | - 'period' => 'D', |
|
42 | - 'initial_amount' => null, |
|
43 | - 'recurring_amount' => null, |
|
44 | - 'bill_times' => 0, |
|
45 | - 'transaction_id' => '', |
|
46 | - 'parent_payment_id' => null, |
|
47 | - 'product_id' => 0, |
|
48 | - 'created' => '0000-00-00 00:00:00', |
|
49 | - 'expiration' => '0000-00-00 00:00:00', |
|
50 | - 'trial_period' => '', |
|
51 | - 'status' => 'pending', |
|
52 | - 'profile_id' => '', |
|
53 | - 'gateway' => '', |
|
54 | - 'customer' => '', |
|
55 | - ); |
|
56 | - |
|
57 | - /** |
|
58 | - * Stores the status transition information. |
|
59 | - * |
|
60 | - * @since 1.0.19 |
|
61 | - * @var bool |
|
62 | - */ |
|
63 | - protected $status_transition = false; |
|
64 | - |
|
65 | - /** |
|
66 | - * Get the subscription if ID is passed, otherwise the subscription is new and empty. |
|
67 | - * |
|
68 | - * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
|
69 | - * @param bool $deprecated |
|
70 | - */ |
|
71 | - function __construct( $subscription = 0, $deprecated = false ) { |
|
72 | - |
|
73 | - parent::__construct( $subscription ); |
|
74 | - |
|
75 | - if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
76 | - $this->set_id( $subscription ); |
|
77 | - } elseif ( $subscription instanceof self ) { |
|
78 | - $this->set_id( $subscription->get_id() ); |
|
79 | - } elseif ( ! empty( $subscription->id ) ) { |
|
80 | - $this->set_id( $subscription->id ); |
|
81 | - } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
82 | - $this->set_id( $subscription_id ); |
|
83 | - } else { |
|
84 | - $this->set_object_read( true ); |
|
85 | - } |
|
86 | - |
|
87 | - // Load the datastore. |
|
88 | - $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
89 | - |
|
90 | - if ( $this->get_id() > 0 ) { |
|
91 | - $this->data_store->read( $this ); |
|
92 | - } |
|
93 | - |
|
94 | - } |
|
95 | - |
|
96 | - /** |
|
97 | - * Given an invoice id, profile id, transaction id, it returns the subscription's id. |
|
98 | - * |
|
99 | - * |
|
100 | - * @static |
|
101 | - * @param string $value |
|
102 | - * @param string $field Either invoice_id, transaction_id or profile_id. |
|
103 | - * @since 1.0.19 |
|
104 | - * @return int |
|
105 | - */ |
|
106 | - public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
18 | + /** |
|
19 | + * Which data store to load. |
|
20 | + * |
|
21 | + * @var string |
|
22 | + */ |
|
23 | + protected $data_store_name = 'subscription'; |
|
24 | + |
|
25 | + /** |
|
26 | + * This is the name of this object type. |
|
27 | + * |
|
28 | + * @var string |
|
29 | + */ |
|
30 | + protected $object_type = 'subscription'; |
|
31 | + |
|
32 | + /** |
|
33 | + * Item Data array. This is the core item data exposed in APIs. |
|
34 | + * |
|
35 | + * @since 1.0.19 |
|
36 | + * @var array |
|
37 | + */ |
|
38 | + protected $data = array( |
|
39 | + 'customer_id' => 0, |
|
40 | + 'frequency' => 1, |
|
41 | + 'period' => 'D', |
|
42 | + 'initial_amount' => null, |
|
43 | + 'recurring_amount' => null, |
|
44 | + 'bill_times' => 0, |
|
45 | + 'transaction_id' => '', |
|
46 | + 'parent_payment_id' => null, |
|
47 | + 'product_id' => 0, |
|
48 | + 'created' => '0000-00-00 00:00:00', |
|
49 | + 'expiration' => '0000-00-00 00:00:00', |
|
50 | + 'trial_period' => '', |
|
51 | + 'status' => 'pending', |
|
52 | + 'profile_id' => '', |
|
53 | + 'gateway' => '', |
|
54 | + 'customer' => '', |
|
55 | + ); |
|
56 | + |
|
57 | + /** |
|
58 | + * Stores the status transition information. |
|
59 | + * |
|
60 | + * @since 1.0.19 |
|
61 | + * @var bool |
|
62 | + */ |
|
63 | + protected $status_transition = false; |
|
64 | + |
|
65 | + /** |
|
66 | + * Get the subscription if ID is passed, otherwise the subscription is new and empty. |
|
67 | + * |
|
68 | + * @param int|string|object|WPInv_Subscription $subscription Subscription id, profile_id, or object to read. |
|
69 | + * @param bool $deprecated |
|
70 | + */ |
|
71 | + function __construct( $subscription = 0, $deprecated = false ) { |
|
72 | + |
|
73 | + parent::__construct( $subscription ); |
|
74 | + |
|
75 | + if ( ! $deprecated && ! empty( $subscription ) && is_numeric( $subscription ) ) { |
|
76 | + $this->set_id( $subscription ); |
|
77 | + } elseif ( $subscription instanceof self ) { |
|
78 | + $this->set_id( $subscription->get_id() ); |
|
79 | + } elseif ( ! empty( $subscription->id ) ) { |
|
80 | + $this->set_id( $subscription->id ); |
|
81 | + } elseif ( $deprecated && $subscription_id = self::get_subscription_id_by_field( $subscription, 'profile_id' ) ) { |
|
82 | + $this->set_id( $subscription_id ); |
|
83 | + } else { |
|
84 | + $this->set_object_read( true ); |
|
85 | + } |
|
86 | + |
|
87 | + // Load the datastore. |
|
88 | + $this->data_store = GetPaid_Data_Store::load( $this->data_store_name ); |
|
89 | + |
|
90 | + if ( $this->get_id() > 0 ) { |
|
91 | + $this->data_store->read( $this ); |
|
92 | + } |
|
93 | + |
|
94 | + } |
|
95 | + |
|
96 | + /** |
|
97 | + * Given an invoice id, profile id, transaction id, it returns the subscription's id. |
|
98 | + * |
|
99 | + * |
|
100 | + * @static |
|
101 | + * @param string $value |
|
102 | + * @param string $field Either invoice_id, transaction_id or profile_id. |
|
103 | + * @since 1.0.19 |
|
104 | + * @return int |
|
105 | + */ |
|
106 | + public static function get_subscription_id_by_field( $value, $field = 'profile_id' ) { |
|
107 | 107 | global $wpdb; |
108 | 108 | |
109 | - // Trim the value. |
|
110 | - $value = trim( $value ); |
|
109 | + // Trim the value. |
|
110 | + $value = trim( $value ); |
|
111 | 111 | |
112 | - if ( empty( $value ) ) { |
|
113 | - return 0; |
|
114 | - } |
|
112 | + if ( empty( $value ) ) { |
|
113 | + return 0; |
|
114 | + } |
|
115 | 115 | |
116 | - if ( 'invoice_id' == $field ) { |
|
117 | - $field = 'parent_payment_id'; |
|
118 | - } |
|
116 | + if ( 'invoice_id' == $field ) { |
|
117 | + $field = 'parent_payment_id'; |
|
118 | + } |
|
119 | 119 | |
120 | 120 | // Valid fields. |
121 | 121 | $fields = array( |
122 | - 'parent_payment_id', |
|
123 | - 'transaction_id', |
|
124 | - 'profile_id' |
|
125 | - ); |
|
126 | - |
|
127 | - // Ensure a field has been passed. |
|
128 | - if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
129 | - return 0; |
|
130 | - } |
|
131 | - |
|
132 | - // Maybe retrieve from the cache. |
|
133 | - $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
134 | - if ( ! empty( $subscription_id ) ) { |
|
135 | - return $subscription_id; |
|
136 | - } |
|
122 | + 'parent_payment_id', |
|
123 | + 'transaction_id', |
|
124 | + 'profile_id' |
|
125 | + ); |
|
126 | + |
|
127 | + // Ensure a field has been passed. |
|
128 | + if ( empty( $field ) || ! in_array( $field, $fields ) ) { |
|
129 | + return 0; |
|
130 | + } |
|
131 | + |
|
132 | + // Maybe retrieve from the cache. |
|
133 | + $subscription_id = wp_cache_get( $value, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
134 | + if ( ! empty( $subscription_id ) ) { |
|
135 | + return $subscription_id; |
|
136 | + } |
|
137 | 137 | |
138 | 138 | // Fetch from the db. |
139 | 139 | $table = $wpdb->prefix . 'wpinv_subscriptions'; |
@@ -141,34 +141,34 @@ discard block |
||
141 | 141 | $wpdb->prepare( "SELECT `id` FROM $table WHERE `$field`=%s LIMIT 1", $value ) |
142 | 142 | ); |
143 | 143 | |
144 | - if ( empty( $subscription_id ) ) { |
|
145 | - return 0; |
|
146 | - } |
|
144 | + if ( empty( $subscription_id ) ) { |
|
145 | + return 0; |
|
146 | + } |
|
147 | 147 | |
148 | - // Update the cache with our data. |
|
149 | - wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
148 | + // Update the cache with our data. |
|
149 | + wp_cache_set( $value, $subscription_id, "getpaid_subscription_{$field}s_to_subscription_ids" ); |
|
150 | 150 | |
151 | - return $subscription_id; |
|
152 | - } |
|
151 | + return $subscription_id; |
|
152 | + } |
|
153 | 153 | |
154 | - /** |
|
154 | + /** |
|
155 | 155 | * Clears the subscription's cache. |
156 | 156 | */ |
157 | 157 | public function clear_cache() { |
158 | - wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
159 | - wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
160 | - wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
161 | - wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
162 | - } |
|
158 | + wp_cache_delete( $this->get_parent_payment_id(), 'getpaid_subscription_parent_payment_ids_to_subscription_ids' ); |
|
159 | + wp_cache_delete( $this->get_transaction_id(), 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
160 | + wp_cache_delete( $this->get_profile_id(), 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
161 | + wp_cache_delete( $this->get_id(), 'getpaid_subscriptions' ); |
|
162 | + } |
|
163 | 163 | |
164 | - /** |
|
164 | + /** |
|
165 | 165 | * Checks if a subscription key is set. |
166 | 166 | */ |
167 | 167 | public function _isset( $key ) { |
168 | 168 | return isset( $this->data[$key] ) || method_exists( $this, "get_$key" ); |
169 | - } |
|
169 | + } |
|
170 | 170 | |
171 | - /* |
|
171 | + /* |
|
172 | 172 | |-------------------------------------------------------------------------- |
173 | 173 | | CRUD methods |
174 | 174 | |-------------------------------------------------------------------------- |
@@ -177,545 +177,545 @@ discard block |
||
177 | 177 | | |
178 | 178 | */ |
179 | 179 | |
180 | - /* |
|
180 | + /* |
|
181 | 181 | |-------------------------------------------------------------------------- |
182 | 182 | | Getters |
183 | 183 | |-------------------------------------------------------------------------- |
184 | 184 | */ |
185 | 185 | |
186 | - /** |
|
187 | - * Get customer id. |
|
188 | - * |
|
189 | - * @since 1.0.19 |
|
190 | - * @param string $context View or edit context. |
|
191 | - * @return int |
|
192 | - */ |
|
193 | - public function get_customer_id( $context = 'view' ) { |
|
194 | - return (int) $this->get_prop( 'customer_id', $context ); |
|
195 | - } |
|
196 | - |
|
197 | - /** |
|
198 | - * Get customer information. |
|
199 | - * |
|
200 | - * @since 1.0.19 |
|
201 | - * @param string $context View or edit context. |
|
202 | - * @return WP_User|false WP_User object on success, false on failure. |
|
203 | - */ |
|
204 | - public function get_customer( $context = 'view' ) { |
|
205 | - return get_userdata( $this->get_customer_id( $context ) ); |
|
206 | - } |
|
207 | - |
|
208 | - /** |
|
209 | - * Get parent invoice id. |
|
210 | - * |
|
211 | - * @since 1.0.19 |
|
212 | - * @param string $context View or edit context. |
|
213 | - * @return int |
|
214 | - */ |
|
215 | - public function get_parent_invoice_id( $context = 'view' ) { |
|
216 | - return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
217 | - } |
|
218 | - |
|
219 | - /** |
|
220 | - * Alias for self::get_parent_invoice_id(). |
|
221 | - * |
|
222 | - * @since 1.0.19 |
|
223 | - * @param string $context View or edit context. |
|
224 | - * @return int |
|
225 | - */ |
|
186 | + /** |
|
187 | + * Get customer id. |
|
188 | + * |
|
189 | + * @since 1.0.19 |
|
190 | + * @param string $context View or edit context. |
|
191 | + * @return int |
|
192 | + */ |
|
193 | + public function get_customer_id( $context = 'view' ) { |
|
194 | + return (int) $this->get_prop( 'customer_id', $context ); |
|
195 | + } |
|
196 | + |
|
197 | + /** |
|
198 | + * Get customer information. |
|
199 | + * |
|
200 | + * @since 1.0.19 |
|
201 | + * @param string $context View or edit context. |
|
202 | + * @return WP_User|false WP_User object on success, false on failure. |
|
203 | + */ |
|
204 | + public function get_customer( $context = 'view' ) { |
|
205 | + return get_userdata( $this->get_customer_id( $context ) ); |
|
206 | + } |
|
207 | + |
|
208 | + /** |
|
209 | + * Get parent invoice id. |
|
210 | + * |
|
211 | + * @since 1.0.19 |
|
212 | + * @param string $context View or edit context. |
|
213 | + * @return int |
|
214 | + */ |
|
215 | + public function get_parent_invoice_id( $context = 'view' ) { |
|
216 | + return (int) $this->get_prop( 'parent_payment_id', $context ); |
|
217 | + } |
|
218 | + |
|
219 | + /** |
|
220 | + * Alias for self::get_parent_invoice_id(). |
|
221 | + * |
|
222 | + * @since 1.0.19 |
|
223 | + * @param string $context View or edit context. |
|
224 | + * @return int |
|
225 | + */ |
|
226 | 226 | public function get_parent_payment_id( $context = 'view' ) { |
227 | 227 | return $this->get_parent_invoice_id( $context ); |
228 | - } |
|
228 | + } |
|
229 | 229 | |
230 | - /** |
|
230 | + /** |
|
231 | 231 | * Alias for self::get_parent_invoice_id(). |
232 | 232 | * |
233 | - * @since 1.0.0 |
|
234 | - * @return int |
|
233 | + * @since 1.0.0 |
|
234 | + * @return int |
|
235 | + */ |
|
236 | + public function get_original_payment_id( $context = 'view' ) { |
|
237 | + return $this->get_parent_invoice_id( $context ); |
|
238 | + } |
|
239 | + |
|
240 | + /** |
|
241 | + * Get parent invoice. |
|
242 | + * |
|
243 | + * @since 1.0.19 |
|
244 | + * @param string $context View or edit context. |
|
245 | + * @return WPInv_Invoice |
|
246 | + */ |
|
247 | + public function get_parent_invoice( $context = 'view' ) { |
|
248 | + return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
249 | + } |
|
250 | + |
|
251 | + /** |
|
252 | + * Alias for self::get_parent_invoice(). |
|
253 | + * |
|
254 | + * @since 1.0.19 |
|
255 | + * @param string $context View or edit context. |
|
256 | + * @return WPInv_Invoice |
|
257 | + */ |
|
258 | + public function get_parent_payment( $context = 'view' ) { |
|
259 | + return $this->get_parent_invoice( $context ); |
|
260 | + } |
|
261 | + |
|
262 | + /** |
|
263 | + * Get subscription's product id. |
|
264 | + * |
|
265 | + * @since 1.0.19 |
|
266 | + * @param string $context View or edit context. |
|
267 | + * @return int |
|
268 | + */ |
|
269 | + public function get_product_id( $context = 'view' ) { |
|
270 | + return (int) $this->get_prop( 'product_id', $context ); |
|
271 | + } |
|
272 | + |
|
273 | + /** |
|
274 | + * Get the subscription product. |
|
275 | + * |
|
276 | + * @since 1.0.19 |
|
277 | + * @param string $context View or edit context. |
|
278 | + * @return WPInv_Item |
|
279 | + */ |
|
280 | + public function get_product( $context = 'view' ) { |
|
281 | + return new WPInv_Item( $this->get_product_id( $context ) ); |
|
282 | + } |
|
283 | + |
|
284 | + /** |
|
285 | + * Get parent invoice's gateway. |
|
286 | + * |
|
287 | + * Here for backwards compatibility. |
|
288 | + * |
|
289 | + * @since 1.0.19 |
|
290 | + * @param string $context View or edit context. |
|
291 | + * @return string |
|
292 | + */ |
|
293 | + public function get_gateway( $context = 'view' ) { |
|
294 | + return $this->get_parent_invoice( $context )->get_gateway(); |
|
295 | + } |
|
296 | + |
|
297 | + /** |
|
298 | + * Get the period of a renewal. |
|
299 | + * |
|
300 | + * @since 1.0.19 |
|
301 | + * @param string $context View or edit context. |
|
302 | + * @return string |
|
303 | + */ |
|
304 | + public function get_period( $context = 'view' ) { |
|
305 | + return $this->get_prop( 'period', $context ); |
|
306 | + } |
|
307 | + |
|
308 | + /** |
|
309 | + * Get number of periods each renewal is valid for. |
|
310 | + * |
|
311 | + * @since 1.0.19 |
|
312 | + * @param string $context View or edit context. |
|
313 | + * @return int |
|
314 | + */ |
|
315 | + public function get_frequency( $context = 'view' ) { |
|
316 | + return (int) $this->get_prop( 'frequency', $context ); |
|
317 | + } |
|
318 | + |
|
319 | + /** |
|
320 | + * Get the initial amount for the subscription. |
|
321 | + * |
|
322 | + * @since 1.0.19 |
|
323 | + * @param string $context View or edit context. |
|
324 | + * @return float |
|
325 | + */ |
|
326 | + public function get_initial_amount( $context = 'view' ) { |
|
327 | + return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
328 | + } |
|
329 | + |
|
330 | + /** |
|
331 | + * Get the recurring amount for the subscription. |
|
332 | + * |
|
333 | + * @since 1.0.19 |
|
334 | + * @param string $context View or edit context. |
|
335 | + * @return float |
|
336 | + */ |
|
337 | + public function get_recurring_amount( $context = 'view' ) { |
|
338 | + return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
339 | + } |
|
340 | + |
|
341 | + /** |
|
342 | + * Get number of times that this subscription can be renewed. |
|
343 | + * |
|
344 | + * @since 1.0.19 |
|
345 | + * @param string $context View or edit context. |
|
346 | + * @return int |
|
347 | + */ |
|
348 | + public function get_bill_times( $context = 'view' ) { |
|
349 | + return (int) $this->get_prop( 'bill_times', $context ); |
|
350 | + } |
|
351 | + |
|
352 | + /** |
|
353 | + * Get transaction id of this subscription's parent invoice. |
|
354 | + * |
|
355 | + * @since 1.0.19 |
|
356 | + * @param string $context View or edit context. |
|
357 | + * @return string |
|
358 | + */ |
|
359 | + public function get_transaction_id( $context = 'view' ) { |
|
360 | + return $this->get_prop( 'transaction_id', $context ); |
|
361 | + } |
|
362 | + |
|
363 | + /** |
|
364 | + * Get the date that the subscription was created. |
|
365 | + * |
|
366 | + * @since 1.0.19 |
|
367 | + * @param string $context View or edit context. |
|
368 | + * @return string |
|
369 | + */ |
|
370 | + public function get_created( $context = 'view' ) { |
|
371 | + return $this->get_prop( 'created', $context ); |
|
372 | + } |
|
373 | + |
|
374 | + /** |
|
375 | + * Alias for self::get_created(). |
|
376 | + * |
|
377 | + * @since 1.0.19 |
|
378 | + * @param string $context View or edit context. |
|
379 | + * @return string |
|
380 | + */ |
|
381 | + public function get_date_created( $context = 'view' ) { |
|
382 | + return $this->get_created( $context ); |
|
383 | + } |
|
384 | + |
|
385 | + /** |
|
386 | + * Retrieves the creation date in a timestamp |
|
387 | + * |
|
388 | + * @since 1.0.0 |
|
389 | + * @return int |
|
390 | + */ |
|
391 | + public function get_time_created() { |
|
392 | + $created = $this->get_date_created(); |
|
393 | + return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
394 | + } |
|
395 | + |
|
396 | + /** |
|
397 | + * Get GMT date when the subscription was created. |
|
398 | + * |
|
399 | + * @since 1.0.19 |
|
400 | + * @param string $context View or edit context. |
|
401 | + * @return string |
|
402 | + */ |
|
403 | + public function get_date_created_gmt( $context = 'view' ) { |
|
404 | + $date = $this->get_date_created( $context ); |
|
405 | + |
|
406 | + if ( $date ) { |
|
407 | + $date = get_gmt_from_date( $date ); |
|
408 | + } |
|
409 | + return $date; |
|
410 | + } |
|
411 | + |
|
412 | + /** |
|
413 | + * Get the date that the subscription will renew. |
|
414 | + * |
|
415 | + * @since 1.0.19 |
|
416 | + * @param string $context View or edit context. |
|
417 | + * @return string |
|
418 | + */ |
|
419 | + public function get_next_renewal_date( $context = 'view' ) { |
|
420 | + return $this->get_prop( 'expiration', $context ); |
|
421 | + } |
|
422 | + |
|
423 | + /** |
|
424 | + * Alias for self::get_next_renewal_date(). |
|
425 | + * |
|
426 | + * @since 1.0.19 |
|
427 | + * @param string $context View or edit context. |
|
428 | + * @return string |
|
429 | + */ |
|
430 | + public function get_expiration( $context = 'view' ) { |
|
431 | + return $this->get_next_renewal_date( $context ); |
|
432 | + } |
|
433 | + |
|
434 | + /** |
|
435 | + * Retrieves the expiration date in a timestamp |
|
436 | + * |
|
437 | + * @since 1.0.0 |
|
438 | + * @return int |
|
439 | + */ |
|
440 | + public function get_expiration_time() { |
|
441 | + $expiration = $this->get_expiration(); |
|
442 | + |
|
443 | + if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
444 | + return current_time( 'timestamp' ); |
|
445 | + } |
|
446 | + |
|
447 | + $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
448 | + return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
449 | + } |
|
450 | + |
|
451 | + /** |
|
452 | + * Get GMT date when the subscription will renew. |
|
453 | + * |
|
454 | + * @since 1.0.19 |
|
455 | + * @param string $context View or edit context. |
|
456 | + * @return string |
|
457 | + */ |
|
458 | + public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
459 | + $date = $this->get_next_renewal_date( $context ); |
|
460 | + |
|
461 | + if ( $date ) { |
|
462 | + $date = get_gmt_from_date( $date ); |
|
463 | + } |
|
464 | + return $date; |
|
465 | + } |
|
466 | + |
|
467 | + /** |
|
468 | + * Get the subscription's trial period. |
|
469 | + * |
|
470 | + * @since 1.0.19 |
|
471 | + * @param string $context View or edit context. |
|
472 | + * @return string |
|
473 | + */ |
|
474 | + public function get_trial_period( $context = 'view' ) { |
|
475 | + return $this->get_prop( 'trial_period', $context ); |
|
476 | + } |
|
477 | + |
|
478 | + /** |
|
479 | + * Get the subscription's status. |
|
480 | + * |
|
481 | + * @since 1.0.19 |
|
482 | + * @param string $context View or edit context. |
|
483 | + * @return string |
|
484 | + */ |
|
485 | + public function get_status( $context = 'view' ) { |
|
486 | + return $this->get_prop( 'status', $context ); |
|
487 | + } |
|
488 | + |
|
489 | + /** |
|
490 | + * Get the subscription's profile id. |
|
491 | + * |
|
492 | + * @since 1.0.19 |
|
493 | + * @param string $context View or edit context. |
|
494 | + * @return string |
|
495 | + */ |
|
496 | + public function get_profile_id( $context = 'view' ) { |
|
497 | + return $this->get_prop( 'profile_id', $context ); |
|
498 | + } |
|
499 | + |
|
500 | + /* |
|
501 | + |-------------------------------------------------------------------------- |
|
502 | + | Setters |
|
503 | + |-------------------------------------------------------------------------- |
|
504 | + */ |
|
505 | + |
|
506 | + /** |
|
507 | + * Set customer id. |
|
508 | + * |
|
509 | + * @since 1.0.19 |
|
510 | + * @param int $value The customer's id. |
|
511 | + */ |
|
512 | + public function set_customer_id( $value ) { |
|
513 | + $this->set_prop( 'customer_id', (int) $value ); |
|
514 | + } |
|
515 | + |
|
516 | + /** |
|
517 | + * Set parent invoice id. |
|
518 | + * |
|
519 | + * @since 1.0.19 |
|
520 | + * @param int $value The parent invoice id. |
|
521 | + */ |
|
522 | + public function set_parent_invoice_id( $value ) { |
|
523 | + $this->set_prop( 'parent_payment_id', (int) $value ); |
|
524 | + } |
|
525 | + |
|
526 | + /** |
|
527 | + * Alias for self::set_parent_invoice_id(). |
|
528 | + * |
|
529 | + * @since 1.0.19 |
|
530 | + * @param int $value The parent invoice id. |
|
531 | + */ |
|
532 | + public function set_parent_payment_id( $value ) { |
|
533 | + $this->set_parent_invoice_id( $value ); |
|
534 | + } |
|
535 | + |
|
536 | + /** |
|
537 | + * Alias for self::set_parent_invoice_id(). |
|
538 | + * |
|
539 | + * @since 1.0.19 |
|
540 | + * @param int $value The parent invoice id. |
|
541 | + */ |
|
542 | + public function set_original_payment_id( $value ) { |
|
543 | + $this->set_parent_invoice_id( $value ); |
|
544 | + } |
|
545 | + |
|
546 | + /** |
|
547 | + * Set subscription's product id. |
|
548 | + * |
|
549 | + * @since 1.0.19 |
|
550 | + * @param int $value The subscription product id. |
|
551 | + */ |
|
552 | + public function set_product_id( $value ) { |
|
553 | + $this->set_prop( 'product_id', (int) $value ); |
|
554 | + } |
|
555 | + |
|
556 | + /** |
|
557 | + * Set the period of a renewal. |
|
558 | + * |
|
559 | + * @since 1.0.19 |
|
560 | + * @param string $value The renewal period. |
|
561 | + */ |
|
562 | + public function set_period( $value ) { |
|
563 | + $this->set_prop( 'period', $value ); |
|
564 | + } |
|
565 | + |
|
566 | + /** |
|
567 | + * Set number of periods each renewal is valid for. |
|
568 | + * |
|
569 | + * @since 1.0.19 |
|
570 | + * @param int $value The subscription frequency. |
|
571 | + */ |
|
572 | + public function set_frequency( $value ) { |
|
573 | + $value = empty( $value ) ? 1 : (int) $value; |
|
574 | + $this->set_prop( 'frequency', absint( $value ) ); |
|
575 | + } |
|
576 | + |
|
577 | + /** |
|
578 | + * Set the initial amount for the subscription. |
|
579 | + * |
|
580 | + * @since 1.0.19 |
|
581 | + * @param float $value The initial subcription amount. |
|
582 | + */ |
|
583 | + public function set_initial_amount( $value ) { |
|
584 | + $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
585 | + } |
|
586 | + |
|
587 | + /** |
|
588 | + * Set the recurring amount for the subscription. |
|
589 | + * |
|
590 | + * @since 1.0.19 |
|
591 | + * @param float $value The recurring subcription amount. |
|
592 | + */ |
|
593 | + public function set_recurring_amount( $value ) { |
|
594 | + $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
595 | + } |
|
596 | + |
|
597 | + /** |
|
598 | + * Set number of times that this subscription can be renewed. |
|
599 | + * |
|
600 | + * @since 1.0.19 |
|
601 | + * @param int $value Bill times. |
|
602 | + */ |
|
603 | + public function set_bill_times( $value ) { |
|
604 | + $this->set_prop( 'bill_times', (int) $value ); |
|
605 | + } |
|
606 | + |
|
607 | + /** |
|
608 | + * Get transaction id of this subscription's parent invoice. |
|
609 | + * |
|
610 | + * @since 1.0.19 |
|
611 | + * @param string $value Bill times. |
|
235 | 612 | */ |
236 | - public function get_original_payment_id( $context = 'view' ) { |
|
237 | - return $this->get_parent_invoice_id( $context ); |
|
613 | + public function set_transaction_id( $value ) { |
|
614 | + $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
238 | 615 | } |
239 | 616 | |
240 | - /** |
|
241 | - * Get parent invoice. |
|
242 | - * |
|
243 | - * @since 1.0.19 |
|
244 | - * @param string $context View or edit context. |
|
245 | - * @return WPInv_Invoice |
|
246 | - */ |
|
247 | - public function get_parent_invoice( $context = 'view' ) { |
|
248 | - return new WPInv_Invoice( $this->get_parent_invoice_id( $context ) ); |
|
249 | - } |
|
250 | - |
|
251 | - /** |
|
252 | - * Alias for self::get_parent_invoice(). |
|
253 | - * |
|
254 | - * @since 1.0.19 |
|
255 | - * @param string $context View or edit context. |
|
256 | - * @return WPInv_Invoice |
|
257 | - */ |
|
258 | - public function get_parent_payment( $context = 'view' ) { |
|
259 | - return $this->get_parent_invoice( $context ); |
|
260 | - } |
|
261 | - |
|
262 | - /** |
|
263 | - * Get subscription's product id. |
|
264 | - * |
|
265 | - * @since 1.0.19 |
|
266 | - * @param string $context View or edit context. |
|
267 | - * @return int |
|
268 | - */ |
|
269 | - public function get_product_id( $context = 'view' ) { |
|
270 | - return (int) $this->get_prop( 'product_id', $context ); |
|
271 | - } |
|
272 | - |
|
273 | - /** |
|
274 | - * Get the subscription product. |
|
275 | - * |
|
276 | - * @since 1.0.19 |
|
277 | - * @param string $context View or edit context. |
|
278 | - * @return WPInv_Item |
|
279 | - */ |
|
280 | - public function get_product( $context = 'view' ) { |
|
281 | - return new WPInv_Item( $this->get_product_id( $context ) ); |
|
282 | - } |
|
283 | - |
|
284 | - /** |
|
285 | - * Get parent invoice's gateway. |
|
286 | - * |
|
287 | - * Here for backwards compatibility. |
|
288 | - * |
|
289 | - * @since 1.0.19 |
|
290 | - * @param string $context View or edit context. |
|
291 | - * @return string |
|
292 | - */ |
|
293 | - public function get_gateway( $context = 'view' ) { |
|
294 | - return $this->get_parent_invoice( $context )->get_gateway(); |
|
295 | - } |
|
296 | - |
|
297 | - /** |
|
298 | - * Get the period of a renewal. |
|
299 | - * |
|
300 | - * @since 1.0.19 |
|
301 | - * @param string $context View or edit context. |
|
302 | - * @return string |
|
303 | - */ |
|
304 | - public function get_period( $context = 'view' ) { |
|
305 | - return $this->get_prop( 'period', $context ); |
|
306 | - } |
|
307 | - |
|
308 | - /** |
|
309 | - * Get number of periods each renewal is valid for. |
|
310 | - * |
|
311 | - * @since 1.0.19 |
|
312 | - * @param string $context View or edit context. |
|
313 | - * @return int |
|
314 | - */ |
|
315 | - public function get_frequency( $context = 'view' ) { |
|
316 | - return (int) $this->get_prop( 'frequency', $context ); |
|
317 | - } |
|
318 | - |
|
319 | - /** |
|
320 | - * Get the initial amount for the subscription. |
|
321 | - * |
|
322 | - * @since 1.0.19 |
|
323 | - * @param string $context View or edit context. |
|
324 | - * @return float |
|
325 | - */ |
|
326 | - public function get_initial_amount( $context = 'view' ) { |
|
327 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'initial_amount', $context ) ); |
|
328 | - } |
|
329 | - |
|
330 | - /** |
|
331 | - * Get the recurring amount for the subscription. |
|
332 | - * |
|
333 | - * @since 1.0.19 |
|
334 | - * @param string $context View or edit context. |
|
335 | - * @return float |
|
336 | - */ |
|
337 | - public function get_recurring_amount( $context = 'view' ) { |
|
338 | - return (float) wpinv_sanitize_amount( $this->get_prop( 'recurring_amount', $context ) ); |
|
339 | - } |
|
340 | - |
|
341 | - /** |
|
342 | - * Get number of times that this subscription can be renewed. |
|
343 | - * |
|
344 | - * @since 1.0.19 |
|
345 | - * @param string $context View or edit context. |
|
346 | - * @return int |
|
347 | - */ |
|
348 | - public function get_bill_times( $context = 'view' ) { |
|
349 | - return (int) $this->get_prop( 'bill_times', $context ); |
|
350 | - } |
|
351 | - |
|
352 | - /** |
|
353 | - * Get transaction id of this subscription's parent invoice. |
|
354 | - * |
|
355 | - * @since 1.0.19 |
|
356 | - * @param string $context View or edit context. |
|
357 | - * @return string |
|
358 | - */ |
|
359 | - public function get_transaction_id( $context = 'view' ) { |
|
360 | - return $this->get_prop( 'transaction_id', $context ); |
|
361 | - } |
|
362 | - |
|
363 | - /** |
|
364 | - * Get the date that the subscription was created. |
|
365 | - * |
|
366 | - * @since 1.0.19 |
|
367 | - * @param string $context View or edit context. |
|
368 | - * @return string |
|
369 | - */ |
|
370 | - public function get_created( $context = 'view' ) { |
|
371 | - return $this->get_prop( 'created', $context ); |
|
372 | - } |
|
373 | - |
|
374 | - /** |
|
375 | - * Alias for self::get_created(). |
|
376 | - * |
|
377 | - * @since 1.0.19 |
|
378 | - * @param string $context View or edit context. |
|
379 | - * @return string |
|
380 | - */ |
|
381 | - public function get_date_created( $context = 'view' ) { |
|
382 | - return $this->get_created( $context ); |
|
383 | - } |
|
384 | - |
|
385 | - /** |
|
386 | - * Retrieves the creation date in a timestamp |
|
387 | - * |
|
388 | - * @since 1.0.0 |
|
389 | - * @return int |
|
390 | - */ |
|
391 | - public function get_time_created() { |
|
392 | - $created = $this->get_date_created(); |
|
393 | - return empty( $created ) ? current_time( 'timestamp' ) : strtotime( $created, current_time( 'timestamp' ) ); |
|
394 | - } |
|
395 | - |
|
396 | - /** |
|
397 | - * Get GMT date when the subscription was created. |
|
398 | - * |
|
399 | - * @since 1.0.19 |
|
400 | - * @param string $context View or edit context. |
|
401 | - * @return string |
|
402 | - */ |
|
403 | - public function get_date_created_gmt( $context = 'view' ) { |
|
404 | - $date = $this->get_date_created( $context ); |
|
617 | + /** |
|
618 | + * Set date when this subscription started. |
|
619 | + * |
|
620 | + * @since 1.0.19 |
|
621 | + * @param string $value strtotime compliant date. |
|
622 | + */ |
|
623 | + public function set_created( $value ) { |
|
624 | + $date = strtotime( $value ); |
|
405 | 625 | |
406 | - if ( $date ) { |
|
407 | - $date = get_gmt_from_date( $date ); |
|
626 | + if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
627 | + $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
628 | + return; |
|
408 | 629 | } |
409 | - return $date; |
|
410 | - } |
|
411 | - |
|
412 | - /** |
|
413 | - * Get the date that the subscription will renew. |
|
414 | - * |
|
415 | - * @since 1.0.19 |
|
416 | - * @param string $context View or edit context. |
|
417 | - * @return string |
|
418 | - */ |
|
419 | - public function get_next_renewal_date( $context = 'view' ) { |
|
420 | - return $this->get_prop( 'expiration', $context ); |
|
421 | - } |
|
422 | - |
|
423 | - /** |
|
424 | - * Alias for self::get_next_renewal_date(). |
|
425 | - * |
|
426 | - * @since 1.0.19 |
|
427 | - * @param string $context View or edit context. |
|
428 | - * @return string |
|
429 | - */ |
|
430 | - public function get_expiration( $context = 'view' ) { |
|
431 | - return $this->get_next_renewal_date( $context ); |
|
432 | - } |
|
433 | - |
|
434 | - /** |
|
435 | - * Retrieves the expiration date in a timestamp |
|
436 | - * |
|
437 | - * @since 1.0.0 |
|
438 | - * @return int |
|
439 | - */ |
|
440 | - public function get_expiration_time() { |
|
441 | - $expiration = $this->get_expiration(); |
|
442 | - |
|
443 | - if ( empty( $expiration ) || '0000-00-00 00:00:00' == $expiration ) { |
|
444 | - return current_time( 'timestamp' ); |
|
445 | - } |
|
446 | - |
|
447 | - $expiration = strtotime( $expiration, current_time( 'timestamp' ) ); |
|
448 | - return $expiration < current_time( 'timestamp' ) ? current_time( 'timestamp' ) : $expiration; |
|
449 | - } |
|
450 | - |
|
451 | - /** |
|
452 | - * Get GMT date when the subscription will renew. |
|
453 | - * |
|
454 | - * @since 1.0.19 |
|
455 | - * @param string $context View or edit context. |
|
456 | - * @return string |
|
457 | - */ |
|
458 | - public function get_next_renewal_date_gmt( $context = 'view' ) { |
|
459 | - $date = $this->get_next_renewal_date( $context ); |
|
460 | 630 | |
461 | - if ( $date ) { |
|
462 | - $date = get_gmt_from_date( $date ); |
|
463 | - } |
|
464 | - return $date; |
|
465 | - } |
|
466 | - |
|
467 | - /** |
|
468 | - * Get the subscription's trial period. |
|
469 | - * |
|
470 | - * @since 1.0.19 |
|
471 | - * @param string $context View or edit context. |
|
472 | - * @return string |
|
473 | - */ |
|
474 | - public function get_trial_period( $context = 'view' ) { |
|
475 | - return $this->get_prop( 'trial_period', $context ); |
|
476 | - } |
|
477 | - |
|
478 | - /** |
|
479 | - * Get the subscription's status. |
|
480 | - * |
|
481 | - * @since 1.0.19 |
|
482 | - * @param string $context View or edit context. |
|
483 | - * @return string |
|
484 | - */ |
|
485 | - public function get_status( $context = 'view' ) { |
|
486 | - return $this->get_prop( 'status', $context ); |
|
487 | - } |
|
488 | - |
|
489 | - /** |
|
490 | - * Get the subscription's profile id. |
|
491 | - * |
|
492 | - * @since 1.0.19 |
|
493 | - * @param string $context View or edit context. |
|
494 | - * @return string |
|
495 | - */ |
|
496 | - public function get_profile_id( $context = 'view' ) { |
|
497 | - return $this->get_prop( 'profile_id', $context ); |
|
498 | - } |
|
499 | - |
|
500 | - /* |
|
501 | - |-------------------------------------------------------------------------- |
|
502 | - | Setters |
|
503 | - |-------------------------------------------------------------------------- |
|
504 | - */ |
|
631 | + $this->set_prop( 'created', '' ); |
|
505 | 632 | |
506 | - /** |
|
507 | - * Set customer id. |
|
508 | - * |
|
509 | - * @since 1.0.19 |
|
510 | - * @param int $value The customer's id. |
|
511 | - */ |
|
512 | - public function set_customer_id( $value ) { |
|
513 | - $this->set_prop( 'customer_id', (int) $value ); |
|
514 | - } |
|
515 | - |
|
516 | - /** |
|
517 | - * Set parent invoice id. |
|
518 | - * |
|
519 | - * @since 1.0.19 |
|
520 | - * @param int $value The parent invoice id. |
|
521 | - */ |
|
522 | - public function set_parent_invoice_id( $value ) { |
|
523 | - $this->set_prop( 'parent_payment_id', (int) $value ); |
|
524 | - } |
|
525 | - |
|
526 | - /** |
|
527 | - * Alias for self::set_parent_invoice_id(). |
|
528 | - * |
|
529 | - * @since 1.0.19 |
|
530 | - * @param int $value The parent invoice id. |
|
531 | - */ |
|
532 | - public function set_parent_payment_id( $value ) { |
|
533 | - $this->set_parent_invoice_id( $value ); |
|
534 | - } |
|
633 | + } |
|
535 | 634 | |
536 | - /** |
|
537 | - * Alias for self::set_parent_invoice_id(). |
|
635 | + /** |
|
636 | + * Alias for self::set_created(). |
|
538 | 637 | * |
539 | 638 | * @since 1.0.19 |
540 | - * @param int $value The parent invoice id. |
|
639 | + * @param string $value strtotime compliant date. |
|
541 | 640 | */ |
542 | - public function set_original_payment_id( $value ) { |
|
543 | - $this->set_parent_invoice_id( $value ); |
|
544 | - } |
|
545 | - |
|
546 | - /** |
|
547 | - * Set subscription's product id. |
|
548 | - * |
|
549 | - * @since 1.0.19 |
|
550 | - * @param int $value The subscription product id. |
|
551 | - */ |
|
552 | - public function set_product_id( $value ) { |
|
553 | - $this->set_prop( 'product_id', (int) $value ); |
|
554 | - } |
|
555 | - |
|
556 | - /** |
|
557 | - * Set the period of a renewal. |
|
558 | - * |
|
559 | - * @since 1.0.19 |
|
560 | - * @param string $value The renewal period. |
|
561 | - */ |
|
562 | - public function set_period( $value ) { |
|
563 | - $this->set_prop( 'period', $value ); |
|
564 | - } |
|
565 | - |
|
566 | - /** |
|
567 | - * Set number of periods each renewal is valid for. |
|
568 | - * |
|
569 | - * @since 1.0.19 |
|
570 | - * @param int $value The subscription frequency. |
|
571 | - */ |
|
572 | - public function set_frequency( $value ) { |
|
573 | - $value = empty( $value ) ? 1 : (int) $value; |
|
574 | - $this->set_prop( 'frequency', absint( $value ) ); |
|
575 | - } |
|
576 | - |
|
577 | - /** |
|
578 | - * Set the initial amount for the subscription. |
|
579 | - * |
|
580 | - * @since 1.0.19 |
|
581 | - * @param float $value The initial subcription amount. |
|
582 | - */ |
|
583 | - public function set_initial_amount( $value ) { |
|
584 | - $this->set_prop( 'initial_amount', wpinv_sanitize_amount( $value ) ); |
|
585 | - } |
|
586 | - |
|
587 | - /** |
|
588 | - * Set the recurring amount for the subscription. |
|
589 | - * |
|
590 | - * @since 1.0.19 |
|
591 | - * @param float $value The recurring subcription amount. |
|
592 | - */ |
|
593 | - public function set_recurring_amount( $value ) { |
|
594 | - $this->set_prop( 'recurring_amount', wpinv_sanitize_amount( $value ) ); |
|
595 | - } |
|
596 | - |
|
597 | - /** |
|
598 | - * Set number of times that this subscription can be renewed. |
|
599 | - * |
|
600 | - * @since 1.0.19 |
|
601 | - * @param int $value Bill times. |
|
602 | - */ |
|
603 | - public function set_bill_times( $value ) { |
|
604 | - $this->set_prop( 'bill_times', (int) $value ); |
|
605 | - } |
|
606 | - |
|
607 | - /** |
|
608 | - * Get transaction id of this subscription's parent invoice. |
|
609 | - * |
|
610 | - * @since 1.0.19 |
|
611 | - * @param string $value Bill times. |
|
612 | - */ |
|
613 | - public function set_transaction_id( $value ) { |
|
614 | - $this->set_prop( 'transaction_id', sanitize_text_field( $value ) ); |
|
615 | - } |
|
616 | - |
|
617 | - /** |
|
618 | - * Set date when this subscription started. |
|
619 | - * |
|
620 | - * @since 1.0.19 |
|
621 | - * @param string $value strtotime compliant date. |
|
622 | - */ |
|
623 | - public function set_created( $value ) { |
|
641 | + public function set_date_created( $value ) { |
|
642 | + $this->set_created( $value ); |
|
643 | + } |
|
644 | + |
|
645 | + /** |
|
646 | + * Set the date that the subscription will renew. |
|
647 | + * |
|
648 | + * @since 1.0.19 |
|
649 | + * @param string $value strtotime compliant date. |
|
650 | + */ |
|
651 | + public function set_next_renewal_date( $value ) { |
|
624 | 652 | $date = strtotime( $value ); |
625 | 653 | |
626 | 654 | if ( $date && $value !== '0000-00-00 00:00:00' ) { |
627 | - $this->set_prop( 'created', date( 'Y-m-d H:i:s', $date ) ); |
|
655 | + $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
628 | 656 | return; |
629 | 657 | } |
630 | 658 | |
631 | - $this->set_prop( 'created', '' ); |
|
659 | + $this->set_prop( 'expiration', '' ); |
|
660 | + |
|
661 | + } |
|
632 | 662 | |
633 | - } |
|
663 | + /** |
|
664 | + * Alias for self::set_next_renewal_date(). |
|
665 | + * |
|
666 | + * @since 1.0.19 |
|
667 | + * @param string $value strtotime compliant date. |
|
668 | + */ |
|
669 | + public function set_expiration( $value ) { |
|
670 | + $this->set_next_renewal_date( $value ); |
|
671 | + } |
|
634 | 672 | |
635 | - /** |
|
636 | - * Alias for self::set_created(). |
|
637 | - * |
|
638 | - * @since 1.0.19 |
|
639 | - * @param string $value strtotime compliant date. |
|
640 | - */ |
|
641 | - public function set_date_created( $value ) { |
|
642 | - $this->set_created( $value ); |
|
673 | + /** |
|
674 | + * Set the subscription's trial period. |
|
675 | + * |
|
676 | + * @since 1.0.19 |
|
677 | + * @param string $value trial period e.g 1 year. |
|
678 | + */ |
|
679 | + public function set_trial_period( $value ) { |
|
680 | + $this->set_prop( 'trial_period', $value ); |
|
643 | 681 | } |
644 | 682 | |
645 | - /** |
|
646 | - * Set the date that the subscription will renew. |
|
647 | - * |
|
648 | - * @since 1.0.19 |
|
649 | - * @param string $value strtotime compliant date. |
|
650 | - */ |
|
651 | - public function set_next_renewal_date( $value ) { |
|
652 | - $date = strtotime( $value ); |
|
683 | + /** |
|
684 | + * Set the subscription's status. |
|
685 | + * |
|
686 | + * @since 1.0.19 |
|
687 | + * @param string $new_status New subscription status. |
|
688 | + */ |
|
689 | + public function set_status( $new_status ) { |
|
653 | 690 | |
654 | - if ( $date && $value !== '0000-00-00 00:00:00' ) { |
|
655 | - $this->set_prop( 'expiration', date( 'Y-m-d H:i:s', $date ) ); |
|
691 | + // Abort if this is not a valid status; |
|
692 | + if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
656 | 693 | return; |
657 | - } |
|
658 | - |
|
659 | - $this->set_prop( 'expiration', '' ); |
|
660 | - |
|
661 | - } |
|
662 | - |
|
663 | - /** |
|
664 | - * Alias for self::set_next_renewal_date(). |
|
665 | - * |
|
666 | - * @since 1.0.19 |
|
667 | - * @param string $value strtotime compliant date. |
|
668 | - */ |
|
669 | - public function set_expiration( $value ) { |
|
670 | - $this->set_next_renewal_date( $value ); |
|
671 | - } |
|
672 | - |
|
673 | - /** |
|
674 | - * Set the subscription's trial period. |
|
675 | - * |
|
676 | - * @since 1.0.19 |
|
677 | - * @param string $value trial period e.g 1 year. |
|
678 | - */ |
|
679 | - public function set_trial_period( $value ) { |
|
680 | - $this->set_prop( 'trial_period', $value ); |
|
681 | - } |
|
682 | - |
|
683 | - /** |
|
684 | - * Set the subscription's status. |
|
685 | - * |
|
686 | - * @since 1.0.19 |
|
687 | - * @param string $new_status New subscription status. |
|
688 | - */ |
|
689 | - public function set_status( $new_status ) { |
|
690 | - |
|
691 | - // Abort if this is not a valid status; |
|
692 | - if ( ! array_key_exists( $new_status, getpaid_get_subscription_statuses() ) ) { |
|
693 | - return; |
|
694 | - } |
|
695 | - |
|
696 | - $old_status = $this->get_status(); |
|
697 | - $this->set_prop( 'status', $new_status ); |
|
698 | - |
|
699 | - if ( true === $this->object_read && $old_status !== $new_status ) { |
|
700 | - $this->status_transition = array( |
|
701 | - 'from' => ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $old_status, |
|
702 | - 'to' => $new_status, |
|
703 | - ); |
|
704 | - } |
|
705 | - |
|
706 | - } |
|
707 | - |
|
708 | - /** |
|
709 | - * Set the subscription's (remote) profile id. |
|
710 | - * |
|
711 | - * @since 1.0.19 |
|
712 | - * @param string $value the remote profile id. |
|
713 | - */ |
|
714 | - public function set_profile_id( $value ) { |
|
715 | - $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
716 | - } |
|
717 | - |
|
718 | - /* |
|
694 | + } |
|
695 | + |
|
696 | + $old_status = $this->get_status(); |
|
697 | + $this->set_prop( 'status', $new_status ); |
|
698 | + |
|
699 | + if ( true === $this->object_read && $old_status !== $new_status ) { |
|
700 | + $this->status_transition = array( |
|
701 | + 'from' => ! empty( $this->status_transition['from'] ) ? $this->status_transition['from'] : $old_status, |
|
702 | + 'to' => $new_status, |
|
703 | + ); |
|
704 | + } |
|
705 | + |
|
706 | + } |
|
707 | + |
|
708 | + /** |
|
709 | + * Set the subscription's (remote) profile id. |
|
710 | + * |
|
711 | + * @since 1.0.19 |
|
712 | + * @param string $value the remote profile id. |
|
713 | + */ |
|
714 | + public function set_profile_id( $value ) { |
|
715 | + $this->set_prop( 'profile_id', sanitize_text_field( $value ) ); |
|
716 | + } |
|
717 | + |
|
718 | + /* |
|
719 | 719 | |-------------------------------------------------------------------------- |
720 | 720 | | Boolean methods |
721 | 721 | |-------------------------------------------------------------------------- |
@@ -724,55 +724,55 @@ discard block |
||
724 | 724 | | |
725 | 725 | */ |
726 | 726 | |
727 | - /** |
|
727 | + /** |
|
728 | 728 | * Checks if the subscription has a given status. |
729 | - * |
|
730 | - * @param string|array String or array of strings to check for. |
|
731 | - * @return bool |
|
729 | + * |
|
730 | + * @param string|array String or array of strings to check for. |
|
731 | + * @return bool |
|
732 | 732 | */ |
733 | 733 | public function has_status( $status ) { |
734 | 734 | return in_array( $this->get_status(), wpinv_clean( wpinv_parse_list( $status ) ) ); |
735 | - } |
|
735 | + } |
|
736 | 736 | |
737 | - /** |
|
737 | + /** |
|
738 | 738 | * Checks if the subscription has a trial period. |
739 | - * |
|
740 | - * @return bool |
|
739 | + * |
|
740 | + * @return bool |
|
741 | 741 | */ |
742 | 742 | public function has_trial_period() { |
743 | - $period = $this->get_trial_period(); |
|
743 | + $period = $this->get_trial_period(); |
|
744 | 744 | return ! empty( $period ); |
745 | - } |
|
746 | - |
|
747 | - /** |
|
748 | - * Is the subscription active? |
|
749 | - * |
|
750 | - * @return bool |
|
751 | - */ |
|
752 | - public function is_active() { |
|
753 | - return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
754 | - } |
|
755 | - |
|
756 | - /** |
|
757 | - * Is the subscription expired? |
|
758 | - * |
|
759 | - * @return bool |
|
760 | - */ |
|
761 | - public function is_expired() { |
|
762 | - return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
763 | - } |
|
764 | - |
|
765 | - /** |
|
766 | - * Is this the last renewals? |
|
767 | - * |
|
768 | - * @return bool |
|
769 | - */ |
|
770 | - public function is_last_renewal() { |
|
771 | - $max_bills = $this->get_bill_times(); |
|
772 | - return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
773 | - } |
|
774 | - |
|
775 | - /* |
|
745 | + } |
|
746 | + |
|
747 | + /** |
|
748 | + * Is the subscription active? |
|
749 | + * |
|
750 | + * @return bool |
|
751 | + */ |
|
752 | + public function is_active() { |
|
753 | + return $this->has_status( 'active trialling' ) && ! $this->is_expired(); |
|
754 | + } |
|
755 | + |
|
756 | + /** |
|
757 | + * Is the subscription expired? |
|
758 | + * |
|
759 | + * @return bool |
|
760 | + */ |
|
761 | + public function is_expired() { |
|
762 | + return $this->has_status( 'expired' ) || ( $this->has_status( 'active cancelled trialling' ) && $this->get_expiration_time() < current_time( 'mysql' ) ); |
|
763 | + } |
|
764 | + |
|
765 | + /** |
|
766 | + * Is this the last renewals? |
|
767 | + * |
|
768 | + * @return bool |
|
769 | + */ |
|
770 | + public function is_last_renewal() { |
|
771 | + $max_bills = $this->get_bill_times(); |
|
772 | + return ! empty( $max_bills ) && $max_bills <= $this->get_times_billed(); |
|
773 | + } |
|
774 | + |
|
775 | + /* |
|
776 | 776 | |-------------------------------------------------------------------------- |
777 | 777 | | Additional methods |
778 | 778 | |-------------------------------------------------------------------------- |
@@ -781,27 +781,27 @@ discard block |
||
781 | 781 | | |
782 | 782 | */ |
783 | 783 | |
784 | - /** |
|
785 | - * Backwards compatibilty. |
|
786 | - */ |
|
787 | - public function create( $data = array() ) { |
|
784 | + /** |
|
785 | + * Backwards compatibilty. |
|
786 | + */ |
|
787 | + public function create( $data = array() ) { |
|
788 | 788 | |
789 | - // Set the properties. |
|
790 | - if ( is_array( $data ) ) { |
|
791 | - $this->set_props( $data ); |
|
792 | - } |
|
789 | + // Set the properties. |
|
790 | + if ( is_array( $data ) ) { |
|
791 | + $this->set_props( $data ); |
|
792 | + } |
|
793 | 793 | |
794 | - // Save the item. |
|
795 | - return $this->save(); |
|
794 | + // Save the item. |
|
795 | + return $this->save(); |
|
796 | 796 | |
797 | - } |
|
797 | + } |
|
798 | 798 | |
799 | - /** |
|
800 | - * Backwards compatibilty. |
|
801 | - */ |
|
802 | - public function update( $args = array() ) { |
|
803 | - return $this->create( $args ); |
|
804 | - } |
|
799 | + /** |
|
800 | + * Backwards compatibilty. |
|
801 | + */ |
|
802 | + public function update( $args = array() ) { |
|
803 | + return $this->create( $args ); |
|
804 | + } |
|
805 | 805 | |
806 | 806 | /** |
807 | 807 | * Retrieve renewal payments for a subscription |
@@ -811,22 +811,22 @@ discard block |
||
811 | 811 | */ |
812 | 812 | public function get_child_payments( $hide_pending = true ) { |
813 | 813 | |
814 | - $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
814 | + $statuses = array( 'publish', 'wpi-processing', 'wpi-renewal' ); |
|
815 | 815 | |
816 | - if ( ! $hide_pending ) { |
|
817 | - $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
818 | - } |
|
816 | + if ( ! $hide_pending ) { |
|
817 | + $statuses = array_keys( wpinv_get_invoice_statuses() ); |
|
818 | + } |
|
819 | 819 | |
820 | 820 | return get_posts( |
821 | - array( |
|
822 | - 'post_parent' => $this->get_parent_payment_id(), |
|
823 | - 'numberposts' => -1, |
|
824 | - 'post_status' => $statuses, |
|
825 | - 'orderby' => 'ID', |
|
826 | - 'order' => 'ASC', |
|
827 | - 'post_type' => 'wpi_invoice' |
|
828 | - ) |
|
829 | - ); |
|
821 | + array( |
|
822 | + 'post_parent' => $this->get_parent_payment_id(), |
|
823 | + 'numberposts' => -1, |
|
824 | + 'post_status' => $statuses, |
|
825 | + 'orderby' => 'ID', |
|
826 | + 'order' => 'ASC', |
|
827 | + 'post_type' => 'wpi_invoice' |
|
828 | + ) |
|
829 | + ); |
|
830 | 830 | } |
831 | 831 | |
832 | 832 | /** |
@@ -836,16 +836,16 @@ discard block |
||
836 | 836 | * @return int |
837 | 837 | */ |
838 | 838 | public function get_total_payments() { |
839 | - global $wpdb; |
|
839 | + global $wpdb; |
|
840 | 840 | |
841 | - $count = (int) $wpdb->get_var( |
|
842 | - $wpdb->prepare( |
|
843 | - "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_parent=%d AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )", |
|
844 | - $this->get_parent_invoice_id() |
|
845 | - ) |
|
846 | - ); |
|
841 | + $count = (int) $wpdb->get_var( |
|
842 | + $wpdb->prepare( |
|
843 | + "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_parent=%d AND post_status IN ( 'publish', 'wpi-processing', 'wpi-renewal' )", |
|
844 | + $this->get_parent_invoice_id() |
|
845 | + ) |
|
846 | + ); |
|
847 | 847 | |
848 | - // Maybe include parent invoice. |
|
848 | + // Maybe include parent invoice. |
|
849 | 849 | if ( $this->get_parent_payment()->is_paid() ) { |
850 | 850 | $count++; |
851 | 851 | } |
@@ -874,57 +874,57 @@ discard block |
||
874 | 874 | * |
875 | 875 | * @since 2.4 |
876 | 876 | * @param array $args Array of values for the payment, including amount and transaction ID |
877 | - * @param WPInv_Invoice $invoice If adding an existing invoice. |
|
877 | + * @param WPInv_Invoice $invoice If adding an existing invoice. |
|
878 | 878 | * @return bool |
879 | 879 | */ |
880 | 880 | public function add_payment( $args = array(), $invoice = false ) { |
881 | 881 | |
882 | - // Process each payment once. |
|
882 | + // Process each payment once. |
|
883 | 883 | if ( ! empty( $args['transaction_id'] ) && $this->payment_exists( $args['transaction_id'] ) ) { |
884 | 884 | return false; |
885 | 885 | } |
886 | 886 | |
887 | - // Are we creating a new invoice? |
|
888 | - if ( empty( $invoice ) ) { |
|
889 | - $invoice = $this->create_payment(); |
|
887 | + // Are we creating a new invoice? |
|
888 | + if ( empty( $invoice ) ) { |
|
889 | + $invoice = $this->create_payment(); |
|
890 | 890 | |
891 | - if ( empty( $invoice ) ) { |
|
892 | - return false; |
|
893 | - } |
|
891 | + if ( empty( $invoice ) ) { |
|
892 | + return false; |
|
893 | + } |
|
894 | 894 | |
895 | - } |
|
895 | + } |
|
896 | 896 | |
897 | - $invoice->set_status( 'wpi-renewal' ); |
|
897 | + $invoice->set_status( 'wpi-renewal' ); |
|
898 | 898 | |
899 | - // Maybe set a transaction id. |
|
900 | - if ( ! empty( $args['transaction_id'] ) ) { |
|
901 | - $invoice->set_transaction_id( $args['transaction_id'] ); |
|
902 | - } |
|
899 | + // Maybe set a transaction id. |
|
900 | + if ( ! empty( $args['transaction_id'] ) ) { |
|
901 | + $invoice->set_transaction_id( $args['transaction_id'] ); |
|
902 | + } |
|
903 | 903 | |
904 | - // Set the completed date. |
|
905 | - $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
904 | + // Set the completed date. |
|
905 | + $invoice->set_completed_date( current_time( 'mysql' ) ); |
|
906 | 906 | |
907 | - // And the gateway. |
|
908 | - if ( ! empty( $args['gateway'] ) ) { |
|
909 | - $invoice->set_gateway( $args['gateway'] ); |
|
910 | - } |
|
907 | + // And the gateway. |
|
908 | + if ( ! empty( $args['gateway'] ) ) { |
|
909 | + $invoice->set_gateway( $args['gateway'] ); |
|
910 | + } |
|
911 | 911 | |
912 | - $invoice->save(); |
|
912 | + $invoice->save(); |
|
913 | 913 | |
914 | - if ( ! $invoice->exists() ) { |
|
915 | - return false; |
|
916 | - } |
|
914 | + if ( ! $invoice->exists() ) { |
|
915 | + return false; |
|
916 | + } |
|
917 | 917 | |
918 | - do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
919 | - do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
918 | + do_action( 'getpaid_after_create_subscription_renewal_invoice', $invoice, $this ); |
|
919 | + do_action( 'wpinv_recurring_add_subscription_payment', $invoice, $this ); |
|
920 | 920 | do_action( 'wpinv_recurring_record_payment', $invoice->get_id(), $this->get_parent_invoice_id(), $invoice->get_recurring_total(), $invoice->get_transaction_id() ); |
921 | 921 | |
922 | 922 | update_post_meta( $invoice->get_id(), '_wpinv_subscription_id', $this->id ); |
923 | 923 | |
924 | 924 | return $invoice->get_id(); |
925 | - } |
|
925 | + } |
|
926 | 926 | |
927 | - /** |
|
927 | + /** |
|
928 | 928 | * Creates a new invoice and returns it. |
929 | 929 | * |
930 | 930 | * @since 1.0.19 |
@@ -932,97 +932,97 @@ discard block |
||
932 | 932 | */ |
933 | 933 | public function create_payment() { |
934 | 934 | |
935 | - $parent_invoice = $this->get_parent_payment(); |
|
936 | - |
|
937 | - if ( ! $parent_invoice->exists() ) { |
|
938 | - return false; |
|
939 | - } |
|
940 | - |
|
941 | - // Duplicate the parent invoice. |
|
942 | - $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
943 | - $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
944 | - $invoice->recalculate_total(); |
|
945 | - $invoice->set_status( 'wpi-pending' ); |
|
946 | - $invoice->save(); |
|
947 | - |
|
948 | - return $invoice->exists() ? $invoice : false; |
|
949 | - } |
|
950 | - |
|
951 | - /** |
|
952 | - * Renews or completes a subscription |
|
953 | - * |
|
954 | - * @since 1.0.0 |
|
955 | - * @return int The subscription's id |
|
956 | - */ |
|
957 | - public function renew() { |
|
958 | - |
|
959 | - // Complete subscription if applicable |
|
960 | - if ( $this->is_last_renewal() ) { |
|
961 | - return $this->complete(); |
|
962 | - } |
|
963 | - |
|
964 | - // Calculate new expiration |
|
965 | - $frequency = $this->get_frequency(); |
|
966 | - $period = $this->get_period(); |
|
967 | - $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
968 | - |
|
969 | - $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
970 | - $this->set_status( 'active' ); |
|
971 | - return $this->save(); |
|
972 | - |
|
973 | - do_action( 'getpaid_subscription_renewed', $this ); |
|
974 | - |
|
975 | - } |
|
976 | - |
|
977 | - /** |
|
978 | - * Marks a subscription as completed |
|
979 | - * |
|
980 | - * Subscription is completed when the number of payments matches the billing_times field |
|
981 | - * |
|
982 | - * @since 1.0.0 |
|
983 | - * @return int|bool Subscription id or false if the subscription is cancelled. |
|
984 | - */ |
|
985 | - public function complete() { |
|
986 | - |
|
987 | - // Only mark a subscription as complete if it's not already cancelled. |
|
988 | - if ( $this->has_status( 'cancelled' ) ) { |
|
989 | - return false; |
|
990 | - } |
|
991 | - |
|
992 | - $this->set_status( 'completed' ); |
|
993 | - return $this->save(); |
|
994 | - |
|
995 | - } |
|
996 | - |
|
997 | - /** |
|
998 | - * Marks a subscription as expired |
|
999 | - * |
|
1000 | - * @since 1.0.0 |
|
1001 | - * @param bool $check_expiration |
|
1002 | - * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
|
1003 | - */ |
|
1004 | - public function expire( $check_expiration = false ) { |
|
1005 | - |
|
1006 | - if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
1007 | - // Do not mark as expired since real expiration date is in the future |
|
1008 | - return false; |
|
1009 | - } |
|
1010 | - |
|
1011 | - $this->set_status( 'expired' ); |
|
1012 | - return $this->save(); |
|
1013 | - |
|
1014 | - } |
|
1015 | - |
|
1016 | - /** |
|
1017 | - * Marks a subscription as failing |
|
1018 | - * |
|
1019 | - * @since 2.4.2 |
|
1020 | - * @return int Subscription id. |
|
1021 | - */ |
|
1022 | - public function failing() { |
|
1023 | - $this->set_status( 'failing' ); |
|
1024 | - return $this->save(); |
|
1025 | - } |
|
935 | + $parent_invoice = $this->get_parent_payment(); |
|
936 | + |
|
937 | + if ( ! $parent_invoice->exists() ) { |
|
938 | + return false; |
|
939 | + } |
|
940 | + |
|
941 | + // Duplicate the parent invoice. |
|
942 | + $invoice = getpaid_duplicate_invoice( $parent_invoice ); |
|
943 | + $invoice->set_parent_id( $parent_invoice->get_id() ); |
|
944 | + $invoice->recalculate_total(); |
|
945 | + $invoice->set_status( 'wpi-pending' ); |
|
946 | + $invoice->save(); |
|
947 | + |
|
948 | + return $invoice->exists() ? $invoice : false; |
|
949 | + } |
|
950 | + |
|
951 | + /** |
|
952 | + * Renews or completes a subscription |
|
953 | + * |
|
954 | + * @since 1.0.0 |
|
955 | + * @return int The subscription's id |
|
956 | + */ |
|
957 | + public function renew() { |
|
958 | + |
|
959 | + // Complete subscription if applicable |
|
960 | + if ( $this->is_last_renewal() ) { |
|
961 | + return $this->complete(); |
|
962 | + } |
|
963 | + |
|
964 | + // Calculate new expiration |
|
965 | + $frequency = $this->get_frequency(); |
|
966 | + $period = $this->get_period(); |
|
967 | + $new_expiration = strtotime( "+ $frequency $period", $this->get_expiration_time() ); |
|
968 | + |
|
969 | + $this->set_expiration( date( 'Y-m-d H:i:s',$new_expiration ) ); |
|
970 | + $this->set_status( 'active' ); |
|
971 | + return $this->save(); |
|
972 | + |
|
973 | + do_action( 'getpaid_subscription_renewed', $this ); |
|
974 | + |
|
975 | + } |
|
976 | + |
|
977 | + /** |
|
978 | + * Marks a subscription as completed |
|
979 | + * |
|
980 | + * Subscription is completed when the number of payments matches the billing_times field |
|
981 | + * |
|
982 | + * @since 1.0.0 |
|
983 | + * @return int|bool Subscription id or false if the subscription is cancelled. |
|
984 | + */ |
|
985 | + public function complete() { |
|
986 | + |
|
987 | + // Only mark a subscription as complete if it's not already cancelled. |
|
988 | + if ( $this->has_status( 'cancelled' ) ) { |
|
989 | + return false; |
|
990 | + } |
|
991 | + |
|
992 | + $this->set_status( 'completed' ); |
|
993 | + return $this->save(); |
|
994 | + |
|
995 | + } |
|
996 | + |
|
997 | + /** |
|
998 | + * Marks a subscription as expired |
|
999 | + * |
|
1000 | + * @since 1.0.0 |
|
1001 | + * @param bool $check_expiration |
|
1002 | + * @return int|bool Subscription id or false if $check_expiration is true and expiration date is in the future. |
|
1003 | + */ |
|
1004 | + public function expire( $check_expiration = false ) { |
|
1005 | + |
|
1006 | + if ( $check_expiration && $this->get_expiration_time() > current_time( 'timestamp' ) ) { |
|
1007 | + // Do not mark as expired since real expiration date is in the future |
|
1008 | + return false; |
|
1009 | + } |
|
1010 | + |
|
1011 | + $this->set_status( 'expired' ); |
|
1012 | + return $this->save(); |
|
1013 | + |
|
1014 | + } |
|
1015 | + |
|
1016 | + /** |
|
1017 | + * Marks a subscription as failing |
|
1018 | + * |
|
1019 | + * @since 2.4.2 |
|
1020 | + * @return int Subscription id. |
|
1021 | + */ |
|
1022 | + public function failing() { |
|
1023 | + $this->set_status( 'failing' ); |
|
1024 | + return $this->save(); |
|
1025 | + } |
|
1026 | 1026 | |
1027 | 1027 | /** |
1028 | 1028 | * Marks a subscription as cancelled |
@@ -1031,19 +1031,19 @@ discard block |
||
1031 | 1031 | * @return int Subscription id. |
1032 | 1032 | */ |
1033 | 1033 | public function cancel() { |
1034 | - $this->set_status( 'cancelled' ); |
|
1035 | - return $this->save(); |
|
1034 | + $this->set_status( 'cancelled' ); |
|
1035 | + return $this->save(); |
|
1036 | 1036 | } |
1037 | 1037 | |
1038 | - /** |
|
1039 | - * Determines if a subscription can be cancelled both locally and with a payment processor. |
|
1040 | - * |
|
1041 | - * @since 1.0.0 |
|
1042 | - * @return bool |
|
1043 | - */ |
|
1044 | - public function can_cancel() { |
|
1045 | - return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
1046 | - } |
|
1038 | + /** |
|
1039 | + * Determines if a subscription can be cancelled both locally and with a payment processor. |
|
1040 | + * |
|
1041 | + * @since 1.0.0 |
|
1042 | + * @return bool |
|
1043 | + */ |
|
1044 | + public function can_cancel() { |
|
1045 | + return apply_filters( 'wpinv_subscription_can_cancel', $this->has_status( $this->get_cancellable_statuses() ), $this ); |
|
1046 | + } |
|
1047 | 1047 | |
1048 | 1048 | /** |
1049 | 1049 | * Returns an array of subscription statuses that can be cancelled |
@@ -1056,96 +1056,96 @@ discard block |
||
1056 | 1056 | return apply_filters( 'wpinv_recurring_cancellable_statuses', array( 'active', 'trialling', 'failing' ) ); |
1057 | 1057 | } |
1058 | 1058 | |
1059 | - /** |
|
1060 | - * Retrieves the URL to cancel subscription |
|
1061 | - * |
|
1062 | - * @since 1.0.0 |
|
1063 | - * @return string |
|
1064 | - */ |
|
1065 | - public function get_cancel_url() { |
|
1066 | - $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
1067 | - return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
1068 | - } |
|
1069 | - |
|
1070 | - /** |
|
1071 | - * Retrieves the URL to view a subscription |
|
1072 | - * |
|
1073 | - * @since 1.0.19 |
|
1074 | - * @return string |
|
1075 | - */ |
|
1076 | - public function get_view_url() { |
|
1077 | - |
|
1078 | - $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
1079 | - $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
1080 | - |
|
1081 | - return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
1082 | - } |
|
1083 | - |
|
1084 | - /** |
|
1085 | - * Determines if subscription can be manually renewed |
|
1086 | - * |
|
1087 | - * This method is filtered by payment gateways in order to return true on subscriptions |
|
1088 | - * that can be renewed manually |
|
1089 | - * |
|
1090 | - * @since 2.5 |
|
1091 | - * @return bool |
|
1092 | - */ |
|
1093 | - public function can_renew() { |
|
1094 | - return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
1095 | - } |
|
1096 | - |
|
1097 | - /** |
|
1098 | - * Retrieves the URL to renew a subscription |
|
1099 | - * |
|
1100 | - * @since 2.5 |
|
1101 | - * @return string |
|
1102 | - */ |
|
1103 | - public function get_renew_url() { |
|
1104 | - $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
1105 | - return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
1106 | - } |
|
1107 | - |
|
1108 | - /** |
|
1109 | - * Determines if subscription can have their payment method updated |
|
1110 | - * |
|
1111 | - * @since 1.0.0 |
|
1112 | - * @return bool |
|
1113 | - */ |
|
1114 | - public function can_update() { |
|
1115 | - return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
1116 | - } |
|
1117 | - |
|
1118 | - /** |
|
1119 | - * Retrieves the URL to update subscription |
|
1120 | - * |
|
1121 | - * @since 1.0.0 |
|
1122 | - * @return string |
|
1123 | - */ |
|
1124 | - public function get_update_url() { |
|
1125 | - $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
1126 | - return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
1127 | - } |
|
1128 | - |
|
1129 | - /** |
|
1130 | - * Retrieves the subscription status label |
|
1131 | - * |
|
1132 | - * @since 1.0.0 |
|
1133 | - * @return string |
|
1134 | - */ |
|
1135 | - public function get_status_label() { |
|
1136 | - return getpaid_get_subscription_status_label( $this->get_status() ); |
|
1137 | - } |
|
1138 | - |
|
1139 | - /** |
|
1140 | - * Retrieves the subscription status class |
|
1141 | - * |
|
1142 | - * @since 1.0.19 |
|
1143 | - * @return string |
|
1144 | - */ |
|
1145 | - public function get_status_class() { |
|
1146 | - $statuses = getpaid_get_subscription_status_classes(); |
|
1147 | - return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
1148 | - } |
|
1059 | + /** |
|
1060 | + * Retrieves the URL to cancel subscription |
|
1061 | + * |
|
1062 | + * @since 1.0.0 |
|
1063 | + * @return string |
|
1064 | + */ |
|
1065 | + public function get_cancel_url() { |
|
1066 | + $url = getpaid_get_authenticated_action_url( 'subscription_cancel', $this->get_view_url() ); |
|
1067 | + return apply_filters( 'wpinv_subscription_cancel_url', $url, $this ); |
|
1068 | + } |
|
1069 | + |
|
1070 | + /** |
|
1071 | + * Retrieves the URL to view a subscription |
|
1072 | + * |
|
1073 | + * @since 1.0.19 |
|
1074 | + * @return string |
|
1075 | + */ |
|
1076 | + public function get_view_url() { |
|
1077 | + |
|
1078 | + $url = getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ); |
|
1079 | + $url = add_query_arg( 'subscription', $this->get_id(), $url ); |
|
1080 | + |
|
1081 | + return apply_filters( 'getpaid_get_subscription_view_url', $url, $this ); |
|
1082 | + } |
|
1083 | + |
|
1084 | + /** |
|
1085 | + * Determines if subscription can be manually renewed |
|
1086 | + * |
|
1087 | + * This method is filtered by payment gateways in order to return true on subscriptions |
|
1088 | + * that can be renewed manually |
|
1089 | + * |
|
1090 | + * @since 2.5 |
|
1091 | + * @return bool |
|
1092 | + */ |
|
1093 | + public function can_renew() { |
|
1094 | + return apply_filters( 'wpinv_subscription_can_renew', true, $this ); |
|
1095 | + } |
|
1096 | + |
|
1097 | + /** |
|
1098 | + * Retrieves the URL to renew a subscription |
|
1099 | + * |
|
1100 | + * @since 2.5 |
|
1101 | + * @return string |
|
1102 | + */ |
|
1103 | + public function get_renew_url() { |
|
1104 | + $url = wp_nonce_url( add_query_arg( array( 'getpaid-action' => 'renew_subscription', 'sub_id' => $this->get_id ) ), 'getpaid-nonce' ); |
|
1105 | + return apply_filters( 'wpinv_subscription_renew_url', $url, $this ); |
|
1106 | + } |
|
1107 | + |
|
1108 | + /** |
|
1109 | + * Determines if subscription can have their payment method updated |
|
1110 | + * |
|
1111 | + * @since 1.0.0 |
|
1112 | + * @return bool |
|
1113 | + */ |
|
1114 | + public function can_update() { |
|
1115 | + return apply_filters( 'wpinv_subscription_can_update', false, $this ); |
|
1116 | + } |
|
1117 | + |
|
1118 | + /** |
|
1119 | + * Retrieves the URL to update subscription |
|
1120 | + * |
|
1121 | + * @since 1.0.0 |
|
1122 | + * @return string |
|
1123 | + */ |
|
1124 | + public function get_update_url() { |
|
1125 | + $url = add_query_arg( array( 'action' => 'update', 'subscription_id' => $this->get_id() ) ); |
|
1126 | + return apply_filters( 'wpinv_subscription_update_url', $url, $this ); |
|
1127 | + } |
|
1128 | + |
|
1129 | + /** |
|
1130 | + * Retrieves the subscription status label |
|
1131 | + * |
|
1132 | + * @since 1.0.0 |
|
1133 | + * @return string |
|
1134 | + */ |
|
1135 | + public function get_status_label() { |
|
1136 | + return getpaid_get_subscription_status_label( $this->get_status() ); |
|
1137 | + } |
|
1138 | + |
|
1139 | + /** |
|
1140 | + * Retrieves the subscription status class |
|
1141 | + * |
|
1142 | + * @since 1.0.19 |
|
1143 | + * @return string |
|
1144 | + */ |
|
1145 | + public function get_status_class() { |
|
1146 | + $statuses = getpaid_get_subscription_status_classes(); |
|
1147 | + return isset( $statuses[ $this->get_status() ] ) ? $statuses[ $this->get_status() ] : 'badge-dark'; |
|
1148 | + } |
|
1149 | 1149 | |
1150 | 1150 | /** |
1151 | 1151 | * Retrieves the subscription status label |
@@ -1155,11 +1155,11 @@ discard block |
||
1155 | 1155 | */ |
1156 | 1156 | public function get_status_label_html() { |
1157 | 1157 | |
1158 | - $status_label = sanitize_text_field( $this->get_status_label() ); |
|
1159 | - $class = esc_attr( $this->get_status_class() ); |
|
1160 | - $status = sanitize_html_class( $this->get_status() ); |
|
1158 | + $status_label = sanitize_text_field( $this->get_status_label() ); |
|
1159 | + $class = esc_attr( $this->get_status_class() ); |
|
1160 | + $status = sanitize_html_class( $this->get_status() ); |
|
1161 | 1161 | |
1162 | - return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
1162 | + return "<span class='bsui'><span class='badge $class $status'>$status_label</span></span>"; |
|
1163 | 1163 | } |
1164 | 1164 | |
1165 | 1165 | /** |
@@ -1170,75 +1170,75 @@ discard block |
||
1170 | 1170 | * @return bool |
1171 | 1171 | */ |
1172 | 1172 | public function payment_exists( $txn_id = '' ) { |
1173 | - $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
1173 | + $invoice_id = WPInv_Invoice::get_invoice_id_by_field( $txn_id, 'transaction_id' ); |
|
1174 | 1174 | return ! empty( $invoice_id ); |
1175 | - } |
|
1176 | - |
|
1177 | - /** |
|
1178 | - * Handle the status transition. |
|
1179 | - */ |
|
1180 | - protected function status_transition() { |
|
1181 | - $status_transition = $this->status_transition; |
|
1182 | - |
|
1183 | - // Reset status transition variable. |
|
1184 | - $this->status_transition = false; |
|
1185 | - |
|
1186 | - if ( $status_transition ) { |
|
1187 | - try { |
|
1188 | - |
|
1189 | - // Fire a hook for the status change. |
|
1190 | - do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
1191 | - do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
1192 | - |
|
1193 | - if ( ! empty( $status_transition['from'] ) ) { |
|
1194 | - |
|
1195 | - /* translators: 1: old subscription status 2: new subscription status */ |
|
1196 | - $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
1197 | - |
|
1198 | - // Note the transition occurred. |
|
1199 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
1200 | - |
|
1201 | - // Fire another hook. |
|
1202 | - do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
1203 | - do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
1204 | - |
|
1205 | - } else { |
|
1206 | - /* translators: %s: new invoice status */ |
|
1207 | - $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
1208 | - |
|
1209 | - // Note the transition occurred. |
|
1210 | - $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
1211 | - |
|
1212 | - } |
|
1213 | - } catch ( Exception $e ) { |
|
1214 | - $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
1215 | - } |
|
1216 | - } |
|
1217 | - |
|
1218 | - } |
|
1219 | - |
|
1220 | - /** |
|
1221 | - * Save data to the database. |
|
1222 | - * |
|
1223 | - * @since 1.0.19 |
|
1224 | - * @return int subscription ID |
|
1225 | - */ |
|
1226 | - public function save() { |
|
1227 | - parent::save(); |
|
1228 | - $this->status_transition(); |
|
1229 | - return $this->get_id(); |
|
1230 | - } |
|
1231 | - |
|
1232 | - /** |
|
1233 | - * Activates a subscription. |
|
1234 | - * |
|
1235 | - * @since 1.0.19 |
|
1236 | - * @return int subscription ID |
|
1237 | - */ |
|
1238 | - public function activate() { |
|
1239 | - $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
|
1240 | - $this->set_status( $status ); |
|
1241 | - return $this->save(); |
|
1242 | - } |
|
1175 | + } |
|
1176 | + |
|
1177 | + /** |
|
1178 | + * Handle the status transition. |
|
1179 | + */ |
|
1180 | + protected function status_transition() { |
|
1181 | + $status_transition = $this->status_transition; |
|
1182 | + |
|
1183 | + // Reset status transition variable. |
|
1184 | + $this->status_transition = false; |
|
1185 | + |
|
1186 | + if ( $status_transition ) { |
|
1187 | + try { |
|
1188 | + |
|
1189 | + // Fire a hook for the status change. |
|
1190 | + do_action( 'wpinv_subscription_' . $status_transition['to'], $this->get_id(), $this, $status_transition ); |
|
1191 | + do_action( 'getpaid_subscription_' . $status_transition['to'], $this, $status_transition ); |
|
1192 | + |
|
1193 | + if ( ! empty( $status_transition['from'] ) ) { |
|
1194 | + |
|
1195 | + /* translators: 1: old subscription status 2: new subscription status */ |
|
1196 | + $transition_note = sprintf( __( 'Subscription status changed from %1$s to %2$s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['from'] ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
1197 | + |
|
1198 | + // Note the transition occurred. |
|
1199 | + $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
1200 | + |
|
1201 | + // Fire another hook. |
|
1202 | + do_action( 'getpaid_subscription_status_' . $status_transition['from'] . '_to_' . $status_transition['to'], $this->get_id(), $this ); |
|
1203 | + do_action( 'getpaid_subscription_status_changed', $this, $status_transition['from'], $status_transition['to'] ); |
|
1204 | + |
|
1205 | + } else { |
|
1206 | + /* translators: %s: new invoice status */ |
|
1207 | + $transition_note = sprintf( __( 'Subscription status set to %s.', 'invoicing' ), getpaid_get_subscription_status_label( $status_transition['to'] ) ); |
|
1208 | + |
|
1209 | + // Note the transition occurred. |
|
1210 | + $this->get_parent_payment()->add_note( $transition_note, false, false, true ); |
|
1211 | + |
|
1212 | + } |
|
1213 | + } catch ( Exception $e ) { |
|
1214 | + $this->get_parent_payment()->add_note( __( 'Error during subscription status transition.', 'invoicing' ) . ' ' . $e->getMessage() ); |
|
1215 | + } |
|
1216 | + } |
|
1217 | + |
|
1218 | + } |
|
1219 | + |
|
1220 | + /** |
|
1221 | + * Save data to the database. |
|
1222 | + * |
|
1223 | + * @since 1.0.19 |
|
1224 | + * @return int subscription ID |
|
1225 | + */ |
|
1226 | + public function save() { |
|
1227 | + parent::save(); |
|
1228 | + $this->status_transition(); |
|
1229 | + return $this->get_id(); |
|
1230 | + } |
|
1231 | + |
|
1232 | + /** |
|
1233 | + * Activates a subscription. |
|
1234 | + * |
|
1235 | + * @since 1.0.19 |
|
1236 | + * @return int subscription ID |
|
1237 | + */ |
|
1238 | + public function activate() { |
|
1239 | + $status = 'trialling' == $this->get_status() ? 'trialling' : 'active'; |
|
1240 | + $this->set_status( $status ); |
|
1241 | + return $this->save(); |
|
1242 | + } |
|
1243 | 1243 | |
1244 | 1244 | } |
@@ -7,50 +7,50 @@ |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | -$class = ! is_singular( 'page' ) ? 'px-1' : ''; |
|
12 | +$class = !is_singular('page') ? 'px-1' : ''; |
|
13 | 13 | ?> |
14 | 14 | |
15 | - <?php do_action( 'getpaid_before_invoice_meta', $invoice ); ?> |
|
15 | + <?php do_action('getpaid_before_invoice_meta', $invoice); ?> |
|
16 | 16 | <div class="getpaid-invoice-meta-data"> |
17 | 17 | |
18 | - <?php do_action( 'getpaid_before_invoice_meta_table', $invoice ); ?> |
|
18 | + <?php do_action('getpaid_before_invoice_meta_table', $invoice); ?> |
|
19 | 19 | <table class="table table-bordered"> |
20 | 20 | <tbody> |
21 | 21 | |
22 | - <?php do_action( "getpaid_before_invoice_meta_rows", $invoice ); ?> |
|
23 | - <?php foreach ( $meta as $key => $data ) : ?> |
|
22 | + <?php do_action("getpaid_before_invoice_meta_rows", $invoice); ?> |
|
23 | + <?php foreach ($meta as $key => $data) : ?> |
|
24 | 24 | |
25 | - <?php if ( ! empty( $data['value'] ) ) : ?> |
|
25 | + <?php if (!empty($data['value'])) : ?> |
|
26 | 26 | |
27 | - <?php do_action( "getpaid_before_invoice_meta_$key", $invoice, $data ); ?> |
|
27 | + <?php do_action("getpaid_before_invoice_meta_$key", $invoice, $data); ?> |
|
28 | 28 | |
29 | - <tr class="getpaid-invoice-meta-<?php echo sanitize_html_class( $key ); ?>"> |
|
29 | + <tr class="getpaid-invoice-meta-<?php echo sanitize_html_class($key); ?>"> |
|
30 | 30 | |
31 | 31 | <th class="<?php echo $class; ?> w-50 font-weight-bold"> |
32 | - <?php echo sanitize_text_field( $data['label'] ); ?> |
|
32 | + <?php echo sanitize_text_field($data['label']); ?> |
|
33 | 33 | </th> |
34 | 34 | |
35 | 35 | <td class="<?php echo $class; ?> text-break w-50 font-weight-normal"> |
36 | - <span class="getpaid-invoice-meta-<?php echo sanitize_html_class( $key ); ?>-value"><?php echo wp_kses_post( $data['value'] ); ?></span> |
|
36 | + <span class="getpaid-invoice-meta-<?php echo sanitize_html_class($key); ?>-value"><?php echo wp_kses_post($data['value']); ?></span> |
|
37 | 37 | </td> |
38 | 38 | |
39 | 39 | </tr> |
40 | 40 | |
41 | - <?php do_action( "getpaid_after_invoice_meta_$key", $invoice, $data ); ?> |
|
41 | + <?php do_action("getpaid_after_invoice_meta_$key", $invoice, $data); ?> |
|
42 | 42 | |
43 | 43 | <?php endif; ?> |
44 | 44 | |
45 | 45 | <?php endforeach; ?> |
46 | - <?php do_action( "getpaid_after_invoice_meta_rows", $invoice ); ?> |
|
46 | + <?php do_action("getpaid_after_invoice_meta_rows", $invoice); ?> |
|
47 | 47 | |
48 | 48 | </tbody> |
49 | 49 | </table> |
50 | - <?php do_action( 'getpaid_after_invoice_meta_table', $invoice ); ?> |
|
50 | + <?php do_action('getpaid_after_invoice_meta_table', $invoice); ?> |
|
51 | 51 | |
52 | 52 | |
53 | 53 | </div> |
54 | - <?php do_action( 'getpaid_after_invoice_meta', $invoice ); ?> |
|
54 | + <?php do_action('getpaid_after_invoice_meta', $invoice); ?> |
|
55 | 55 | |
56 | 56 | <?php |
@@ -7,16 +7,16 @@ discard block |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | 12 | // Totals rows. |
13 | 13 | $totals = apply_filters( |
14 | 14 | 'getpaid_payment_form_cart_table_totals', |
15 | 15 | array( |
16 | - 'subtotal' => __( 'Subtotal', 'invoicing' ), |
|
17 | - 'tax' => __( 'Tax', 'invoicing' ), |
|
18 | - 'discount' => __( 'Discount', 'invoicing' ), |
|
19 | - 'total' => __( 'Total', 'invoicing' ), |
|
16 | + 'subtotal' => __('Subtotal', 'invoicing'), |
|
17 | + 'tax' => __('Tax', 'invoicing'), |
|
18 | + 'discount' => __('Discount', 'invoicing'), |
|
19 | + 'total' => __('Total', 'invoicing'), |
|
20 | 20 | ), |
21 | 21 | $form |
22 | 22 | ); |
@@ -24,31 +24,31 @@ discard block |
||
24 | 24 | $currency = $form->get_currency(); |
25 | 25 | $country = wpinv_get_default_country(); |
26 | 26 | |
27 | -if ( ! empty( $form->invoice ) ) { |
|
28 | - $country = $form->invoice->get_country(); |
|
27 | +if (!empty($form->invoice)) { |
|
28 | + $country = $form->invoice->get_country(); |
|
29 | 29 | } |
30 | 30 | |
31 | -if ( ! wpinv_use_taxes() && isset( $totals['tax'] ) ) { |
|
32 | - unset( $totals['tax'] ); |
|
31 | +if (!wpinv_use_taxes() && isset($totals['tax'])) { |
|
32 | + unset($totals['tax']); |
|
33 | 33 | } |
34 | 34 | |
35 | -do_action( 'getpaid_before_payment_form_cart_totals', $form, $totals ); |
|
35 | +do_action('getpaid_before_payment_form_cart_totals', $form, $totals); |
|
36 | 36 | |
37 | 37 | ?> |
38 | 38 | <div class='border-top getpaid-payment-form-items-cart-totals'> |
39 | - <?php foreach ( $totals as $key => $label ) : ?> |
|
40 | - <div class="getpaid-form-cart-totals-col px-3 py-2 getpaid-form-cart-totals-<?php echo esc_attr( $key ); ?>"> |
|
39 | + <?php foreach ($totals as $key => $label) : ?> |
|
40 | + <div class="getpaid-form-cart-totals-col px-3 py-2 getpaid-form-cart-totals-<?php echo esc_attr($key); ?>"> |
|
41 | 41 | <div class="row"> |
42 | 42 | <div class="col-12 offset-sm-5 col-sm-3"> |
43 | - <?php echo sanitize_text_field( $label ); ?> |
|
43 | + <?php echo sanitize_text_field($label); ?> |
|
44 | 44 | </div> |
45 | - <div class="col-12 col-sm-4 getpaid-form-cart-totals-total-<?php echo esc_attr( $key ); ?>"> |
|
45 | + <div class="col-12 col-sm-4 getpaid-form-cart-totals-total-<?php echo esc_attr($key); ?>"> |
|
46 | 46 | <?php |
47 | - do_action( "getpaid_payment_form_cart_totals_$key", $form ); |
|
47 | + do_action("getpaid_payment_form_cart_totals_$key", $form); |
|
48 | 48 | |
49 | 49 | // Total tax. |
50 | - if ( in_array( $key, array( 'tax', 'discount', 'subtotal', 'total' ) ) ) { |
|
51 | - echo wpinv_price( 0, $currency ); |
|
50 | + if (in_array($key, array('tax', 'discount', 'subtotal', 'total'))) { |
|
51 | + echo wpinv_price(0, $currency); |
|
52 | 52 | } |
53 | 53 | |
54 | 54 | ?> |
@@ -59,4 +59,4 @@ discard block |
||
59 | 59 | </div> |
60 | 60 | |
61 | 61 | <?php |
62 | -do_action( 'getpaid_payment_form_cart_totals', $form, $totals ); |
|
62 | +do_action('getpaid_payment_form_cart_totals', $form, $totals); |
@@ -7,31 +7,31 @@ discard block |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | 12 | // Cart table columns. |
13 | 13 | $columns = array( |
14 | - 'name' => __( 'Item', 'invoicing' ), |
|
15 | - 'price' => __( 'Price', 'invoicing' ), |
|
16 | - 'quantity' => __( 'Quantity', 'invoicing' ), |
|
17 | - 'subtotal' => __( 'Subtotal', 'invoicing' ), |
|
14 | + 'name' => __('Item', 'invoicing'), |
|
15 | + 'price' => __('Price', 'invoicing'), |
|
16 | + 'quantity' => __('Quantity', 'invoicing'), |
|
17 | + 'subtotal' => __('Subtotal', 'invoicing'), |
|
18 | 18 | ); |
19 | 19 | |
20 | -if ( ! empty( $form->invoice ) ) { |
|
21 | - $columns = getpaid_invoice_item_columns( $form->invoice ); |
|
20 | +if (!empty($form->invoice)) { |
|
21 | + $columns = getpaid_invoice_item_columns($form->invoice); |
|
22 | 22 | } |
23 | 23 | |
24 | -$columns = apply_filters( 'getpaid_payment_form_cart_table_columns', $columns, $form ); |
|
24 | +$columns = apply_filters('getpaid_payment_form_cart_table_columns', $columns, $form); |
|
25 | 25 | |
26 | -do_action( 'getpaid_before_payment_form_cart', $form ); |
|
26 | +do_action('getpaid_before_payment_form_cart', $form); |
|
27 | 27 | |
28 | 28 | ?> |
29 | 29 | <div class="getpaid-payment-form-items-cart border form-group"> |
30 | 30 | <div class="getpaid-payment-form-items-cart-header border-bottom py-2 px-3 font-weight-bold bg-light"> |
31 | 31 | <div class="form-row"> |
32 | - <?php foreach ( $columns as $key => $label ) : ?> |
|
33 | - <div class="<?php echo 'name' == $key ? 'col-12 col-sm-5' : 'col-12 col-sm' ?> getpaid-form-cart-item-<?php echo esc_attr( $key ); ?>"> |
|
34 | - <?php echo sanitize_text_field( $label ); ?> |
|
32 | + <?php foreach ($columns as $key => $label) : ?> |
|
33 | + <div class="<?php echo 'name' == $key ? 'col-12 col-sm-5' : 'col-12 col-sm' ?> getpaid-form-cart-item-<?php echo esc_attr($key); ?>"> |
|
34 | + <?php echo sanitize_text_field($label); ?> |
|
35 | 35 | </div> |
36 | 36 | <?php endforeach; ?> |
37 | 37 | </div> |
@@ -39,16 +39,16 @@ discard block |
||
39 | 39 | <?php |
40 | 40 | |
41 | 41 | // Display the item totals. |
42 | - foreach ( $form->get_items() as $item ) { |
|
43 | - wpinv_get_template( 'payment-forms/cart-item.php', compact( 'form', 'item', 'columns' ) ); |
|
42 | + foreach ($form->get_items() as $item) { |
|
43 | + wpinv_get_template('payment-forms/cart-item.php', compact('form', 'item', 'columns')); |
|
44 | 44 | } |
45 | 45 | |
46 | 46 | // Display the cart totals. |
47 | - wpinv_get_template( 'payment-forms/cart-totals.php', compact( 'form' ) ); |
|
47 | + wpinv_get_template('payment-forms/cart-totals.php', compact('form')); |
|
48 | 48 | |
49 | 49 | ?> |
50 | 50 | </div> |
51 | 51 | |
52 | 52 | <?php |
53 | 53 | |
54 | -do_action( 'getpaid_after_payment_form_cart', $form ); |
|
54 | +do_action('getpaid_after_payment_form_cart', $form); |
@@ -13,30 +13,30 @@ 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( 'addons' ); |
|
22 | + /** |
|
23 | + * An array of features that this gateway supports. |
|
24 | + * |
|
25 | + * @var array |
|
26 | + */ |
|
27 | + protected $supports = array( 'addons' ); |
|
28 | 28 | |
29 | 29 | /** |
30 | - * Payment method order. |
|
31 | - * |
|
32 | - * @var int |
|
33 | - */ |
|
34 | - public $order = 8; |
|
30 | + * Payment method order. |
|
31 | + * |
|
32 | + * @var int |
|
33 | + */ |
|
34 | + public $order = 8; |
|
35 | 35 | |
36 | 36 | /** |
37 | - * Class constructor. |
|
38 | - */ |
|
39 | - public function __construct() { |
|
37 | + * Class constructor. |
|
38 | + */ |
|
39 | + public function __construct() { |
|
40 | 40 | parent::__construct(); |
41 | 41 | |
42 | 42 | $this->title = __( 'Direct bank transfer', 'invoicing' ); |
@@ -44,23 +44,23 @@ discard block |
||
44 | 44 | $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
45 | 45 | $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
46 | 46 | |
47 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
48 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
49 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
50 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
47 | + add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
48 | + add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
49 | + add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
50 | + add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
51 | 51 | |
52 | 52 | } |
53 | 53 | |
54 | 54 | /** |
55 | - * Process Payment. |
|
56 | - * |
|
57 | - * |
|
58 | - * @param WPInv_Invoice $invoice Invoice. |
|
59 | - * @param array $submission_data Posted checkout fields. |
|
60 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
61 | - * @return array |
|
62 | - */ |
|
63 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
55 | + * Process Payment. |
|
56 | + * |
|
57 | + * |
|
58 | + * @param WPInv_Invoice $invoice Invoice. |
|
59 | + * @param array $submission_data Posted checkout fields. |
|
60 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
61 | + * @return array |
|
62 | + */ |
|
63 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
64 | 64 | |
65 | 65 | // Add a transaction id. |
66 | 66 | $invoice->set_transaction_id( $invoice->generate_key('trans_') ); |
@@ -81,66 +81,66 @@ discard block |
||
81 | 81 | } |
82 | 82 | |
83 | 83 | /** |
84 | - * Output for the order received page. |
|
85 | - * |
|
86 | - * @param WPInv_Invoice $invoice Invoice. |
|
87 | - */ |
|
88 | - public function thankyou_page( $invoice ) { |
|
84 | + * Output for the order received page. |
|
85 | + * |
|
86 | + * @param WPInv_Invoice $invoice Invoice. |
|
87 | + */ |
|
88 | + public function thankyou_page( $invoice ) { |
|
89 | 89 | |
90 | 90 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
91 | 91 | |
92 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
92 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
93 | 93 | |
94 | 94 | if ( ! empty( $this->instructions ) ) { |
95 | 95 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
96 | - } |
|
96 | + } |
|
97 | 97 | |
98 | - $this->bank_details( $invoice ); |
|
98 | + $this->bank_details( $invoice ); |
|
99 | 99 | |
100 | - echo '</div>'; |
|
100 | + echo '</div>'; |
|
101 | 101 | |
102 | 102 | } |
103 | 103 | |
104 | - } |
|
104 | + } |
|
105 | 105 | |
106 | 106 | /** |
107 | - * Add content to the WPI emails. |
|
108 | - * |
|
109 | - * @param WPInv_Invoice $invoice Invoice. |
|
110 | - * @param string $email_type Email format: plain text or HTML. |
|
111 | - * @param bool $sent_to_admin Sent to admin. |
|
112 | - */ |
|
113 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
107 | + * Add content to the WPI emails. |
|
108 | + * |
|
109 | + * @param WPInv_Invoice $invoice Invoice. |
|
110 | + * @param string $email_type Email format: plain text or HTML. |
|
111 | + * @param bool $sent_to_admin Sent to admin. |
|
112 | + */ |
|
113 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
114 | 114 | |
115 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
115 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
116 | 116 | |
117 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
117 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
118 | 118 | |
119 | - if ( $this->instructions ) { |
|
120 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
119 | + if ( $this->instructions ) { |
|
120 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
121 | 121 | } |
122 | 122 | |
123 | - $this->bank_details( $invoice ); |
|
123 | + $this->bank_details( $invoice ); |
|
124 | 124 | |
125 | - echo '</div>'; |
|
125 | + echo '</div>'; |
|
126 | 126 | |
127 | - } |
|
127 | + } |
|
128 | 128 | |
129 | 129 | } |
130 | 130 | |
131 | 131 | /** |
132 | - * Get bank details and place into a list format. |
|
133 | - * |
|
134 | - * @param WPInv_Invoice $invoice Invoice. |
|
135 | - */ |
|
136 | - protected function bank_details( $invoice ) { |
|
132 | + * Get bank details and place into a list format. |
|
133 | + * |
|
134 | + * @param WPInv_Invoice $invoice Invoice. |
|
135 | + */ |
|
136 | + protected function bank_details( $invoice ) { |
|
137 | 137 | |
138 | - // Get the invoice country and country $locale. |
|
139 | - $country = $invoice->get_country(); |
|
140 | - $locale = $this->get_country_locale(); |
|
138 | + // Get the invoice country and country $locale. |
|
139 | + $country = $invoice->get_country(); |
|
140 | + $locale = $this->get_country_locale(); |
|
141 | 141 | |
142 | - // Get sortcode label in the $locale array and use appropriate one. |
|
143 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
142 | + // Get sortcode label in the $locale array and use appropriate one. |
|
143 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
144 | 144 | |
145 | 145 | $bank_fields = array( |
146 | 146 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -169,144 +169,144 @@ discard block |
||
169 | 169 | return; |
170 | 170 | } |
171 | 171 | |
172 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
172 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
173 | 173 | |
174 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
174 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
175 | 175 | |
176 | - foreach ( $bank_info as $key => $data ) { |
|
176 | + foreach ( $bank_info as $key => $data ) { |
|
177 | 177 | |
178 | - $key = sanitize_html_class( $key ); |
|
179 | - $label = wp_kses_post( $data['label'] ); |
|
180 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
178 | + $key = sanitize_html_class( $key ); |
|
179 | + $label = wp_kses_post( $data['label'] ); |
|
180 | + $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
181 | 181 | |
182 | - echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL; |
|
183 | - } |
|
182 | + echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL; |
|
183 | + } |
|
184 | 184 | |
185 | - echo '</table>'; |
|
185 | + echo '</table>'; |
|
186 | 186 | |
187 | 187 | } |
188 | 188 | |
189 | 189 | /** |
190 | - * Get country locale if localized. |
|
191 | - * |
|
192 | - * @return array |
|
193 | - */ |
|
194 | - public function get_country_locale() { |
|
195 | - |
|
196 | - if ( empty( $this->locale ) ) { |
|
197 | - |
|
198 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
199 | - $this->locale = apply_filters( |
|
200 | - 'getpaid_get_bank_transfer_locale', |
|
201 | - array( |
|
202 | - 'AU' => array( |
|
203 | - 'sortcode' => array( |
|
204 | - 'label' => __( 'BSB', 'invoicing' ), |
|
205 | - ), |
|
206 | - ), |
|
207 | - 'CA' => array( |
|
208 | - 'sortcode' => array( |
|
209 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
210 | - ), |
|
211 | - ), |
|
212 | - 'IN' => array( |
|
213 | - 'sortcode' => array( |
|
214 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
215 | - ), |
|
216 | - ), |
|
217 | - 'IT' => array( |
|
218 | - 'sortcode' => array( |
|
219 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
220 | - ), |
|
221 | - ), |
|
222 | - 'NZ' => array( |
|
223 | - 'sortcode' => array( |
|
224 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
225 | - ), |
|
226 | - ), |
|
227 | - 'SE' => array( |
|
228 | - 'sortcode' => array( |
|
229 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
230 | - ), |
|
231 | - ), |
|
232 | - 'US' => array( |
|
233 | - 'sortcode' => array( |
|
234 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
235 | - ), |
|
236 | - ), |
|
237 | - 'ZA' => array( |
|
238 | - 'sortcode' => array( |
|
239 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
240 | - ), |
|
241 | - ), |
|
242 | - ) |
|
243 | - ); |
|
244 | - |
|
245 | - } |
|
246 | - |
|
247 | - return $this->locale; |
|
248 | - |
|
249 | - } |
|
250 | - |
|
251 | - /** |
|
252 | - * Filters the gateway settings. |
|
253 | - * |
|
254 | - * @param array $admin_settings |
|
255 | - */ |
|
256 | - public function admin_settings( $admin_settings ) { |
|
190 | + * Get country locale if localized. |
|
191 | + * |
|
192 | + * @return array |
|
193 | + */ |
|
194 | + public function get_country_locale() { |
|
195 | + |
|
196 | + if ( empty( $this->locale ) ) { |
|
197 | + |
|
198 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
199 | + $this->locale = apply_filters( |
|
200 | + 'getpaid_get_bank_transfer_locale', |
|
201 | + array( |
|
202 | + 'AU' => array( |
|
203 | + 'sortcode' => array( |
|
204 | + 'label' => __( 'BSB', 'invoicing' ), |
|
205 | + ), |
|
206 | + ), |
|
207 | + 'CA' => array( |
|
208 | + 'sortcode' => array( |
|
209 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
210 | + ), |
|
211 | + ), |
|
212 | + 'IN' => array( |
|
213 | + 'sortcode' => array( |
|
214 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
215 | + ), |
|
216 | + ), |
|
217 | + 'IT' => array( |
|
218 | + 'sortcode' => array( |
|
219 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
220 | + ), |
|
221 | + ), |
|
222 | + 'NZ' => array( |
|
223 | + 'sortcode' => array( |
|
224 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
225 | + ), |
|
226 | + ), |
|
227 | + 'SE' => array( |
|
228 | + 'sortcode' => array( |
|
229 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
230 | + ), |
|
231 | + ), |
|
232 | + 'US' => array( |
|
233 | + 'sortcode' => array( |
|
234 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
235 | + ), |
|
236 | + ), |
|
237 | + 'ZA' => array( |
|
238 | + 'sortcode' => array( |
|
239 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
240 | + ), |
|
241 | + ), |
|
242 | + ) |
|
243 | + ); |
|
244 | + |
|
245 | + } |
|
246 | + |
|
247 | + return $this->locale; |
|
248 | + |
|
249 | + } |
|
250 | + |
|
251 | + /** |
|
252 | + * Filters the gateway settings. |
|
253 | + * |
|
254 | + * @param array $admin_settings |
|
255 | + */ |
|
256 | + public function admin_settings( $admin_settings ) { |
|
257 | 257 | |
258 | 258 | $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' ); |
259 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
259 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
260 | 260 | |
261 | - $locale = $this->get_country_locale(); |
|
261 | + $locale = $this->get_country_locale(); |
|
262 | 262 | |
263 | - // Get sortcode label in the $locale array and use appropriate one. |
|
264 | - $country = wpinv_default_billing_country(); |
|
265 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
263 | + // Get sortcode label in the $locale array and use appropriate one. |
|
264 | + $country = wpinv_default_billing_country(); |
|
265 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
266 | 266 | |
267 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
267 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
268 | 268 | 'type' => 'text', |
269 | 269 | 'id' => 'bank_transfer_ac_name', |
270 | 270 | 'name' => __( 'Account Name', 'invoicing' ), |
271 | - ); |
|
271 | + ); |
|
272 | 272 | |
273 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
273 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
274 | 274 | 'type' => 'text', |
275 | 275 | 'id' => 'bank_transfer_ac_no', |
276 | 276 | 'name' => __( 'Account Number', 'invoicing' ), |
277 | - ); |
|
277 | + ); |
|
278 | 278 | |
279 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
279 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
280 | 280 | 'type' => 'text', |
281 | 281 | 'id' => 'bank_transfer_bank_name', |
282 | 282 | 'name' => __( 'Bank Name', 'invoicing' ), |
283 | - ); |
|
283 | + ); |
|
284 | 284 | |
285 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
285 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
286 | 286 | 'type' => 'text', |
287 | 287 | 'id' => 'bank_transfer_ifsc', |
288 | 288 | 'name' => __( 'IFSC Code', 'invoicing' ), |
289 | - ); |
|
289 | + ); |
|
290 | 290 | |
291 | - $admin_settings['bank_transfer_iban'] = array( |
|
291 | + $admin_settings['bank_transfer_iban'] = array( |
|
292 | 292 | 'type' => 'text', |
293 | 293 | 'id' => 'bank_transfer_iban', |
294 | 294 | 'name' => __( 'IBAN', 'invoicing' ), |
295 | - ); |
|
295 | + ); |
|
296 | 296 | |
297 | - $admin_settings['bank_transfer_bic'] = array( |
|
297 | + $admin_settings['bank_transfer_bic'] = array( |
|
298 | 298 | 'type' => 'text', |
299 | 299 | 'id' => 'bank_transfer_bic', |
300 | 300 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
301 | - ); |
|
301 | + ); |
|
302 | 302 | |
303 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
304 | - 'type' => 'text', |
|
305 | - 'id' => 'bank_transfer_sort_code', |
|
306 | - 'name' => $sortcode, |
|
307 | - ); |
|
303 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
304 | + 'type' => 'text', |
|
305 | + 'id' => 'bank_transfer_sort_code', |
|
306 | + 'name' => $sortcode, |
|
307 | + ); |
|
308 | 308 | |
309 | - $admin_settings['bank_transfer_info'] = array( |
|
309 | + $admin_settings['bank_transfer_info'] = array( |
|
310 | 310 | 'id' => 'bank_transfer_info', |
311 | 311 | 'name' => __( 'Instructions', 'invoicing' ), |
312 | 312 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -316,17 +316,17 @@ discard block |
||
316 | 316 | 'rows' => 5 |
317 | 317 | ); |
318 | 318 | |
319 | - return $admin_settings; |
|
320 | - } |
|
319 | + return $admin_settings; |
|
320 | + } |
|
321 | 321 | |
322 | - /** |
|
323 | - * Processes invoice addons. |
|
324 | - * |
|
325 | - * @param WPInv_Invoice $invoice |
|
326 | - * @param GetPaid_Form_Item[] $items |
|
327 | - * @return WPInv_Invoice |
|
328 | - */ |
|
329 | - public function process_addons( $invoice, $items ) { |
|
322 | + /** |
|
323 | + * Processes invoice addons. |
|
324 | + * |
|
325 | + * @param WPInv_Invoice $invoice |
|
326 | + * @param GetPaid_Form_Item[] $items |
|
327 | + * @return WPInv_Invoice |
|
328 | + */ |
|
329 | + public function process_addons( $invoice, $items ) { |
|
330 | 330 | |
331 | 331 | foreach ( $items as $item ) { |
332 | 332 | $invoice->add_item( $item ); |
@@ -334,6 +334,6 @@ discard block |
||
334 | 334 | |
335 | 335 | $invoice->recalculate_total(); |
336 | 336 | $invoice->save(); |
337 | - } |
|
337 | + } |
|
338 | 338 | |
339 | 339 | } |
@@ -4,7 +4,7 @@ discard block |
||
4 | 4 | * |
5 | 5 | */ |
6 | 6 | |
7 | -defined( 'ABSPATH' ) || exit; |
|
7 | +defined('ABSPATH') || exit; |
|
8 | 8 | |
9 | 9 | /** |
10 | 10 | * Bank transfer Payment Gateway class. |
@@ -24,7 +24,7 @@ discard block |
||
24 | 24 | * |
25 | 25 | * @var array |
26 | 26 | */ |
27 | - protected $supports = array( 'addons' ); |
|
27 | + protected $supports = array('addons'); |
|
28 | 28 | |
29 | 29 | /** |
30 | 30 | * Payment method order. |
@@ -39,15 +39,15 @@ discard block |
||
39 | 39 | public function __construct() { |
40 | 40 | parent::__construct(); |
41 | 41 | |
42 | - $this->title = __( 'Direct bank transfer', 'invoicing' ); |
|
43 | - $this->method_title = __( 'Bank transfer', 'invoicing' ); |
|
44 | - $this->checkout_button_text = __( 'Proceed', 'invoicing' ); |
|
45 | - $this->instructions = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) ); |
|
42 | + $this->title = __('Direct bank transfer', 'invoicing'); |
|
43 | + $this->method_title = __('Bank transfer', 'invoicing'); |
|
44 | + $this->checkout_button_text = __('Proceed', 'invoicing'); |
|
45 | + $this->instructions = apply_filters('wpinv_bank_instructions', $this->get_option('info')); |
|
46 | 46 | |
47 | - add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) ); |
|
48 | - add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 ); |
|
49 | - add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 ); |
|
50 | - add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 ); |
|
47 | + add_action('wpinv_receipt_end', array($this, 'thankyou_page')); |
|
48 | + add_action('getpaid_invoice_line_items', array($this, 'thankyou_page'), 40); |
|
49 | + add_action('wpinv_pdf_content_billing', array($this, 'thankyou_page'), 11); |
|
50 | + add_action('wpinv_email_invoice_details', array($this, 'email_instructions'), 10, 3); |
|
51 | 51 | |
52 | 52 | } |
53 | 53 | |
@@ -60,23 +60,23 @@ discard block |
||
60 | 60 | * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
61 | 61 | * @return array |
62 | 62 | */ |
63 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
63 | + public function process_payment($invoice, $submission_data, $submission) { |
|
64 | 64 | |
65 | 65 | // Add a transaction id. |
66 | - $invoice->set_transaction_id( $invoice->generate_key('trans_') ); |
|
66 | + $invoice->set_transaction_id($invoice->generate_key('trans_')); |
|
67 | 67 | |
68 | 68 | // Set it as pending payment. |
69 | - if ( ! $invoice->needs_payment() ) { |
|
69 | + if (!$invoice->needs_payment()) { |
|
70 | 70 | $invoice->mark_paid(); |
71 | - } else if ( ! $invoice->is_paid() ) { |
|
72 | - $invoice->set_status( 'wpi-onhold' ); |
|
71 | + } else if (!$invoice->is_paid()) { |
|
72 | + $invoice->set_status('wpi-onhold'); |
|
73 | 73 | } |
74 | 74 | |
75 | 75 | // Save it. |
76 | 76 | $invoice->save(); |
77 | 77 | |
78 | 78 | // Send to the success page. |
79 | - wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) ); |
|
79 | + wpinv_send_to_success_page(array('invoice_key' => $invoice->get_key())); |
|
80 | 80 | |
81 | 81 | } |
82 | 82 | |
@@ -85,17 +85,17 @@ discard block |
||
85 | 85 | * |
86 | 86 | * @param WPInv_Invoice $invoice Invoice. |
87 | 87 | */ |
88 | - public function thankyou_page( $invoice ) { |
|
88 | + public function thankyou_page($invoice) { |
|
89 | 89 | |
90 | - if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
90 | + if ('bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) { |
|
91 | 91 | |
92 | 92 | echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
93 | 93 | |
94 | - if ( ! empty( $this->instructions ) ) { |
|
95 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
|
94 | + if (!empty($this->instructions)) { |
|
95 | + echo wp_kses_post(wpautop(wptexturize($this->instructions))); |
|
96 | 96 | } |
97 | 97 | |
98 | - $this->bank_details( $invoice ); |
|
98 | + $this->bank_details($invoice); |
|
99 | 99 | |
100 | 100 | echo '</div>'; |
101 | 101 | |
@@ -110,17 +110,17 @@ discard block |
||
110 | 110 | * @param string $email_type Email format: plain text or HTML. |
111 | 111 | * @param bool $sent_to_admin Sent to admin. |
112 | 112 | */ |
113 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
113 | + public function email_instructions($invoice, $email_type, $sent_to_admin) { |
|
114 | 114 | |
115 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
115 | + if (!$sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) { |
|
116 | 116 | |
117 | 117 | echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
118 | 118 | |
119 | - if ( $this->instructions ) { |
|
120 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
119 | + if ($this->instructions) { |
|
120 | + echo wp_kses_post(wpautop(wptexturize($this->instructions)) . PHP_EOL); |
|
121 | 121 | } |
122 | 122 | |
123 | - $this->bank_details( $invoice ); |
|
123 | + $this->bank_details($invoice); |
|
124 | 124 | |
125 | 125 | echo '</div>'; |
126 | 126 | |
@@ -133,51 +133,51 @@ discard block |
||
133 | 133 | * |
134 | 134 | * @param WPInv_Invoice $invoice Invoice. |
135 | 135 | */ |
136 | - protected function bank_details( $invoice ) { |
|
136 | + protected function bank_details($invoice) { |
|
137 | 137 | |
138 | 138 | // Get the invoice country and country $locale. |
139 | 139 | $country = $invoice->get_country(); |
140 | 140 | $locale = $this->get_country_locale(); |
141 | 141 | |
142 | 142 | // Get sortcode label in the $locale array and use appropriate one. |
143 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
143 | + $sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing'); |
|
144 | 144 | |
145 | 145 | $bank_fields = array( |
146 | - 'ac_name' => __( 'Account Name', 'invoicing' ), |
|
147 | - 'ac_no' => __( 'Account Number', 'invoicing' ), |
|
148 | - 'bank_name' => __( 'Bank Name', 'invoicing' ), |
|
149 | - 'ifsc' => __( 'IFSC code', 'invoicing' ), |
|
150 | - 'iban' => __( 'IBAN', 'invoicing' ), |
|
151 | - 'bic' => __( 'BIC/Swift code', 'invoicing' ), |
|
146 | + 'ac_name' => __('Account Name', 'invoicing'), |
|
147 | + 'ac_no' => __('Account Number', 'invoicing'), |
|
148 | + 'bank_name' => __('Bank Name', 'invoicing'), |
|
149 | + 'ifsc' => __('IFSC code', 'invoicing'), |
|
150 | + 'iban' => __('IBAN', 'invoicing'), |
|
151 | + 'bic' => __('BIC/Swift code', 'invoicing'), |
|
152 | 152 | 'sort_code' => $sortcode, |
153 | 153 | ); |
154 | 154 | |
155 | 155 | $bank_info = array(); |
156 | 156 | |
157 | - foreach ( $bank_fields as $field => $label ) { |
|
158 | - $value = $this->get_option( $field ); |
|
157 | + foreach ($bank_fields as $field => $label) { |
|
158 | + $value = $this->get_option($field); |
|
159 | 159 | |
160 | - if ( ! empty( $value ) ) { |
|
161 | - $bank_info[$field] = array( 'label' => $label, 'value' => $value ); |
|
160 | + if (!empty($value)) { |
|
161 | + $bank_info[$field] = array('label' => $label, 'value' => $value); |
|
162 | 162 | } |
163 | 163 | |
164 | 164 | } |
165 | 165 | |
166 | - $bank_info = apply_filters( 'wpinv_bank_info', $bank_info ); |
|
166 | + $bank_info = apply_filters('wpinv_bank_info', $bank_info); |
|
167 | 167 | |
168 | - if ( empty( $bank_info ) ) { |
|
168 | + if (empty($bank_info)) { |
|
169 | 169 | return; |
170 | 170 | } |
171 | 171 | |
172 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ) ) . '</h3>' . PHP_EOL; |
|
172 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . apply_filters('wpinv_receipt_bank_details_title', __('Bank Details', 'invoicing')) . '</h3>' . PHP_EOL; |
|
173 | 173 | |
174 | 174 | echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
175 | 175 | |
176 | - foreach ( $bank_info as $key => $data ) { |
|
176 | + foreach ($bank_info as $key => $data) { |
|
177 | 177 | |
178 | - $key = sanitize_html_class( $key ); |
|
179 | - $label = wp_kses_post( $data['label'] ); |
|
180 | - $value = wp_kses_post( wptexturize( $data['value'] ) ); |
|
178 | + $key = sanitize_html_class($key); |
|
179 | + $label = wp_kses_post($data['label']); |
|
180 | + $value = wp_kses_post(wptexturize($data['value'])); |
|
181 | 181 | |
182 | 182 | echo "<tr class='getpaid-bank-transfer-$key'><th>$label</th><td>$value</td></tr>" . PHP_EOL; |
183 | 183 | } |
@@ -193,7 +193,7 @@ discard block |
||
193 | 193 | */ |
194 | 194 | public function get_country_locale() { |
195 | 195 | |
196 | - if ( empty( $this->locale ) ) { |
|
196 | + if (empty($this->locale)) { |
|
197 | 197 | |
198 | 198 | // Locale information to be used - only those that are not 'Sort Code'. |
199 | 199 | $this->locale = apply_filters( |
@@ -201,42 +201,42 @@ discard block |
||
201 | 201 | array( |
202 | 202 | 'AU' => array( |
203 | 203 | 'sortcode' => array( |
204 | - 'label' => __( 'BSB', 'invoicing' ), |
|
204 | + 'label' => __('BSB', 'invoicing'), |
|
205 | 205 | ), |
206 | 206 | ), |
207 | 207 | 'CA' => array( |
208 | 208 | 'sortcode' => array( |
209 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
209 | + 'label' => __('Bank transit number', 'invoicing'), |
|
210 | 210 | ), |
211 | 211 | ), |
212 | 212 | 'IN' => array( |
213 | 213 | 'sortcode' => array( |
214 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
214 | + 'label' => __('IFSC', 'invoicing'), |
|
215 | 215 | ), |
216 | 216 | ), |
217 | 217 | 'IT' => array( |
218 | 218 | 'sortcode' => array( |
219 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
219 | + 'label' => __('Branch sort', 'invoicing'), |
|
220 | 220 | ), |
221 | 221 | ), |
222 | 222 | 'NZ' => array( |
223 | 223 | 'sortcode' => array( |
224 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
224 | + 'label' => __('Bank code', 'invoicing'), |
|
225 | 225 | ), |
226 | 226 | ), |
227 | 227 | 'SE' => array( |
228 | 228 | 'sortcode' => array( |
229 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
229 | + 'label' => __('Bank code', 'invoicing'), |
|
230 | 230 | ), |
231 | 231 | ), |
232 | 232 | 'US' => array( |
233 | 233 | 'sortcode' => array( |
234 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
234 | + 'label' => __('Routing number', 'invoicing'), |
|
235 | 235 | ), |
236 | 236 | ), |
237 | 237 | 'ZA' => array( |
238 | 238 | 'sortcode' => array( |
239 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
239 | + 'label' => __('Branch code', 'invoicing'), |
|
240 | 240 | ), |
241 | 241 | ), |
242 | 242 | ) |
@@ -253,51 +253,51 @@ discard block |
||
253 | 253 | * |
254 | 254 | * @param array $admin_settings |
255 | 255 | */ |
256 | - public function admin_settings( $admin_settings ) { |
|
256 | + public function admin_settings($admin_settings) { |
|
257 | 257 | |
258 | - $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' ); |
|
259 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
258 | + $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'); |
|
259 | + $admin_settings['bank_transfer_active']['desc'] = __('Enable bank transfer', 'invoicing'); |
|
260 | 260 | |
261 | - $locale = $this->get_country_locale(); |
|
261 | + $locale = $this->get_country_locale(); |
|
262 | 262 | |
263 | 263 | // Get sortcode label in the $locale array and use appropriate one. |
264 | 264 | $country = wpinv_default_billing_country(); |
265 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
265 | + $sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing'); |
|
266 | 266 | |
267 | 267 | $admin_settings['bank_transfer_ac_name'] = array( |
268 | 268 | 'type' => 'text', |
269 | 269 | 'id' => 'bank_transfer_ac_name', |
270 | - 'name' => __( 'Account Name', 'invoicing' ), |
|
270 | + 'name' => __('Account Name', 'invoicing'), |
|
271 | 271 | ); |
272 | 272 | |
273 | 273 | $admin_settings['bank_transfer_ac_no'] = array( |
274 | 274 | 'type' => 'text', |
275 | 275 | 'id' => 'bank_transfer_ac_no', |
276 | - 'name' => __( 'Account Number', 'invoicing' ), |
|
276 | + 'name' => __('Account Number', 'invoicing'), |
|
277 | 277 | ); |
278 | 278 | |
279 | 279 | $admin_settings['bank_transfer_bank_name'] = array( |
280 | 280 | 'type' => 'text', |
281 | 281 | 'id' => 'bank_transfer_bank_name', |
282 | - 'name' => __( 'Bank Name', 'invoicing' ), |
|
282 | + 'name' => __('Bank Name', 'invoicing'), |
|
283 | 283 | ); |
284 | 284 | |
285 | 285 | $admin_settings['bank_transfer_ifsc'] = array( |
286 | 286 | 'type' => 'text', |
287 | 287 | 'id' => 'bank_transfer_ifsc', |
288 | - 'name' => __( 'IFSC Code', 'invoicing' ), |
|
288 | + 'name' => __('IFSC Code', 'invoicing'), |
|
289 | 289 | ); |
290 | 290 | |
291 | 291 | $admin_settings['bank_transfer_iban'] = array( |
292 | 292 | 'type' => 'text', |
293 | 293 | 'id' => 'bank_transfer_iban', |
294 | - 'name' => __( 'IBAN', 'invoicing' ), |
|
294 | + 'name' => __('IBAN', 'invoicing'), |
|
295 | 295 | ); |
296 | 296 | |
297 | 297 | $admin_settings['bank_transfer_bic'] = array( |
298 | 298 | 'type' => 'text', |
299 | 299 | 'id' => 'bank_transfer_bic', |
300 | - 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
|
300 | + 'name' => __('BIC/Swift Code', 'invoicing'), |
|
301 | 301 | ); |
302 | 302 | |
303 | 303 | $admin_settings['bank_transfer_sort_code'] = array( |
@@ -308,10 +308,10 @@ discard block |
||
308 | 308 | |
309 | 309 | $admin_settings['bank_transfer_info'] = array( |
310 | 310 | 'id' => 'bank_transfer_info', |
311 | - 'name' => __( 'Instructions', 'invoicing' ), |
|
312 | - 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
|
311 | + 'name' => __('Instructions', 'invoicing'), |
|
312 | + 'desc' => __('Instructions that will be added to the thank you page and emails.', 'invoicing'), |
|
313 | 313 | 'type' => 'textarea', |
314 | - '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' ), |
|
314 | + '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'), |
|
315 | 315 | 'cols' => 50, |
316 | 316 | 'rows' => 5 |
317 | 317 | ); |
@@ -326,10 +326,10 @@ discard block |
||
326 | 326 | * @param GetPaid_Form_Item[] $items |
327 | 327 | * @return WPInv_Invoice |
328 | 328 | */ |
329 | - public function process_addons( $invoice, $items ) { |
|
329 | + public function process_addons($invoice, $items) { |
|
330 | 330 | |
331 | - foreach ( $items as $item ) { |
|
332 | - $invoice->add_item( $item ); |
|
331 | + foreach ($items as $item) { |
|
332 | + $invoice->add_item($item); |
|
333 | 333 | } |
334 | 334 | |
335 | 335 | $invoice->recalculate_total(); |
@@ -18,758 +18,758 @@ |
||
18 | 18 | */ |
19 | 19 | class GetPaid_REST_Settings_Controller extends GetPaid_REST_Controller { |
20 | 20 | |
21 | - /** |
|
22 | - * An array of available settings. |
|
23 | - * |
|
24 | - * @var string |
|
25 | - */ |
|
26 | - protected $settings; |
|
27 | - |
|
28 | - /** |
|
29 | - * Route base. |
|
30 | - * |
|
31 | - * @var string |
|
32 | - */ |
|
33 | - protected $rest_base = 'settings'; |
|
34 | - |
|
35 | - /** |
|
36 | - * Registers the routes for the objects of the controller. |
|
37 | - * |
|
38 | - * @since 2.0.0 |
|
39 | - * |
|
40 | - * @see register_rest_route() |
|
41 | - */ |
|
42 | - public function register_namespace_routes( $namespace ) { |
|
43 | - |
|
44 | - // List all registered tabs. |
|
45 | - register_rest_route( |
|
46 | - $namespace, |
|
47 | - $this->rest_base, |
|
48 | - array( |
|
49 | - array( |
|
50 | - 'methods' => WP_REST_Server::READABLE, |
|
51 | - 'callback' => array( $this, 'get_tabs' ), |
|
52 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
53 | - ), |
|
54 | - 'schema' => '__return_empty_array', |
|
55 | - ) |
|
56 | - ); |
|
57 | - |
|
58 | - // View/Update a single setting. |
|
59 | - register_rest_route( |
|
60 | - $namespace, |
|
61 | - $this->rest_base . '/setting/(?P<id>[\w-]+)', |
|
62 | - array( |
|
63 | - 'args' => array( |
|
64 | - 'id' => array( |
|
65 | - 'description' => __( 'Unique identifier for the setting.', 'invoicing' ), |
|
66 | - 'type' => 'string', |
|
67 | - 'required' => true, |
|
68 | - ), |
|
69 | - ), |
|
70 | - array( |
|
71 | - 'methods' => WP_REST_Server::READABLE, |
|
72 | - 'callback' => array( $this, 'get_item' ), |
|
73 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
74 | - ), |
|
75 | - array( |
|
76 | - 'methods' => WP_REST_Server::EDITABLE, |
|
77 | - 'callback' => array( $this, 'update_item' ), |
|
78 | - 'permission_callback' => array( $this, 'update_items_permissions_check' ), |
|
79 | - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), |
|
80 | - ), |
|
81 | - 'schema' => array( $this, 'get_public_item_schema' ), |
|
82 | - ) |
|
83 | - ); |
|
84 | - |
|
85 | - // List registered sections for a given tab. |
|
86 | - register_rest_route( |
|
87 | - $namespace, |
|
88 | - $this->rest_base . '/(?P<tab>[\w-]+)', |
|
89 | - array( |
|
90 | - 'args' => array( |
|
91 | - 'tab' => array( |
|
92 | - 'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ), |
|
93 | - 'type' => 'string', |
|
94 | - 'required' => true, |
|
95 | - 'enum' => array_keys( wpinv_get_settings_tabs() ), |
|
96 | - ), |
|
97 | - ), |
|
98 | - array( |
|
99 | - 'methods' => WP_REST_Server::READABLE, |
|
100 | - 'callback' => array( $this, 'get_sections' ), |
|
101 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
102 | - ), |
|
103 | - 'schema' => '__return_empty_array', |
|
104 | - ) |
|
105 | - ); |
|
106 | - |
|
107 | - // List all registered settings for a given tab. |
|
108 | - register_rest_route( |
|
109 | - $namespace, |
|
110 | - $this->rest_base . '/(?P<tab>[\w-]+)/(?P<section>[\w-]+)', |
|
111 | - array( |
|
112 | - 'args' => array( |
|
113 | - 'tab' => array( |
|
114 | - 'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ), |
|
115 | - 'type' => 'string', |
|
116 | - 'required' => true, |
|
117 | - 'enum' => array_keys( wpinv_get_settings_tabs() ), |
|
118 | - ), |
|
119 | - 'section' => array( |
|
120 | - 'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ), |
|
121 | - 'type' => 'string', |
|
122 | - 'required' => true, |
|
123 | - ), |
|
124 | - ), |
|
125 | - array( |
|
126 | - 'methods' => WP_REST_Server::READABLE, |
|
127 | - 'callback' => array( $this, 'get_items' ), |
|
128 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
129 | - ), |
|
130 | - 'schema' => array( $this, 'get_public_item_schema' ), |
|
131 | - ) |
|
132 | - ); |
|
133 | - |
|
134 | - register_rest_route( |
|
135 | - $namespace, |
|
136 | - '/' . $this->rest_base . '/batch', |
|
137 | - array( |
|
138 | - 'args' => array( |
|
139 | - 'id' => array( |
|
140 | - 'description' => __( 'Setting ID.', 'invoicing' ), |
|
141 | - 'type' => 'string', |
|
142 | - ), |
|
143 | - ), |
|
144 | - array( |
|
145 | - 'methods' => WP_REST_Server::EDITABLE, |
|
146 | - 'callback' => array( $this, 'batch_items' ), |
|
147 | - 'permission_callback' => array( $this, 'batch_items_permissions_check' ), |
|
148 | - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), |
|
149 | - ), |
|
150 | - 'schema' => array( $this, 'get_public_batch_schema' ), |
|
151 | - ) |
|
152 | - ); |
|
153 | - |
|
154 | - } |
|
21 | + /** |
|
22 | + * An array of available settings. |
|
23 | + * |
|
24 | + * @var string |
|
25 | + */ |
|
26 | + protected $settings; |
|
27 | + |
|
28 | + /** |
|
29 | + * Route base. |
|
30 | + * |
|
31 | + * @var string |
|
32 | + */ |
|
33 | + protected $rest_base = 'settings'; |
|
34 | + |
|
35 | + /** |
|
36 | + * Registers the routes for the objects of the controller. |
|
37 | + * |
|
38 | + * @since 2.0.0 |
|
39 | + * |
|
40 | + * @see register_rest_route() |
|
41 | + */ |
|
42 | + public function register_namespace_routes( $namespace ) { |
|
43 | + |
|
44 | + // List all registered tabs. |
|
45 | + register_rest_route( |
|
46 | + $namespace, |
|
47 | + $this->rest_base, |
|
48 | + array( |
|
49 | + array( |
|
50 | + 'methods' => WP_REST_Server::READABLE, |
|
51 | + 'callback' => array( $this, 'get_tabs' ), |
|
52 | + 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
53 | + ), |
|
54 | + 'schema' => '__return_empty_array', |
|
55 | + ) |
|
56 | + ); |
|
57 | + |
|
58 | + // View/Update a single setting. |
|
59 | + register_rest_route( |
|
60 | + $namespace, |
|
61 | + $this->rest_base . '/setting/(?P<id>[\w-]+)', |
|
62 | + array( |
|
63 | + 'args' => array( |
|
64 | + 'id' => array( |
|
65 | + 'description' => __( 'Unique identifier for the setting.', 'invoicing' ), |
|
66 | + 'type' => 'string', |
|
67 | + 'required' => true, |
|
68 | + ), |
|
69 | + ), |
|
70 | + array( |
|
71 | + 'methods' => WP_REST_Server::READABLE, |
|
72 | + 'callback' => array( $this, 'get_item' ), |
|
73 | + 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
74 | + ), |
|
75 | + array( |
|
76 | + 'methods' => WP_REST_Server::EDITABLE, |
|
77 | + 'callback' => array( $this, 'update_item' ), |
|
78 | + 'permission_callback' => array( $this, 'update_items_permissions_check' ), |
|
79 | + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), |
|
80 | + ), |
|
81 | + 'schema' => array( $this, 'get_public_item_schema' ), |
|
82 | + ) |
|
83 | + ); |
|
84 | + |
|
85 | + // List registered sections for a given tab. |
|
86 | + register_rest_route( |
|
87 | + $namespace, |
|
88 | + $this->rest_base . '/(?P<tab>[\w-]+)', |
|
89 | + array( |
|
90 | + 'args' => array( |
|
91 | + 'tab' => array( |
|
92 | + 'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ), |
|
93 | + 'type' => 'string', |
|
94 | + 'required' => true, |
|
95 | + 'enum' => array_keys( wpinv_get_settings_tabs() ), |
|
96 | + ), |
|
97 | + ), |
|
98 | + array( |
|
99 | + 'methods' => WP_REST_Server::READABLE, |
|
100 | + 'callback' => array( $this, 'get_sections' ), |
|
101 | + 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
102 | + ), |
|
103 | + 'schema' => '__return_empty_array', |
|
104 | + ) |
|
105 | + ); |
|
106 | + |
|
107 | + // List all registered settings for a given tab. |
|
108 | + register_rest_route( |
|
109 | + $namespace, |
|
110 | + $this->rest_base . '/(?P<tab>[\w-]+)/(?P<section>[\w-]+)', |
|
111 | + array( |
|
112 | + 'args' => array( |
|
113 | + 'tab' => array( |
|
114 | + 'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ), |
|
115 | + 'type' => 'string', |
|
116 | + 'required' => true, |
|
117 | + 'enum' => array_keys( wpinv_get_settings_tabs() ), |
|
118 | + ), |
|
119 | + 'section' => array( |
|
120 | + 'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ), |
|
121 | + 'type' => 'string', |
|
122 | + 'required' => true, |
|
123 | + ), |
|
124 | + ), |
|
125 | + array( |
|
126 | + 'methods' => WP_REST_Server::READABLE, |
|
127 | + 'callback' => array( $this, 'get_items' ), |
|
128 | + 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
129 | + ), |
|
130 | + 'schema' => array( $this, 'get_public_item_schema' ), |
|
131 | + ) |
|
132 | + ); |
|
133 | + |
|
134 | + register_rest_route( |
|
135 | + $namespace, |
|
136 | + '/' . $this->rest_base . '/batch', |
|
137 | + array( |
|
138 | + 'args' => array( |
|
139 | + 'id' => array( |
|
140 | + 'description' => __( 'Setting ID.', 'invoicing' ), |
|
141 | + 'type' => 'string', |
|
142 | + ), |
|
143 | + ), |
|
144 | + array( |
|
145 | + 'methods' => WP_REST_Server::EDITABLE, |
|
146 | + 'callback' => array( $this, 'batch_items' ), |
|
147 | + 'permission_callback' => array( $this, 'batch_items_permissions_check' ), |
|
148 | + 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), |
|
149 | + ), |
|
150 | + 'schema' => array( $this, 'get_public_batch_schema' ), |
|
151 | + ) |
|
152 | + ); |
|
153 | + |
|
154 | + } |
|
155 | 155 | |
156 | - /** |
|
157 | - * Return all settings. |
|
158 | - * |
|
159 | - * @since 2.0.0 |
|
160 | - * @param WP_REST_Request $request Request data. |
|
161 | - * @return WP_Error|WP_REST_Response |
|
162 | - */ |
|
163 | - public function get_items( $request ) { |
|
164 | - |
|
165 | - $settings = $this->get_settings(); |
|
166 | - |
|
167 | - if ( ! isset( $settings[ $request['tab'] ] ) ) { |
|
168 | - return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) ); |
|
169 | - } |
|
170 | - |
|
171 | - if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) { |
|
172 | - return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) ); |
|
173 | - } |
|
174 | - |
|
175 | - $settings = $settings[ $request['tab'] ][ $request['section'] ]; |
|
176 | - $prepared = array(); |
|
177 | - |
|
178 | - foreach ( $settings as $setting ) { |
|
179 | - |
|
180 | - $setting = $this->sanitize_setting( $setting ); |
|
181 | - $setting_data = $this->prepare_item_for_response( $setting, $request ); |
|
182 | - $setting_data = $this->prepare_response_for_collection( $setting_data ); |
|
183 | - |
|
184 | - if ( $this->is_setting_type_valid( $setting['type'] ) ) { |
|
185 | - $prepared[] = $setting_data; |
|
186 | - } |
|
187 | - |
|
188 | - } |
|
189 | - |
|
190 | - return rest_ensure_response( $prepared ); |
|
191 | - } |
|
192 | - |
|
193 | - /** |
|
194 | - * Return a single setting. |
|
195 | - * |
|
196 | - * @since 2.0.0 |
|
197 | - * @param WP_REST_Request $request Request data. |
|
198 | - * @return WP_Error|WP_REST_Response |
|
199 | - */ |
|
200 | - public function get_item( $request ) { |
|
201 | - $setting = $this->get_setting( $request['id'] ); |
|
202 | - |
|
203 | - if ( is_wp_error( $setting ) ) { |
|
204 | - return $setting; |
|
205 | - } |
|
206 | - |
|
207 | - $setting = $this->sanitize_setting( $setting ); |
|
208 | - $response = $this->prepare_item_for_response( $setting, $request ); |
|
209 | - return rest_ensure_response( $response ); |
|
210 | - } |
|
211 | - |
|
212 | - /** |
|
213 | - * Update a single setting. |
|
214 | - * |
|
215 | - * @since 2.0.0 |
|
216 | - * @param WP_REST_Request $request Request data. |
|
217 | - * @return WP_Error|WP_REST_Response |
|
218 | - */ |
|
219 | - public function update_item( $request ) { |
|
220 | - $setting = $this->get_setting( $request['id'] ); |
|
221 | - |
|
222 | - if ( is_wp_error( $setting ) ) { |
|
223 | - return $setting; |
|
224 | - } |
|
225 | - |
|
226 | - if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) { |
|
227 | - $value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting ); |
|
228 | - } else { |
|
229 | - $value = $this->validate_setting_text_field( $request['value'], $setting ); |
|
230 | - } |
|
231 | - |
|
232 | - if ( is_wp_error( $value ) ) { |
|
233 | - return $value; |
|
234 | - } |
|
235 | - |
|
236 | - wpinv_update_option( $request['id'], $value ); |
|
237 | - $setting['value'] = $value; |
|
238 | - $setting = $this->sanitize_setting( $setting ); |
|
239 | - $response = $this->prepare_item_for_response( $setting, $request ); |
|
240 | - |
|
241 | - return rest_ensure_response( $response ); |
|
242 | - } |
|
243 | - |
|
244 | - /** |
|
245 | - * Makes sure the current user has access to READ the settings APIs. |
|
246 | - * |
|
247 | - * @since 2.0.0 |
|
248 | - * @param WP_REST_Request $request Full data about the request. |
|
249 | - * @return WP_Error|boolean |
|
250 | - */ |
|
251 | - public function get_items_permissions_check( $request ) { |
|
252 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
253 | - return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
254 | - } |
|
255 | - |
|
256 | - return true; |
|
257 | - } |
|
258 | - |
|
259 | - /** |
|
260 | - * Makes sure the current user has access to WRITE the settings APIs. |
|
261 | - * |
|
262 | - * @since 2.0.0 |
|
263 | - * @param WP_REST_Request $request Full data about the request. |
|
264 | - * @return WP_Error|boolean |
|
265 | - */ |
|
266 | - public function update_items_permissions_check( $request ) { |
|
267 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
268 | - return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
269 | - } |
|
270 | - |
|
271 | - return true; |
|
272 | - } |
|
273 | - |
|
274 | - /** |
|
275 | - * Check if a given request has access batch create, update and delete items. |
|
276 | - * |
|
277 | - * @param WP_REST_Request $request Full details about the request. |
|
278 | - * |
|
279 | - * @return boolean|WP_Error |
|
280 | - */ |
|
281 | - public function batch_items_permissions_check( $request ) { |
|
282 | - return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
283 | - } |
|
284 | - |
|
285 | - /** |
|
286 | - * Prepare links for the request. |
|
287 | - * |
|
288 | - * @param string $setting_id Setting ID. |
|
289 | - * @return array Links for the given setting. |
|
290 | - */ |
|
291 | - protected function prepare_links( $setting_id ) { |
|
292 | - |
|
293 | - $links = array( |
|
294 | - 'self' => array( |
|
295 | - 'href' => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ), |
|
296 | - ), |
|
297 | - 'collection' => array( |
|
298 | - 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
299 | - ), |
|
300 | - ); |
|
301 | - |
|
302 | - return $links; |
|
303 | - } |
|
304 | - |
|
305 | - /** |
|
306 | - * Prepare a settings object for serialization. |
|
307 | - * |
|
308 | - * @since 2.0.0 |
|
309 | - * @param array $item Setting object. |
|
310 | - * @param WP_REST_Request $request Request object. |
|
311 | - * @return WP_REST_Response $response Response data. |
|
312 | - */ |
|
313 | - public function prepare_item_for_response( $item, $request ) { |
|
314 | - $context = empty( $request['context'] ) ? 'view' : $request['context']; |
|
315 | - $data = $this->add_additional_fields_to_object( $item, $request ); |
|
316 | - $data = $this->filter_response_by_context( $data, $context ); |
|
317 | - |
|
318 | - $response = rest_ensure_response( $data ); |
|
319 | - |
|
320 | - $response->add_links( $this->prepare_links( $item['id'] ) ); |
|
321 | - |
|
322 | - return $response; |
|
323 | - } |
|
324 | - |
|
325 | - /** |
|
326 | - * Filters out bad values from the settings array/filter so we |
|
327 | - * only return known values via the API. |
|
328 | - * |
|
329 | - * @since 2.0.0 |
|
330 | - * @param array $setting Setting. |
|
331 | - * @return array |
|
332 | - */ |
|
333 | - public function filter_setting( $setting ) { |
|
334 | - return array_intersect_key( |
|
335 | - $setting, |
|
336 | - array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) ) |
|
337 | - ); |
|
338 | - } |
|
339 | - |
|
340 | - /** |
|
341 | - * Callback for allowed keys for each setting response. |
|
342 | - * |
|
343 | - * @param string $key Key to check. |
|
344 | - * @return boolean |
|
345 | - */ |
|
346 | - public function allowed_setting_keys( $key ) { |
|
347 | - return in_array( $key, array_keys( $this->setting_defaults() ), true ); |
|
348 | - } |
|
349 | - |
|
350 | - /** |
|
351 | - * Returns default options for a setting. null means the field is required. |
|
352 | - * |
|
353 | - * @since 2.0.0 |
|
354 | - * @return array |
|
355 | - */ |
|
356 | - protected function setting_defaults() { |
|
357 | - return array( |
|
358 | - 'id' => null, |
|
359 | - 'name' => null, |
|
360 | - 'desc' => '', |
|
361 | - 'options' => array(), |
|
362 | - 'std' => false, |
|
363 | - 'value' => false, |
|
364 | - 'placeholder' => '', |
|
365 | - 'readonly' => false, |
|
366 | - 'faux' => false, |
|
367 | - 'section' => 'main', |
|
368 | - 'tab' => 'general', |
|
369 | - 'type' => 'text', |
|
370 | - ); |
|
371 | - } |
|
372 | - |
|
373 | - /** |
|
374 | - * Sanitizes a setting's field. |
|
375 | - * |
|
376 | - * @param array $setting The setting to sanitize. |
|
377 | - * @return array |
|
378 | - */ |
|
379 | - public function sanitize_setting( $setting ) { |
|
156 | + /** |
|
157 | + * Return all settings. |
|
158 | + * |
|
159 | + * @since 2.0.0 |
|
160 | + * @param WP_REST_Request $request Request data. |
|
161 | + * @return WP_Error|WP_REST_Response |
|
162 | + */ |
|
163 | + public function get_items( $request ) { |
|
164 | + |
|
165 | + $settings = $this->get_settings(); |
|
166 | + |
|
167 | + if ( ! isset( $settings[ $request['tab'] ] ) ) { |
|
168 | + return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) ); |
|
169 | + } |
|
170 | + |
|
171 | + if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) { |
|
172 | + return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) ); |
|
173 | + } |
|
174 | + |
|
175 | + $settings = $settings[ $request['tab'] ][ $request['section'] ]; |
|
176 | + $prepared = array(); |
|
177 | + |
|
178 | + foreach ( $settings as $setting ) { |
|
179 | + |
|
180 | + $setting = $this->sanitize_setting( $setting ); |
|
181 | + $setting_data = $this->prepare_item_for_response( $setting, $request ); |
|
182 | + $setting_data = $this->prepare_response_for_collection( $setting_data ); |
|
183 | + |
|
184 | + if ( $this->is_setting_type_valid( $setting['type'] ) ) { |
|
185 | + $prepared[] = $setting_data; |
|
186 | + } |
|
187 | + |
|
188 | + } |
|
189 | + |
|
190 | + return rest_ensure_response( $prepared ); |
|
191 | + } |
|
192 | + |
|
193 | + /** |
|
194 | + * Return a single setting. |
|
195 | + * |
|
196 | + * @since 2.0.0 |
|
197 | + * @param WP_REST_Request $request Request data. |
|
198 | + * @return WP_Error|WP_REST_Response |
|
199 | + */ |
|
200 | + public function get_item( $request ) { |
|
201 | + $setting = $this->get_setting( $request['id'] ); |
|
202 | + |
|
203 | + if ( is_wp_error( $setting ) ) { |
|
204 | + return $setting; |
|
205 | + } |
|
206 | + |
|
207 | + $setting = $this->sanitize_setting( $setting ); |
|
208 | + $response = $this->prepare_item_for_response( $setting, $request ); |
|
209 | + return rest_ensure_response( $response ); |
|
210 | + } |
|
211 | + |
|
212 | + /** |
|
213 | + * Update a single setting. |
|
214 | + * |
|
215 | + * @since 2.0.0 |
|
216 | + * @param WP_REST_Request $request Request data. |
|
217 | + * @return WP_Error|WP_REST_Response |
|
218 | + */ |
|
219 | + public function update_item( $request ) { |
|
220 | + $setting = $this->get_setting( $request['id'] ); |
|
221 | + |
|
222 | + if ( is_wp_error( $setting ) ) { |
|
223 | + return $setting; |
|
224 | + } |
|
225 | + |
|
226 | + if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) { |
|
227 | + $value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting ); |
|
228 | + } else { |
|
229 | + $value = $this->validate_setting_text_field( $request['value'], $setting ); |
|
230 | + } |
|
231 | + |
|
232 | + if ( is_wp_error( $value ) ) { |
|
233 | + return $value; |
|
234 | + } |
|
235 | + |
|
236 | + wpinv_update_option( $request['id'], $value ); |
|
237 | + $setting['value'] = $value; |
|
238 | + $setting = $this->sanitize_setting( $setting ); |
|
239 | + $response = $this->prepare_item_for_response( $setting, $request ); |
|
240 | + |
|
241 | + return rest_ensure_response( $response ); |
|
242 | + } |
|
243 | + |
|
244 | + /** |
|
245 | + * Makes sure the current user has access to READ the settings APIs. |
|
246 | + * |
|
247 | + * @since 2.0.0 |
|
248 | + * @param WP_REST_Request $request Full data about the request. |
|
249 | + * @return WP_Error|boolean |
|
250 | + */ |
|
251 | + public function get_items_permissions_check( $request ) { |
|
252 | + if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
253 | + return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
254 | + } |
|
255 | + |
|
256 | + return true; |
|
257 | + } |
|
258 | + |
|
259 | + /** |
|
260 | + * Makes sure the current user has access to WRITE the settings APIs. |
|
261 | + * |
|
262 | + * @since 2.0.0 |
|
263 | + * @param WP_REST_Request $request Full data about the request. |
|
264 | + * @return WP_Error|boolean |
|
265 | + */ |
|
266 | + public function update_items_permissions_check( $request ) { |
|
267 | + if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
268 | + return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
269 | + } |
|
270 | + |
|
271 | + return true; |
|
272 | + } |
|
273 | + |
|
274 | + /** |
|
275 | + * Check if a given request has access batch create, update and delete items. |
|
276 | + * |
|
277 | + * @param WP_REST_Request $request Full details about the request. |
|
278 | + * |
|
279 | + * @return boolean|WP_Error |
|
280 | + */ |
|
281 | + public function batch_items_permissions_check( $request ) { |
|
282 | + return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
283 | + } |
|
284 | + |
|
285 | + /** |
|
286 | + * Prepare links for the request. |
|
287 | + * |
|
288 | + * @param string $setting_id Setting ID. |
|
289 | + * @return array Links for the given setting. |
|
290 | + */ |
|
291 | + protected function prepare_links( $setting_id ) { |
|
292 | + |
|
293 | + $links = array( |
|
294 | + 'self' => array( |
|
295 | + 'href' => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ), |
|
296 | + ), |
|
297 | + 'collection' => array( |
|
298 | + 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
299 | + ), |
|
300 | + ); |
|
301 | + |
|
302 | + return $links; |
|
303 | + } |
|
304 | + |
|
305 | + /** |
|
306 | + * Prepare a settings object for serialization. |
|
307 | + * |
|
308 | + * @since 2.0.0 |
|
309 | + * @param array $item Setting object. |
|
310 | + * @param WP_REST_Request $request Request object. |
|
311 | + * @return WP_REST_Response $response Response data. |
|
312 | + */ |
|
313 | + public function prepare_item_for_response( $item, $request ) { |
|
314 | + $context = empty( $request['context'] ) ? 'view' : $request['context']; |
|
315 | + $data = $this->add_additional_fields_to_object( $item, $request ); |
|
316 | + $data = $this->filter_response_by_context( $data, $context ); |
|
317 | + |
|
318 | + $response = rest_ensure_response( $data ); |
|
319 | + |
|
320 | + $response->add_links( $this->prepare_links( $item['id'] ) ); |
|
321 | + |
|
322 | + return $response; |
|
323 | + } |
|
324 | + |
|
325 | + /** |
|
326 | + * Filters out bad values from the settings array/filter so we |
|
327 | + * only return known values via the API. |
|
328 | + * |
|
329 | + * @since 2.0.0 |
|
330 | + * @param array $setting Setting. |
|
331 | + * @return array |
|
332 | + */ |
|
333 | + public function filter_setting( $setting ) { |
|
334 | + return array_intersect_key( |
|
335 | + $setting, |
|
336 | + array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) ) |
|
337 | + ); |
|
338 | + } |
|
339 | + |
|
340 | + /** |
|
341 | + * Callback for allowed keys for each setting response. |
|
342 | + * |
|
343 | + * @param string $key Key to check. |
|
344 | + * @return boolean |
|
345 | + */ |
|
346 | + public function allowed_setting_keys( $key ) { |
|
347 | + return in_array( $key, array_keys( $this->setting_defaults() ), true ); |
|
348 | + } |
|
349 | + |
|
350 | + /** |
|
351 | + * Returns default options for a setting. null means the field is required. |
|
352 | + * |
|
353 | + * @since 2.0.0 |
|
354 | + * @return array |
|
355 | + */ |
|
356 | + protected function setting_defaults() { |
|
357 | + return array( |
|
358 | + 'id' => null, |
|
359 | + 'name' => null, |
|
360 | + 'desc' => '', |
|
361 | + 'options' => array(), |
|
362 | + 'std' => false, |
|
363 | + 'value' => false, |
|
364 | + 'placeholder' => '', |
|
365 | + 'readonly' => false, |
|
366 | + 'faux' => false, |
|
367 | + 'section' => 'main', |
|
368 | + 'tab' => 'general', |
|
369 | + 'type' => 'text', |
|
370 | + ); |
|
371 | + } |
|
372 | + |
|
373 | + /** |
|
374 | + * Sanitizes a setting's field. |
|
375 | + * |
|
376 | + * @param array $setting The setting to sanitize. |
|
377 | + * @return array |
|
378 | + */ |
|
379 | + public function sanitize_setting( $setting ) { |
|
380 | 380 | |
381 | - $setting = wp_parse_args( $setting, $this->setting_defaults() ); |
|
382 | - $setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] ); |
|
383 | - return $this->filter_setting( $setting ); |
|
384 | - |
|
385 | - } |
|
386 | - |
|
387 | - /** |
|
388 | - * Get setting data. |
|
389 | - * |
|
390 | - * @since 2.0.0 |
|
391 | - * @param string $setting_id Setting ID. |
|
392 | - * @return array|WP_Error |
|
393 | - */ |
|
394 | - public function get_setting( $setting_id ) { |
|
395 | - |
|
396 | - if ( empty( $setting_id ) ) { |
|
397 | - return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) ); |
|
398 | - } |
|
399 | - |
|
400 | - $settings = $this->get_settings(); |
|
401 | - |
|
402 | - foreach ( $settings as $tabs ) { |
|
403 | - |
|
404 | - foreach ( $tabs as $sections ) { |
|
405 | - |
|
406 | - if ( isset( $sections[ $setting_id ] ) ) { |
|
407 | - if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) { |
|
408 | - return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) ); |
|
409 | - } |
|
410 | - |
|
411 | - return $sections[ $setting_id ]; |
|
412 | - } |
|
413 | - |
|
414 | - } |
|
415 | - |
|
416 | - } |
|
417 | - |
|
418 | - return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) ); |
|
419 | - } |
|
420 | - |
|
421 | - /** |
|
422 | - * Get all tabs. |
|
423 | - * |
|
424 | - * @param WP_REST_Request $request Request data. |
|
425 | - * @return array |
|
426 | - */ |
|
427 | - public function get_tabs( $request ) { |
|
428 | - $tabs = wpinv_get_settings_tabs(); |
|
429 | - $prepared = array(); |
|
430 | - |
|
431 | - foreach ( $tabs as $id => $tab ) { |
|
432 | - |
|
433 | - $_request = $request; |
|
434 | - $_request['tab'] = sanitize_title( $id ); |
|
435 | - $data = array( |
|
436 | - 'id' => sanitize_title( $id ), |
|
437 | - 'label' => sanitize_text_field( $tab ), |
|
438 | - 'sections' => $this->get_sections( $_request ), |
|
439 | - ); |
|
440 | - |
|
441 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
442 | - $response = rest_ensure_response( $data ); |
|
443 | - |
|
444 | - if ( ! is_wp_error( $response ) ) { |
|
445 | - $links = array( |
|
446 | - 'sections' => array( |
|
447 | - 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ), |
|
448 | - ), |
|
449 | - 'collection' => array( |
|
450 | - 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
451 | - ), |
|
452 | - ); |
|
453 | - $response->add_links( $links ); |
|
454 | - $response = $this->prepare_response_for_collection( $response ); |
|
455 | - } |
|
456 | - |
|
457 | - $prepared[] = $response; |
|
458 | - |
|
459 | - } |
|
460 | - |
|
461 | - return rest_ensure_response( $prepared ); |
|
462 | - } |
|
463 | - |
|
464 | - /** |
|
465 | - * Get all sections. |
|
466 | - * |
|
467 | - * @param WP_REST_Request $request Request data. |
|
468 | - * @return array |
|
469 | - */ |
|
470 | - public function get_sections( $request ) { |
|
471 | - |
|
472 | - $tab = sanitize_title( $request['tab'] ); |
|
473 | - $sections = wpinv_get_settings_tab_sections( $tab ); |
|
474 | - $prepared = array(); |
|
475 | - |
|
476 | - foreach ( $sections as $id => $section ) { |
|
477 | - |
|
478 | - $data = array( |
|
479 | - 'id' => sanitize_title( $id ), |
|
480 | - 'label' => sanitize_text_field( $section ), |
|
481 | - ); |
|
482 | - |
|
483 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
484 | - $response = rest_ensure_response( $data ); |
|
485 | - |
|
486 | - if ( ! is_wp_error( $response ) ) { |
|
487 | - $links = array( |
|
488 | - 'settings' => array( |
|
489 | - 'href' => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ), |
|
490 | - ), |
|
491 | - 'collection' => array( |
|
492 | - 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ), |
|
493 | - ), |
|
494 | - 'tabs' => array( |
|
495 | - 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
496 | - ), |
|
497 | - ); |
|
498 | - $response->add_links( $links ); |
|
499 | - $response = $this->prepare_response_for_collection( $response ); |
|
500 | - } |
|
501 | - |
|
502 | - $prepared[] = $response; |
|
503 | - |
|
504 | - } |
|
505 | - |
|
506 | - return rest_ensure_response( $prepared ); |
|
507 | - } |
|
508 | - |
|
509 | - /** |
|
510 | - * Get all settings. |
|
511 | - * |
|
512 | - * @return array |
|
513 | - */ |
|
514 | - public function get_settings() { |
|
515 | - |
|
516 | - if ( empty( $this->settings ) ) { |
|
517 | - $this->settings = wpinv_get_registered_settings(); |
|
518 | - } |
|
519 | - |
|
520 | - return $this->settings; |
|
521 | - |
|
522 | - } |
|
523 | - |
|
524 | - /** |
|
525 | - * Boolean for if a setting type is a valid supported setting type. |
|
526 | - * |
|
527 | - * @since 2.0.0 |
|
528 | - * @param string $type Type. |
|
529 | - * @return bool |
|
530 | - */ |
|
531 | - public function is_setting_type_valid( $type ) { |
|
532 | - |
|
533 | - return in_array( |
|
534 | - $type, array( |
|
535 | - 'text', // Validates with validate_setting_text_field. |
|
536 | - 'email', // Validates with validate_setting_text_field. |
|
537 | - 'number', // Validates with validate_setting_text_field. |
|
538 | - 'color', // Validates with validate_setting_text_field. |
|
539 | - 'password', // Validates with validate_setting_text_field. |
|
540 | - 'textarea', // Validates with validate_setting_textarea_field. |
|
541 | - 'select', // Validates with validate_setting_select_field. |
|
542 | - 'multiselect', // Validates with validate_setting_multiselect_field. |
|
543 | - 'radio', // Validates with validate_setting_radio_field (-> validate_setting_select_field). |
|
544 | - 'checkbox', // Validates with validate_setting_checkbox_field. |
|
545 | - 'header', // Validates with validate_setting_text_field. |
|
546 | - ) |
|
547 | - ); |
|
548 | - |
|
549 | - } |
|
550 | - |
|
551 | - /** |
|
552 | - * Get the settings schema, conforming to JSON Schema. |
|
553 | - * |
|
554 | - * @return array |
|
555 | - */ |
|
556 | - public function get_item_schema() { |
|
557 | - |
|
558 | - // Maybe retrieve the schema from cache. |
|
559 | - if ( ! empty( $this->schema ) ) { |
|
560 | - return $this->add_additional_fields_schema( $this->schema ); |
|
561 | - } |
|
562 | - |
|
563 | - $schema = array( |
|
564 | - '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
565 | - 'title' => 'setting', |
|
566 | - 'type' => 'object', |
|
567 | - 'properties' => array( |
|
568 | - 'id' => array( |
|
569 | - 'description' => __( 'A unique identifier for the setting.', 'invoicing' ), |
|
570 | - 'type' => 'string', |
|
571 | - 'arg_options' => array( |
|
572 | - 'sanitize_callback' => 'sanitize_title', |
|
573 | - ), |
|
574 | - 'context' => array( 'view', 'edit' ), |
|
575 | - 'readonly' => true, |
|
576 | - ), |
|
577 | - 'tab' => array( |
|
578 | - 'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ), |
|
579 | - 'type' => 'string', |
|
580 | - 'arg_options' => array( |
|
581 | - 'sanitize_callback' => 'sanitize_title', |
|
582 | - ), |
|
583 | - 'context' => array( 'view', 'edit' ), |
|
584 | - 'readonly' => true, |
|
585 | - ), |
|
586 | - 'section' => array( |
|
587 | - 'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ), |
|
588 | - 'type' => 'string', |
|
589 | - 'arg_options' => array( |
|
590 | - 'sanitize_callback' => 'sanitize_title', |
|
591 | - ), |
|
592 | - 'context' => array( 'view', 'edit' ), |
|
593 | - 'readonly' => true, |
|
594 | - ), |
|
595 | - 'name' => array( |
|
596 | - 'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ), |
|
597 | - 'type' => 'string', |
|
598 | - 'arg_options' => array( |
|
599 | - 'sanitize_callback' => 'sanitize_text_field', |
|
600 | - ), |
|
601 | - 'context' => array( 'view', 'edit' ), |
|
602 | - 'readonly' => true, |
|
603 | - ), |
|
604 | - 'desc' => array( |
|
605 | - 'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ), |
|
606 | - 'type' => 'string', |
|
607 | - 'context' => array( 'view', 'edit' ), |
|
608 | - 'readonly' => true, |
|
609 | - ), |
|
610 | - 'value' => array( |
|
611 | - 'description' => __( 'The current value of this setting.', 'invoicing' ), |
|
612 | - 'type' => 'mixed', |
|
613 | - 'context' => array( 'view', 'edit' ), |
|
614 | - ), |
|
615 | - 'default' => array( |
|
616 | - 'description' => __( 'Default value for the setting.', 'invoicing' ), |
|
617 | - 'type' => 'mixed', |
|
618 | - 'context' => array( 'view', 'edit' ), |
|
619 | - 'readonly' => true, |
|
620 | - ), |
|
621 | - 'placeholder' => array( |
|
622 | - 'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ), |
|
623 | - 'type' => 'string', |
|
624 | - 'arg_options' => array( |
|
625 | - 'sanitize_callback' => 'sanitize_text_field', |
|
626 | - ), |
|
627 | - 'context' => array( 'view', 'edit' ), |
|
628 | - 'readonly' => true, |
|
629 | - ), |
|
630 | - 'type' => array( |
|
631 | - 'description' => __( 'Type of setting.', 'invoicing' ), |
|
632 | - 'type' => 'string', |
|
633 | - 'arg_options' => array( |
|
634 | - 'sanitize_callback' => 'sanitize_text_field', |
|
635 | - ), |
|
636 | - 'context' => array( 'view', 'edit' ), |
|
637 | - 'enum' => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ), |
|
638 | - 'readonly' => true, |
|
639 | - ), |
|
640 | - 'options' => array( |
|
641 | - 'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ), |
|
642 | - 'type' => 'object', |
|
643 | - 'context' => array( 'view', 'edit' ), |
|
644 | - 'readonly' => true, |
|
645 | - ), |
|
646 | - 'readonly' => array( |
|
647 | - 'description' => __( 'Whether or not this setting is readonly', 'invoicing' ), |
|
648 | - 'type' => 'string', |
|
649 | - 'context' => array( 'view' ), |
|
650 | - 'readonly' => true, |
|
651 | - ), |
|
652 | - 'faux' => array( |
|
653 | - 'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ), |
|
654 | - 'type' => 'string', |
|
655 | - 'context' => array( 'view' ), |
|
656 | - 'readonly' => true, |
|
657 | - ), |
|
658 | - ), |
|
659 | - ); |
|
660 | - |
|
661 | - // Filters the settings schema for the REST API. |
|
381 | + $setting = wp_parse_args( $setting, $this->setting_defaults() ); |
|
382 | + $setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] ); |
|
383 | + return $this->filter_setting( $setting ); |
|
384 | + |
|
385 | + } |
|
386 | + |
|
387 | + /** |
|
388 | + * Get setting data. |
|
389 | + * |
|
390 | + * @since 2.0.0 |
|
391 | + * @param string $setting_id Setting ID. |
|
392 | + * @return array|WP_Error |
|
393 | + */ |
|
394 | + public function get_setting( $setting_id ) { |
|
395 | + |
|
396 | + if ( empty( $setting_id ) ) { |
|
397 | + return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) ); |
|
398 | + } |
|
399 | + |
|
400 | + $settings = $this->get_settings(); |
|
401 | + |
|
402 | + foreach ( $settings as $tabs ) { |
|
403 | + |
|
404 | + foreach ( $tabs as $sections ) { |
|
405 | + |
|
406 | + if ( isset( $sections[ $setting_id ] ) ) { |
|
407 | + if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) { |
|
408 | + return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) ); |
|
409 | + } |
|
410 | + |
|
411 | + return $sections[ $setting_id ]; |
|
412 | + } |
|
413 | + |
|
414 | + } |
|
415 | + |
|
416 | + } |
|
417 | + |
|
418 | + return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) ); |
|
419 | + } |
|
420 | + |
|
421 | + /** |
|
422 | + * Get all tabs. |
|
423 | + * |
|
424 | + * @param WP_REST_Request $request Request data. |
|
425 | + * @return array |
|
426 | + */ |
|
427 | + public function get_tabs( $request ) { |
|
428 | + $tabs = wpinv_get_settings_tabs(); |
|
429 | + $prepared = array(); |
|
430 | + |
|
431 | + foreach ( $tabs as $id => $tab ) { |
|
432 | + |
|
433 | + $_request = $request; |
|
434 | + $_request['tab'] = sanitize_title( $id ); |
|
435 | + $data = array( |
|
436 | + 'id' => sanitize_title( $id ), |
|
437 | + 'label' => sanitize_text_field( $tab ), |
|
438 | + 'sections' => $this->get_sections( $_request ), |
|
439 | + ); |
|
440 | + |
|
441 | + $data = $this->add_additional_fields_to_object( $data, $request ); |
|
442 | + $response = rest_ensure_response( $data ); |
|
443 | + |
|
444 | + if ( ! is_wp_error( $response ) ) { |
|
445 | + $links = array( |
|
446 | + 'sections' => array( |
|
447 | + 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ), |
|
448 | + ), |
|
449 | + 'collection' => array( |
|
450 | + 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
451 | + ), |
|
452 | + ); |
|
453 | + $response->add_links( $links ); |
|
454 | + $response = $this->prepare_response_for_collection( $response ); |
|
455 | + } |
|
456 | + |
|
457 | + $prepared[] = $response; |
|
458 | + |
|
459 | + } |
|
460 | + |
|
461 | + return rest_ensure_response( $prepared ); |
|
462 | + } |
|
463 | + |
|
464 | + /** |
|
465 | + * Get all sections. |
|
466 | + * |
|
467 | + * @param WP_REST_Request $request Request data. |
|
468 | + * @return array |
|
469 | + */ |
|
470 | + public function get_sections( $request ) { |
|
471 | + |
|
472 | + $tab = sanitize_title( $request['tab'] ); |
|
473 | + $sections = wpinv_get_settings_tab_sections( $tab ); |
|
474 | + $prepared = array(); |
|
475 | + |
|
476 | + foreach ( $sections as $id => $section ) { |
|
477 | + |
|
478 | + $data = array( |
|
479 | + 'id' => sanitize_title( $id ), |
|
480 | + 'label' => sanitize_text_field( $section ), |
|
481 | + ); |
|
482 | + |
|
483 | + $data = $this->add_additional_fields_to_object( $data, $request ); |
|
484 | + $response = rest_ensure_response( $data ); |
|
485 | + |
|
486 | + if ( ! is_wp_error( $response ) ) { |
|
487 | + $links = array( |
|
488 | + 'settings' => array( |
|
489 | + 'href' => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ), |
|
490 | + ), |
|
491 | + 'collection' => array( |
|
492 | + 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ), |
|
493 | + ), |
|
494 | + 'tabs' => array( |
|
495 | + 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
496 | + ), |
|
497 | + ); |
|
498 | + $response->add_links( $links ); |
|
499 | + $response = $this->prepare_response_for_collection( $response ); |
|
500 | + } |
|
501 | + |
|
502 | + $prepared[] = $response; |
|
503 | + |
|
504 | + } |
|
505 | + |
|
506 | + return rest_ensure_response( $prepared ); |
|
507 | + } |
|
508 | + |
|
509 | + /** |
|
510 | + * Get all settings. |
|
511 | + * |
|
512 | + * @return array |
|
513 | + */ |
|
514 | + public function get_settings() { |
|
515 | + |
|
516 | + if ( empty( $this->settings ) ) { |
|
517 | + $this->settings = wpinv_get_registered_settings(); |
|
518 | + } |
|
519 | + |
|
520 | + return $this->settings; |
|
521 | + |
|
522 | + } |
|
523 | + |
|
524 | + /** |
|
525 | + * Boolean for if a setting type is a valid supported setting type. |
|
526 | + * |
|
527 | + * @since 2.0.0 |
|
528 | + * @param string $type Type. |
|
529 | + * @return bool |
|
530 | + */ |
|
531 | + public function is_setting_type_valid( $type ) { |
|
532 | + |
|
533 | + return in_array( |
|
534 | + $type, array( |
|
535 | + 'text', // Validates with validate_setting_text_field. |
|
536 | + 'email', // Validates with validate_setting_text_field. |
|
537 | + 'number', // Validates with validate_setting_text_field. |
|
538 | + 'color', // Validates with validate_setting_text_field. |
|
539 | + 'password', // Validates with validate_setting_text_field. |
|
540 | + 'textarea', // Validates with validate_setting_textarea_field. |
|
541 | + 'select', // Validates with validate_setting_select_field. |
|
542 | + 'multiselect', // Validates with validate_setting_multiselect_field. |
|
543 | + 'radio', // Validates with validate_setting_radio_field (-> validate_setting_select_field). |
|
544 | + 'checkbox', // Validates with validate_setting_checkbox_field. |
|
545 | + 'header', // Validates with validate_setting_text_field. |
|
546 | + ) |
|
547 | + ); |
|
548 | + |
|
549 | + } |
|
550 | + |
|
551 | + /** |
|
552 | + * Get the settings schema, conforming to JSON Schema. |
|
553 | + * |
|
554 | + * @return array |
|
555 | + */ |
|
556 | + public function get_item_schema() { |
|
557 | + |
|
558 | + // Maybe retrieve the schema from cache. |
|
559 | + if ( ! empty( $this->schema ) ) { |
|
560 | + return $this->add_additional_fields_schema( $this->schema ); |
|
561 | + } |
|
562 | + |
|
563 | + $schema = array( |
|
564 | + '$schema' => 'http://json-schema.org/draft-04/schema#', |
|
565 | + 'title' => 'setting', |
|
566 | + 'type' => 'object', |
|
567 | + 'properties' => array( |
|
568 | + 'id' => array( |
|
569 | + 'description' => __( 'A unique identifier for the setting.', 'invoicing' ), |
|
570 | + 'type' => 'string', |
|
571 | + 'arg_options' => array( |
|
572 | + 'sanitize_callback' => 'sanitize_title', |
|
573 | + ), |
|
574 | + 'context' => array( 'view', 'edit' ), |
|
575 | + 'readonly' => true, |
|
576 | + ), |
|
577 | + 'tab' => array( |
|
578 | + 'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ), |
|
579 | + 'type' => 'string', |
|
580 | + 'arg_options' => array( |
|
581 | + 'sanitize_callback' => 'sanitize_title', |
|
582 | + ), |
|
583 | + 'context' => array( 'view', 'edit' ), |
|
584 | + 'readonly' => true, |
|
585 | + ), |
|
586 | + 'section' => array( |
|
587 | + 'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ), |
|
588 | + 'type' => 'string', |
|
589 | + 'arg_options' => array( |
|
590 | + 'sanitize_callback' => 'sanitize_title', |
|
591 | + ), |
|
592 | + 'context' => array( 'view', 'edit' ), |
|
593 | + 'readonly' => true, |
|
594 | + ), |
|
595 | + 'name' => array( |
|
596 | + 'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ), |
|
597 | + 'type' => 'string', |
|
598 | + 'arg_options' => array( |
|
599 | + 'sanitize_callback' => 'sanitize_text_field', |
|
600 | + ), |
|
601 | + 'context' => array( 'view', 'edit' ), |
|
602 | + 'readonly' => true, |
|
603 | + ), |
|
604 | + 'desc' => array( |
|
605 | + 'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ), |
|
606 | + 'type' => 'string', |
|
607 | + 'context' => array( 'view', 'edit' ), |
|
608 | + 'readonly' => true, |
|
609 | + ), |
|
610 | + 'value' => array( |
|
611 | + 'description' => __( 'The current value of this setting.', 'invoicing' ), |
|
612 | + 'type' => 'mixed', |
|
613 | + 'context' => array( 'view', 'edit' ), |
|
614 | + ), |
|
615 | + 'default' => array( |
|
616 | + 'description' => __( 'Default value for the setting.', 'invoicing' ), |
|
617 | + 'type' => 'mixed', |
|
618 | + 'context' => array( 'view', 'edit' ), |
|
619 | + 'readonly' => true, |
|
620 | + ), |
|
621 | + 'placeholder' => array( |
|
622 | + 'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ), |
|
623 | + 'type' => 'string', |
|
624 | + 'arg_options' => array( |
|
625 | + 'sanitize_callback' => 'sanitize_text_field', |
|
626 | + ), |
|
627 | + 'context' => array( 'view', 'edit' ), |
|
628 | + 'readonly' => true, |
|
629 | + ), |
|
630 | + 'type' => array( |
|
631 | + 'description' => __( 'Type of setting.', 'invoicing' ), |
|
632 | + 'type' => 'string', |
|
633 | + 'arg_options' => array( |
|
634 | + 'sanitize_callback' => 'sanitize_text_field', |
|
635 | + ), |
|
636 | + 'context' => array( 'view', 'edit' ), |
|
637 | + 'enum' => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ), |
|
638 | + 'readonly' => true, |
|
639 | + ), |
|
640 | + 'options' => array( |
|
641 | + 'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ), |
|
642 | + 'type' => 'object', |
|
643 | + 'context' => array( 'view', 'edit' ), |
|
644 | + 'readonly' => true, |
|
645 | + ), |
|
646 | + 'readonly' => array( |
|
647 | + 'description' => __( 'Whether or not this setting is readonly', 'invoicing' ), |
|
648 | + 'type' => 'string', |
|
649 | + 'context' => array( 'view' ), |
|
650 | + 'readonly' => true, |
|
651 | + ), |
|
652 | + 'faux' => array( |
|
653 | + 'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ), |
|
654 | + 'type' => 'string', |
|
655 | + 'context' => array( 'view' ), |
|
656 | + 'readonly' => true, |
|
657 | + ), |
|
658 | + ), |
|
659 | + ); |
|
660 | + |
|
661 | + // Filters the settings schema for the REST API. |
|
662 | 662 | $schema = apply_filters( 'getpaid_rest_settings_schema', $schema ); |
663 | 663 | |
664 | - // Cache the settings schema. |
|
665 | - $this->schema = $schema; |
|
666 | - |
|
667 | - return $this->add_additional_fields_schema( $this->schema ); |
|
668 | - |
|
669 | - } |
|
670 | - |
|
671 | - /** |
|
672 | - * Validate a text value for a text based setting. |
|
673 | - * |
|
674 | - * @since 2.0.0 |
|
675 | - * @param string $value Value. |
|
676 | - * @param array $setting Setting. |
|
677 | - * @return string |
|
678 | - */ |
|
679 | - public function validate_setting_text_field( $value ) { |
|
680 | - $value = is_null( $value ) ? '' : $value; |
|
681 | - return wp_kses_post( trim( stripslashes( $value ) ) ); |
|
682 | - } |
|
683 | - |
|
684 | - /** |
|
685 | - * Validate select based settings. |
|
686 | - * |
|
687 | - * @since 2.0.0 |
|
688 | - * @param string $value Value. |
|
689 | - * @param array $setting Setting. |
|
690 | - * @return string|WP_Error |
|
691 | - */ |
|
692 | - public function validate_setting_select_field( $value, $setting ) { |
|
693 | - if ( array_key_exists( $value, $setting['options'] ) ) { |
|
694 | - return $value; |
|
695 | - } else { |
|
696 | - return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) ); |
|
697 | - } |
|
698 | - } |
|
699 | - |
|
700 | - /** |
|
701 | - * Validate multiselect based settings. |
|
702 | - * |
|
703 | - * @since 2.0.0 |
|
704 | - * @param array $values Values. |
|
705 | - * @param array $setting Setting. |
|
706 | - * @return array|WP_Error |
|
707 | - */ |
|
708 | - public function validate_setting_multiselect_field( $values, $setting ) { |
|
709 | - if ( empty( $values ) ) { |
|
710 | - return array(); |
|
711 | - } |
|
712 | - |
|
713 | - if ( ! is_array( $values ) ) { |
|
714 | - return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) ); |
|
715 | - } |
|
716 | - |
|
717 | - $final_values = array(); |
|
718 | - foreach ( $values as $value ) { |
|
719 | - if ( array_key_exists( $value, $setting['options'] ) ) { |
|
720 | - $final_values[] = $value; |
|
721 | - } |
|
722 | - } |
|
723 | - |
|
724 | - return $final_values; |
|
725 | - } |
|
726 | - |
|
727 | - /** |
|
728 | - * Validate radio based settings. |
|
729 | - * |
|
730 | - * @since 2.0.0 |
|
731 | - * @param string $value Value. |
|
732 | - * @param array $setting Setting. |
|
733 | - * @return string|WP_Error |
|
734 | - */ |
|
735 | - public function validate_setting_radio_field( $value, $setting ) { |
|
736 | - return $this->validate_setting_select_field( $value, $setting ); |
|
737 | - } |
|
738 | - |
|
739 | - /** |
|
740 | - * Validate checkbox based settings. |
|
741 | - * |
|
742 | - * @since 2.0.0 |
|
743 | - * @param string $value Value. |
|
744 | - * @return int |
|
745 | - */ |
|
746 | - public function validate_setting_checkbox_field( $value ) { |
|
747 | - return (int) ! empty( $value ); |
|
748 | - } |
|
749 | - |
|
750 | - /** |
|
751 | - * Validate textarea based settings. |
|
752 | - * |
|
753 | - * @since 2.0.0 |
|
754 | - * @param string $value Value. |
|
755 | - * @return string |
|
756 | - */ |
|
757 | - public function validate_setting_textarea_field( $value ) { |
|
758 | - $value = is_null( $value ) ? '' : $value; |
|
759 | - return wp_kses( |
|
760 | - trim( stripslashes( $value ) ), |
|
761 | - array_merge( |
|
762 | - array( |
|
763 | - 'iframe' => array( |
|
764 | - 'src' => true, |
|
765 | - 'style' => true, |
|
766 | - 'id' => true, |
|
767 | - 'class' => true, |
|
768 | - ), |
|
769 | - ), |
|
770 | - wp_kses_allowed_html( 'post' ) |
|
771 | - ) |
|
772 | - ); |
|
773 | - } |
|
664 | + // Cache the settings schema. |
|
665 | + $this->schema = $schema; |
|
666 | + |
|
667 | + return $this->add_additional_fields_schema( $this->schema ); |
|
668 | + |
|
669 | + } |
|
670 | + |
|
671 | + /** |
|
672 | + * Validate a text value for a text based setting. |
|
673 | + * |
|
674 | + * @since 2.0.0 |
|
675 | + * @param string $value Value. |
|
676 | + * @param array $setting Setting. |
|
677 | + * @return string |
|
678 | + */ |
|
679 | + public function validate_setting_text_field( $value ) { |
|
680 | + $value = is_null( $value ) ? '' : $value; |
|
681 | + return wp_kses_post( trim( stripslashes( $value ) ) ); |
|
682 | + } |
|
683 | + |
|
684 | + /** |
|
685 | + * Validate select based settings. |
|
686 | + * |
|
687 | + * @since 2.0.0 |
|
688 | + * @param string $value Value. |
|
689 | + * @param array $setting Setting. |
|
690 | + * @return string|WP_Error |
|
691 | + */ |
|
692 | + public function validate_setting_select_field( $value, $setting ) { |
|
693 | + if ( array_key_exists( $value, $setting['options'] ) ) { |
|
694 | + return $value; |
|
695 | + } else { |
|
696 | + return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) ); |
|
697 | + } |
|
698 | + } |
|
699 | + |
|
700 | + /** |
|
701 | + * Validate multiselect based settings. |
|
702 | + * |
|
703 | + * @since 2.0.0 |
|
704 | + * @param array $values Values. |
|
705 | + * @param array $setting Setting. |
|
706 | + * @return array|WP_Error |
|
707 | + */ |
|
708 | + public function validate_setting_multiselect_field( $values, $setting ) { |
|
709 | + if ( empty( $values ) ) { |
|
710 | + return array(); |
|
711 | + } |
|
712 | + |
|
713 | + if ( ! is_array( $values ) ) { |
|
714 | + return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) ); |
|
715 | + } |
|
716 | + |
|
717 | + $final_values = array(); |
|
718 | + foreach ( $values as $value ) { |
|
719 | + if ( array_key_exists( $value, $setting['options'] ) ) { |
|
720 | + $final_values[] = $value; |
|
721 | + } |
|
722 | + } |
|
723 | + |
|
724 | + return $final_values; |
|
725 | + } |
|
726 | + |
|
727 | + /** |
|
728 | + * Validate radio based settings. |
|
729 | + * |
|
730 | + * @since 2.0.0 |
|
731 | + * @param string $value Value. |
|
732 | + * @param array $setting Setting. |
|
733 | + * @return string|WP_Error |
|
734 | + */ |
|
735 | + public function validate_setting_radio_field( $value, $setting ) { |
|
736 | + return $this->validate_setting_select_field( $value, $setting ); |
|
737 | + } |
|
738 | + |
|
739 | + /** |
|
740 | + * Validate checkbox based settings. |
|
741 | + * |
|
742 | + * @since 2.0.0 |
|
743 | + * @param string $value Value. |
|
744 | + * @return int |
|
745 | + */ |
|
746 | + public function validate_setting_checkbox_field( $value ) { |
|
747 | + return (int) ! empty( $value ); |
|
748 | + } |
|
749 | + |
|
750 | + /** |
|
751 | + * Validate textarea based settings. |
|
752 | + * |
|
753 | + * @since 2.0.0 |
|
754 | + * @param string $value Value. |
|
755 | + * @return string |
|
756 | + */ |
|
757 | + public function validate_setting_textarea_field( $value ) { |
|
758 | + $value = is_null( $value ) ? '' : $value; |
|
759 | + return wp_kses( |
|
760 | + trim( stripslashes( $value ) ), |
|
761 | + array_merge( |
|
762 | + array( |
|
763 | + 'iframe' => array( |
|
764 | + 'src' => true, |
|
765 | + 'style' => true, |
|
766 | + 'id' => true, |
|
767 | + 'class' => true, |
|
768 | + ), |
|
769 | + ), |
|
770 | + wp_kses_allowed_html( 'post' ) |
|
771 | + ) |
|
772 | + ); |
|
773 | + } |
|
774 | 774 | |
775 | 775 | } |
@@ -9,7 +9,7 @@ discard block |
||
9 | 9 | * @since 2.0.0 |
10 | 10 | */ |
11 | 11 | |
12 | -defined( 'ABSPATH' ) || exit; |
|
12 | +defined('ABSPATH') || exit; |
|
13 | 13 | |
14 | 14 | /** |
15 | 15 | * GetPaid REST Setting controller class. |
@@ -39,7 +39,7 @@ discard block |
||
39 | 39 | * |
40 | 40 | * @see register_rest_route() |
41 | 41 | */ |
42 | - public function register_namespace_routes( $namespace ) { |
|
42 | + public function register_namespace_routes($namespace) { |
|
43 | 43 | |
44 | 44 | // List all registered tabs. |
45 | 45 | register_rest_route( |
@@ -48,8 +48,8 @@ discard block |
||
48 | 48 | array( |
49 | 49 | array( |
50 | 50 | 'methods' => WP_REST_Server::READABLE, |
51 | - 'callback' => array( $this, 'get_tabs' ), |
|
52 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
51 | + 'callback' => array($this, 'get_tabs'), |
|
52 | + 'permission_callback' => array($this, 'get_items_permissions_check'), |
|
53 | 53 | ), |
54 | 54 | 'schema' => '__return_empty_array', |
55 | 55 | ) |
@@ -62,23 +62,23 @@ discard block |
||
62 | 62 | array( |
63 | 63 | 'args' => array( |
64 | 64 | 'id' => array( |
65 | - 'description' => __( 'Unique identifier for the setting.', 'invoicing' ), |
|
65 | + 'description' => __('Unique identifier for the setting.', 'invoicing'), |
|
66 | 66 | 'type' => 'string', |
67 | 67 | 'required' => true, |
68 | 68 | ), |
69 | 69 | ), |
70 | 70 | array( |
71 | 71 | 'methods' => WP_REST_Server::READABLE, |
72 | - 'callback' => array( $this, 'get_item' ), |
|
73 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
72 | + 'callback' => array($this, 'get_item'), |
|
73 | + 'permission_callback' => array($this, 'get_items_permissions_check'), |
|
74 | 74 | ), |
75 | 75 | array( |
76 | 76 | 'methods' => WP_REST_Server::EDITABLE, |
77 | - 'callback' => array( $this, 'update_item' ), |
|
78 | - 'permission_callback' => array( $this, 'update_items_permissions_check' ), |
|
79 | - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), |
|
77 | + 'callback' => array($this, 'update_item'), |
|
78 | + 'permission_callback' => array($this, 'update_items_permissions_check'), |
|
79 | + 'args' => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE), |
|
80 | 80 | ), |
81 | - 'schema' => array( $this, 'get_public_item_schema' ), |
|
81 | + 'schema' => array($this, 'get_public_item_schema'), |
|
82 | 82 | ) |
83 | 83 | ); |
84 | 84 | |
@@ -89,16 +89,16 @@ discard block |
||
89 | 89 | array( |
90 | 90 | 'args' => array( |
91 | 91 | 'tab' => array( |
92 | - 'description' => __( 'Unique identifier for the tab whose sections should be retrieved.', 'invoicing' ), |
|
92 | + 'description' => __('Unique identifier for the tab whose sections should be retrieved.', 'invoicing'), |
|
93 | 93 | 'type' => 'string', |
94 | 94 | 'required' => true, |
95 | - 'enum' => array_keys( wpinv_get_settings_tabs() ), |
|
95 | + 'enum' => array_keys(wpinv_get_settings_tabs()), |
|
96 | 96 | ), |
97 | 97 | ), |
98 | 98 | array( |
99 | 99 | 'methods' => WP_REST_Server::READABLE, |
100 | - 'callback' => array( $this, 'get_sections' ), |
|
101 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
100 | + 'callback' => array($this, 'get_sections'), |
|
101 | + 'permission_callback' => array($this, 'get_items_permissions_check'), |
|
102 | 102 | ), |
103 | 103 | 'schema' => '__return_empty_array', |
104 | 104 | ) |
@@ -111,23 +111,23 @@ discard block |
||
111 | 111 | array( |
112 | 112 | 'args' => array( |
113 | 113 | 'tab' => array( |
114 | - 'description' => __( 'Unique identifier for the tab whose settings should be retrieved.', 'invoicing' ), |
|
114 | + 'description' => __('Unique identifier for the tab whose settings should be retrieved.', 'invoicing'), |
|
115 | 115 | 'type' => 'string', |
116 | 116 | 'required' => true, |
117 | - 'enum' => array_keys( wpinv_get_settings_tabs() ), |
|
117 | + 'enum' => array_keys(wpinv_get_settings_tabs()), |
|
118 | 118 | ), |
119 | 119 | 'section' => array( |
120 | - 'description' => __( 'The section in the tab whose settings should be retrieved.', 'invoicing' ), |
|
120 | + 'description' => __('The section in the tab whose settings should be retrieved.', 'invoicing'), |
|
121 | 121 | 'type' => 'string', |
122 | 122 | 'required' => true, |
123 | 123 | ), |
124 | 124 | ), |
125 | 125 | array( |
126 | 126 | 'methods' => WP_REST_Server::READABLE, |
127 | - 'callback' => array( $this, 'get_items' ), |
|
128 | - 'permission_callback' => array( $this, 'get_items_permissions_check' ), |
|
127 | + 'callback' => array($this, 'get_items'), |
|
128 | + 'permission_callback' => array($this, 'get_items_permissions_check'), |
|
129 | 129 | ), |
130 | - 'schema' => array( $this, 'get_public_item_schema' ), |
|
130 | + 'schema' => array($this, 'get_public_item_schema'), |
|
131 | 131 | ) |
132 | 132 | ); |
133 | 133 | |
@@ -137,17 +137,17 @@ discard block |
||
137 | 137 | array( |
138 | 138 | 'args' => array( |
139 | 139 | 'id' => array( |
140 | - 'description' => __( 'Setting ID.', 'invoicing' ), |
|
140 | + 'description' => __('Setting ID.', 'invoicing'), |
|
141 | 141 | 'type' => 'string', |
142 | 142 | ), |
143 | 143 | ), |
144 | 144 | array( |
145 | 145 | 'methods' => WP_REST_Server::EDITABLE, |
146 | - 'callback' => array( $this, 'batch_items' ), |
|
147 | - 'permission_callback' => array( $this, 'batch_items_permissions_check' ), |
|
148 | - 'args' => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ), |
|
146 | + 'callback' => array($this, 'batch_items'), |
|
147 | + 'permission_callback' => array($this, 'batch_items_permissions_check'), |
|
148 | + 'args' => $this->get_endpoint_args_for_item_schema(WP_REST_Server::EDITABLE), |
|
149 | 149 | ), |
150 | - 'schema' => array( $this, 'get_public_batch_schema' ), |
|
150 | + 'schema' => array($this, 'get_public_batch_schema'), |
|
151 | 151 | ) |
152 | 152 | ); |
153 | 153 | |
@@ -160,34 +160,34 @@ discard block |
||
160 | 160 | * @param WP_REST_Request $request Request data. |
161 | 161 | * @return WP_Error|WP_REST_Response |
162 | 162 | */ |
163 | - public function get_items( $request ) { |
|
163 | + public function get_items($request) { |
|
164 | 164 | |
165 | 165 | $settings = $this->get_settings(); |
166 | 166 | |
167 | - if ( ! isset( $settings[ $request['tab'] ] ) ) { |
|
168 | - return new WP_Error( 'rest_invalid_tab', __( 'Invalid tab.', 'invoicing' ), array( 'status' => 400 ) ); |
|
167 | + if (!isset($settings[$request['tab']])) { |
|
168 | + return new WP_Error('rest_invalid_tab', __('Invalid tab.', 'invoicing'), array('status' => 400)); |
|
169 | 169 | } |
170 | 170 | |
171 | - if ( ! isset( $settings[ $request['tab'] ][ $request['section'] ] ) ) { |
|
172 | - return new WP_Error( 'rest_invalid_section', __( 'Invalid section.', 'invoicing' ), array( 'status' => 400 ) ); |
|
171 | + if (!isset($settings[$request['tab']][$request['section']])) { |
|
172 | + return new WP_Error('rest_invalid_section', __('Invalid section.', 'invoicing'), array('status' => 400)); |
|
173 | 173 | } |
174 | 174 | |
175 | - $settings = $settings[ $request['tab'] ][ $request['section'] ]; |
|
175 | + $settings = $settings[$request['tab']][$request['section']]; |
|
176 | 176 | $prepared = array(); |
177 | 177 | |
178 | - foreach ( $settings as $setting ) { |
|
178 | + foreach ($settings as $setting) { |
|
179 | 179 | |
180 | - $setting = $this->sanitize_setting( $setting ); |
|
181 | - $setting_data = $this->prepare_item_for_response( $setting, $request ); |
|
182 | - $setting_data = $this->prepare_response_for_collection( $setting_data ); |
|
180 | + $setting = $this->sanitize_setting($setting); |
|
181 | + $setting_data = $this->prepare_item_for_response($setting, $request); |
|
182 | + $setting_data = $this->prepare_response_for_collection($setting_data); |
|
183 | 183 | |
184 | - if ( $this->is_setting_type_valid( $setting['type'] ) ) { |
|
185 | - $prepared[] = $setting_data; |
|
184 | + if ($this->is_setting_type_valid($setting['type'])) { |
|
185 | + $prepared[] = $setting_data; |
|
186 | 186 | } |
187 | 187 | |
188 | 188 | } |
189 | 189 | |
190 | - return rest_ensure_response( $prepared ); |
|
190 | + return rest_ensure_response($prepared); |
|
191 | 191 | } |
192 | 192 | |
193 | 193 | /** |
@@ -197,16 +197,16 @@ discard block |
||
197 | 197 | * @param WP_REST_Request $request Request data. |
198 | 198 | * @return WP_Error|WP_REST_Response |
199 | 199 | */ |
200 | - public function get_item( $request ) { |
|
201 | - $setting = $this->get_setting( $request['id'] ); |
|
200 | + public function get_item($request) { |
|
201 | + $setting = $this->get_setting($request['id']); |
|
202 | 202 | |
203 | - if ( is_wp_error( $setting ) ) { |
|
203 | + if (is_wp_error($setting)) { |
|
204 | 204 | return $setting; |
205 | 205 | } |
206 | 206 | |
207 | - $setting = $this->sanitize_setting( $setting ); |
|
208 | - $response = $this->prepare_item_for_response( $setting, $request ); |
|
209 | - return rest_ensure_response( $response ); |
|
207 | + $setting = $this->sanitize_setting($setting); |
|
208 | + $response = $this->prepare_item_for_response($setting, $request); |
|
209 | + return rest_ensure_response($response); |
|
210 | 210 | } |
211 | 211 | |
212 | 212 | /** |
@@ -216,29 +216,29 @@ discard block |
||
216 | 216 | * @param WP_REST_Request $request Request data. |
217 | 217 | * @return WP_Error|WP_REST_Response |
218 | 218 | */ |
219 | - public function update_item( $request ) { |
|
220 | - $setting = $this->get_setting( $request['id'] ); |
|
219 | + public function update_item($request) { |
|
220 | + $setting = $this->get_setting($request['id']); |
|
221 | 221 | |
222 | - if ( is_wp_error( $setting ) ) { |
|
222 | + if (is_wp_error($setting)) { |
|
223 | 223 | return $setting; |
224 | 224 | } |
225 | 225 | |
226 | - if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) { |
|
227 | - $value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting ); |
|
226 | + if (is_callable(array($this, 'validate_setting_' . $setting['type'] . '_field'))) { |
|
227 | + $value = $this->{'validate_setting_' . $setting['type'] . '_field'}($request['value'], $setting); |
|
228 | 228 | } else { |
229 | - $value = $this->validate_setting_text_field( $request['value'], $setting ); |
|
229 | + $value = $this->validate_setting_text_field($request['value'], $setting); |
|
230 | 230 | } |
231 | 231 | |
232 | - if ( is_wp_error( $value ) ) { |
|
232 | + if (is_wp_error($value)) { |
|
233 | 233 | return $value; |
234 | 234 | } |
235 | 235 | |
236 | - wpinv_update_option( $request['id'], $value ); |
|
236 | + wpinv_update_option($request['id'], $value); |
|
237 | 237 | $setting['value'] = $value; |
238 | - $setting = $this->sanitize_setting( $setting ); |
|
239 | - $response = $this->prepare_item_for_response( $setting, $request ); |
|
238 | + $setting = $this->sanitize_setting($setting); |
|
239 | + $response = $this->prepare_item_for_response($setting, $request); |
|
240 | 240 | |
241 | - return rest_ensure_response( $response ); |
|
241 | + return rest_ensure_response($response); |
|
242 | 242 | } |
243 | 243 | |
244 | 244 | /** |
@@ -248,9 +248,9 @@ discard block |
||
248 | 248 | * @param WP_REST_Request $request Full data about the request. |
249 | 249 | * @return WP_Error|boolean |
250 | 250 | */ |
251 | - public function get_items_permissions_check( $request ) { |
|
252 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
253 | - return new WP_Error( 'rest_cannot_view', __( 'Sorry, you cannot list resources.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
251 | + public function get_items_permissions_check($request) { |
|
252 | + if (!wpinv_current_user_can_manage_invoicing()) { |
|
253 | + return new WP_Error('rest_cannot_view', __('Sorry, you cannot list resources.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
254 | 254 | } |
255 | 255 | |
256 | 256 | return true; |
@@ -263,9 +263,9 @@ discard block |
||
263 | 263 | * @param WP_REST_Request $request Full data about the request. |
264 | 264 | * @return WP_Error|boolean |
265 | 265 | */ |
266 | - public function update_items_permissions_check( $request ) { |
|
267 | - if ( ! wpinv_current_user_can_manage_invoicing() ) { |
|
268 | - return new WP_Error( 'rest_cannot_edit', __( 'Sorry, you cannot edit this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
266 | + public function update_items_permissions_check($request) { |
|
267 | + if (!wpinv_current_user_can_manage_invoicing()) { |
|
268 | + return new WP_Error('rest_cannot_edit', __('Sorry, you cannot edit this resource.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
269 | 269 | } |
270 | 270 | |
271 | 271 | return true; |
@@ -278,8 +278,8 @@ discard block |
||
278 | 278 | * |
279 | 279 | * @return boolean|WP_Error |
280 | 280 | */ |
281 | - public function batch_items_permissions_check( $request ) { |
|
282 | - return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error( 'rest_cannot_batch', __( 'Sorry, you are not allowed to batch manipulate this resource.', 'invoicing' ), array( 'status' => rest_authorization_required_code() ) ); |
|
281 | + public function batch_items_permissions_check($request) { |
|
282 | + return wpinv_current_user_can_manage_invoicing() ? true : new WP_Error('rest_cannot_batch', __('Sorry, you are not allowed to batch manipulate this resource.', 'invoicing'), array('status' => rest_authorization_required_code())); |
|
283 | 283 | } |
284 | 284 | |
285 | 285 | /** |
@@ -288,14 +288,14 @@ discard block |
||
288 | 288 | * @param string $setting_id Setting ID. |
289 | 289 | * @return array Links for the given setting. |
290 | 290 | */ |
291 | - protected function prepare_links( $setting_id ) { |
|
291 | + protected function prepare_links($setting_id) { |
|
292 | 292 | |
293 | 293 | $links = array( |
294 | 294 | 'self' => array( |
295 | - 'href' => rest_url( sprintf( '/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id ) ), |
|
295 | + 'href' => rest_url(sprintf('/%s/%s/setting/%s', $this->namespace, $this->rest_base, $setting_id)), |
|
296 | 296 | ), |
297 | 297 | 'collection' => array( |
298 | - 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
298 | + 'href' => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)), |
|
299 | 299 | ), |
300 | 300 | ); |
301 | 301 | |
@@ -310,14 +310,14 @@ discard block |
||
310 | 310 | * @param WP_REST_Request $request Request object. |
311 | 311 | * @return WP_REST_Response $response Response data. |
312 | 312 | */ |
313 | - public function prepare_item_for_response( $item, $request ) { |
|
314 | - $context = empty( $request['context'] ) ? 'view' : $request['context']; |
|
315 | - $data = $this->add_additional_fields_to_object( $item, $request ); |
|
316 | - $data = $this->filter_response_by_context( $data, $context ); |
|
313 | + public function prepare_item_for_response($item, $request) { |
|
314 | + $context = empty($request['context']) ? 'view' : $request['context']; |
|
315 | + $data = $this->add_additional_fields_to_object($item, $request); |
|
316 | + $data = $this->filter_response_by_context($data, $context); |
|
317 | 317 | |
318 | - $response = rest_ensure_response( $data ); |
|
318 | + $response = rest_ensure_response($data); |
|
319 | 319 | |
320 | - $response->add_links( $this->prepare_links( $item['id'] ) ); |
|
320 | + $response->add_links($this->prepare_links($item['id'])); |
|
321 | 321 | |
322 | 322 | return $response; |
323 | 323 | } |
@@ -330,10 +330,10 @@ discard block |
||
330 | 330 | * @param array $setting Setting. |
331 | 331 | * @return array |
332 | 332 | */ |
333 | - public function filter_setting( $setting ) { |
|
333 | + public function filter_setting($setting) { |
|
334 | 334 | return array_intersect_key( |
335 | 335 | $setting, |
336 | - array_flip( array_filter( array_keys( $setting ), array( $this, 'allowed_setting_keys' ) ) ) |
|
336 | + array_flip(array_filter(array_keys($setting), array($this, 'allowed_setting_keys'))) |
|
337 | 337 | ); |
338 | 338 | } |
339 | 339 | |
@@ -343,8 +343,8 @@ discard block |
||
343 | 343 | * @param string $key Key to check. |
344 | 344 | * @return boolean |
345 | 345 | */ |
346 | - public function allowed_setting_keys( $key ) { |
|
347 | - return in_array( $key, array_keys( $this->setting_defaults() ), true ); |
|
346 | + public function allowed_setting_keys($key) { |
|
347 | + return in_array($key, array_keys($this->setting_defaults()), true); |
|
348 | 348 | } |
349 | 349 | |
350 | 350 | /** |
@@ -376,11 +376,11 @@ discard block |
||
376 | 376 | * @param array $setting The setting to sanitize. |
377 | 377 | * @return array |
378 | 378 | */ |
379 | - public function sanitize_setting( $setting ) { |
|
379 | + public function sanitize_setting($setting) { |
|
380 | 380 | |
381 | - $setting = wp_parse_args( $setting, $this->setting_defaults() ); |
|
382 | - $setting['value'] = wpinv_get_option( $setting['id'], $setting['std'] ); |
|
383 | - return $this->filter_setting( $setting ); |
|
381 | + $setting = wp_parse_args($setting, $this->setting_defaults()); |
|
382 | + $setting['value'] = wpinv_get_option($setting['id'], $setting['std']); |
|
383 | + return $this->filter_setting($setting); |
|
384 | 384 | |
385 | 385 | } |
386 | 386 | |
@@ -391,31 +391,31 @@ discard block |
||
391 | 391 | * @param string $setting_id Setting ID. |
392 | 392 | * @return array|WP_Error |
393 | 393 | */ |
394 | - public function get_setting( $setting_id ) { |
|
394 | + public function get_setting($setting_id) { |
|
395 | 395 | |
396 | - if ( empty( $setting_id ) ) { |
|
397 | - return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) ); |
|
396 | + if (empty($setting_id)) { |
|
397 | + return new WP_Error('rest_setting_setting_invalid', __('Invalid setting.', 'invoicing'), array('status' => 404)); |
|
398 | 398 | } |
399 | 399 | |
400 | - $settings = $this->get_settings(); |
|
400 | + $settings = $this->get_settings(); |
|
401 | 401 | |
402 | - foreach ( $settings as $tabs ) { |
|
402 | + foreach ($settings as $tabs) { |
|
403 | 403 | |
404 | - foreach ( $tabs as $sections ) { |
|
404 | + foreach ($tabs as $sections) { |
|
405 | 405 | |
406 | - if ( isset( $sections[ $setting_id ] ) ) { |
|
407 | - if ( ! $this->is_setting_type_valid( $sections[ $setting_id ]['type'] ) ) { |
|
408 | - return new WP_Error( 'rest_setting_setting_type_invalid', __( 'Invalid setting type.', 'invoicing' ), array( 'status' => 404 ) ); |
|
406 | + if (isset($sections[$setting_id])) { |
|
407 | + if (!$this->is_setting_type_valid($sections[$setting_id]['type'])) { |
|
408 | + return new WP_Error('rest_setting_setting_type_invalid', __('Invalid setting type.', 'invoicing'), array('status' => 404)); |
|
409 | 409 | } |
410 | 410 | |
411 | - return $sections[ $setting_id ]; |
|
411 | + return $sections[$setting_id]; |
|
412 | 412 | } |
413 | 413 | |
414 | 414 | } |
415 | 415 | |
416 | 416 | } |
417 | 417 | |
418 | - return new WP_Error( 'rest_setting_setting_invalid', __( 'Invalid setting.', 'invoicing' ), array( 'status' => 404 ) ); |
|
418 | + return new WP_Error('rest_setting_setting_invalid', __('Invalid setting.', 'invoicing'), array('status' => 404)); |
|
419 | 419 | } |
420 | 420 | |
421 | 421 | /** |
@@ -424,41 +424,41 @@ discard block |
||
424 | 424 | * @param WP_REST_Request $request Request data. |
425 | 425 | * @return array |
426 | 426 | */ |
427 | - public function get_tabs( $request ) { |
|
427 | + public function get_tabs($request) { |
|
428 | 428 | $tabs = wpinv_get_settings_tabs(); |
429 | 429 | $prepared = array(); |
430 | 430 | |
431 | - foreach ( $tabs as $id => $tab ) { |
|
431 | + foreach ($tabs as $id => $tab) { |
|
432 | 432 | |
433 | 433 | $_request = $request; |
434 | - $_request['tab'] = sanitize_title( $id ); |
|
434 | + $_request['tab'] = sanitize_title($id); |
|
435 | 435 | $data = array( |
436 | - 'id' => sanitize_title( $id ), |
|
437 | - 'label' => sanitize_text_field( $tab ), |
|
438 | - 'sections' => $this->get_sections( $_request ), |
|
436 | + 'id' => sanitize_title($id), |
|
437 | + 'label' => sanitize_text_field($tab), |
|
438 | + 'sections' => $this->get_sections($_request), |
|
439 | 439 | ); |
440 | 440 | |
441 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
442 | - $response = rest_ensure_response( $data ); |
|
441 | + $data = $this->add_additional_fields_to_object($data, $request); |
|
442 | + $response = rest_ensure_response($data); |
|
443 | 443 | |
444 | - if ( ! is_wp_error( $response ) ) { |
|
444 | + if (!is_wp_error($response)) { |
|
445 | 445 | $links = array( |
446 | 446 | 'sections' => array( |
447 | - 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $id ) ), |
|
447 | + 'href' => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $id)), |
|
448 | 448 | ), |
449 | 449 | 'collection' => array( |
450 | - 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
450 | + 'href' => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)), |
|
451 | 451 | ), |
452 | 452 | ); |
453 | - $response->add_links( $links ); |
|
454 | - $response = $this->prepare_response_for_collection( $response ); |
|
453 | + $response->add_links($links); |
|
454 | + $response = $this->prepare_response_for_collection($response); |
|
455 | 455 | } |
456 | 456 | |
457 | 457 | $prepared[] = $response; |
458 | 458 | |
459 | 459 | } |
460 | 460 | |
461 | - return rest_ensure_response( $prepared ); |
|
461 | + return rest_ensure_response($prepared); |
|
462 | 462 | } |
463 | 463 | |
464 | 464 | /** |
@@ -467,43 +467,43 @@ discard block |
||
467 | 467 | * @param WP_REST_Request $request Request data. |
468 | 468 | * @return array |
469 | 469 | */ |
470 | - public function get_sections( $request ) { |
|
470 | + public function get_sections($request) { |
|
471 | 471 | |
472 | - $tab = sanitize_title( $request['tab'] ); |
|
473 | - $sections = wpinv_get_settings_tab_sections( $tab ); |
|
472 | + $tab = sanitize_title($request['tab']); |
|
473 | + $sections = wpinv_get_settings_tab_sections($tab); |
|
474 | 474 | $prepared = array(); |
475 | 475 | |
476 | - foreach ( $sections as $id => $section ) { |
|
476 | + foreach ($sections as $id => $section) { |
|
477 | 477 | |
478 | - $data = array( |
|
479 | - 'id' => sanitize_title( $id ), |
|
480 | - 'label' => sanitize_text_field( $section ), |
|
478 | + $data = array( |
|
479 | + 'id' => sanitize_title($id), |
|
480 | + 'label' => sanitize_text_field($section), |
|
481 | 481 | ); |
482 | 482 | |
483 | - $data = $this->add_additional_fields_to_object( $data, $request ); |
|
484 | - $response = rest_ensure_response( $data ); |
|
483 | + $data = $this->add_additional_fields_to_object($data, $request); |
|
484 | + $response = rest_ensure_response($data); |
|
485 | 485 | |
486 | - if ( ! is_wp_error( $response ) ) { |
|
486 | + if (!is_wp_error($response)) { |
|
487 | 487 | $links = array( |
488 | 488 | 'settings' => array( |
489 | - 'href' => rest_url( sprintf( '/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id ) ), |
|
489 | + 'href' => rest_url(sprintf('/%s/%s/%s/%s', $this->namespace, $this->rest_base, $tab, $id)), |
|
490 | 490 | ), |
491 | 491 | 'collection' => array( |
492 | - 'href' => rest_url( sprintf( '/%s/%s/%s', $this->namespace, $this->rest_base, $tab ) ), |
|
492 | + 'href' => rest_url(sprintf('/%s/%s/%s', $this->namespace, $this->rest_base, $tab)), |
|
493 | 493 | ), |
494 | 494 | 'tabs' => array( |
495 | - 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), |
|
495 | + 'href' => rest_url(sprintf('/%s/%s', $this->namespace, $this->rest_base)), |
|
496 | 496 | ), |
497 | 497 | ); |
498 | - $response->add_links( $links ); |
|
499 | - $response = $this->prepare_response_for_collection( $response ); |
|
498 | + $response->add_links($links); |
|
499 | + $response = $this->prepare_response_for_collection($response); |
|
500 | 500 | } |
501 | 501 | |
502 | 502 | $prepared[] = $response; |
503 | 503 | |
504 | 504 | } |
505 | 505 | |
506 | - return rest_ensure_response( $prepared ); |
|
506 | + return rest_ensure_response($prepared); |
|
507 | 507 | } |
508 | 508 | |
509 | 509 | /** |
@@ -513,7 +513,7 @@ discard block |
||
513 | 513 | */ |
514 | 514 | public function get_settings() { |
515 | 515 | |
516 | - if ( empty( $this->settings ) ) { |
|
516 | + if (empty($this->settings)) { |
|
517 | 517 | $this->settings = wpinv_get_registered_settings(); |
518 | 518 | } |
519 | 519 | |
@@ -528,21 +528,21 @@ discard block |
||
528 | 528 | * @param string $type Type. |
529 | 529 | * @return bool |
530 | 530 | */ |
531 | - public function is_setting_type_valid( $type ) { |
|
531 | + public function is_setting_type_valid($type) { |
|
532 | 532 | |
533 | 533 | return in_array( |
534 | 534 | $type, array( |
535 | - 'text', // Validates with validate_setting_text_field. |
|
536 | - 'email', // Validates with validate_setting_text_field. |
|
537 | - 'number', // Validates with validate_setting_text_field. |
|
538 | - 'color', // Validates with validate_setting_text_field. |
|
539 | - 'password', // Validates with validate_setting_text_field. |
|
540 | - 'textarea', // Validates with validate_setting_textarea_field. |
|
541 | - 'select', // Validates with validate_setting_select_field. |
|
542 | - 'multiselect', // Validates with validate_setting_multiselect_field. |
|
543 | - 'radio', // Validates with validate_setting_radio_field (-> validate_setting_select_field). |
|
544 | - 'checkbox', // Validates with validate_setting_checkbox_field. |
|
545 | - 'header', // Validates with validate_setting_text_field. |
|
535 | + 'text', // Validates with validate_setting_text_field. |
|
536 | + 'email', // Validates with validate_setting_text_field. |
|
537 | + 'number', // Validates with validate_setting_text_field. |
|
538 | + 'color', // Validates with validate_setting_text_field. |
|
539 | + 'password', // Validates with validate_setting_text_field. |
|
540 | + 'textarea', // Validates with validate_setting_textarea_field. |
|
541 | + 'select', // Validates with validate_setting_select_field. |
|
542 | + 'multiselect', // Validates with validate_setting_multiselect_field. |
|
543 | + 'radio', // Validates with validate_setting_radio_field (-> validate_setting_select_field). |
|
544 | + 'checkbox', // Validates with validate_setting_checkbox_field. |
|
545 | + 'header', // Validates with validate_setting_text_field. |
|
546 | 546 | ) |
547 | 547 | ); |
548 | 548 | |
@@ -556,8 +556,8 @@ discard block |
||
556 | 556 | public function get_item_schema() { |
557 | 557 | |
558 | 558 | // Maybe retrieve the schema from cache. |
559 | - if ( ! empty( $this->schema ) ) { |
|
560 | - return $this->add_additional_fields_schema( $this->schema ); |
|
559 | + if (!empty($this->schema)) { |
|
560 | + return $this->add_additional_fields_schema($this->schema); |
|
561 | 561 | } |
562 | 562 | |
563 | 563 | $schema = array( |
@@ -566,105 +566,105 @@ discard block |
||
566 | 566 | 'type' => 'object', |
567 | 567 | 'properties' => array( |
568 | 568 | 'id' => array( |
569 | - 'description' => __( 'A unique identifier for the setting.', 'invoicing' ), |
|
569 | + 'description' => __('A unique identifier for the setting.', 'invoicing'), |
|
570 | 570 | 'type' => 'string', |
571 | 571 | 'arg_options' => array( |
572 | 572 | 'sanitize_callback' => 'sanitize_title', |
573 | 573 | ), |
574 | - 'context' => array( 'view', 'edit' ), |
|
574 | + 'context' => array('view', 'edit'), |
|
575 | 575 | 'readonly' => true, |
576 | 576 | ), |
577 | 577 | 'tab' => array( |
578 | - 'description' => __( 'An identifier for the tab this setting belongs to.', 'invoicing' ), |
|
578 | + 'description' => __('An identifier for the tab this setting belongs to.', 'invoicing'), |
|
579 | 579 | 'type' => 'string', |
580 | 580 | 'arg_options' => array( |
581 | 581 | 'sanitize_callback' => 'sanitize_title', |
582 | 582 | ), |
583 | - 'context' => array( 'view', 'edit' ), |
|
583 | + 'context' => array('view', 'edit'), |
|
584 | 584 | 'readonly' => true, |
585 | 585 | ), |
586 | 586 | 'section' => array( |
587 | - 'description' => __( 'An identifier for the section this setting belongs to.', 'invoicing' ), |
|
587 | + 'description' => __('An identifier for the section this setting belongs to.', 'invoicing'), |
|
588 | 588 | 'type' => 'string', |
589 | 589 | 'arg_options' => array( |
590 | 590 | 'sanitize_callback' => 'sanitize_title', |
591 | 591 | ), |
592 | - 'context' => array( 'view', 'edit' ), |
|
592 | + 'context' => array('view', 'edit'), |
|
593 | 593 | 'readonly' => true, |
594 | 594 | ), |
595 | 595 | 'name' => array( |
596 | - 'description' => __( 'A human readable label for the setting used in interfaces.', 'invoicing' ), |
|
596 | + 'description' => __('A human readable label for the setting used in interfaces.', 'invoicing'), |
|
597 | 597 | 'type' => 'string', |
598 | 598 | 'arg_options' => array( |
599 | 599 | 'sanitize_callback' => 'sanitize_text_field', |
600 | 600 | ), |
601 | - 'context' => array( 'view', 'edit' ), |
|
601 | + 'context' => array('view', 'edit'), |
|
602 | 602 | 'readonly' => true, |
603 | 603 | ), |
604 | 604 | 'desc' => array( |
605 | - 'description' => __( 'A human readable description for the setting used in interfaces.', 'invoicing' ), |
|
605 | + 'description' => __('A human readable description for the setting used in interfaces.', 'invoicing'), |
|
606 | 606 | 'type' => 'string', |
607 | - 'context' => array( 'view', 'edit' ), |
|
607 | + 'context' => array('view', 'edit'), |
|
608 | 608 | 'readonly' => true, |
609 | 609 | ), |
610 | 610 | 'value' => array( |
611 | - 'description' => __( 'The current value of this setting.', 'invoicing' ), |
|
611 | + 'description' => __('The current value of this setting.', 'invoicing'), |
|
612 | 612 | 'type' => 'mixed', |
613 | - 'context' => array( 'view', 'edit' ), |
|
613 | + 'context' => array('view', 'edit'), |
|
614 | 614 | ), |
615 | 615 | 'default' => array( |
616 | - 'description' => __( 'Default value for the setting.', 'invoicing' ), |
|
616 | + 'description' => __('Default value for the setting.', 'invoicing'), |
|
617 | 617 | 'type' => 'mixed', |
618 | - 'context' => array( 'view', 'edit' ), |
|
618 | + 'context' => array('view', 'edit'), |
|
619 | 619 | 'readonly' => true, |
620 | 620 | ), |
621 | 621 | 'placeholder' => array( |
622 | - 'description' => __( 'Placeholder text to be displayed in text inputs.', 'invoicing' ), |
|
622 | + 'description' => __('Placeholder text to be displayed in text inputs.', 'invoicing'), |
|
623 | 623 | 'type' => 'string', |
624 | 624 | 'arg_options' => array( |
625 | 625 | 'sanitize_callback' => 'sanitize_text_field', |
626 | 626 | ), |
627 | - 'context' => array( 'view', 'edit' ), |
|
627 | + 'context' => array('view', 'edit'), |
|
628 | 628 | 'readonly' => true, |
629 | 629 | ), |
630 | 630 | 'type' => array( |
631 | - 'description' => __( 'Type of setting.', 'invoicing' ), |
|
631 | + 'description' => __('Type of setting.', 'invoicing'), |
|
632 | 632 | 'type' => 'string', |
633 | 633 | 'arg_options' => array( |
634 | 634 | 'sanitize_callback' => 'sanitize_text_field', |
635 | 635 | ), |
636 | - 'context' => array( 'view', 'edit' ), |
|
637 | - 'enum' => array( 'text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html' ), |
|
636 | + 'context' => array('view', 'edit'), |
|
637 | + 'enum' => array('text', 'email', 'number', 'color', 'password', 'textarea', 'select', 'multiselect', 'radio', 'image_width', 'checkbox', 'raw_html'), |
|
638 | 638 | 'readonly' => true, |
639 | 639 | ), |
640 | 640 | 'options' => array( |
641 | - 'description' => __( 'Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing' ), |
|
641 | + 'description' => __('Array of options (key value pairs) for inputs such as select, multiselect, and radio buttons.', 'invoicing'), |
|
642 | 642 | 'type' => 'object', |
643 | - 'context' => array( 'view', 'edit' ), |
|
643 | + 'context' => array('view', 'edit'), |
|
644 | 644 | 'readonly' => true, |
645 | 645 | ), |
646 | 646 | 'readonly' => array( |
647 | - 'description' => __( 'Whether or not this setting is readonly', 'invoicing' ), |
|
647 | + 'description' => __('Whether or not this setting is readonly', 'invoicing'), |
|
648 | 648 | 'type' => 'string', |
649 | - 'context' => array( 'view' ), |
|
649 | + 'context' => array('view'), |
|
650 | 650 | 'readonly' => true, |
651 | 651 | ), |
652 | 652 | 'faux' => array( |
653 | - 'description' => __( 'Whether or not this setting is readonly/faux', 'invoicing' ), |
|
653 | + 'description' => __('Whether or not this setting is readonly/faux', 'invoicing'), |
|
654 | 654 | 'type' => 'string', |
655 | - 'context' => array( 'view' ), |
|
655 | + 'context' => array('view'), |
|
656 | 656 | 'readonly' => true, |
657 | 657 | ), |
658 | 658 | ), |
659 | 659 | ); |
660 | 660 | |
661 | 661 | // Filters the settings schema for the REST API. |
662 | - $schema = apply_filters( 'getpaid_rest_settings_schema', $schema ); |
|
662 | + $schema = apply_filters('getpaid_rest_settings_schema', $schema); |
|
663 | 663 | |
664 | 664 | // Cache the settings schema. |
665 | 665 | $this->schema = $schema; |
666 | 666 | |
667 | - return $this->add_additional_fields_schema( $this->schema ); |
|
667 | + return $this->add_additional_fields_schema($this->schema); |
|
668 | 668 | |
669 | 669 | } |
670 | 670 | |
@@ -676,9 +676,9 @@ discard block |
||
676 | 676 | * @param array $setting Setting. |
677 | 677 | * @return string |
678 | 678 | */ |
679 | - public function validate_setting_text_field( $value ) { |
|
680 | - $value = is_null( $value ) ? '' : $value; |
|
681 | - return wp_kses_post( trim( stripslashes( $value ) ) ); |
|
679 | + public function validate_setting_text_field($value) { |
|
680 | + $value = is_null($value) ? '' : $value; |
|
681 | + return wp_kses_post(trim(stripslashes($value))); |
|
682 | 682 | } |
683 | 683 | |
684 | 684 | /** |
@@ -689,11 +689,11 @@ discard block |
||
689 | 689 | * @param array $setting Setting. |
690 | 690 | * @return string|WP_Error |
691 | 691 | */ |
692 | - public function validate_setting_select_field( $value, $setting ) { |
|
693 | - if ( array_key_exists( $value, $setting['options'] ) ) { |
|
692 | + public function validate_setting_select_field($value, $setting) { |
|
693 | + if (array_key_exists($value, $setting['options'])) { |
|
694 | 694 | return $value; |
695 | 695 | } else { |
696 | - return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) ); |
|
696 | + return new WP_Error('rest_setting_value_invalid', __('An invalid setting value was passed.', 'invoicing'), array('status' => 400)); |
|
697 | 697 | } |
698 | 698 | } |
699 | 699 | |
@@ -705,18 +705,18 @@ discard block |
||
705 | 705 | * @param array $setting Setting. |
706 | 706 | * @return array|WP_Error |
707 | 707 | */ |
708 | - public function validate_setting_multiselect_field( $values, $setting ) { |
|
709 | - if ( empty( $values ) ) { |
|
708 | + public function validate_setting_multiselect_field($values, $setting) { |
|
709 | + if (empty($values)) { |
|
710 | 710 | return array(); |
711 | 711 | } |
712 | 712 | |
713 | - if ( ! is_array( $values ) ) { |
|
714 | - return new WP_Error( 'rest_setting_value_invalid', __( 'An invalid setting value was passed.', 'invoicing' ), array( 'status' => 400 ) ); |
|
713 | + if (!is_array($values)) { |
|
714 | + return new WP_Error('rest_setting_value_invalid', __('An invalid setting value was passed.', 'invoicing'), array('status' => 400)); |
|
715 | 715 | } |
716 | 716 | |
717 | 717 | $final_values = array(); |
718 | - foreach ( $values as $value ) { |
|
719 | - if ( array_key_exists( $value, $setting['options'] ) ) { |
|
718 | + foreach ($values as $value) { |
|
719 | + if (array_key_exists($value, $setting['options'])) { |
|
720 | 720 | $final_values[] = $value; |
721 | 721 | } |
722 | 722 | } |
@@ -732,8 +732,8 @@ discard block |
||
732 | 732 | * @param array $setting Setting. |
733 | 733 | * @return string|WP_Error |
734 | 734 | */ |
735 | - public function validate_setting_radio_field( $value, $setting ) { |
|
736 | - return $this->validate_setting_select_field( $value, $setting ); |
|
735 | + public function validate_setting_radio_field($value, $setting) { |
|
736 | + return $this->validate_setting_select_field($value, $setting); |
|
737 | 737 | } |
738 | 738 | |
739 | 739 | /** |
@@ -743,8 +743,8 @@ discard block |
||
743 | 743 | * @param string $value Value. |
744 | 744 | * @return int |
745 | 745 | */ |
746 | - public function validate_setting_checkbox_field( $value ) { |
|
747 | - return (int) ! empty( $value ); |
|
746 | + public function validate_setting_checkbox_field($value) { |
|
747 | + return (int) !empty($value); |
|
748 | 748 | } |
749 | 749 | |
750 | 750 | /** |
@@ -754,10 +754,10 @@ discard block |
||
754 | 754 | * @param string $value Value. |
755 | 755 | * @return string |
756 | 756 | */ |
757 | - public function validate_setting_textarea_field( $value ) { |
|
758 | - $value = is_null( $value ) ? '' : $value; |
|
757 | + public function validate_setting_textarea_field($value) { |
|
758 | + $value = is_null($value) ? '' : $value; |
|
759 | 759 | return wp_kses( |
760 | - trim( stripslashes( $value ) ), |
|
760 | + trim(stripslashes($value)), |
|
761 | 761 | array_merge( |
762 | 762 | array( |
763 | 763 | 'iframe' => array( |
@@ -767,7 +767,7 @@ discard block |
||
767 | 767 | 'class' => true, |
768 | 768 | ), |
769 | 769 | ), |
770 | - wp_kses_allowed_html( 'post' ) |
|
770 | + wp_kses_allowed_html('post') |
|
771 | 771 | ) |
772 | 772 | ); |
773 | 773 | } |
@@ -5,7 +5,7 @@ discard block |
||
5 | 5 | * |
6 | 6 | */ |
7 | 7 | |
8 | -defined( 'ABSPATH' ) || exit; |
|
8 | +defined('ABSPATH') || exit; |
|
9 | 9 | |
10 | 10 | /** |
11 | 11 | * GetPaid_Reports_Helper Class. |
@@ -26,7 +26,7 @@ discard block |
||
26 | 26 | * @param array $args |
27 | 27 | * @return mixed depending on query_type |
28 | 28 | */ |
29 | - public static function get_invoice_report_data( $args = array() ) { |
|
29 | + public static function get_invoice_report_data($args = array()) { |
|
30 | 30 | global $wpdb; |
31 | 31 | |
32 | 32 | $default_args = array( |
@@ -37,94 +37,94 @@ discard block |
||
37 | 37 | 'order_by' => '', // What to order by. |
38 | 38 | 'limit' => '', // Results limit. |
39 | 39 | 'filter_range' => array(), // An array of before and after dates to limit results by. |
40 | - 'invoice_types' => array( 'wpi_invoice' ), // An array of post types to retrieve. |
|
41 | - 'invoice_status' => array( 'publish', 'wpi-processing', 'wpi-onhold' ), |
|
40 | + 'invoice_types' => array('wpi_invoice'), // An array of post types to retrieve. |
|
41 | + 'invoice_status' => array('publish', 'wpi-processing', 'wpi-onhold'), |
|
42 | 42 | 'parent_invoice_status' => false, // Optionally filter by parent invoice status. |
43 | 43 | ); |
44 | 44 | |
45 | - $args = apply_filters( 'getpaid_reports_get_invoice_report_data_args', $args ); |
|
46 | - $args = wp_parse_args( $args, $default_args ); |
|
45 | + $args = apply_filters('getpaid_reports_get_invoice_report_data_args', $args); |
|
46 | + $args = wp_parse_args($args, $default_args); |
|
47 | 47 | |
48 | - extract( $args ); |
|
48 | + extract($args); |
|
49 | 49 | |
50 | - if ( empty( $data ) ) { |
|
50 | + if (empty($data)) { |
|
51 | 51 | return ''; |
52 | 52 | } |
53 | 53 | |
54 | 54 | $query = array(); |
55 | - $query['select'] = 'SELECT ' . implode( ',', self::prepare_invoice_data( $data ) ); |
|
55 | + $query['select'] = 'SELECT ' . implode(',', self::prepare_invoice_data($data)); |
|
56 | 56 | $query['from'] = "FROM {$wpdb->posts} AS posts"; |
57 | - $query['join'] = implode( ' ', self::prepare_invoice_joins( $data + $where, ! empty( $parent_invoice_status ) ) ); |
|
57 | + $query['join'] = implode(' ', self::prepare_invoice_joins($data + $where, !empty($parent_invoice_status))); |
|
58 | 58 | |
59 | 59 | $query['where'] = " |
60 | - WHERE posts.post_type IN ( '" . implode( "','", $invoice_types ) . "' ) |
|
60 | + WHERE posts.post_type IN ( '" . implode("','", $invoice_types) . "' ) |
|
61 | 61 | "; |
62 | 62 | |
63 | - if ( ! empty( $invoice_status ) ) { |
|
63 | + if (!empty($invoice_status)) { |
|
64 | 64 | $query['where'] .= " |
65 | - AND posts.post_status IN ( '" . implode( "','", $invoice_status ) . "' ) |
|
65 | + AND posts.post_status IN ( '" . implode("','", $invoice_status) . "' ) |
|
66 | 66 | "; |
67 | 67 | } |
68 | 68 | |
69 | - if ( ! empty( $parent_invoice_status ) ) { |
|
70 | - if ( ! empty( $invoice_status ) ) { |
|
71 | - $query['where'] .= " AND ( parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) OR parent.ID IS NULL ) "; |
|
69 | + if (!empty($parent_invoice_status)) { |
|
70 | + if (!empty($invoice_status)) { |
|
71 | + $query['where'] .= " AND ( parent.post_status IN ( '" . implode("','", $parent_invoice_status) . "' ) OR parent.ID IS NULL ) "; |
|
72 | 72 | } else { |
73 | - $query['where'] .= " AND parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) "; |
|
73 | + $query['where'] .= " AND parent.post_status IN ( '" . implode("','", $parent_invoice_status) . "' ) "; |
|
74 | 74 | } |
75 | 75 | } |
76 | 76 | |
77 | - if ( ! empty( $filter_range['before'] ) ) { |
|
77 | + if (!empty($filter_range['before'])) { |
|
78 | 78 | $query['where'] .= " |
79 | - AND posts.post_date < '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['before'] ) ) . "' |
|
79 | + AND posts.post_date < '" . date('Y-m-d H:i:s', strtotime($filter_range['before'])) . "' |
|
80 | 80 | "; |
81 | 81 | } |
82 | 82 | |
83 | - if ( ! empty( $filter_range['after'] ) ) { |
|
83 | + if (!empty($filter_range['after'])) { |
|
84 | 84 | $query['where'] .= " |
85 | - AND posts.post_date > '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['after'] ) ) . "' |
|
85 | + AND posts.post_date > '" . date('Y-m-d H:i:s', strtotime($filter_range['after'])) . "' |
|
86 | 86 | "; |
87 | 87 | } |
88 | 88 | |
89 | - if ( ! empty( $where ) ) { |
|
89 | + if (!empty($where)) { |
|
90 | 90 | |
91 | - foreach ( $where as $value ) { |
|
91 | + foreach ($where as $value) { |
|
92 | 92 | |
93 | - if ( strtolower( $value['operator'] ) == 'in' || strtolower( $value['operator'] ) == 'not in' ) { |
|
93 | + if (strtolower($value['operator']) == 'in' || strtolower($value['operator']) == 'not in') { |
|
94 | 94 | |
95 | - if ( is_array( $value['value'] ) ) { |
|
96 | - $value['value'] = implode( "','", $value['value'] ); |
|
95 | + if (is_array($value['value'])) { |
|
96 | + $value['value'] = implode("','", $value['value']); |
|
97 | 97 | } |
98 | 98 | |
99 | - if ( ! empty( $value['value'] ) ) { |
|
99 | + if (!empty($value['value'])) { |
|
100 | 100 | $where_value = "{$value['operator']} ('{$value['value']}')"; |
101 | 101 | } |
102 | 102 | } else { |
103 | 103 | $where_value = "{$value['operator']} '{$value['value']}'"; |
104 | 104 | } |
105 | 105 | |
106 | - if ( ! empty( $where_value ) ) { |
|
106 | + if (!empty($where_value)) { |
|
107 | 107 | $query['where'] .= " AND {$value['key']} {$where_value}"; |
108 | 108 | } |
109 | 109 | } |
110 | 110 | } |
111 | 111 | |
112 | - if ( $group_by ) { |
|
112 | + if ($group_by) { |
|
113 | 113 | $query['group_by'] = "GROUP BY {$group_by}"; |
114 | 114 | } |
115 | 115 | |
116 | - if ( $order_by ) { |
|
116 | + if ($order_by) { |
|
117 | 117 | $query['order_by'] = "ORDER BY {$order_by}"; |
118 | 118 | } |
119 | 119 | |
120 | - if ( $limit ) { |
|
120 | + if ($limit) { |
|
121 | 121 | $query['limit'] = "LIMIT {$limit}"; |
122 | 122 | } |
123 | 123 | |
124 | - $query = apply_filters( 'getpaid_reports_get_invoice_report_query', $query, $data ); |
|
125 | - $query = implode( ' ', $query ); |
|
124 | + $query = apply_filters('getpaid_reports_get_invoice_report_query', $query, $data); |
|
125 | + $query = implode(' ', $query); |
|
126 | 126 | |
127 | - return self::execute( $query_type, $query ); |
|
127 | + return self::execute($query_type, $query); |
|
128 | 128 | |
129 | 129 | } |
130 | 130 | |
@@ -135,26 +135,26 @@ discard block |
||
135 | 135 | * @param array $data |
136 | 136 | * @return array |
137 | 137 | */ |
138 | - public static function prepare_invoice_data( $data ) { |
|
138 | + public static function prepare_invoice_data($data) { |
|
139 | 139 | |
140 | 140 | $prepared = array(); |
141 | 141 | |
142 | - foreach ( $data as $raw_key => $value ) { |
|
143 | - $key = sanitize_key( $raw_key ); |
|
142 | + foreach ($data as $raw_key => $value) { |
|
143 | + $key = sanitize_key($raw_key); |
|
144 | 144 | $distinct = ''; |
145 | 145 | |
146 | - if ( isset( $value['distinct'] ) ) { |
|
146 | + if (isset($value['distinct'])) { |
|
147 | 147 | $distinct = 'DISTINCT'; |
148 | 148 | } |
149 | 149 | |
150 | - $get_key = self::get_invoice_table_key( $key, $value['type'] ); |
|
150 | + $get_key = self::get_invoice_table_key($key, $value['type']); |
|
151 | 151 | |
152 | - if ( false === $get_key ) { |
|
152 | + if (false === $get_key) { |
|
153 | 153 | // Skip to the next foreach iteration else the query will be invalid. |
154 | 154 | continue; |
155 | 155 | } |
156 | 156 | |
157 | - if ( ! empty( $value['function'] ) ) { |
|
157 | + if (!empty($value['function'])) { |
|
158 | 158 | $get = "{$value['function']}({$distinct} {$get_key})"; |
159 | 159 | } else { |
160 | 160 | $get = "{$distinct} {$get_key}"; |
@@ -175,22 +175,22 @@ discard block |
||
175 | 175 | * @param bool $with_parent |
176 | 176 | * @return array |
177 | 177 | */ |
178 | - public static function prepare_invoice_joins( $data, $with_parent ) { |
|
178 | + public static function prepare_invoice_joins($data, $with_parent) { |
|
179 | 179 | global $wpdb; |
180 | 180 | |
181 | 181 | $prepared = array(); |
182 | 182 | |
183 | - foreach ( $data as $raw_key => $value ) { |
|
184 | - $join_type = isset( $value['join_type'] ) ? $value['join_type'] : 'INNER'; |
|
185 | - $type = isset( $value['type'] ) ? $value['type'] : false; |
|
186 | - $key = sanitize_key( $raw_key ); |
|
183 | + foreach ($data as $raw_key => $value) { |
|
184 | + $join_type = isset($value['join_type']) ? $value['join_type'] : 'INNER'; |
|
185 | + $type = isset($value['type']) ? $value['type'] : false; |
|
186 | + $key = sanitize_key($raw_key); |
|
187 | 187 | |
188 | - switch ( $type ) { |
|
188 | + switch ($type) { |
|
189 | 189 | case 'meta': |
190 | - $prepared[ "meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )"; |
|
190 | + $prepared["meta_{$key}"] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )"; |
|
191 | 191 | break; |
192 | 192 | case 'parent_meta': |
193 | - $prepared[ "parent_meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')"; |
|
193 | + $prepared["parent_meta_{$key}"] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')"; |
|
194 | 194 | break; |
195 | 195 | case 'invoice_data': |
196 | 196 | $prepared['invoices'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoices AS invoices ON posts.ID = invoices.post_id"; |
@@ -201,7 +201,7 @@ discard block |
||
201 | 201 | } |
202 | 202 | } |
203 | 203 | |
204 | - if ( $with_parent ) { |
|
204 | + if ($with_parent) { |
|
205 | 205 | $prepared['parent'] = "LEFT JOIN {$wpdb->posts} AS parent ON posts.post_parent = parent.ID"; |
206 | 206 | } |
207 | 207 | |
@@ -217,7 +217,7 @@ discard block |
||
217 | 217 | * @param string $table |
218 | 218 | * @return string|false |
219 | 219 | */ |
220 | - public static function get_invoice_table_key( $key, $table ) { |
|
220 | + public static function get_invoice_table_key($key, $table) { |
|
221 | 221 | |
222 | 222 | $keys = array( |
223 | 223 | 'meta' => "meta_{$key}.meta_value", |
@@ -227,7 +227,7 @@ discard block |
||
227 | 227 | 'invoice_item' => "invoice_items.{$key}", |
228 | 228 | ); |
229 | 229 | |
230 | - return isset( $keys[ $table ] ) ? $keys[ $table ] : false; |
|
230 | + return isset($keys[$table]) ? $keys[$table] : false; |
|
231 | 231 | |
232 | 232 | } |
233 | 233 | |
@@ -239,16 +239,16 @@ discard block |
||
239 | 239 | * @param string $query |
240 | 240 | * @return mixed depending on query_type |
241 | 241 | */ |
242 | - public static function execute( $query_type, $query ) { |
|
242 | + public static function execute($query_type, $query) { |
|
243 | 243 | global $wpdb; |
244 | 244 | |
245 | - $query_hash = md5( $query_type . $query ); |
|
246 | - $result = self::get_cached_query( $query_hash ); |
|
247 | - if ( $result === false ) { |
|
245 | + $query_hash = md5($query_type . $query); |
|
246 | + $result = self::get_cached_query($query_hash); |
|
247 | + if ($result === false) { |
|
248 | 248 | self::enable_big_selects(); |
249 | 249 | |
250 | - $result = $wpdb->$query_type( $query ); |
|
251 | - self::set_cached_query( $query_hash, $result ); |
|
250 | + $result = $wpdb->$query_type($query); |
|
251 | + self::set_cached_query($query_hash, $result); |
|
252 | 252 | } |
253 | 253 | |
254 | 254 | return $result; |
@@ -263,8 +263,8 @@ discard block |
||
263 | 263 | |
264 | 264 | global $wpdb; |
265 | 265 | |
266 | - if ( ! $big_selects ) { |
|
267 | - $wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' ); |
|
266 | + if (!$big_selects) { |
|
267 | + $wpdb->query('SET SESSION SQL_BIG_SELECTS=1'); |
|
268 | 268 | $big_selects = true; |
269 | 269 | } |
270 | 270 | } |
@@ -276,11 +276,11 @@ discard block |
||
276 | 276 | * |
277 | 277 | * @return mixed|false The cache contents on success, false on failure to retrieve contents. |
278 | 278 | */ |
279 | - protected static function get_cached_query( $query_hash ) { |
|
279 | + protected static function get_cached_query($query_hash) { |
|
280 | 280 | |
281 | 281 | return wp_cache_get( |
282 | 282 | $query_hash, |
283 | - strtolower( __CLASS__ ) |
|
283 | + strtolower(__CLASS__) |
|
284 | 284 | ); |
285 | 285 | |
286 | 286 | } |
@@ -291,12 +291,12 @@ discard block |
||
291 | 291 | * @param string $query_hash The query hash. |
292 | 292 | * @param mixed $data The data to cache. |
293 | 293 | */ |
294 | - protected static function set_cached_query( $query_hash, $data ) { |
|
294 | + protected static function set_cached_query($query_hash, $data) { |
|
295 | 295 | |
296 | 296 | wp_cache_set( |
297 | 297 | $query_hash, |
298 | 298 | $data, |
299 | - strtolower( __CLASS__ ), |
|
299 | + strtolower(__CLASS__), |
|
300 | 300 | 5 * MINUTE_IN_SECONDS |
301 | 301 | ); |
302 | 302 |
@@ -12,294 +12,294 @@ |
||
12 | 12 | */ |
13 | 13 | class GetPaid_Reports_Helper { |
14 | 14 | |
15 | - /** |
|
16 | - * Get report totals such as invoice totals and discount amounts. |
|
17 | - * |
|
18 | - * Data example: |
|
19 | - * |
|
20 | - * 'subtotal' => array( |
|
21 | - * 'type' => 'invoice_data', |
|
22 | - * 'function' => 'SUM', |
|
23 | - * 'name' => 'subtotal' |
|
24 | - * ) |
|
25 | - * |
|
26 | - * @param array $args |
|
27 | - * @return mixed depending on query_type |
|
28 | - */ |
|
29 | - public static function get_invoice_report_data( $args = array() ) { |
|
30 | - global $wpdb; |
|
31 | - |
|
32 | - $default_args = array( |
|
33 | - 'data' => array(), // The data to retrieve. |
|
34 | - 'where' => array(), // An array of where queries. |
|
35 | - 'query_type' => 'get_row', // wpdb query to run. |
|
36 | - 'group_by' => '', // What to group results by. |
|
37 | - 'order_by' => '', // What to order by. |
|
38 | - 'limit' => '', // Results limit. |
|
39 | - 'filter_range' => array(), // An array of before and after dates to limit results by. |
|
40 | - 'invoice_types' => array( 'wpi_invoice' ), // An array of post types to retrieve. |
|
41 | - 'invoice_status' => array( 'publish', 'wpi-processing', 'wpi-onhold' ), |
|
42 | - 'parent_invoice_status' => false, // Optionally filter by parent invoice status. |
|
43 | - ); |
|
44 | - |
|
45 | - $args = apply_filters( 'getpaid_reports_get_invoice_report_data_args', $args ); |
|
46 | - $args = wp_parse_args( $args, $default_args ); |
|
47 | - |
|
48 | - extract( $args ); |
|
49 | - |
|
50 | - if ( empty( $data ) ) { |
|
51 | - return ''; |
|
52 | - } |
|
53 | - |
|
54 | - $query = array(); |
|
55 | - $query['select'] = 'SELECT ' . implode( ',', self::prepare_invoice_data( $data ) ); |
|
56 | - $query['from'] = "FROM {$wpdb->posts} AS posts"; |
|
57 | - $query['join'] = implode( ' ', self::prepare_invoice_joins( $data + $where, ! empty( $parent_invoice_status ) ) ); |
|
58 | - |
|
59 | - $query['where'] = " |
|
15 | + /** |
|
16 | + * Get report totals such as invoice totals and discount amounts. |
|
17 | + * |
|
18 | + * Data example: |
|
19 | + * |
|
20 | + * 'subtotal' => array( |
|
21 | + * 'type' => 'invoice_data', |
|
22 | + * 'function' => 'SUM', |
|
23 | + * 'name' => 'subtotal' |
|
24 | + * ) |
|
25 | + * |
|
26 | + * @param array $args |
|
27 | + * @return mixed depending on query_type |
|
28 | + */ |
|
29 | + public static function get_invoice_report_data( $args = array() ) { |
|
30 | + global $wpdb; |
|
31 | + |
|
32 | + $default_args = array( |
|
33 | + 'data' => array(), // The data to retrieve. |
|
34 | + 'where' => array(), // An array of where queries. |
|
35 | + 'query_type' => 'get_row', // wpdb query to run. |
|
36 | + 'group_by' => '', // What to group results by. |
|
37 | + 'order_by' => '', // What to order by. |
|
38 | + 'limit' => '', // Results limit. |
|
39 | + 'filter_range' => array(), // An array of before and after dates to limit results by. |
|
40 | + 'invoice_types' => array( 'wpi_invoice' ), // An array of post types to retrieve. |
|
41 | + 'invoice_status' => array( 'publish', 'wpi-processing', 'wpi-onhold' ), |
|
42 | + 'parent_invoice_status' => false, // Optionally filter by parent invoice status. |
|
43 | + ); |
|
44 | + |
|
45 | + $args = apply_filters( 'getpaid_reports_get_invoice_report_data_args', $args ); |
|
46 | + $args = wp_parse_args( $args, $default_args ); |
|
47 | + |
|
48 | + extract( $args ); |
|
49 | + |
|
50 | + if ( empty( $data ) ) { |
|
51 | + return ''; |
|
52 | + } |
|
53 | + |
|
54 | + $query = array(); |
|
55 | + $query['select'] = 'SELECT ' . implode( ',', self::prepare_invoice_data( $data ) ); |
|
56 | + $query['from'] = "FROM {$wpdb->posts} AS posts"; |
|
57 | + $query['join'] = implode( ' ', self::prepare_invoice_joins( $data + $where, ! empty( $parent_invoice_status ) ) ); |
|
58 | + |
|
59 | + $query['where'] = " |
|
60 | 60 | WHERE posts.post_type IN ( '" . implode( "','", $invoice_types ) . "' ) |
61 | 61 | "; |
62 | 62 | |
63 | - if ( ! empty( $invoice_status ) ) { |
|
64 | - $query['where'] .= " |
|
63 | + if ( ! empty( $invoice_status ) ) { |
|
64 | + $query['where'] .= " |
|
65 | 65 | AND posts.post_status IN ( '" . implode( "','", $invoice_status ) . "' ) |
66 | 66 | "; |
67 | - } |
|
68 | - |
|
69 | - if ( ! empty( $parent_invoice_status ) ) { |
|
70 | - if ( ! empty( $invoice_status ) ) { |
|
71 | - $query['where'] .= " AND ( parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) OR parent.ID IS NULL ) "; |
|
72 | - } else { |
|
73 | - $query['where'] .= " AND parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) "; |
|
74 | - } |
|
75 | - } |
|
76 | - |
|
77 | - if ( ! empty( $filter_range['before'] ) ) { |
|
78 | - $query['where'] .= " |
|
67 | + } |
|
68 | + |
|
69 | + if ( ! empty( $parent_invoice_status ) ) { |
|
70 | + if ( ! empty( $invoice_status ) ) { |
|
71 | + $query['where'] .= " AND ( parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) OR parent.ID IS NULL ) "; |
|
72 | + } else { |
|
73 | + $query['where'] .= " AND parent.post_status IN ( '" . implode( "','", $parent_invoice_status ) . "' ) "; |
|
74 | + } |
|
75 | + } |
|
76 | + |
|
77 | + if ( ! empty( $filter_range['before'] ) ) { |
|
78 | + $query['where'] .= " |
|
79 | 79 | AND posts.post_date < '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['before'] ) ) . "' |
80 | 80 | "; |
81 | - } |
|
81 | + } |
|
82 | 82 | |
83 | - if ( ! empty( $filter_range['after'] ) ) { |
|
84 | - $query['where'] .= " |
|
83 | + if ( ! empty( $filter_range['after'] ) ) { |
|
84 | + $query['where'] .= " |
|
85 | 85 | AND posts.post_date > '" . date( 'Y-m-d H:i:s', strtotime( $filter_range['after'] ) ) . "' |
86 | 86 | "; |
87 | - } |
|
87 | + } |
|
88 | 88 | |
89 | - if ( ! empty( $where ) ) { |
|
89 | + if ( ! empty( $where ) ) { |
|
90 | 90 | |
91 | - foreach ( $where as $value ) { |
|
91 | + foreach ( $where as $value ) { |
|
92 | 92 | |
93 | - if ( strtolower( $value['operator'] ) == 'in' || strtolower( $value['operator'] ) == 'not in' ) { |
|
94 | - |
|
95 | - if ( is_array( $value['value'] ) ) { |
|
96 | - $value['value'] = implode( "','", $value['value'] ); |
|
97 | - } |
|
98 | - |
|
99 | - if ( ! empty( $value['value'] ) ) { |
|
100 | - $where_value = "{$value['operator']} ('{$value['value']}')"; |
|
101 | - } |
|
102 | - } else { |
|
103 | - $where_value = "{$value['operator']} '{$value['value']}'"; |
|
104 | - } |
|
105 | - |
|
106 | - if ( ! empty( $where_value ) ) { |
|
107 | - $query['where'] .= " AND {$value['key']} {$where_value}"; |
|
108 | - } |
|
109 | - } |
|
110 | - } |
|
111 | - |
|
112 | - if ( $group_by ) { |
|
113 | - $query['group_by'] = "GROUP BY {$group_by}"; |
|
114 | - } |
|
115 | - |
|
116 | - if ( $order_by ) { |
|
117 | - $query['order_by'] = "ORDER BY {$order_by}"; |
|
118 | - } |
|
119 | - |
|
120 | - if ( $limit ) { |
|
121 | - $query['limit'] = "LIMIT {$limit}"; |
|
122 | - } |
|
123 | - |
|
124 | - $query = apply_filters( 'getpaid_reports_get_invoice_report_query', $query, $data ); |
|
125 | - $query = implode( ' ', $query ); |
|
126 | - |
|
127 | - return self::execute( $query_type, $query ); |
|
128 | - |
|
129 | - } |
|
130 | - |
|
131 | - /** |
|
132 | - * Prepares the data to select. |
|
133 | - * |
|
134 | - * |
|
135 | - * @param array $data |
|
136 | - * @return array |
|
137 | - */ |
|
138 | - public static function prepare_invoice_data( $data ) { |
|
139 | - |
|
140 | - $prepared = array(); |
|
141 | - |
|
142 | - foreach ( $data as $raw_key => $value ) { |
|
143 | - $key = sanitize_key( $raw_key ); |
|
144 | - $distinct = ''; |
|
145 | - |
|
146 | - if ( isset( $value['distinct'] ) ) { |
|
147 | - $distinct = 'DISTINCT'; |
|
148 | - } |
|
149 | - |
|
150 | - $get_key = self::get_invoice_table_key( $key, $value['type'] ); |
|
151 | - |
|
152 | - if ( false === $get_key ) { |
|
153 | - // Skip to the next foreach iteration else the query will be invalid. |
|
154 | - continue; |
|
155 | - } |
|
156 | - |
|
157 | - if ( ! empty( $value['function'] ) ) { |
|
158 | - $get = "{$value['function']}({$distinct} {$get_key})"; |
|
159 | - } else { |
|
160 | - $get = "{$distinct} {$get_key}"; |
|
161 | - } |
|
162 | - |
|
163 | - $prepared[] = "{$get} as {$value['name']}"; |
|
164 | - } |
|
165 | - |
|
166 | - return $prepared; |
|
167 | - |
|
168 | - } |
|
169 | - |
|
170 | - /** |
|
171 | - * Prepares the joins to use. |
|
172 | - * |
|
173 | - * |
|
174 | - * @param array $data |
|
175 | - * @param bool $with_parent |
|
176 | - * @return array |
|
177 | - */ |
|
178 | - public static function prepare_invoice_joins( $data, $with_parent ) { |
|
179 | - global $wpdb; |
|
180 | - |
|
181 | - $prepared = array(); |
|
182 | - |
|
183 | - foreach ( $data as $raw_key => $value ) { |
|
184 | - $join_type = isset( $value['join_type'] ) ? $value['join_type'] : 'INNER'; |
|
185 | - $type = isset( $value['type'] ) ? $value['type'] : false; |
|
186 | - $key = sanitize_key( $raw_key ); |
|
187 | - |
|
188 | - switch ( $type ) { |
|
189 | - case 'meta': |
|
190 | - $prepared[ "meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )"; |
|
191 | - break; |
|
192 | - case 'parent_meta': |
|
193 | - $prepared[ "parent_meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')"; |
|
194 | - break; |
|
195 | - case 'invoice_data': |
|
196 | - $prepared['invoices'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoices AS invoices ON posts.ID = invoices.post_id"; |
|
197 | - break; |
|
198 | - case 'invoice_item': |
|
199 | - $prepared['invoice_items'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoice_items AS invoice_items ON posts.ID = invoice_items.post_id"; |
|
200 | - break; |
|
201 | - } |
|
202 | - } |
|
203 | - |
|
204 | - if ( $with_parent ) { |
|
205 | - $prepared['parent'] = "LEFT JOIN {$wpdb->posts} AS parent ON posts.post_parent = parent.ID"; |
|
206 | - } |
|
207 | - |
|
208 | - return $prepared; |
|
209 | - |
|
210 | - } |
|
211 | - |
|
212 | - /** |
|
213 | - * Retrieves the appropriate table key to use. |
|
214 | - * |
|
215 | - * |
|
216 | - * @param string $key |
|
217 | - * @param string $table |
|
218 | - * @return string|false |
|
219 | - */ |
|
220 | - public static function get_invoice_table_key( $key, $table ) { |
|
221 | - |
|
222 | - $keys = array( |
|
223 | - 'meta' => "meta_{$key}.meta_value", |
|
224 | - 'parent_meta' => "parent_meta_{$key}.meta_value", |
|
225 | - 'post_data' => "posts.{$key}", |
|
226 | - 'invoice_data' => "invoices.{$key}", |
|
227 | - 'invoice_item' => "invoice_items.{$key}", |
|
228 | - ); |
|
229 | - |
|
230 | - return isset( $keys[ $table ] ) ? $keys[ $table ] : false; |
|
231 | - |
|
232 | - } |
|
233 | - |
|
234 | - /** |
|
235 | - * Executes a query and caches the result for a minute. |
|
236 | - * |
|
237 | - * |
|
238 | - * @param string $query_type |
|
239 | - * @param string $query |
|
240 | - * @return mixed depending on query_type |
|
241 | - */ |
|
242 | - public static function execute( $query_type, $query ) { |
|
243 | - global $wpdb; |
|
244 | - |
|
245 | - $query_hash = md5( $query_type . $query ); |
|
246 | - $result = self::get_cached_query( $query_hash ); |
|
247 | - if ( $result === false ) { |
|
248 | - self::enable_big_selects(); |
|
249 | - |
|
250 | - $result = $wpdb->$query_type( $query ); |
|
251 | - self::set_cached_query( $query_hash, $result ); |
|
252 | - } |
|
253 | - |
|
254 | - return $result; |
|
255 | - |
|
256 | - } |
|
257 | - |
|
258 | - /** |
|
259 | - * Enables big mysql selects for reports, just once for this session. |
|
260 | - */ |
|
261 | - protected static function enable_big_selects() { |
|
262 | - static $big_selects = false; |
|
263 | - |
|
264 | - global $wpdb; |
|
265 | - |
|
266 | - if ( ! $big_selects ) { |
|
267 | - $wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' ); |
|
268 | - $big_selects = true; |
|
269 | - } |
|
270 | - } |
|
271 | - |
|
272 | - /** |
|
273 | - * Get the cached query result or null if it's not in the cache. |
|
274 | - * |
|
275 | - * @param string $query_hash The query hash. |
|
276 | - * |
|
277 | - * @return mixed|false The cache contents on success, false on failure to retrieve contents. |
|
278 | - */ |
|
279 | - protected static function get_cached_query( $query_hash ) { |
|
280 | - |
|
281 | - return wp_cache_get( |
|
282 | - $query_hash, |
|
283 | - strtolower( __CLASS__ ) |
|
284 | - ); |
|
285 | - |
|
286 | - } |
|
287 | - |
|
288 | - /** |
|
289 | - * Set the cached query result. |
|
290 | - * |
|
291 | - * @param string $query_hash The query hash. |
|
292 | - * @param mixed $data The data to cache. |
|
293 | - */ |
|
294 | - protected static function set_cached_query( $query_hash, $data ) { |
|
295 | - |
|
296 | - wp_cache_set( |
|
297 | - $query_hash, |
|
298 | - $data, |
|
299 | - strtolower( __CLASS__ ), |
|
300 | - 5 * MINUTE_IN_SECONDS |
|
301 | - ); |
|
302 | - |
|
303 | - } |
|
93 | + if ( strtolower( $value['operator'] ) == 'in' || strtolower( $value['operator'] ) == 'not in' ) { |
|
94 | + |
|
95 | + if ( is_array( $value['value'] ) ) { |
|
96 | + $value['value'] = implode( "','", $value['value'] ); |
|
97 | + } |
|
98 | + |
|
99 | + if ( ! empty( $value['value'] ) ) { |
|
100 | + $where_value = "{$value['operator']} ('{$value['value']}')"; |
|
101 | + } |
|
102 | + } else { |
|
103 | + $where_value = "{$value['operator']} '{$value['value']}'"; |
|
104 | + } |
|
105 | + |
|
106 | + if ( ! empty( $where_value ) ) { |
|
107 | + $query['where'] .= " AND {$value['key']} {$where_value}"; |
|
108 | + } |
|
109 | + } |
|
110 | + } |
|
111 | + |
|
112 | + if ( $group_by ) { |
|
113 | + $query['group_by'] = "GROUP BY {$group_by}"; |
|
114 | + } |
|
115 | + |
|
116 | + if ( $order_by ) { |
|
117 | + $query['order_by'] = "ORDER BY {$order_by}"; |
|
118 | + } |
|
119 | + |
|
120 | + if ( $limit ) { |
|
121 | + $query['limit'] = "LIMIT {$limit}"; |
|
122 | + } |
|
123 | + |
|
124 | + $query = apply_filters( 'getpaid_reports_get_invoice_report_query', $query, $data ); |
|
125 | + $query = implode( ' ', $query ); |
|
126 | + |
|
127 | + return self::execute( $query_type, $query ); |
|
128 | + |
|
129 | + } |
|
130 | + |
|
131 | + /** |
|
132 | + * Prepares the data to select. |
|
133 | + * |
|
134 | + * |
|
135 | + * @param array $data |
|
136 | + * @return array |
|
137 | + */ |
|
138 | + public static function prepare_invoice_data( $data ) { |
|
139 | + |
|
140 | + $prepared = array(); |
|
141 | + |
|
142 | + foreach ( $data as $raw_key => $value ) { |
|
143 | + $key = sanitize_key( $raw_key ); |
|
144 | + $distinct = ''; |
|
145 | + |
|
146 | + if ( isset( $value['distinct'] ) ) { |
|
147 | + $distinct = 'DISTINCT'; |
|
148 | + } |
|
149 | + |
|
150 | + $get_key = self::get_invoice_table_key( $key, $value['type'] ); |
|
151 | + |
|
152 | + if ( false === $get_key ) { |
|
153 | + // Skip to the next foreach iteration else the query will be invalid. |
|
154 | + continue; |
|
155 | + } |
|
156 | + |
|
157 | + if ( ! empty( $value['function'] ) ) { |
|
158 | + $get = "{$value['function']}({$distinct} {$get_key})"; |
|
159 | + } else { |
|
160 | + $get = "{$distinct} {$get_key}"; |
|
161 | + } |
|
162 | + |
|
163 | + $prepared[] = "{$get} as {$value['name']}"; |
|
164 | + } |
|
165 | + |
|
166 | + return $prepared; |
|
167 | + |
|
168 | + } |
|
169 | + |
|
170 | + /** |
|
171 | + * Prepares the joins to use. |
|
172 | + * |
|
173 | + * |
|
174 | + * @param array $data |
|
175 | + * @param bool $with_parent |
|
176 | + * @return array |
|
177 | + */ |
|
178 | + public static function prepare_invoice_joins( $data, $with_parent ) { |
|
179 | + global $wpdb; |
|
180 | + |
|
181 | + $prepared = array(); |
|
182 | + |
|
183 | + foreach ( $data as $raw_key => $value ) { |
|
184 | + $join_type = isset( $value['join_type'] ) ? $value['join_type'] : 'INNER'; |
|
185 | + $type = isset( $value['type'] ) ? $value['type'] : false; |
|
186 | + $key = sanitize_key( $raw_key ); |
|
187 | + |
|
188 | + switch ( $type ) { |
|
189 | + case 'meta': |
|
190 | + $prepared[ "meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS meta_{$key} ON ( posts.ID = meta_{$key}.post_id AND meta_{$key}.meta_key = '{$raw_key}' )"; |
|
191 | + break; |
|
192 | + case 'parent_meta': |
|
193 | + $prepared[ "parent_meta_{$key}" ] = "{$join_type} JOIN {$wpdb->postmeta} AS parent_meta_{$key} ON (posts.post_parent = parent_meta_{$key}.post_id) AND (parent_meta_{$key}.meta_key = '{$raw_key}')"; |
|
194 | + break; |
|
195 | + case 'invoice_data': |
|
196 | + $prepared['invoices'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoices AS invoices ON posts.ID = invoices.post_id"; |
|
197 | + break; |
|
198 | + case 'invoice_item': |
|
199 | + $prepared['invoice_items'] = "{$join_type} JOIN {$wpdb->prefix}getpaid_invoice_items AS invoice_items ON posts.ID = invoice_items.post_id"; |
|
200 | + break; |
|
201 | + } |
|
202 | + } |
|
203 | + |
|
204 | + if ( $with_parent ) { |
|
205 | + $prepared['parent'] = "LEFT JOIN {$wpdb->posts} AS parent ON posts.post_parent = parent.ID"; |
|
206 | + } |
|
207 | + |
|
208 | + return $prepared; |
|
209 | + |
|
210 | + } |
|
211 | + |
|
212 | + /** |
|
213 | + * Retrieves the appropriate table key to use. |
|
214 | + * |
|
215 | + * |
|
216 | + * @param string $key |
|
217 | + * @param string $table |
|
218 | + * @return string|false |
|
219 | + */ |
|
220 | + public static function get_invoice_table_key( $key, $table ) { |
|
221 | + |
|
222 | + $keys = array( |
|
223 | + 'meta' => "meta_{$key}.meta_value", |
|
224 | + 'parent_meta' => "parent_meta_{$key}.meta_value", |
|
225 | + 'post_data' => "posts.{$key}", |
|
226 | + 'invoice_data' => "invoices.{$key}", |
|
227 | + 'invoice_item' => "invoice_items.{$key}", |
|
228 | + ); |
|
229 | + |
|
230 | + return isset( $keys[ $table ] ) ? $keys[ $table ] : false; |
|
231 | + |
|
232 | + } |
|
233 | + |
|
234 | + /** |
|
235 | + * Executes a query and caches the result for a minute. |
|
236 | + * |
|
237 | + * |
|
238 | + * @param string $query_type |
|
239 | + * @param string $query |
|
240 | + * @return mixed depending on query_type |
|
241 | + */ |
|
242 | + public static function execute( $query_type, $query ) { |
|
243 | + global $wpdb; |
|
244 | + |
|
245 | + $query_hash = md5( $query_type . $query ); |
|
246 | + $result = self::get_cached_query( $query_hash ); |
|
247 | + if ( $result === false ) { |
|
248 | + self::enable_big_selects(); |
|
249 | + |
|
250 | + $result = $wpdb->$query_type( $query ); |
|
251 | + self::set_cached_query( $query_hash, $result ); |
|
252 | + } |
|
253 | + |
|
254 | + return $result; |
|
255 | + |
|
256 | + } |
|
257 | + |
|
258 | + /** |
|
259 | + * Enables big mysql selects for reports, just once for this session. |
|
260 | + */ |
|
261 | + protected static function enable_big_selects() { |
|
262 | + static $big_selects = false; |
|
263 | + |
|
264 | + global $wpdb; |
|
265 | + |
|
266 | + if ( ! $big_selects ) { |
|
267 | + $wpdb->query( 'SET SESSION SQL_BIG_SELECTS=1' ); |
|
268 | + $big_selects = true; |
|
269 | + } |
|
270 | + } |
|
271 | + |
|
272 | + /** |
|
273 | + * Get the cached query result or null if it's not in the cache. |
|
274 | + * |
|
275 | + * @param string $query_hash The query hash. |
|
276 | + * |
|
277 | + * @return mixed|false The cache contents on success, false on failure to retrieve contents. |
|
278 | + */ |
|
279 | + protected static function get_cached_query( $query_hash ) { |
|
280 | + |
|
281 | + return wp_cache_get( |
|
282 | + $query_hash, |
|
283 | + strtolower( __CLASS__ ) |
|
284 | + ); |
|
285 | + |
|
286 | + } |
|
287 | + |
|
288 | + /** |
|
289 | + * Set the cached query result. |
|
290 | + * |
|
291 | + * @param string $query_hash The query hash. |
|
292 | + * @param mixed $data The data to cache. |
|
293 | + */ |
|
294 | + protected static function set_cached_query( $query_hash, $data ) { |
|
295 | + |
|
296 | + wp_cache_set( |
|
297 | + $query_hash, |
|
298 | + $data, |
|
299 | + strtolower( __CLASS__ ), |
|
300 | + 5 * MINUTE_IN_SECONDS |
|
301 | + ); |
|
302 | + |
|
303 | + } |
|
304 | 304 | |
305 | 305 | } |