@@ -16,512 +16,512 @@ |
||
16 | 16 | */ |
17 | 17 | class GetPaid_Subscriptions_Query { |
18 | 18 | |
19 | - /** |
|
20 | - * Query vars, after parsing |
|
21 | - * |
|
22 | - * @since 1.0.19 |
|
23 | - * @var array |
|
24 | - */ |
|
25 | - public $query_vars = array(); |
|
26 | - |
|
27 | - /** |
|
28 | - * List of found subscriptions. |
|
29 | - * |
|
30 | - * @since 1.0.19 |
|
31 | - * @var array |
|
32 | - */ |
|
33 | - private $results; |
|
34 | - |
|
35 | - /** |
|
36 | - * Total number of found subscriptions for the current query |
|
37 | - * |
|
38 | - * @since 1.0.19 |
|
39 | - * @var int |
|
40 | - */ |
|
41 | - private $total_subscriptions = 0; |
|
42 | - |
|
43 | - /** |
|
44 | - * The SQL query used to fetch matching subscriptions. |
|
45 | - * |
|
46 | - * @since 1.0.19 |
|
47 | - * @var string |
|
48 | - */ |
|
49 | - public $request; |
|
50 | - |
|
51 | - // SQL clauses |
|
52 | - |
|
53 | - /** |
|
54 | - * Contains the 'FIELDS' sql clause |
|
55 | - * |
|
56 | - * @since 1.0.19 |
|
57 | - * @var string |
|
58 | - */ |
|
59 | - public $query_fields; |
|
60 | - |
|
61 | - /** |
|
62 | - * Contains the 'FROM' sql clause |
|
63 | - * |
|
64 | - * @since 1.0.19 |
|
65 | - * @var string |
|
66 | - */ |
|
67 | - public $query_from; |
|
68 | - |
|
69 | - /** |
|
70 | - * Contains the 'WHERE' sql clause |
|
71 | - * |
|
72 | - * @since 1.0.19 |
|
73 | - * @var string |
|
74 | - */ |
|
75 | - public $query_where; |
|
76 | - |
|
77 | - /** |
|
78 | - * Contains the 'ORDER BY' sql clause |
|
79 | - * |
|
80 | - * @since 1.0.19 |
|
81 | - * @var string |
|
82 | - */ |
|
83 | - public $query_orderby; |
|
84 | - |
|
85 | - /** |
|
86 | - * Contains the 'LIMIT' sql clause |
|
87 | - * |
|
88 | - * @since 1.0.19 |
|
89 | - * @var string |
|
90 | - */ |
|
91 | - public $query_limit; |
|
92 | - |
|
93 | - /** |
|
94 | - * Class constructor. |
|
95 | - * |
|
96 | - * @since 1.0.19 |
|
97 | - * |
|
98 | - * @param null|string|array $query Optional. The query variables. |
|
99 | - */ |
|
100 | - public function __construct( $query = null ) { |
|
101 | - if ( ! is_null( $query ) ) { |
|
102 | - $this->prepare_query( $query ); |
|
103 | - $this->query(); |
|
104 | - } |
|
105 | - } |
|
106 | - |
|
107 | - /** |
|
108 | - * Fills in missing query variables with default values. |
|
109 | - * |
|
110 | - * @since 1.0.19 |
|
111 | - * |
|
112 | - * @param string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`. |
|
113 | - * @return array Complete query variables with undefined ones filled in with defaults. |
|
114 | - */ |
|
115 | - public static function fill_query_vars( $args ) { |
|
116 | - $defaults = array( |
|
117 | - 'status' => 'all', |
|
118 | - 'customer_in' => array(), |
|
119 | - 'customer_not_in' => array(), |
|
120 | - 'product_in' => array(), |
|
121 | - 'product_not_in' => array(), |
|
122 | - 'include' => array(), |
|
123 | - 'exclude' => array(), |
|
124 | - 'orderby' => 'id', |
|
125 | - 'order' => 'DESC', |
|
126 | - 'offset' => '', |
|
127 | - 'number' => 10, |
|
128 | - 'paged' => 1, |
|
129 | - 'count_total' => true, |
|
130 | - 'fields' => 'all', |
|
131 | - ); |
|
132 | - |
|
133 | - return wp_parse_args( $args, $defaults ); |
|
134 | - } |
|
135 | - |
|
136 | - /** |
|
137 | - * Prepare the query variables. |
|
138 | - * |
|
139 | - * @since 1.0.19 |
|
140 | - * |
|
141 | - * @global wpdb $wpdb WordPress database abstraction object. |
|
142 | - * |
|
143 | - * @param string|array $query { |
|
144 | - * Optional. Array or string of Query parameters. |
|
145 | - * |
|
146 | - * @type string|array $status The subscription status to filter by. Can either be a single status or an array of statuses. |
|
147 | - * Default is all. |
|
148 | - * @type int[] $customer_in An array of customer ids to filter by. |
|
149 | - * @type int[] $customer_not_in An array of customer ids whose subscriptions should be excluded. |
|
150 | - * @type int[] $invoice_in An array of invoice ids to filter by. |
|
151 | - * @type int[] $invoice_not_in An array of invoice ids whose subscriptions should be excluded. |
|
152 | - * @type int[] $product_in An array of product ids to filter by. |
|
153 | - * @type int[] $product_not_in An array of product ids whose subscriptions should be excluded. |
|
154 | - * @type array $date_created_query A WP_Date_Query compatible array use to filter subscriptions by their date of creation. |
|
155 | - * @type array $date_expires_query A WP_Date_Query compatible array use to filter subscriptions by their expiration date. |
|
156 | - * @type array $include An array of subscription IDs to include. Default empty array. |
|
157 | - * @type array $exclude An array of subscription IDs to exclude. Default empty array. |
|
158 | - * @type string|array $orderby Field(s) to sort the retrieved subscription by. May be a single value, |
|
159 | - * an array of values, or a multi-dimensional array with fields as |
|
160 | - * keys and orders ('ASC' or 'DESC') as values. Accepted values are |
|
161 | - * 'id', 'customer_id', 'frequency', 'period', 'initial_amount, |
|
162 | - * 'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration' |
|
163 | - * 'transaction_id', 'product_id', 'trial_period', 'include', 'status', 'profile_id'. Default array( 'id' ). |
|
164 | - * @type string $order Designates ascending or descending order of subscriptions. Order values |
|
165 | - * passed as part of an `$orderby` array take precedence over this |
|
166 | - * parameter. Accepts 'ASC', 'DESC'. Default 'DESC'. |
|
167 | - * @type int $offset Number of subscriptions to offset in retrieved results. Can be used in |
|
168 | - * conjunction with pagination. Default 0. |
|
169 | - * @type int $number Number of subscriptions to limit the query for. Can be used in |
|
170 | - * conjunction with pagination. Value -1 (all) is supported, but |
|
171 | - * should be used with caution on larger sites. |
|
172 | - * Default 10. |
|
173 | - * @type int $paged When used with number, defines the page of results to return. |
|
174 | - * Default 1. |
|
175 | - * @type bool $count_total Whether to count the total number of subscriptions found. If pagination |
|
176 | - * is not needed, setting this to false can improve performance. |
|
177 | - * Default true. |
|
178 | - * @type string|array $fields Which fields to return. Single or all fields (string), or array |
|
179 | - * of fields. Accepts 'id', 'customer_id', 'frequency', 'period', 'initial_amount, |
|
180 | - * 'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration' |
|
181 | - * 'transaction_id', 'product_id', 'trial_period', 'status', 'profile_id'. |
|
182 | - * Use 'all' for all fields. Default 'all'. |
|
183 | - * } |
|
184 | - */ |
|
185 | - public function prepare_query( $query = array() ) { |
|
186 | - global $wpdb; |
|
187 | - |
|
188 | - if ( empty( $this->query_vars ) || ! empty( $query ) ) { |
|
189 | - $this->query_limit = null; |
|
190 | - $this->query_vars = $this->fill_query_vars( $query ); |
|
191 | - } |
|
192 | - |
|
193 | - if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) { |
|
194 | - $this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] ); |
|
195 | - } |
|
196 | - |
|
197 | - do_action( 'getpaid_pre_get_subscriptions', array( &$this ) ); |
|
198 | - |
|
199 | - // Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'. |
|
200 | - $qv =& $this->query_vars; |
|
201 | - $qv = $this->fill_query_vars( $qv ); |
|
202 | - $table = $wpdb->prefix . 'wpinv_subscriptions'; |
|
203 | - $this->query_from = "FROM $table"; |
|
204 | - |
|
205 | - // Prepare query fields. |
|
206 | - $this->prepare_query_fields( $qv, $table ); |
|
207 | - |
|
208 | - // Prepare query where. |
|
209 | - $this->prepare_query_where( $qv, $table ); |
|
210 | - |
|
211 | - // Prepare query order. |
|
212 | - $this->prepare_query_order( $qv, $table ); |
|
213 | - |
|
214 | - // limit |
|
215 | - if ( isset( $qv['number'] ) && $qv['number'] > 0 ) { |
|
216 | - if ( $qv['offset'] ) { |
|
217 | - $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] ); |
|
218 | - } else { |
|
219 | - $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] ); |
|
220 | - } |
|
221 | - } |
|
222 | - |
|
223 | - do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) ); |
|
224 | - } |
|
225 | - |
|
226 | - /** |
|
227 | - * Prepares the query fields. |
|
228 | - * |
|
229 | - * @since 1.0.19 |
|
230 | - * |
|
231 | - * @param array $qv Query vars. |
|
232 | - * @param string $table Table name. |
|
233 | - */ |
|
234 | - protected function prepare_query_fields( &$qv, $table ) { |
|
235 | - |
|
236 | - if ( is_array( $qv['fields'] ) ) { |
|
237 | - $qv['fields'] = array_unique( $qv['fields'] ); |
|
238 | - |
|
239 | - $query_fields = array(); |
|
240 | - foreach ( $qv['fields'] as $field ) { |
|
241 | - $field = sanitize_key( $field ); |
|
242 | - $query_fields[] = "$table.`$field`"; |
|
243 | - } |
|
244 | - $this->query_fields = implode( ',', $query_fields ); |
|
245 | - } else { |
|
246 | - $this->query_fields = "$table.*"; |
|
247 | - } |
|
248 | - |
|
249 | - if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { |
|
250 | - $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields; |
|
251 | - } |
|
252 | - |
|
253 | - } |
|
254 | - |
|
255 | - /** |
|
256 | - * Prepares the query where. |
|
257 | - * |
|
258 | - * @since 1.0.19 |
|
259 | - * |
|
260 | - * @param array $qv Query vars. |
|
261 | - * @param string $table Table name. |
|
262 | - */ |
|
263 | - protected function prepare_query_where( &$qv, $table ) { |
|
264 | - global $wpdb; |
|
265 | - $this->query_where = 'WHERE 1=1'; |
|
266 | - |
|
267 | - // Status. |
|
268 | - if ( 'all' !== $qv['status'] ) { |
|
269 | - $statuses = wpinv_clean( wpinv_parse_list( $qv['status'] ) ); |
|
270 | - $prepared_statuses = join( ',', array_fill( 0, count( $statuses ), '%s' ) ); |
|
271 | - $this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses ); |
|
272 | - } |
|
273 | - |
|
274 | - if ( ! empty( $qv['customer_in'] ) ) { |
|
275 | - $customer_in = implode( ',', wp_parse_id_list( $qv['customer_in'] ) ); |
|
276 | - $this->query_where .= " AND $table.`customer_id` IN ($customer_in)"; |
|
277 | - } elseif ( ! empty( $qv['customer_not_in'] ) ) { |
|
278 | - $customer_not_in = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) ); |
|
279 | - $this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)"; |
|
280 | - } |
|
281 | - |
|
282 | - if ( ! empty( $qv['product_in'] ) ) { |
|
283 | - $product_in = implode( ',', wp_parse_id_list( $qv['product_in'] ) ); |
|
284 | - $this->query_where .= " AND $table.`product_id` IN ($product_in)"; |
|
285 | - } elseif ( ! empty( $qv['product_not_in'] ) ) { |
|
286 | - $product_not_in = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) ); |
|
287 | - $this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)"; |
|
288 | - } |
|
289 | - |
|
290 | - if ( ! empty( $qv['invoice_in'] ) ) { |
|
291 | - $invoice_in = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) ); |
|
292 | - $this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)"; |
|
293 | - } elseif ( ! empty( $qv['invoice_not_in'] ) ) { |
|
294 | - $invoice_not_in = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) ); |
|
295 | - $this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)"; |
|
296 | - } |
|
297 | - |
|
298 | - if ( ! empty( $qv['include'] ) ) { |
|
299 | - $include = implode( ',', wp_parse_id_list( $qv['include'] ) ); |
|
300 | - $this->query_where .= " AND $table.`id` IN ($include)"; |
|
301 | - } elseif ( ! empty( $qv['exclude'] ) ) { |
|
302 | - $exclude = implode( ',', wp_parse_id_list( $qv['exclude'] ) ); |
|
303 | - $this->query_where .= " AND $table.`id` NOT IN ($exclude)"; |
|
304 | - } |
|
305 | - |
|
306 | - // Date queries are allowed for the subscription creation date. |
|
307 | - if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) { |
|
308 | - $date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" ); |
|
309 | - $this->query_where .= $date_created_query->get_sql(); |
|
310 | - } |
|
311 | - |
|
312 | - // Date queries are also allowed for the subscription expiration date. |
|
313 | - if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) { |
|
314 | - $date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" ); |
|
315 | - $this->query_where .= $date_expires_query->get_sql(); |
|
316 | - } |
|
317 | - |
|
318 | - } |
|
319 | - |
|
320 | - /** |
|
321 | - * Prepares the query order. |
|
322 | - * |
|
323 | - * @since 1.0.19 |
|
324 | - * |
|
325 | - * @param array $qv Query vars. |
|
326 | - * @param string $table Table name. |
|
327 | - */ |
|
328 | - protected function prepare_query_order( &$qv, $table ) { |
|
329 | - |
|
330 | - // sorting. |
|
331 | - $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : ''; |
|
332 | - $order = $this->parse_order( $qv['order'] ); |
|
333 | - |
|
334 | - // Default order is by 'id' (latest subscriptions). |
|
335 | - if ( empty( $qv['orderby'] ) ) { |
|
336 | - $qv['orderby'] = array( 'id' ); |
|
337 | - } |
|
338 | - |
|
339 | - // 'orderby' values may be an array, comma- or space-separated list. |
|
340 | - $ordersby = array_filter( wpinv_parse_list( $qv['orderby'] ) ); |
|
341 | - |
|
342 | - $orderby_array = array(); |
|
343 | - foreach ( $ordersby as $_key => $_value ) { |
|
344 | - |
|
345 | - if ( is_int( $_key ) ) { |
|
346 | - // Integer key means this is a flat array of 'orderby' fields. |
|
347 | - $_orderby = $_value; |
|
348 | - $_order = $order; |
|
349 | - } else { |
|
350 | - // Non-integer key means that the key is the field and the value is ASC/DESC. |
|
351 | - $_orderby = $_key; |
|
352 | - $_order = $_value; |
|
353 | - } |
|
354 | - |
|
355 | - $parsed = $this->parse_orderby( $_orderby, $table ); |
|
356 | - |
|
357 | - if ( $parsed ) { |
|
358 | - $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order ); |
|
359 | - } |
|
19 | + /** |
|
20 | + * Query vars, after parsing |
|
21 | + * |
|
22 | + * @since 1.0.19 |
|
23 | + * @var array |
|
24 | + */ |
|
25 | + public $query_vars = array(); |
|
26 | + |
|
27 | + /** |
|
28 | + * List of found subscriptions. |
|
29 | + * |
|
30 | + * @since 1.0.19 |
|
31 | + * @var array |
|
32 | + */ |
|
33 | + private $results; |
|
34 | + |
|
35 | + /** |
|
36 | + * Total number of found subscriptions for the current query |
|
37 | + * |
|
38 | + * @since 1.0.19 |
|
39 | + * @var int |
|
40 | + */ |
|
41 | + private $total_subscriptions = 0; |
|
42 | + |
|
43 | + /** |
|
44 | + * The SQL query used to fetch matching subscriptions. |
|
45 | + * |
|
46 | + * @since 1.0.19 |
|
47 | + * @var string |
|
48 | + */ |
|
49 | + public $request; |
|
50 | + |
|
51 | + // SQL clauses |
|
52 | + |
|
53 | + /** |
|
54 | + * Contains the 'FIELDS' sql clause |
|
55 | + * |
|
56 | + * @since 1.0.19 |
|
57 | + * @var string |
|
58 | + */ |
|
59 | + public $query_fields; |
|
60 | + |
|
61 | + /** |
|
62 | + * Contains the 'FROM' sql clause |
|
63 | + * |
|
64 | + * @since 1.0.19 |
|
65 | + * @var string |
|
66 | + */ |
|
67 | + public $query_from; |
|
68 | + |
|
69 | + /** |
|
70 | + * Contains the 'WHERE' sql clause |
|
71 | + * |
|
72 | + * @since 1.0.19 |
|
73 | + * @var string |
|
74 | + */ |
|
75 | + public $query_where; |
|
76 | + |
|
77 | + /** |
|
78 | + * Contains the 'ORDER BY' sql clause |
|
79 | + * |
|
80 | + * @since 1.0.19 |
|
81 | + * @var string |
|
82 | + */ |
|
83 | + public $query_orderby; |
|
84 | + |
|
85 | + /** |
|
86 | + * Contains the 'LIMIT' sql clause |
|
87 | + * |
|
88 | + * @since 1.0.19 |
|
89 | + * @var string |
|
90 | + */ |
|
91 | + public $query_limit; |
|
92 | + |
|
93 | + /** |
|
94 | + * Class constructor. |
|
95 | + * |
|
96 | + * @since 1.0.19 |
|
97 | + * |
|
98 | + * @param null|string|array $query Optional. The query variables. |
|
99 | + */ |
|
100 | + public function __construct( $query = null ) { |
|
101 | + if ( ! is_null( $query ) ) { |
|
102 | + $this->prepare_query( $query ); |
|
103 | + $this->query(); |
|
104 | + } |
|
105 | + } |
|
106 | + |
|
107 | + /** |
|
108 | + * Fills in missing query variables with default values. |
|
109 | + * |
|
110 | + * @since 1.0.19 |
|
111 | + * |
|
112 | + * @param string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`. |
|
113 | + * @return array Complete query variables with undefined ones filled in with defaults. |
|
114 | + */ |
|
115 | + public static function fill_query_vars( $args ) { |
|
116 | + $defaults = array( |
|
117 | + 'status' => 'all', |
|
118 | + 'customer_in' => array(), |
|
119 | + 'customer_not_in' => array(), |
|
120 | + 'product_in' => array(), |
|
121 | + 'product_not_in' => array(), |
|
122 | + 'include' => array(), |
|
123 | + 'exclude' => array(), |
|
124 | + 'orderby' => 'id', |
|
125 | + 'order' => 'DESC', |
|
126 | + 'offset' => '', |
|
127 | + 'number' => 10, |
|
128 | + 'paged' => 1, |
|
129 | + 'count_total' => true, |
|
130 | + 'fields' => 'all', |
|
131 | + ); |
|
132 | + |
|
133 | + return wp_parse_args( $args, $defaults ); |
|
134 | + } |
|
135 | + |
|
136 | + /** |
|
137 | + * Prepare the query variables. |
|
138 | + * |
|
139 | + * @since 1.0.19 |
|
140 | + * |
|
141 | + * @global wpdb $wpdb WordPress database abstraction object. |
|
142 | + * |
|
143 | + * @param string|array $query { |
|
144 | + * Optional. Array or string of Query parameters. |
|
145 | + * |
|
146 | + * @type string|array $status The subscription status to filter by. Can either be a single status or an array of statuses. |
|
147 | + * Default is all. |
|
148 | + * @type int[] $customer_in An array of customer ids to filter by. |
|
149 | + * @type int[] $customer_not_in An array of customer ids whose subscriptions should be excluded. |
|
150 | + * @type int[] $invoice_in An array of invoice ids to filter by. |
|
151 | + * @type int[] $invoice_not_in An array of invoice ids whose subscriptions should be excluded. |
|
152 | + * @type int[] $product_in An array of product ids to filter by. |
|
153 | + * @type int[] $product_not_in An array of product ids whose subscriptions should be excluded. |
|
154 | + * @type array $date_created_query A WP_Date_Query compatible array use to filter subscriptions by their date of creation. |
|
155 | + * @type array $date_expires_query A WP_Date_Query compatible array use to filter subscriptions by their expiration date. |
|
156 | + * @type array $include An array of subscription IDs to include. Default empty array. |
|
157 | + * @type array $exclude An array of subscription IDs to exclude. Default empty array. |
|
158 | + * @type string|array $orderby Field(s) to sort the retrieved subscription by. May be a single value, |
|
159 | + * an array of values, or a multi-dimensional array with fields as |
|
160 | + * keys and orders ('ASC' or 'DESC') as values. Accepted values are |
|
161 | + * 'id', 'customer_id', 'frequency', 'period', 'initial_amount, |
|
162 | + * 'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration' |
|
163 | + * 'transaction_id', 'product_id', 'trial_period', 'include', 'status', 'profile_id'. Default array( 'id' ). |
|
164 | + * @type string $order Designates ascending or descending order of subscriptions. Order values |
|
165 | + * passed as part of an `$orderby` array take precedence over this |
|
166 | + * parameter. Accepts 'ASC', 'DESC'. Default 'DESC'. |
|
167 | + * @type int $offset Number of subscriptions to offset in retrieved results. Can be used in |
|
168 | + * conjunction with pagination. Default 0. |
|
169 | + * @type int $number Number of subscriptions to limit the query for. Can be used in |
|
170 | + * conjunction with pagination. Value -1 (all) is supported, but |
|
171 | + * should be used with caution on larger sites. |
|
172 | + * Default 10. |
|
173 | + * @type int $paged When used with number, defines the page of results to return. |
|
174 | + * Default 1. |
|
175 | + * @type bool $count_total Whether to count the total number of subscriptions found. If pagination |
|
176 | + * is not needed, setting this to false can improve performance. |
|
177 | + * Default true. |
|
178 | + * @type string|array $fields Which fields to return. Single or all fields (string), or array |
|
179 | + * of fields. Accepts 'id', 'customer_id', 'frequency', 'period', 'initial_amount, |
|
180 | + * 'recurring_amount', 'bill_times', 'parent_payment_id', 'created', 'expiration' |
|
181 | + * 'transaction_id', 'product_id', 'trial_period', 'status', 'profile_id'. |
|
182 | + * Use 'all' for all fields. Default 'all'. |
|
183 | + * } |
|
184 | + */ |
|
185 | + public function prepare_query( $query = array() ) { |
|
186 | + global $wpdb; |
|
187 | + |
|
188 | + if ( empty( $this->query_vars ) || ! empty( $query ) ) { |
|
189 | + $this->query_limit = null; |
|
190 | + $this->query_vars = $this->fill_query_vars( $query ); |
|
191 | + } |
|
192 | + |
|
193 | + if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) { |
|
194 | + $this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] ); |
|
195 | + } |
|
196 | + |
|
197 | + do_action( 'getpaid_pre_get_subscriptions', array( &$this ) ); |
|
198 | + |
|
199 | + // Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'. |
|
200 | + $qv =& $this->query_vars; |
|
201 | + $qv = $this->fill_query_vars( $qv ); |
|
202 | + $table = $wpdb->prefix . 'wpinv_subscriptions'; |
|
203 | + $this->query_from = "FROM $table"; |
|
204 | + |
|
205 | + // Prepare query fields. |
|
206 | + $this->prepare_query_fields( $qv, $table ); |
|
207 | + |
|
208 | + // Prepare query where. |
|
209 | + $this->prepare_query_where( $qv, $table ); |
|
210 | + |
|
211 | + // Prepare query order. |
|
212 | + $this->prepare_query_order( $qv, $table ); |
|
213 | + |
|
214 | + // limit |
|
215 | + if ( isset( $qv['number'] ) && $qv['number'] > 0 ) { |
|
216 | + if ( $qv['offset'] ) { |
|
217 | + $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] ); |
|
218 | + } else { |
|
219 | + $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] ); |
|
220 | + } |
|
221 | + } |
|
222 | + |
|
223 | + do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) ); |
|
224 | + } |
|
225 | + |
|
226 | + /** |
|
227 | + * Prepares the query fields. |
|
228 | + * |
|
229 | + * @since 1.0.19 |
|
230 | + * |
|
231 | + * @param array $qv Query vars. |
|
232 | + * @param string $table Table name. |
|
233 | + */ |
|
234 | + protected function prepare_query_fields( &$qv, $table ) { |
|
235 | + |
|
236 | + if ( is_array( $qv['fields'] ) ) { |
|
237 | + $qv['fields'] = array_unique( $qv['fields'] ); |
|
238 | + |
|
239 | + $query_fields = array(); |
|
240 | + foreach ( $qv['fields'] as $field ) { |
|
241 | + $field = sanitize_key( $field ); |
|
242 | + $query_fields[] = "$table.`$field`"; |
|
243 | + } |
|
244 | + $this->query_fields = implode( ',', $query_fields ); |
|
245 | + } else { |
|
246 | + $this->query_fields = "$table.*"; |
|
247 | + } |
|
248 | + |
|
249 | + if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { |
|
250 | + $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields; |
|
251 | + } |
|
252 | + |
|
253 | + } |
|
254 | + |
|
255 | + /** |
|
256 | + * Prepares the query where. |
|
257 | + * |
|
258 | + * @since 1.0.19 |
|
259 | + * |
|
260 | + * @param array $qv Query vars. |
|
261 | + * @param string $table Table name. |
|
262 | + */ |
|
263 | + protected function prepare_query_where( &$qv, $table ) { |
|
264 | + global $wpdb; |
|
265 | + $this->query_where = 'WHERE 1=1'; |
|
266 | + |
|
267 | + // Status. |
|
268 | + if ( 'all' !== $qv['status'] ) { |
|
269 | + $statuses = wpinv_clean( wpinv_parse_list( $qv['status'] ) ); |
|
270 | + $prepared_statuses = join( ',', array_fill( 0, count( $statuses ), '%s' ) ); |
|
271 | + $this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses ); |
|
272 | + } |
|
273 | + |
|
274 | + if ( ! empty( $qv['customer_in'] ) ) { |
|
275 | + $customer_in = implode( ',', wp_parse_id_list( $qv['customer_in'] ) ); |
|
276 | + $this->query_where .= " AND $table.`customer_id` IN ($customer_in)"; |
|
277 | + } elseif ( ! empty( $qv['customer_not_in'] ) ) { |
|
278 | + $customer_not_in = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) ); |
|
279 | + $this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)"; |
|
280 | + } |
|
281 | + |
|
282 | + if ( ! empty( $qv['product_in'] ) ) { |
|
283 | + $product_in = implode( ',', wp_parse_id_list( $qv['product_in'] ) ); |
|
284 | + $this->query_where .= " AND $table.`product_id` IN ($product_in)"; |
|
285 | + } elseif ( ! empty( $qv['product_not_in'] ) ) { |
|
286 | + $product_not_in = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) ); |
|
287 | + $this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)"; |
|
288 | + } |
|
289 | + |
|
290 | + if ( ! empty( $qv['invoice_in'] ) ) { |
|
291 | + $invoice_in = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) ); |
|
292 | + $this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)"; |
|
293 | + } elseif ( ! empty( $qv['invoice_not_in'] ) ) { |
|
294 | + $invoice_not_in = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) ); |
|
295 | + $this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)"; |
|
296 | + } |
|
297 | + |
|
298 | + if ( ! empty( $qv['include'] ) ) { |
|
299 | + $include = implode( ',', wp_parse_id_list( $qv['include'] ) ); |
|
300 | + $this->query_where .= " AND $table.`id` IN ($include)"; |
|
301 | + } elseif ( ! empty( $qv['exclude'] ) ) { |
|
302 | + $exclude = implode( ',', wp_parse_id_list( $qv['exclude'] ) ); |
|
303 | + $this->query_where .= " AND $table.`id` NOT IN ($exclude)"; |
|
304 | + } |
|
305 | + |
|
306 | + // Date queries are allowed for the subscription creation date. |
|
307 | + if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) { |
|
308 | + $date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" ); |
|
309 | + $this->query_where .= $date_created_query->get_sql(); |
|
310 | + } |
|
311 | + |
|
312 | + // Date queries are also allowed for the subscription expiration date. |
|
313 | + if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) { |
|
314 | + $date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" ); |
|
315 | + $this->query_where .= $date_expires_query->get_sql(); |
|
316 | + } |
|
317 | + |
|
318 | + } |
|
319 | + |
|
320 | + /** |
|
321 | + * Prepares the query order. |
|
322 | + * |
|
323 | + * @since 1.0.19 |
|
324 | + * |
|
325 | + * @param array $qv Query vars. |
|
326 | + * @param string $table Table name. |
|
327 | + */ |
|
328 | + protected function prepare_query_order( &$qv, $table ) { |
|
329 | + |
|
330 | + // sorting. |
|
331 | + $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : ''; |
|
332 | + $order = $this->parse_order( $qv['order'] ); |
|
333 | + |
|
334 | + // Default order is by 'id' (latest subscriptions). |
|
335 | + if ( empty( $qv['orderby'] ) ) { |
|
336 | + $qv['orderby'] = array( 'id' ); |
|
337 | + } |
|
338 | + |
|
339 | + // 'orderby' values may be an array, comma- or space-separated list. |
|
340 | + $ordersby = array_filter( wpinv_parse_list( $qv['orderby'] ) ); |
|
341 | + |
|
342 | + $orderby_array = array(); |
|
343 | + foreach ( $ordersby as $_key => $_value ) { |
|
344 | + |
|
345 | + if ( is_int( $_key ) ) { |
|
346 | + // Integer key means this is a flat array of 'orderby' fields. |
|
347 | + $_orderby = $_value; |
|
348 | + $_order = $order; |
|
349 | + } else { |
|
350 | + // Non-integer key means that the key is the field and the value is ASC/DESC. |
|
351 | + $_orderby = $_key; |
|
352 | + $_order = $_value; |
|
353 | + } |
|
354 | + |
|
355 | + $parsed = $this->parse_orderby( $_orderby, $table ); |
|
356 | + |
|
357 | + if ( $parsed ) { |
|
358 | + $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order ); |
|
359 | + } |
|
360 | 360 | } |
361 | 361 | |
362 | - // If no valid clauses were found, order by id. |
|
363 | - if ( empty( $orderby_array ) ) { |
|
364 | - $orderby_array[] = "id $order"; |
|
365 | - } |
|
366 | - |
|
367 | - $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array ); |
|
368 | - |
|
369 | - } |
|
370 | - |
|
371 | - /** |
|
372 | - * Execute the query, with the current variables. |
|
373 | - * |
|
374 | - * @since 1.0.19 |
|
375 | - * |
|
376 | - * @global wpdb $wpdb WordPress database abstraction object. |
|
377 | - */ |
|
378 | - public function query() { |
|
379 | - global $wpdb; |
|
380 | - |
|
381 | - $qv =& $this->query_vars; |
|
382 | - |
|
383 | - // Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the |
|
384 | - // total_subscriptions property. |
|
385 | - $this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) ); |
|
386 | - |
|
387 | - if ( null === $this->results ) { |
|
388 | - $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit"; |
|
389 | - |
|
390 | - if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) { |
|
391 | - $this->results = $wpdb->get_results( $this->request ); |
|
392 | - } else { |
|
393 | - $this->results = $wpdb->get_col( $this->request ); |
|
394 | - } |
|
395 | - |
|
396 | - if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { |
|
397 | - $found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this ); |
|
398 | - $this->total_subscriptions = (int) $wpdb->get_var( $found_subscriptions_query ); |
|
399 | - } |
|
400 | - } |
|
401 | - |
|
402 | - if ( 'all' == $qv['fields'] ) { |
|
403 | - foreach ( $this->results as $key => $subscription ) { |
|
404 | - $this->set_cache( $subscription->id, $subscription, 'getpaid_subscriptions' ); |
|
405 | - $this->set_cache( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
406 | - $this->set_cache( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
407 | - $this->set_cache( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
408 | - $this->results[ $key ] = new WPInv_Subscription( $subscription ); |
|
409 | - } |
|
410 | - } |
|
411 | - |
|
412 | - } |
|
413 | - |
|
414 | - /** |
|
415 | - * Set cache |
|
416 | - * |
|
417 | - * @param string $id |
|
418 | - * @param mixed $data |
|
419 | - * @param string $group |
|
420 | - * @param integer $expire |
|
421 | - * @return boolean |
|
422 | - */ |
|
423 | - public function set_cache( $key, $data, $group = '', $expire = 0 ) { |
|
424 | - |
|
425 | - if ( empty( $key ) ) { |
|
426 | - return false; |
|
427 | - } |
|
428 | - |
|
429 | - wp_cache_set( $key, $data, $group, $expire ); |
|
430 | - } |
|
431 | - |
|
432 | - /** |
|
433 | - * Retrieve query variable. |
|
434 | - * |
|
435 | - * @since 1.0.19 |
|
436 | - * |
|
437 | - * @param string $query_var Query variable key. |
|
438 | - * @return mixed |
|
439 | - */ |
|
440 | - public function get( $query_var ) { |
|
441 | - if ( isset( $this->query_vars[ $query_var ] ) ) { |
|
442 | - return $this->query_vars[ $query_var ]; |
|
443 | - } |
|
444 | - |
|
445 | - return null; |
|
446 | - } |
|
447 | - |
|
448 | - /** |
|
449 | - * Set query variable. |
|
450 | - * |
|
451 | - * @since 1.0.19 |
|
452 | - * |
|
453 | - * @param string $query_var Query variable key. |
|
454 | - * @param mixed $value Query variable value. |
|
455 | - */ |
|
456 | - public function set( $query_var, $value ) { |
|
457 | - $this->query_vars[ $query_var ] = $value; |
|
458 | - } |
|
459 | - |
|
460 | - /** |
|
461 | - * Return the list of subscriptions. |
|
462 | - * |
|
463 | - * @since 1.0.19 |
|
464 | - * |
|
465 | - * @return WPInv_Subscription[]|array Found subscriptions. |
|
466 | - */ |
|
467 | - public function get_results() { |
|
468 | - return $this->results; |
|
469 | - } |
|
470 | - |
|
471 | - /** |
|
472 | - * Return the total number of subscriptions for the current query. |
|
473 | - * |
|
474 | - * @since 1.0.19 |
|
475 | - * |
|
476 | - * @return int Number of total subscriptions. |
|
477 | - */ |
|
478 | - public function get_total() { |
|
479 | - return $this->total_subscriptions; |
|
480 | - } |
|
481 | - |
|
482 | - /** |
|
483 | - * Parse and sanitize 'orderby' keys passed to the subscriptions query. |
|
484 | - * |
|
485 | - * @since 1.0.19 |
|
486 | - * |
|
487 | - * @param string $orderby Alias for the field to order by. |
|
488 | - * @param string $table The current table. |
|
489 | - * @return string Value to use in the ORDER clause, if `$orderby` is valid. |
|
490 | - */ |
|
491 | - protected function parse_orderby( $orderby, $table ) { |
|
492 | - |
|
493 | - $_orderby = ''; |
|
494 | - if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) { |
|
495 | - $_orderby = "$table.`$orderby`"; |
|
496 | - } elseif ( 'id' === strtolower( $orderby ) ) { |
|
497 | - $_orderby = "$table.id"; |
|
498 | - } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) { |
|
499 | - $include = wp_parse_id_list( $this->query_vars['include'] ); |
|
500 | - $include_sql = implode( ',', $include ); |
|
501 | - $_orderby = "FIELD( $table.id, $include_sql )"; |
|
502 | - } |
|
503 | - |
|
504 | - return $_orderby; |
|
505 | - } |
|
506 | - |
|
507 | - /** |
|
508 | - * Parse an 'order' query variable and cast it to ASC or DESC as necessary. |
|
509 | - * |
|
510 | - * @since 1.0.19 |
|
511 | - * |
|
512 | - * @param string $order The 'order' query variable. |
|
513 | - * @return string The sanitized 'order' query variable. |
|
514 | - */ |
|
515 | - protected function parse_order( $order ) { |
|
516 | - if ( ! is_string( $order ) || empty( $order ) ) { |
|
517 | - return 'DESC'; |
|
518 | - } |
|
519 | - |
|
520 | - if ( 'ASC' === strtoupper( $order ) ) { |
|
521 | - return 'ASC'; |
|
522 | - } else { |
|
523 | - return 'DESC'; |
|
524 | - } |
|
525 | - } |
|
362 | + // If no valid clauses were found, order by id. |
|
363 | + if ( empty( $orderby_array ) ) { |
|
364 | + $orderby_array[] = "id $order"; |
|
365 | + } |
|
366 | + |
|
367 | + $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array ); |
|
368 | + |
|
369 | + } |
|
370 | + |
|
371 | + /** |
|
372 | + * Execute the query, with the current variables. |
|
373 | + * |
|
374 | + * @since 1.0.19 |
|
375 | + * |
|
376 | + * @global wpdb $wpdb WordPress database abstraction object. |
|
377 | + */ |
|
378 | + public function query() { |
|
379 | + global $wpdb; |
|
380 | + |
|
381 | + $qv =& $this->query_vars; |
|
382 | + |
|
383 | + // Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the |
|
384 | + // total_subscriptions property. |
|
385 | + $this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) ); |
|
386 | + |
|
387 | + if ( null === $this->results ) { |
|
388 | + $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit"; |
|
389 | + |
|
390 | + if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) { |
|
391 | + $this->results = $wpdb->get_results( $this->request ); |
|
392 | + } else { |
|
393 | + $this->results = $wpdb->get_col( $this->request ); |
|
394 | + } |
|
395 | + |
|
396 | + if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { |
|
397 | + $found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this ); |
|
398 | + $this->total_subscriptions = (int) $wpdb->get_var( $found_subscriptions_query ); |
|
399 | + } |
|
400 | + } |
|
401 | + |
|
402 | + if ( 'all' == $qv['fields'] ) { |
|
403 | + foreach ( $this->results as $key => $subscription ) { |
|
404 | + $this->set_cache( $subscription->id, $subscription, 'getpaid_subscriptions' ); |
|
405 | + $this->set_cache( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
406 | + $this->set_cache( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
407 | + $this->set_cache( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
408 | + $this->results[ $key ] = new WPInv_Subscription( $subscription ); |
|
409 | + } |
|
410 | + } |
|
411 | + |
|
412 | + } |
|
413 | + |
|
414 | + /** |
|
415 | + * Set cache |
|
416 | + * |
|
417 | + * @param string $id |
|
418 | + * @param mixed $data |
|
419 | + * @param string $group |
|
420 | + * @param integer $expire |
|
421 | + * @return boolean |
|
422 | + */ |
|
423 | + public function set_cache( $key, $data, $group = '', $expire = 0 ) { |
|
424 | + |
|
425 | + if ( empty( $key ) ) { |
|
426 | + return false; |
|
427 | + } |
|
428 | + |
|
429 | + wp_cache_set( $key, $data, $group, $expire ); |
|
430 | + } |
|
431 | + |
|
432 | + /** |
|
433 | + * Retrieve query variable. |
|
434 | + * |
|
435 | + * @since 1.0.19 |
|
436 | + * |
|
437 | + * @param string $query_var Query variable key. |
|
438 | + * @return mixed |
|
439 | + */ |
|
440 | + public function get( $query_var ) { |
|
441 | + if ( isset( $this->query_vars[ $query_var ] ) ) { |
|
442 | + return $this->query_vars[ $query_var ]; |
|
443 | + } |
|
444 | + |
|
445 | + return null; |
|
446 | + } |
|
447 | + |
|
448 | + /** |
|
449 | + * Set query variable. |
|
450 | + * |
|
451 | + * @since 1.0.19 |
|
452 | + * |
|
453 | + * @param string $query_var Query variable key. |
|
454 | + * @param mixed $value Query variable value. |
|
455 | + */ |
|
456 | + public function set( $query_var, $value ) { |
|
457 | + $this->query_vars[ $query_var ] = $value; |
|
458 | + } |
|
459 | + |
|
460 | + /** |
|
461 | + * Return the list of subscriptions. |
|
462 | + * |
|
463 | + * @since 1.0.19 |
|
464 | + * |
|
465 | + * @return WPInv_Subscription[]|array Found subscriptions. |
|
466 | + */ |
|
467 | + public function get_results() { |
|
468 | + return $this->results; |
|
469 | + } |
|
470 | + |
|
471 | + /** |
|
472 | + * Return the total number of subscriptions for the current query. |
|
473 | + * |
|
474 | + * @since 1.0.19 |
|
475 | + * |
|
476 | + * @return int Number of total subscriptions. |
|
477 | + */ |
|
478 | + public function get_total() { |
|
479 | + return $this->total_subscriptions; |
|
480 | + } |
|
481 | + |
|
482 | + /** |
|
483 | + * Parse and sanitize 'orderby' keys passed to the subscriptions query. |
|
484 | + * |
|
485 | + * @since 1.0.19 |
|
486 | + * |
|
487 | + * @param string $orderby Alias for the field to order by. |
|
488 | + * @param string $table The current table. |
|
489 | + * @return string Value to use in the ORDER clause, if `$orderby` is valid. |
|
490 | + */ |
|
491 | + protected function parse_orderby( $orderby, $table ) { |
|
492 | + |
|
493 | + $_orderby = ''; |
|
494 | + if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) { |
|
495 | + $_orderby = "$table.`$orderby`"; |
|
496 | + } elseif ( 'id' === strtolower( $orderby ) ) { |
|
497 | + $_orderby = "$table.id"; |
|
498 | + } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) { |
|
499 | + $include = wp_parse_id_list( $this->query_vars['include'] ); |
|
500 | + $include_sql = implode( ',', $include ); |
|
501 | + $_orderby = "FIELD( $table.id, $include_sql )"; |
|
502 | + } |
|
503 | + |
|
504 | + return $_orderby; |
|
505 | + } |
|
506 | + |
|
507 | + /** |
|
508 | + * Parse an 'order' query variable and cast it to ASC or DESC as necessary. |
|
509 | + * |
|
510 | + * @since 1.0.19 |
|
511 | + * |
|
512 | + * @param string $order The 'order' query variable. |
|
513 | + * @return string The sanitized 'order' query variable. |
|
514 | + */ |
|
515 | + protected function parse_order( $order ) { |
|
516 | + if ( ! is_string( $order ) || empty( $order ) ) { |
|
517 | + return 'DESC'; |
|
518 | + } |
|
519 | + |
|
520 | + if ( 'ASC' === strtoupper( $order ) ) { |
|
521 | + return 'ASC'; |
|
522 | + } else { |
|
523 | + return 'DESC'; |
|
524 | + } |
|
525 | + } |
|
526 | 526 | |
527 | 527 | } |
@@ -97,9 +97,9 @@ discard block |
||
97 | 97 | * |
98 | 98 | * @param null|string|array $query Optional. The query variables. |
99 | 99 | */ |
100 | - public function __construct( $query = null ) { |
|
101 | - if ( ! is_null( $query ) ) { |
|
102 | - $this->prepare_query( $query ); |
|
100 | + public function __construct($query = null) { |
|
101 | + if (!is_null($query)) { |
|
102 | + $this->prepare_query($query); |
|
103 | 103 | $this->query(); |
104 | 104 | } |
105 | 105 | } |
@@ -112,7 +112,7 @@ discard block |
||
112 | 112 | * @param string|array $args Query vars, as passed to `GetPaid_Subscriptions_Query`. |
113 | 113 | * @return array Complete query variables with undefined ones filled in with defaults. |
114 | 114 | */ |
115 | - public static function fill_query_vars( $args ) { |
|
115 | + public static function fill_query_vars($args) { |
|
116 | 116 | $defaults = array( |
117 | 117 | 'status' => 'all', |
118 | 118 | 'customer_in' => array(), |
@@ -130,7 +130,7 @@ discard block |
||
130 | 130 | 'fields' => 'all', |
131 | 131 | ); |
132 | 132 | |
133 | - return wp_parse_args( $args, $defaults ); |
|
133 | + return wp_parse_args($args, $defaults); |
|
134 | 134 | } |
135 | 135 | |
136 | 136 | /** |
@@ -182,45 +182,45 @@ discard block |
||
182 | 182 | * Use 'all' for all fields. Default 'all'. |
183 | 183 | * } |
184 | 184 | */ |
185 | - public function prepare_query( $query = array() ) { |
|
185 | + public function prepare_query($query = array()) { |
|
186 | 186 | global $wpdb; |
187 | 187 | |
188 | - if ( empty( $this->query_vars ) || ! empty( $query ) ) { |
|
188 | + if (empty($this->query_vars) || !empty($query)) { |
|
189 | 189 | $this->query_limit = null; |
190 | - $this->query_vars = $this->fill_query_vars( $query ); |
|
190 | + $this->query_vars = $this->fill_query_vars($query); |
|
191 | 191 | } |
192 | 192 | |
193 | - if ( ! empty( $this->query_vars['fields'] ) && 'all' !== $this->query_vars['fields'] ) { |
|
194 | - $this->query_vars['fields'] = wpinv_parse_list( $this->query_vars['fields'] ); |
|
193 | + if (!empty($this->query_vars['fields']) && 'all' !== $this->query_vars['fields']) { |
|
194 | + $this->query_vars['fields'] = wpinv_parse_list($this->query_vars['fields']); |
|
195 | 195 | } |
196 | 196 | |
197 | - do_action( 'getpaid_pre_get_subscriptions', array( &$this ) ); |
|
197 | + do_action('getpaid_pre_get_subscriptions', array(&$this)); |
|
198 | 198 | |
199 | 199 | // Ensure that query vars are filled after 'getpaid_pre_get_subscriptions'. |
200 | - $qv =& $this->query_vars; |
|
201 | - $qv = $this->fill_query_vars( $qv ); |
|
200 | + $qv = & $this->query_vars; |
|
201 | + $qv = $this->fill_query_vars($qv); |
|
202 | 202 | $table = $wpdb->prefix . 'wpinv_subscriptions'; |
203 | 203 | $this->query_from = "FROM $table"; |
204 | 204 | |
205 | 205 | // Prepare query fields. |
206 | - $this->prepare_query_fields( $qv, $table ); |
|
206 | + $this->prepare_query_fields($qv, $table); |
|
207 | 207 | |
208 | 208 | // Prepare query where. |
209 | - $this->prepare_query_where( $qv, $table ); |
|
209 | + $this->prepare_query_where($qv, $table); |
|
210 | 210 | |
211 | 211 | // Prepare query order. |
212 | - $this->prepare_query_order( $qv, $table ); |
|
212 | + $this->prepare_query_order($qv, $table); |
|
213 | 213 | |
214 | 214 | // limit |
215 | - if ( isset( $qv['number'] ) && $qv['number'] > 0 ) { |
|
216 | - if ( $qv['offset'] ) { |
|
217 | - $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['offset'], $qv['number'] ); |
|
215 | + if (isset($qv['number']) && $qv['number'] > 0) { |
|
216 | + if ($qv['offset']) { |
|
217 | + $this->query_limit = $wpdb->prepare('LIMIT %d, %d', $qv['offset'], $qv['number']); |
|
218 | 218 | } else { |
219 | - $this->query_limit = $wpdb->prepare( 'LIMIT %d, %d', $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] ); |
|
219 | + $this->query_limit = $wpdb->prepare('LIMIT %d, %d', $qv['number'] * ($qv['paged'] - 1), $qv['number']); |
|
220 | 220 | } |
221 | 221 | } |
222 | 222 | |
223 | - do_action_ref_array( 'getpaid_after_subscriptions_query', array( &$this ) ); |
|
223 | + do_action_ref_array('getpaid_after_subscriptions_query', array(&$this)); |
|
224 | 224 | } |
225 | 225 | |
226 | 226 | /** |
@@ -231,22 +231,22 @@ discard block |
||
231 | 231 | * @param array $qv Query vars. |
232 | 232 | * @param string $table Table name. |
233 | 233 | */ |
234 | - protected function prepare_query_fields( &$qv, $table ) { |
|
234 | + protected function prepare_query_fields(&$qv, $table) { |
|
235 | 235 | |
236 | - if ( is_array( $qv['fields'] ) ) { |
|
237 | - $qv['fields'] = array_unique( $qv['fields'] ); |
|
236 | + if (is_array($qv['fields'])) { |
|
237 | + $qv['fields'] = array_unique($qv['fields']); |
|
238 | 238 | |
239 | 239 | $query_fields = array(); |
240 | - foreach ( $qv['fields'] as $field ) { |
|
241 | - $field = sanitize_key( $field ); |
|
240 | + foreach ($qv['fields'] as $field) { |
|
241 | + $field = sanitize_key($field); |
|
242 | 242 | $query_fields[] = "$table.`$field`"; |
243 | 243 | } |
244 | - $this->query_fields = implode( ',', $query_fields ); |
|
244 | + $this->query_fields = implode(',', $query_fields); |
|
245 | 245 | } else { |
246 | 246 | $this->query_fields = "$table.*"; |
247 | 247 | } |
248 | 248 | |
249 | - if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { |
|
249 | + if (isset($qv['count_total']) && $qv['count_total']) { |
|
250 | 250 | $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields; |
251 | 251 | } |
252 | 252 | |
@@ -260,58 +260,58 @@ discard block |
||
260 | 260 | * @param array $qv Query vars. |
261 | 261 | * @param string $table Table name. |
262 | 262 | */ |
263 | - protected function prepare_query_where( &$qv, $table ) { |
|
263 | + protected function prepare_query_where(&$qv, $table) { |
|
264 | 264 | global $wpdb; |
265 | 265 | $this->query_where = 'WHERE 1=1'; |
266 | 266 | |
267 | 267 | // Status. |
268 | - if ( 'all' !== $qv['status'] ) { |
|
269 | - $statuses = wpinv_clean( wpinv_parse_list( $qv['status'] ) ); |
|
270 | - $prepared_statuses = join( ',', array_fill( 0, count( $statuses ), '%s' ) ); |
|
271 | - $this->query_where .= $wpdb->prepare( " AND $table.`status` IN ( $prepared_statuses )", $statuses ); |
|
268 | + if ('all' !== $qv['status']) { |
|
269 | + $statuses = wpinv_clean(wpinv_parse_list($qv['status'])); |
|
270 | + $prepared_statuses = join(',', array_fill(0, count($statuses), '%s')); |
|
271 | + $this->query_where .= $wpdb->prepare(" AND $table.`status` IN ( $prepared_statuses )", $statuses); |
|
272 | 272 | } |
273 | 273 | |
274 | - if ( ! empty( $qv['customer_in'] ) ) { |
|
275 | - $customer_in = implode( ',', wp_parse_id_list( $qv['customer_in'] ) ); |
|
274 | + if (!empty($qv['customer_in'])) { |
|
275 | + $customer_in = implode(',', wp_parse_id_list($qv['customer_in'])); |
|
276 | 276 | $this->query_where .= " AND $table.`customer_id` IN ($customer_in)"; |
277 | - } elseif ( ! empty( $qv['customer_not_in'] ) ) { |
|
278 | - $customer_not_in = implode( ',', wp_parse_id_list( $qv['customer_not_in'] ) ); |
|
277 | + } elseif (!empty($qv['customer_not_in'])) { |
|
278 | + $customer_not_in = implode(',', wp_parse_id_list($qv['customer_not_in'])); |
|
279 | 279 | $this->query_where .= " AND $table.`customer_id` NOT IN ($customer_not_in)"; |
280 | 280 | } |
281 | 281 | |
282 | - if ( ! empty( $qv['product_in'] ) ) { |
|
283 | - $product_in = implode( ',', wp_parse_id_list( $qv['product_in'] ) ); |
|
282 | + if (!empty($qv['product_in'])) { |
|
283 | + $product_in = implode(',', wp_parse_id_list($qv['product_in'])); |
|
284 | 284 | $this->query_where .= " AND $table.`product_id` IN ($product_in)"; |
285 | - } elseif ( ! empty( $qv['product_not_in'] ) ) { |
|
286 | - $product_not_in = implode( ',', wp_parse_id_list( $qv['product_not_in'] ) ); |
|
285 | + } elseif (!empty($qv['product_not_in'])) { |
|
286 | + $product_not_in = implode(',', wp_parse_id_list($qv['product_not_in'])); |
|
287 | 287 | $this->query_where .= " AND $table.`product_id` NOT IN ($product_not_in)"; |
288 | 288 | } |
289 | 289 | |
290 | - if ( ! empty( $qv['invoice_in'] ) ) { |
|
291 | - $invoice_in = implode( ',', wp_parse_id_list( $qv['invoice_in'] ) ); |
|
290 | + if (!empty($qv['invoice_in'])) { |
|
291 | + $invoice_in = implode(',', wp_parse_id_list($qv['invoice_in'])); |
|
292 | 292 | $this->query_where .= " AND $table.`parent_payment_id` IN ($invoice_in)"; |
293 | - } elseif ( ! empty( $qv['invoice_not_in'] ) ) { |
|
294 | - $invoice_not_in = implode( ',', wp_parse_id_list( $qv['invoice_not_in'] ) ); |
|
293 | + } elseif (!empty($qv['invoice_not_in'])) { |
|
294 | + $invoice_not_in = implode(',', wp_parse_id_list($qv['invoice_not_in'])); |
|
295 | 295 | $this->query_where .= " AND $table.`parent_payment_id` NOT IN ($invoice_not_in)"; |
296 | 296 | } |
297 | 297 | |
298 | - if ( ! empty( $qv['include'] ) ) { |
|
299 | - $include = implode( ',', wp_parse_id_list( $qv['include'] ) ); |
|
298 | + if (!empty($qv['include'])) { |
|
299 | + $include = implode(',', wp_parse_id_list($qv['include'])); |
|
300 | 300 | $this->query_where .= " AND $table.`id` IN ($include)"; |
301 | - } elseif ( ! empty( $qv['exclude'] ) ) { |
|
302 | - $exclude = implode( ',', wp_parse_id_list( $qv['exclude'] ) ); |
|
301 | + } elseif (!empty($qv['exclude'])) { |
|
302 | + $exclude = implode(',', wp_parse_id_list($qv['exclude'])); |
|
303 | 303 | $this->query_where .= " AND $table.`id` NOT IN ($exclude)"; |
304 | 304 | } |
305 | 305 | |
306 | 306 | // Date queries are allowed for the subscription creation date. |
307 | - if ( ! empty( $qv['date_created_query'] ) && is_array( $qv['date_created_query'] ) ) { |
|
308 | - $date_created_query = new WP_Date_Query( $qv['date_created_query'], "$table.created" ); |
|
307 | + if (!empty($qv['date_created_query']) && is_array($qv['date_created_query'])) { |
|
308 | + $date_created_query = new WP_Date_Query($qv['date_created_query'], "$table.created"); |
|
309 | 309 | $this->query_where .= $date_created_query->get_sql(); |
310 | 310 | } |
311 | 311 | |
312 | 312 | // Date queries are also allowed for the subscription expiration date. |
313 | - if ( ! empty( $qv['date_expires_query'] ) && is_array( $qv['date_expires_query'] ) ) { |
|
314 | - $date_expires_query = new WP_Date_Query( $qv['date_expires_query'], "$table.expiration" ); |
|
313 | + if (!empty($qv['date_expires_query']) && is_array($qv['date_expires_query'])) { |
|
314 | + $date_expires_query = new WP_Date_Query($qv['date_expires_query'], "$table.expiration"); |
|
315 | 315 | $this->query_where .= $date_expires_query->get_sql(); |
316 | 316 | } |
317 | 317 | |
@@ -325,24 +325,24 @@ discard block |
||
325 | 325 | * @param array $qv Query vars. |
326 | 326 | * @param string $table Table name. |
327 | 327 | */ |
328 | - protected function prepare_query_order( &$qv, $table ) { |
|
328 | + protected function prepare_query_order(&$qv, $table) { |
|
329 | 329 | |
330 | 330 | // sorting. |
331 | - $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : ''; |
|
332 | - $order = $this->parse_order( $qv['order'] ); |
|
331 | + $qv['order'] = isset($qv['order']) ? strtoupper($qv['order']) : ''; |
|
332 | + $order = $this->parse_order($qv['order']); |
|
333 | 333 | |
334 | 334 | // Default order is by 'id' (latest subscriptions). |
335 | - if ( empty( $qv['orderby'] ) ) { |
|
336 | - $qv['orderby'] = array( 'id' ); |
|
335 | + if (empty($qv['orderby'])) { |
|
336 | + $qv['orderby'] = array('id'); |
|
337 | 337 | } |
338 | 338 | |
339 | 339 | // 'orderby' values may be an array, comma- or space-separated list. |
340 | - $ordersby = array_filter( wpinv_parse_list( $qv['orderby'] ) ); |
|
340 | + $ordersby = array_filter(wpinv_parse_list($qv['orderby'])); |
|
341 | 341 | |
342 | 342 | $orderby_array = array(); |
343 | - foreach ( $ordersby as $_key => $_value ) { |
|
343 | + foreach ($ordersby as $_key => $_value) { |
|
344 | 344 | |
345 | - if ( is_int( $_key ) ) { |
|
345 | + if (is_int($_key)) { |
|
346 | 346 | // Integer key means this is a flat array of 'orderby' fields. |
347 | 347 | $_orderby = $_value; |
348 | 348 | $_order = $order; |
@@ -352,19 +352,19 @@ discard block |
||
352 | 352 | $_order = $_value; |
353 | 353 | } |
354 | 354 | |
355 | - $parsed = $this->parse_orderby( $_orderby, $table ); |
|
355 | + $parsed = $this->parse_orderby($_orderby, $table); |
|
356 | 356 | |
357 | - if ( $parsed ) { |
|
358 | - $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order ); |
|
357 | + if ($parsed) { |
|
358 | + $orderby_array[] = $parsed . ' ' . $this->parse_order($_order); |
|
359 | 359 | } |
360 | 360 | } |
361 | 361 | |
362 | 362 | // If no valid clauses were found, order by id. |
363 | - if ( empty( $orderby_array ) ) { |
|
363 | + if (empty($orderby_array)) { |
|
364 | 364 | $orderby_array[] = "id $order"; |
365 | 365 | } |
366 | 366 | |
367 | - $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array ); |
|
367 | + $this->query_orderby = 'ORDER BY ' . implode(', ', $orderby_array); |
|
368 | 368 | |
369 | 369 | } |
370 | 370 | |
@@ -378,34 +378,34 @@ discard block |
||
378 | 378 | public function query() { |
379 | 379 | global $wpdb; |
380 | 380 | |
381 | - $qv =& $this->query_vars; |
|
381 | + $qv = & $this->query_vars; |
|
382 | 382 | |
383 | 383 | // Return a non-null value to bypass the default GetPaid subscriptions query and remember to set the |
384 | 384 | // total_subscriptions property. |
385 | - $this->results = apply_filters_ref_array( 'getpaid_subscriptions_pre_query', array( null, &$this ) ); |
|
385 | + $this->results = apply_filters_ref_array('getpaid_subscriptions_pre_query', array(null, &$this)); |
|
386 | 386 | |
387 | - if ( null === $this->results ) { |
|
387 | + if (null === $this->results) { |
|
388 | 388 | $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit"; |
389 | 389 | |
390 | - if ( ( is_array( $qv['fields'] ) && 1 != count( $qv['fields'] ) ) || 'all' == $qv['fields'] ) { |
|
391 | - $this->results = $wpdb->get_results( $this->request ); |
|
390 | + if ((is_array($qv['fields']) && 1 != count($qv['fields'])) || 'all' == $qv['fields']) { |
|
391 | + $this->results = $wpdb->get_results($this->request); |
|
392 | 392 | } else { |
393 | - $this->results = $wpdb->get_col( $this->request ); |
|
393 | + $this->results = $wpdb->get_col($this->request); |
|
394 | 394 | } |
395 | 395 | |
396 | - if ( isset( $qv['count_total'] ) && $qv['count_total'] ) { |
|
397 | - $found_subscriptions_query = apply_filters( 'getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this ); |
|
398 | - $this->total_subscriptions = (int) $wpdb->get_var( $found_subscriptions_query ); |
|
396 | + if (isset($qv['count_total']) && $qv['count_total']) { |
|
397 | + $found_subscriptions_query = apply_filters('getpaid_found_subscriptions_query', 'SELECT FOUND_ROWS()', $this); |
|
398 | + $this->total_subscriptions = (int) $wpdb->get_var($found_subscriptions_query); |
|
399 | 399 | } |
400 | 400 | } |
401 | 401 | |
402 | - if ( 'all' == $qv['fields'] ) { |
|
403 | - foreach ( $this->results as $key => $subscription ) { |
|
404 | - $this->set_cache( $subscription->id, $subscription, 'getpaid_subscriptions' ); |
|
405 | - $this->set_cache( $subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids' ); |
|
406 | - $this->set_cache( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
407 | - $this->set_cache( $subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids' ); |
|
408 | - $this->results[ $key ] = new WPInv_Subscription( $subscription ); |
|
402 | + if ('all' == $qv['fields']) { |
|
403 | + foreach ($this->results as $key => $subscription) { |
|
404 | + $this->set_cache($subscription->id, $subscription, 'getpaid_subscriptions'); |
|
405 | + $this->set_cache($subscription->profile_id, $subscription->id, 'getpaid_subscription_profile_ids_to_subscription_ids'); |
|
406 | + $this->set_cache($subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids'); |
|
407 | + $this->set_cache($subscription->transaction_id, $subscription->id, 'getpaid_subscription_transaction_ids_to_subscription_ids'); |
|
408 | + $this->results[$key] = new WPInv_Subscription($subscription); |
|
409 | 409 | } |
410 | 410 | } |
411 | 411 | |
@@ -420,13 +420,13 @@ discard block |
||
420 | 420 | * @param integer $expire |
421 | 421 | * @return boolean |
422 | 422 | */ |
423 | - public function set_cache( $key, $data, $group = '', $expire = 0 ) { |
|
423 | + public function set_cache($key, $data, $group = '', $expire = 0) { |
|
424 | 424 | |
425 | - if ( empty( $key ) ) { |
|
425 | + if (empty($key)) { |
|
426 | 426 | return false; |
427 | 427 | } |
428 | 428 | |
429 | - wp_cache_set( $key, $data, $group, $expire ); |
|
429 | + wp_cache_set($key, $data, $group, $expire); |
|
430 | 430 | } |
431 | 431 | |
432 | 432 | /** |
@@ -437,9 +437,9 @@ discard block |
||
437 | 437 | * @param string $query_var Query variable key. |
438 | 438 | * @return mixed |
439 | 439 | */ |
440 | - public function get( $query_var ) { |
|
441 | - if ( isset( $this->query_vars[ $query_var ] ) ) { |
|
442 | - return $this->query_vars[ $query_var ]; |
|
440 | + public function get($query_var) { |
|
441 | + if (isset($this->query_vars[$query_var])) { |
|
442 | + return $this->query_vars[$query_var]; |
|
443 | 443 | } |
444 | 444 | |
445 | 445 | return null; |
@@ -453,8 +453,8 @@ discard block |
||
453 | 453 | * @param string $query_var Query variable key. |
454 | 454 | * @param mixed $value Query variable value. |
455 | 455 | */ |
456 | - public function set( $query_var, $value ) { |
|
457 | - $this->query_vars[ $query_var ] = $value; |
|
456 | + public function set($query_var, $value) { |
|
457 | + $this->query_vars[$query_var] = $value; |
|
458 | 458 | } |
459 | 459 | |
460 | 460 | /** |
@@ -488,16 +488,16 @@ discard block |
||
488 | 488 | * @param string $table The current table. |
489 | 489 | * @return string Value to use in the ORDER clause, if `$orderby` is valid. |
490 | 490 | */ |
491 | - protected function parse_orderby( $orderby, $table ) { |
|
491 | + protected function parse_orderby($orderby, $table) { |
|
492 | 492 | |
493 | 493 | $_orderby = ''; |
494 | - if ( in_array( $orderby, array( 'customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id' ) ) ) { |
|
494 | + if (in_array($orderby, array('customer_id', 'frequency', 'period', 'initial_amount', 'recurring_amount', 'bill_times', 'transaction_id', 'parent_payment_id', 'product_id', 'created', 'expiration', 'trial_period', 'status', 'profile_id'))) { |
|
495 | 495 | $_orderby = "$table.`$orderby`"; |
496 | - } elseif ( 'id' === strtolower( $orderby ) ) { |
|
496 | + } elseif ('id' === strtolower($orderby)) { |
|
497 | 497 | $_orderby = "$table.id"; |
498 | - } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) { |
|
499 | - $include = wp_parse_id_list( $this->query_vars['include'] ); |
|
500 | - $include_sql = implode( ',', $include ); |
|
498 | + } elseif ('include' === $orderby && !empty($this->query_vars['include'])) { |
|
499 | + $include = wp_parse_id_list($this->query_vars['include']); |
|
500 | + $include_sql = implode(',', $include); |
|
501 | 501 | $_orderby = "FIELD( $table.id, $include_sql )"; |
502 | 502 | } |
503 | 503 | |
@@ -512,12 +512,12 @@ discard block |
||
512 | 512 | * @param string $order The 'order' query variable. |
513 | 513 | * @return string The sanitized 'order' query variable. |
514 | 514 | */ |
515 | - protected function parse_order( $order ) { |
|
516 | - if ( ! is_string( $order ) || empty( $order ) ) { |
|
515 | + protected function parse_order($order) { |
|
516 | + if (!is_string($order) || empty($order)) { |
|
517 | 517 | return 'DESC'; |
518 | 518 | } |
519 | 519 | |
520 | - if ( 'ASC' === strtoupper( $order ) ) { |
|
520 | + if ('ASC' === strtoupper($order)) { |
|
521 | 521 | return 'ASC'; |
522 | 522 | } else { |
523 | 523 | return 'DESC'; |
@@ -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( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
22 | + /** |
|
23 | + * An array of features that this gateway supports. |
|
24 | + * |
|
25 | + * @var array |
|
26 | + */ |
|
27 | + protected $supports = array( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
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,24 +44,24 @@ 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 ); |
|
51 | - add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
52 | - add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
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 | + add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
52 | + add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
53 | 53 | |
54 | 54 | } |
55 | 55 | |
56 | 56 | /** |
57 | - * Process Payment. |
|
58 | - * |
|
59 | - * @param WPInv_Invoice $invoice Invoice. |
|
60 | - * @param array $submission_data Posted checkout fields. |
|
61 | - * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
62 | - * @return array |
|
63 | - */ |
|
64 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
57 | + * Process Payment. |
|
58 | + * |
|
59 | + * @param WPInv_Invoice $invoice Invoice. |
|
60 | + * @param array $submission_data Posted checkout fields. |
|
61 | + * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
|
62 | + * @return array |
|
63 | + */ |
|
64 | + public function process_payment( $invoice, $submission_data, $submission ) { |
|
65 | 65 | |
66 | 66 | // Add a transaction id. |
67 | 67 | $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) ); |
@@ -82,66 +82,66 @@ discard block |
||
82 | 82 | } |
83 | 83 | |
84 | 84 | /** |
85 | - * Output for the order received page. |
|
86 | - * |
|
87 | - * @param WPInv_Invoice $invoice Invoice. |
|
88 | - */ |
|
89 | - public function thankyou_page( $invoice ) { |
|
85 | + * Output for the order received page. |
|
86 | + * |
|
87 | + * @param WPInv_Invoice $invoice Invoice. |
|
88 | + */ |
|
89 | + public function thankyou_page( $invoice ) { |
|
90 | 90 | |
91 | 91 | if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
92 | 92 | |
93 | - echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
93 | + echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
|
94 | 94 | |
95 | 95 | if ( ! empty( $this->instructions ) ) { |
96 | 96 | echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
97 | - } |
|
97 | + } |
|
98 | 98 | |
99 | - $this->bank_details( $invoice ); |
|
99 | + $this->bank_details( $invoice ); |
|
100 | 100 | |
101 | - echo '</div>'; |
|
101 | + echo '</div>'; |
|
102 | 102 | |
103 | 103 | } |
104 | 104 | |
105 | - } |
|
105 | + } |
|
106 | 106 | |
107 | 107 | /** |
108 | - * Add content to the WPI emails. |
|
109 | - * |
|
110 | - * @param WPInv_Invoice $invoice Invoice. |
|
111 | - * @param string $email_type Email format: plain text or HTML. |
|
112 | - * @param bool $sent_to_admin Sent to admin. |
|
113 | - */ |
|
114 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
108 | + * Add content to the WPI emails. |
|
109 | + * |
|
110 | + * @param WPInv_Invoice $invoice Invoice. |
|
111 | + * @param string $email_type Email format: plain text or HTML. |
|
112 | + * @param bool $sent_to_admin Sent to admin. |
|
113 | + */ |
|
114 | + public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
115 | 115 | |
116 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
116 | + if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
117 | 117 | |
118 | - echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
118 | + echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
|
119 | 119 | |
120 | - if ( $this->instructions ) { |
|
121 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
120 | + if ( $this->instructions ) { |
|
121 | + echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
122 | 122 | } |
123 | 123 | |
124 | - $this->bank_details( $invoice ); |
|
124 | + $this->bank_details( $invoice ); |
|
125 | 125 | |
126 | - echo '</div>'; |
|
126 | + echo '</div>'; |
|
127 | 127 | |
128 | - } |
|
128 | + } |
|
129 | 129 | |
130 | 130 | } |
131 | 131 | |
132 | 132 | /** |
133 | - * Get bank details and place into a list format. |
|
134 | - * |
|
135 | - * @param WPInv_Invoice $invoice Invoice. |
|
136 | - */ |
|
137 | - protected function bank_details( $invoice ) { |
|
133 | + * Get bank details and place into a list format. |
|
134 | + * |
|
135 | + * @param WPInv_Invoice $invoice Invoice. |
|
136 | + */ |
|
137 | + protected function bank_details( $invoice ) { |
|
138 | 138 | |
139 | - // Get the invoice country and country $locale. |
|
140 | - $country = $invoice->get_country(); |
|
141 | - $locale = $this->get_country_locale(); |
|
139 | + // Get the invoice country and country $locale. |
|
140 | + $country = $invoice->get_country(); |
|
141 | + $locale = $this->get_country_locale(); |
|
142 | 142 | |
143 | - // Get sortcode label in the $locale array and use appropriate one. |
|
144 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
143 | + // Get sortcode label in the $locale array and use appropriate one. |
|
144 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
145 | 145 | |
146 | 146 | $bank_fields = array( |
147 | 147 | 'ac_name' => __( 'Account Name', 'invoicing' ), |
@@ -160,11 +160,11 @@ discard block |
||
160 | 160 | |
161 | 161 | if ( ! empty( $value ) ) { |
162 | 162 | $bank_info[ $field ] = array( |
163 | - 'label' => $label, |
|
164 | - 'value' => $value, |
|
165 | - ); |
|
163 | + 'label' => $label, |
|
164 | + 'value' => $value, |
|
165 | + ); |
|
166 | 166 | } |
167 | - } |
|
167 | + } |
|
168 | 168 | |
169 | 169 | $bank_info = apply_filters( 'wpinv_bank_info', $bank_info, $invoice ); |
170 | 170 | |
@@ -172,139 +172,139 @@ discard block |
||
172 | 172 | return; |
173 | 173 | } |
174 | 174 | |
175 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL; |
|
175 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL; |
|
176 | + |
|
177 | + echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
178 | + |
|
179 | + foreach ( $bank_info as $key => $data ) { |
|
180 | + echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
181 | + } |
|
182 | + |
|
183 | + echo '</table>'; |
|
176 | 184 | |
177 | - echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
|
185 | + } |
|
178 | 186 | |
179 | - foreach ( $bank_info as $key => $data ) { |
|
180 | - echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
181 | - } |
|
187 | + /** |
|
188 | + * Get country locale if localized. |
|
189 | + * |
|
190 | + * @return array |
|
191 | + */ |
|
192 | + public function get_country_locale() { |
|
193 | + |
|
194 | + if ( empty( $this->locale ) ) { |
|
195 | + |
|
196 | + // Locale information to be used - only those that are not 'Sort Code'. |
|
197 | + $this->locale = apply_filters( |
|
198 | + 'getpaid_get_bank_transfer_locale', |
|
199 | + array( |
|
200 | + 'AU' => array( |
|
201 | + 'sortcode' => array( |
|
202 | + 'label' => __( 'BSB', 'invoicing' ), |
|
203 | + ), |
|
204 | + ), |
|
205 | + 'CA' => array( |
|
206 | + 'sortcode' => array( |
|
207 | + 'label' => __( 'Bank transit number', 'invoicing' ), |
|
208 | + ), |
|
209 | + ), |
|
210 | + 'IN' => array( |
|
211 | + 'sortcode' => array( |
|
212 | + 'label' => __( 'IFSC', 'invoicing' ), |
|
213 | + ), |
|
214 | + ), |
|
215 | + 'IT' => array( |
|
216 | + 'sortcode' => array( |
|
217 | + 'label' => __( 'Branch sort', 'invoicing' ), |
|
218 | + ), |
|
219 | + ), |
|
220 | + 'NZ' => array( |
|
221 | + 'sortcode' => array( |
|
222 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
223 | + ), |
|
224 | + ), |
|
225 | + 'SE' => array( |
|
226 | + 'sortcode' => array( |
|
227 | + 'label' => __( 'Bank code', 'invoicing' ), |
|
228 | + ), |
|
229 | + ), |
|
230 | + 'US' => array( |
|
231 | + 'sortcode' => array( |
|
232 | + 'label' => __( 'Routing number', 'invoicing' ), |
|
233 | + ), |
|
234 | + ), |
|
235 | + 'ZA' => array( |
|
236 | + 'sortcode' => array( |
|
237 | + 'label' => __( 'Branch code', 'invoicing' ), |
|
238 | + ), |
|
239 | + ), |
|
240 | + ) |
|
241 | + ); |
|
182 | 242 | |
183 | - echo '</table>'; |
|
243 | + } |
|
244 | + |
|
245 | + return $this->locale; |
|
184 | 246 | |
185 | 247 | } |
186 | 248 | |
187 | 249 | /** |
188 | - * Get country locale if localized. |
|
189 | - * |
|
190 | - * @return array |
|
191 | - */ |
|
192 | - public function get_country_locale() { |
|
193 | - |
|
194 | - if ( empty( $this->locale ) ) { |
|
195 | - |
|
196 | - // Locale information to be used - only those that are not 'Sort Code'. |
|
197 | - $this->locale = apply_filters( |
|
198 | - 'getpaid_get_bank_transfer_locale', |
|
199 | - array( |
|
200 | - 'AU' => array( |
|
201 | - 'sortcode' => array( |
|
202 | - 'label' => __( 'BSB', 'invoicing' ), |
|
203 | - ), |
|
204 | - ), |
|
205 | - 'CA' => array( |
|
206 | - 'sortcode' => array( |
|
207 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
208 | - ), |
|
209 | - ), |
|
210 | - 'IN' => array( |
|
211 | - 'sortcode' => array( |
|
212 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
213 | - ), |
|
214 | - ), |
|
215 | - 'IT' => array( |
|
216 | - 'sortcode' => array( |
|
217 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
218 | - ), |
|
219 | - ), |
|
220 | - 'NZ' => array( |
|
221 | - 'sortcode' => array( |
|
222 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
223 | - ), |
|
224 | - ), |
|
225 | - 'SE' => array( |
|
226 | - 'sortcode' => array( |
|
227 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
228 | - ), |
|
229 | - ), |
|
230 | - 'US' => array( |
|
231 | - 'sortcode' => array( |
|
232 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
233 | - ), |
|
234 | - ), |
|
235 | - 'ZA' => array( |
|
236 | - 'sortcode' => array( |
|
237 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
238 | - ), |
|
239 | - ), |
|
240 | - ) |
|
241 | - ); |
|
242 | - |
|
243 | - } |
|
244 | - |
|
245 | - return $this->locale; |
|
246 | - |
|
247 | - } |
|
248 | - |
|
249 | - /** |
|
250 | - * Filters the gateway settings. |
|
251 | - * |
|
252 | - * @param array $admin_settings |
|
253 | - */ |
|
254 | - public function admin_settings( $admin_settings ) { |
|
250 | + * Filters the gateway settings. |
|
251 | + * |
|
252 | + * @param array $admin_settings |
|
253 | + */ |
|
254 | + public function admin_settings( $admin_settings ) { |
|
255 | 255 | |
256 | 256 | $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' ); |
257 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
257 | + $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
258 | 258 | |
259 | - $locale = $this->get_country_locale(); |
|
259 | + $locale = $this->get_country_locale(); |
|
260 | 260 | |
261 | - // Get sortcode label in the $locale array and use appropriate one. |
|
262 | - $country = wpinv_default_billing_country(); |
|
263 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
261 | + // Get sortcode label in the $locale array and use appropriate one. |
|
262 | + $country = wpinv_default_billing_country(); |
|
263 | + $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
264 | 264 | |
265 | - $admin_settings['bank_transfer_ac_name'] = array( |
|
265 | + $admin_settings['bank_transfer_ac_name'] = array( |
|
266 | 266 | 'type' => 'text', |
267 | 267 | 'id' => 'bank_transfer_ac_name', |
268 | 268 | 'name' => __( 'Account Name', 'invoicing' ), |
269 | - ); |
|
269 | + ); |
|
270 | 270 | |
271 | - $admin_settings['bank_transfer_ac_no'] = array( |
|
271 | + $admin_settings['bank_transfer_ac_no'] = array( |
|
272 | 272 | 'type' => 'text', |
273 | 273 | 'id' => 'bank_transfer_ac_no', |
274 | 274 | 'name' => __( 'Account Number', 'invoicing' ), |
275 | - ); |
|
275 | + ); |
|
276 | 276 | |
277 | - $admin_settings['bank_transfer_bank_name'] = array( |
|
277 | + $admin_settings['bank_transfer_bank_name'] = array( |
|
278 | 278 | 'type' => 'text', |
279 | 279 | 'id' => 'bank_transfer_bank_name', |
280 | 280 | 'name' => __( 'Bank Name', 'invoicing' ), |
281 | - ); |
|
281 | + ); |
|
282 | 282 | |
283 | - $admin_settings['bank_transfer_ifsc'] = array( |
|
283 | + $admin_settings['bank_transfer_ifsc'] = array( |
|
284 | 284 | 'type' => 'text', |
285 | 285 | 'id' => 'bank_transfer_ifsc', |
286 | 286 | 'name' => __( 'IFSC Code', 'invoicing' ), |
287 | - ); |
|
287 | + ); |
|
288 | 288 | |
289 | - $admin_settings['bank_transfer_iban'] = array( |
|
289 | + $admin_settings['bank_transfer_iban'] = array( |
|
290 | 290 | 'type' => 'text', |
291 | 291 | 'id' => 'bank_transfer_iban', |
292 | 292 | 'name' => __( 'IBAN', 'invoicing' ), |
293 | - ); |
|
293 | + ); |
|
294 | 294 | |
295 | - $admin_settings['bank_transfer_bic'] = array( |
|
295 | + $admin_settings['bank_transfer_bic'] = array( |
|
296 | 296 | 'type' => 'text', |
297 | 297 | 'id' => 'bank_transfer_bic', |
298 | 298 | 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
299 | - ); |
|
299 | + ); |
|
300 | 300 | |
301 | - $admin_settings['bank_transfer_sort_code'] = array( |
|
302 | - 'type' => 'text', |
|
303 | - 'id' => 'bank_transfer_sort_code', |
|
304 | - 'name' => $sortcode, |
|
305 | - ); |
|
301 | + $admin_settings['bank_transfer_sort_code'] = array( |
|
302 | + 'type' => 'text', |
|
303 | + 'id' => 'bank_transfer_sort_code', |
|
304 | + 'name' => $sortcode, |
|
305 | + ); |
|
306 | 306 | |
307 | - $admin_settings['bank_transfer_info'] = array( |
|
307 | + $admin_settings['bank_transfer_info'] = array( |
|
308 | 308 | 'id' => 'bank_transfer_info', |
309 | 309 | 'name' => __( 'Instructions', 'invoicing' ), |
310 | 310 | 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
@@ -314,17 +314,17 @@ discard block |
||
314 | 314 | 'rows' => 5, |
315 | 315 | ); |
316 | 316 | |
317 | - return $admin_settings; |
|
318 | - } |
|
317 | + return $admin_settings; |
|
318 | + } |
|
319 | 319 | |
320 | - /** |
|
321 | - * Processes invoice addons. |
|
322 | - * |
|
323 | - * @param WPInv_Invoice $invoice |
|
324 | - * @param GetPaid_Form_Item[] $items |
|
325 | - * @return WPInv_Invoice |
|
326 | - */ |
|
327 | - public function process_addons( $invoice, $items ) { |
|
320 | + /** |
|
321 | + * Processes invoice addons. |
|
322 | + * |
|
323 | + * @param WPInv_Invoice $invoice |
|
324 | + * @param GetPaid_Form_Item[] $items |
|
325 | + * @return WPInv_Invoice |
|
326 | + */ |
|
327 | + public function process_addons( $invoice, $items ) { |
|
328 | 328 | |
329 | 329 | foreach ( $items as $item ) { |
330 | 330 | $invoice->add_item( $item ); |
@@ -332,66 +332,66 @@ discard block |
||
332 | 332 | |
333 | 333 | $invoice->recalculate_total(); |
334 | 334 | $invoice->save(); |
335 | - } |
|
335 | + } |
|
336 | 336 | |
337 | - /** |
|
338 | - * (Maybe) renews a bank transfer subscription profile. |
|
339 | - * |
|
340 | - * |
|
337 | + /** |
|
338 | + * (Maybe) renews a bank transfer subscription profile. |
|
339 | + * |
|
340 | + * |
|
341 | 341 | * @param WPInv_Subscription $subscription |
342 | - */ |
|
343 | - public function maybe_renew_subscription( $subscription ) { |
|
342 | + */ |
|
343 | + public function maybe_renew_subscription( $subscription ) { |
|
344 | 344 | |
345 | 345 | // Ensure its our subscription && it's active. |
346 | 346 | if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
347 | - $subscription->create_payment(); |
|
347 | + $subscription->create_payment(); |
|
348 | 348 | } |
349 | 349 | |
350 | 350 | } |
351 | 351 | |
352 | - /** |
|
353 | - * Process a bank transfer payment. |
|
354 | - * |
|
355 | - * |
|
352 | + /** |
|
353 | + * Process a bank transfer payment. |
|
354 | + * |
|
355 | + * |
|
356 | 356 | * @param WPInv_Invoice $invoice |
357 | - */ |
|
358 | - public function invoice_paid( $invoice ) { |
|
359 | - |
|
360 | - // Abort if not paid by bank transfer. |
|
361 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
362 | - return; |
|
363 | - } |
|
364 | - |
|
365 | - // Is it a parent payment? |
|
366 | - if ( 0 == $invoice->get_parent_id() ) { |
|
367 | - |
|
368 | - // (Maybe) activate subscriptions. |
|
369 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
370 | - |
|
371 | - if ( ! empty( $subscriptions ) ) { |
|
372 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
373 | - |
|
374 | - foreach ( $subscriptions as $subscription ) { |
|
375 | - if ( $subscription->exists() ) { |
|
376 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
377 | - $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
378 | - |
|
379 | - $subscription->set_next_renewal_date( $expiry ); |
|
380 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
381 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
382 | - $subscription->activate(); |
|
383 | - } |
|
384 | - } |
|
357 | + */ |
|
358 | + public function invoice_paid( $invoice ) { |
|
359 | + |
|
360 | + // Abort if not paid by bank transfer. |
|
361 | + if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
362 | + return; |
|
363 | + } |
|
364 | + |
|
365 | + // Is it a parent payment? |
|
366 | + if ( 0 == $invoice->get_parent_id() ) { |
|
367 | + |
|
368 | + // (Maybe) activate subscriptions. |
|
369 | + $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
370 | + |
|
371 | + if ( ! empty( $subscriptions ) ) { |
|
372 | + $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
373 | + |
|
374 | + foreach ( $subscriptions as $subscription ) { |
|
375 | + if ( $subscription->exists() ) { |
|
376 | + $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
377 | + $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
378 | + |
|
379 | + $subscription->set_next_renewal_date( $expiry ); |
|
380 | + $subscription->set_date_created( current_time( 'mysql' ) ); |
|
381 | + $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
382 | + $subscription->activate(); |
|
383 | + } |
|
384 | + } |
|
385 | 385 | } |
386 | 386 | } else { |
387 | 387 | |
388 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
388 | + $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
389 | 389 | |
390 | - // Renew the subscription. |
|
391 | - if ( $subscription && $subscription->exists() ) { |
|
392 | - $subscription->add_payment( array(), $invoice ); |
|
393 | - $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
394 | - } |
|
390 | + // Renew the subscription. |
|
391 | + if ( $subscription && $subscription->exists() ) { |
|
392 | + $subscription->add_payment( array(), $invoice ); |
|
393 | + $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
394 | + } |
|
395 | 395 | } |
396 | 396 | |
397 | 397 | } |
@@ -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( 'subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups' ); |
|
27 | + protected $supports = array('subscription', 'addons', 'single_subscription_group', 'multiple_subscription_groups'); |
|
28 | 28 | |
29 | 29 | /** |
30 | 30 | * Payment method order. |
@@ -39,17 +39,17 @@ 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 ); |
|
51 | - add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) ); |
|
52 | - add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 ); |
|
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 | + add_action('getpaid_should_renew_subscription', array($this, 'maybe_renew_subscription')); |
|
52 | + add_action('getpaid_invoice_status_publish', array($this, 'invoice_paid'), 20); |
|
53 | 53 | |
54 | 54 | } |
55 | 55 | |
@@ -61,23 +61,23 @@ discard block |
||
61 | 61 | * @param GetPaid_Payment_Form_Submission $submission Checkout submission. |
62 | 62 | * @return array |
63 | 63 | */ |
64 | - public function process_payment( $invoice, $submission_data, $submission ) { |
|
64 | + public function process_payment($invoice, $submission_data, $submission) { |
|
65 | 65 | |
66 | 66 | // Add a transaction id. |
67 | - $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) ); |
|
67 | + $invoice->set_transaction_id($invoice->generate_key('bt_')); |
|
68 | 68 | |
69 | 69 | // Set it as pending payment. |
70 | - if ( ! $invoice->needs_payment() ) { |
|
70 | + if (!$invoice->needs_payment()) { |
|
71 | 71 | $invoice->mark_paid(); |
72 | - } elseif ( ! $invoice->is_paid() ) { |
|
73 | - $invoice->set_status( 'wpi-onhold' ); |
|
72 | + } elseif (!$invoice->is_paid()) { |
|
73 | + $invoice->set_status('wpi-onhold'); |
|
74 | 74 | } |
75 | 75 | |
76 | 76 | // Save it. |
77 | 77 | $invoice->save(); |
78 | 78 | |
79 | 79 | // Send to the success page. |
80 | - wpinv_send_to_success_page( array( 'invoice_key' => $invoice->get_key() ) ); |
|
80 | + wpinv_send_to_success_page(array('invoice_key' => $invoice->get_key())); |
|
81 | 81 | |
82 | 82 | } |
83 | 83 | |
@@ -86,17 +86,17 @@ discard block |
||
86 | 86 | * |
87 | 87 | * @param WPInv_Invoice $invoice Invoice. |
88 | 88 | */ |
89 | - public function thankyou_page( $invoice ) { |
|
89 | + public function thankyou_page($invoice) { |
|
90 | 90 | |
91 | - if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
91 | + if ('bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) { |
|
92 | 92 | |
93 | 93 | echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL; |
94 | 94 | |
95 | - if ( ! empty( $this->instructions ) ) { |
|
96 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) ); |
|
95 | + if (!empty($this->instructions)) { |
|
96 | + echo wp_kses_post(wpautop(wptexturize($this->instructions))); |
|
97 | 97 | } |
98 | 98 | |
99 | - $this->bank_details( $invoice ); |
|
99 | + $this->bank_details($invoice); |
|
100 | 100 | |
101 | 101 | echo '</div>'; |
102 | 102 | |
@@ -111,17 +111,17 @@ discard block |
||
111 | 111 | * @param string $email_type Email format: plain text or HTML. |
112 | 112 | * @param bool $sent_to_admin Sent to admin. |
113 | 113 | */ |
114 | - public function email_instructions( $invoice, $email_type, $sent_to_admin ) { |
|
114 | + public function email_instructions($invoice, $email_type, $sent_to_admin) { |
|
115 | 115 | |
116 | - if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) { |
|
116 | + if (!$sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment()) { |
|
117 | 117 | |
118 | 118 | echo '<div class="wpi-email-row getpaid-bank-transfer-details">'; |
119 | 119 | |
120 | - if ( $this->instructions ) { |
|
121 | - echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL ); |
|
120 | + if ($this->instructions) { |
|
121 | + echo wp_kses_post(wpautop(wptexturize($this->instructions)) . PHP_EOL); |
|
122 | 122 | } |
123 | 123 | |
124 | - $this->bank_details( $invoice ); |
|
124 | + $this->bank_details($invoice); |
|
125 | 125 | |
126 | 126 | echo '</div>'; |
127 | 127 | |
@@ -134,50 +134,50 @@ discard block |
||
134 | 134 | * |
135 | 135 | * @param WPInv_Invoice $invoice Invoice. |
136 | 136 | */ |
137 | - protected function bank_details( $invoice ) { |
|
137 | + protected function bank_details($invoice) { |
|
138 | 138 | |
139 | 139 | // Get the invoice country and country $locale. |
140 | 140 | $country = $invoice->get_country(); |
141 | 141 | $locale = $this->get_country_locale(); |
142 | 142 | |
143 | 143 | // Get sortcode label in the $locale array and use appropriate one. |
144 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
144 | + $sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing'); |
|
145 | 145 | |
146 | 146 | $bank_fields = array( |
147 | - 'ac_name' => __( 'Account Name', 'invoicing' ), |
|
148 | - 'ac_no' => __( 'Account Number', 'invoicing' ), |
|
149 | - 'bank_name' => __( 'Bank Name', 'invoicing' ), |
|
150 | - 'ifsc' => __( 'IFSC code', 'invoicing' ), |
|
151 | - 'iban' => __( 'IBAN', 'invoicing' ), |
|
152 | - 'bic' => __( 'BIC/Swift code', 'invoicing' ), |
|
147 | + 'ac_name' => __('Account Name', 'invoicing'), |
|
148 | + 'ac_no' => __('Account Number', 'invoicing'), |
|
149 | + 'bank_name' => __('Bank Name', 'invoicing'), |
|
150 | + 'ifsc' => __('IFSC code', 'invoicing'), |
|
151 | + 'iban' => __('IBAN', 'invoicing'), |
|
152 | + 'bic' => __('BIC/Swift code', 'invoicing'), |
|
153 | 153 | 'sort_code' => $sortcode, |
154 | 154 | ); |
155 | 155 | |
156 | 156 | $bank_info = array(); |
157 | 157 | |
158 | - foreach ( $bank_fields as $field => $label ) { |
|
159 | - $value = $this->get_option( $field ); |
|
158 | + foreach ($bank_fields as $field => $label) { |
|
159 | + $value = $this->get_option($field); |
|
160 | 160 | |
161 | - if ( ! empty( $value ) ) { |
|
162 | - $bank_info[ $field ] = array( |
|
161 | + if (!empty($value)) { |
|
162 | + $bank_info[$field] = array( |
|
163 | 163 | 'label' => $label, |
164 | 164 | 'value' => $value, |
165 | 165 | ); |
166 | 166 | } |
167 | 167 | } |
168 | 168 | |
169 | - $bank_info = apply_filters( 'wpinv_bank_info', $bank_info, $invoice ); |
|
169 | + $bank_info = apply_filters('wpinv_bank_info', $bank_info, $invoice); |
|
170 | 170 | |
171 | - if ( empty( $bank_info ) ) { |
|
171 | + if (empty($bank_info)) { |
|
172 | 172 | return; |
173 | 173 | } |
174 | 174 | |
175 | - echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL; |
|
175 | + echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html(apply_filters('wpinv_receipt_bank_details_title', __('Bank Details', 'invoicing'), $invoice)) . '</h3>' . PHP_EOL; |
|
176 | 176 | |
177 | 177 | echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL; |
178 | 178 | |
179 | - foreach ( $bank_info as $key => $data ) { |
|
180 | - echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL; |
|
179 | + foreach ($bank_info as $key => $data) { |
|
180 | + echo "<tr class='getpaid-bank-transfer-" . esc_attr($key) . "'><th class='font-weight-bold'>" . wp_kses_post($data['label']) . "</th><td class='w-75'>" . wp_kses_post(wptexturize($data['value'])) . '</td></tr>' . PHP_EOL; |
|
181 | 181 | } |
182 | 182 | |
183 | 183 | echo '</table>'; |
@@ -191,7 +191,7 @@ discard block |
||
191 | 191 | */ |
192 | 192 | public function get_country_locale() { |
193 | 193 | |
194 | - if ( empty( $this->locale ) ) { |
|
194 | + if (empty($this->locale)) { |
|
195 | 195 | |
196 | 196 | // Locale information to be used - only those that are not 'Sort Code'. |
197 | 197 | $this->locale = apply_filters( |
@@ -199,42 +199,42 @@ discard block |
||
199 | 199 | array( |
200 | 200 | 'AU' => array( |
201 | 201 | 'sortcode' => array( |
202 | - 'label' => __( 'BSB', 'invoicing' ), |
|
202 | + 'label' => __('BSB', 'invoicing'), |
|
203 | 203 | ), |
204 | 204 | ), |
205 | 205 | 'CA' => array( |
206 | 206 | 'sortcode' => array( |
207 | - 'label' => __( 'Bank transit number', 'invoicing' ), |
|
207 | + 'label' => __('Bank transit number', 'invoicing'), |
|
208 | 208 | ), |
209 | 209 | ), |
210 | 210 | 'IN' => array( |
211 | 211 | 'sortcode' => array( |
212 | - 'label' => __( 'IFSC', 'invoicing' ), |
|
212 | + 'label' => __('IFSC', 'invoicing'), |
|
213 | 213 | ), |
214 | 214 | ), |
215 | 215 | 'IT' => array( |
216 | 216 | 'sortcode' => array( |
217 | - 'label' => __( 'Branch sort', 'invoicing' ), |
|
217 | + 'label' => __('Branch sort', 'invoicing'), |
|
218 | 218 | ), |
219 | 219 | ), |
220 | 220 | 'NZ' => array( |
221 | 221 | 'sortcode' => array( |
222 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
222 | + 'label' => __('Bank code', 'invoicing'), |
|
223 | 223 | ), |
224 | 224 | ), |
225 | 225 | 'SE' => array( |
226 | 226 | 'sortcode' => array( |
227 | - 'label' => __( 'Bank code', 'invoicing' ), |
|
227 | + 'label' => __('Bank code', 'invoicing'), |
|
228 | 228 | ), |
229 | 229 | ), |
230 | 230 | 'US' => array( |
231 | 231 | 'sortcode' => array( |
232 | - 'label' => __( 'Routing number', 'invoicing' ), |
|
232 | + 'label' => __('Routing number', 'invoicing'), |
|
233 | 233 | ), |
234 | 234 | ), |
235 | 235 | 'ZA' => array( |
236 | 236 | 'sortcode' => array( |
237 | - 'label' => __( 'Branch code', 'invoicing' ), |
|
237 | + 'label' => __('Branch code', 'invoicing'), |
|
238 | 238 | ), |
239 | 239 | ), |
240 | 240 | ) |
@@ -251,51 +251,51 @@ discard block |
||
251 | 251 | * |
252 | 252 | * @param array $admin_settings |
253 | 253 | */ |
254 | - public function admin_settings( $admin_settings ) { |
|
254 | + public function admin_settings($admin_settings) { |
|
255 | 255 | |
256 | - $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' ); |
|
257 | - $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' ); |
|
256 | + $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'); |
|
257 | + $admin_settings['bank_transfer_active']['desc'] = __('Enable bank transfer', 'invoicing'); |
|
258 | 258 | |
259 | - $locale = $this->get_country_locale(); |
|
259 | + $locale = $this->get_country_locale(); |
|
260 | 260 | |
261 | 261 | // Get sortcode label in the $locale array and use appropriate one. |
262 | 262 | $country = wpinv_default_billing_country(); |
263 | - $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' ); |
|
263 | + $sortcode = isset($locale[$country]['sortcode']['label']) ? $locale[$country]['sortcode']['label'] : __('Sort code', 'invoicing'); |
|
264 | 264 | |
265 | 265 | $admin_settings['bank_transfer_ac_name'] = array( |
266 | 266 | 'type' => 'text', |
267 | 267 | 'id' => 'bank_transfer_ac_name', |
268 | - 'name' => __( 'Account Name', 'invoicing' ), |
|
268 | + 'name' => __('Account Name', 'invoicing'), |
|
269 | 269 | ); |
270 | 270 | |
271 | 271 | $admin_settings['bank_transfer_ac_no'] = array( |
272 | 272 | 'type' => 'text', |
273 | 273 | 'id' => 'bank_transfer_ac_no', |
274 | - 'name' => __( 'Account Number', 'invoicing' ), |
|
274 | + 'name' => __('Account Number', 'invoicing'), |
|
275 | 275 | ); |
276 | 276 | |
277 | 277 | $admin_settings['bank_transfer_bank_name'] = array( |
278 | 278 | 'type' => 'text', |
279 | 279 | 'id' => 'bank_transfer_bank_name', |
280 | - 'name' => __( 'Bank Name', 'invoicing' ), |
|
280 | + 'name' => __('Bank Name', 'invoicing'), |
|
281 | 281 | ); |
282 | 282 | |
283 | 283 | $admin_settings['bank_transfer_ifsc'] = array( |
284 | 284 | 'type' => 'text', |
285 | 285 | 'id' => 'bank_transfer_ifsc', |
286 | - 'name' => __( 'IFSC Code', 'invoicing' ), |
|
286 | + 'name' => __('IFSC Code', 'invoicing'), |
|
287 | 287 | ); |
288 | 288 | |
289 | 289 | $admin_settings['bank_transfer_iban'] = array( |
290 | 290 | 'type' => 'text', |
291 | 291 | 'id' => 'bank_transfer_iban', |
292 | - 'name' => __( 'IBAN', 'invoicing' ), |
|
292 | + 'name' => __('IBAN', 'invoicing'), |
|
293 | 293 | ); |
294 | 294 | |
295 | 295 | $admin_settings['bank_transfer_bic'] = array( |
296 | 296 | 'type' => 'text', |
297 | 297 | 'id' => 'bank_transfer_bic', |
298 | - 'name' => __( 'BIC/Swift Code', 'invoicing' ), |
|
298 | + 'name' => __('BIC/Swift Code', 'invoicing'), |
|
299 | 299 | ); |
300 | 300 | |
301 | 301 | $admin_settings['bank_transfer_sort_code'] = array( |
@@ -306,10 +306,10 @@ discard block |
||
306 | 306 | |
307 | 307 | $admin_settings['bank_transfer_info'] = array( |
308 | 308 | 'id' => 'bank_transfer_info', |
309 | - 'name' => __( 'Instructions', 'invoicing' ), |
|
310 | - 'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ), |
|
309 | + 'name' => __('Instructions', 'invoicing'), |
|
310 | + 'desc' => __('Instructions that will be added to the thank you page and emails.', 'invoicing'), |
|
311 | 311 | 'type' => 'textarea', |
312 | - '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' ), |
|
312 | + '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'), |
|
313 | 313 | 'cols' => 50, |
314 | 314 | 'rows' => 5, |
315 | 315 | ); |
@@ -324,10 +324,10 @@ discard block |
||
324 | 324 | * @param GetPaid_Form_Item[] $items |
325 | 325 | * @return WPInv_Invoice |
326 | 326 | */ |
327 | - public function process_addons( $invoice, $items ) { |
|
327 | + public function process_addons($invoice, $items) { |
|
328 | 328 | |
329 | - foreach ( $items as $item ) { |
|
330 | - $invoice->add_item( $item ); |
|
329 | + foreach ($items as $item) { |
|
330 | + $invoice->add_item($item); |
|
331 | 331 | } |
332 | 332 | |
333 | 333 | $invoice->recalculate_total(); |
@@ -340,10 +340,10 @@ discard block |
||
340 | 340 | * |
341 | 341 | * @param WPInv_Subscription $subscription |
342 | 342 | */ |
343 | - public function maybe_renew_subscription( $subscription ) { |
|
343 | + public function maybe_renew_subscription($subscription) { |
|
344 | 344 | |
345 | 345 | // Ensure its our subscription && it's active. |
346 | - if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) { |
|
346 | + if ($this->id === $subscription->get_gateway() && $subscription->has_status('active trialling')) { |
|
347 | 347 | $subscription->create_payment(); |
348 | 348 | } |
349 | 349 | |
@@ -355,42 +355,42 @@ discard block |
||
355 | 355 | * |
356 | 356 | * @param WPInv_Invoice $invoice |
357 | 357 | */ |
358 | - public function invoice_paid( $invoice ) { |
|
358 | + public function invoice_paid($invoice) { |
|
359 | 359 | |
360 | 360 | // Abort if not paid by bank transfer. |
361 | - if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) { |
|
361 | + if ($this->id !== $invoice->get_gateway() || !$invoice->is_recurring()) { |
|
362 | 362 | return; |
363 | 363 | } |
364 | 364 | |
365 | 365 | // Is it a parent payment? |
366 | - if ( 0 == $invoice->get_parent_id() ) { |
|
366 | + if (0 == $invoice->get_parent_id()) { |
|
367 | 367 | |
368 | 368 | // (Maybe) activate subscriptions. |
369 | - $subscriptions = getpaid_get_invoice_subscriptions( $invoice ); |
|
369 | + $subscriptions = getpaid_get_invoice_subscriptions($invoice); |
|
370 | 370 | |
371 | - if ( ! empty( $subscriptions ) ) { |
|
372 | - $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions ); |
|
371 | + if (!empty($subscriptions)) { |
|
372 | + $subscriptions = is_array($subscriptions) ? $subscriptions : array($subscriptions); |
|
373 | 373 | |
374 | - foreach ( $subscriptions as $subscription ) { |
|
375 | - if ( $subscription->exists() ) { |
|
376 | - $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() ); |
|
377 | - $expiry = date( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) ); |
|
374 | + foreach ($subscriptions as $subscription) { |
|
375 | + if ($subscription->exists()) { |
|
376 | + $duration = strtotime($subscription->get_expiration()) - strtotime($subscription->get_date_created()); |
|
377 | + $expiry = date('Y-m-d H:i:s', (current_time('timestamp') + $duration)); |
|
378 | 378 | |
379 | - $subscription->set_next_renewal_date( $expiry ); |
|
380 | - $subscription->set_date_created( current_time( 'mysql' ) ); |
|
381 | - $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() ); |
|
379 | + $subscription->set_next_renewal_date($expiry); |
|
380 | + $subscription->set_date_created(current_time('mysql')); |
|
381 | + $subscription->set_profile_id('bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id()); |
|
382 | 382 | $subscription->activate(); |
383 | 383 | } |
384 | 384 | } |
385 | 385 | } |
386 | 386 | } else { |
387 | 387 | |
388 | - $subscription = getpaid_get_subscription( $invoice->get_subscription_id() ); |
|
388 | + $subscription = getpaid_get_subscription($invoice->get_subscription_id()); |
|
389 | 389 | |
390 | 390 | // Renew the subscription. |
391 | - if ( $subscription && $subscription->exists() ) { |
|
392 | - $subscription->add_payment( array(), $invoice ); |
|
393 | - $subscription->renew( strtotime( $invoice->get_date_created() ) ); |
|
391 | + if ($subscription && $subscription->exists()) { |
|
392 | + $subscription->add_payment(array(), $invoice); |
|
393 | + $subscription->renew(strtotime($invoice->get_date_created())); |
|
394 | 394 | } |
395 | 395 | } |
396 | 396 |
@@ -1,6 +1,6 @@ discard block |
||
1 | 1 | <?php |
2 | 2 | // MUST have WordPress. |
3 | -if ( ! defined( 'WPINC' ) ) { |
|
3 | +if (!defined('WPINC')) { |
|
4 | 4 | exit; |
5 | 5 | } |
6 | 6 | |
@@ -11,23 +11,23 @@ discard block |
||
11 | 11 | * |
12 | 12 | * @param WP_Post $post |
13 | 13 | */ |
14 | - public static function output_details( $post ) { |
|
15 | - $details = get_post_meta( $post->ID, 'payment_form_data', true ); |
|
14 | + public static function output_details($post) { |
|
15 | + $details = get_post_meta($post->ID, 'payment_form_data', true); |
|
16 | 16 | |
17 | - if ( ! is_array( $details ) ) { |
|
17 | + if (!is_array($details)) { |
|
18 | 18 | return; |
19 | 19 | } |
20 | 20 | |
21 | 21 | echo '<div class="bsui"> <div class="form-row row">'; |
22 | 22 | |
23 | - foreach ( $details as $key => $value ) { |
|
24 | - $key = esc_html( $key ); |
|
23 | + foreach ($details as $key => $value) { |
|
24 | + $key = esc_html($key); |
|
25 | 25 | |
26 | - if ( is_array( $value ) ) { |
|
27 | - $value = implode( ',', $value ); |
|
26 | + if (is_array($value)) { |
|
27 | + $value = implode(',', $value); |
|
28 | 28 | } |
29 | 29 | |
30 | - echo wp_kses_post( "<div class='col-12'><strong>$key:</strong></div><div class='col-12 form-group mb-3'>$value</div>" ); |
|
30 | + echo wp_kses_post("<div class='col-12'><strong>$key:</strong></div><div class='col-12 form-group mb-3'>$value</div>"); |
|
31 | 31 | } |
32 | 32 | |
33 | 33 | echo '</div></div>'; |
@@ -39,18 +39,18 @@ discard block |
||
39 | 39 | * |
40 | 40 | * @param WP_Post $post |
41 | 41 | */ |
42 | - public static function output_shortcode( $post ) { |
|
42 | + public static function output_shortcode($post) { |
|
43 | 43 | |
44 | - if ( ! is_numeric( $post ) ) { |
|
44 | + if (!is_numeric($post)) { |
|
45 | 45 | $post = $post->ID; |
46 | 46 | } |
47 | 47 | |
48 | - if ( $post == wpinv_get_default_payment_form() ) { |
|
48 | + if ($post == wpinv_get_default_payment_form()) { |
|
49 | 49 | echo '—'; |
50 | 50 | return; |
51 | 51 | } |
52 | 52 | |
53 | - echo "<input type='text' style='min-width: 220px;' value='[getpaid form=" . absint( $post ) . "]' disabled>"; |
|
53 | + echo "<input type='text' style='min-width: 220px;' value='[getpaid form=" . absint($post) . "]' disabled>"; |
|
54 | 54 | |
55 | 55 | } |
56 | 56 |
@@ -12,75 +12,75 @@ discard block |
||
12 | 12 | * @var GetPaid_Payment_Form $form |
13 | 13 | */ |
14 | 14 | |
15 | -defined( 'ABSPATH' ) || exit; |
|
15 | +defined('ABSPATH') || exit; |
|
16 | 16 | |
17 | -$field_type = sanitize_key( $field_type ); |
|
17 | +$field_type = sanitize_key($field_type); |
|
18 | 18 | |
19 | -echo "<div class='row " . esc_attr( $field_type ) . "'>"; |
|
19 | +echo "<div class='row " . esc_attr($field_type) . "'>"; |
|
20 | 20 | |
21 | 21 | // Prepare current user. |
22 | -if ( ! empty( $form->invoice ) ) { |
|
22 | +if (!empty($form->invoice)) { |
|
23 | 23 | $user_id = $form->invoice->get_user_id(); |
24 | 24 | } |
25 | 25 | |
26 | -if ( empty( $user_id ) && is_user_logged_in() ) { |
|
26 | +if (empty($user_id) && is_user_logged_in()) { |
|
27 | 27 | $user_id = get_current_user_id(); |
28 | 28 | } |
29 | 29 | |
30 | -if ( ! empty( $user_id ) ) { |
|
31 | - $user = wp_get_current_user(); |
|
30 | +if (!empty($user_id)) { |
|
31 | + $user = wp_get_current_user(); |
|
32 | 32 | } |
33 | 33 | |
34 | -foreach ( $fields as $address_field ) { |
|
34 | +foreach ($fields as $address_field) { |
|
35 | 35 | |
36 | 36 | // Skip if it is hidden. |
37 | - if ( empty( $address_field['visible'] ) ) { |
|
37 | + if (empty($address_field['visible'])) { |
|
38 | 38 | continue; |
39 | 39 | } |
40 | 40 | |
41 | - do_action( 'getpaid_payment_form_address_field_before_' . $address_field['name'], $field_type, $address_field ); |
|
41 | + do_action('getpaid_payment_form_address_field_before_' . $address_field['name'], $field_type, $address_field); |
|
42 | 42 | |
43 | 43 | // Prepare variables. |
44 | 44 | $field_name = $address_field['name']; |
45 | 45 | $field_name = "{$field_type}[$field_name]"; |
46 | - $wrap_class = getpaid_get_form_element_grid_class( $address_field ); |
|
47 | - $wrap_class = esc_attr( "$wrap_class getpaid-address-field-wrapper" ); |
|
48 | - $placeholder = empty( $address_field['placeholder'] ) ? '' : esc_attr( $address_field['placeholder'] ); |
|
49 | - $description = empty( $address_field['description'] ) ? '' : wp_kses_post( $address_field['description'] ); |
|
50 | - $value = ! empty( $user_id ) ? get_user_meta( $user_id, '_' . $address_field['name'], true ) : ''; |
|
51 | - $label = empty( $address_field['label'] ) ? '' : wp_kses_post( $address_field['label'] ); |
|
52 | - |
|
53 | - $method_name = 'get_' . str_replace( 'wpinv_', '', $address_field['name'] ); |
|
54 | - if ( ! empty( $form->invoice ) && is_callable( array( $form->invoice, $method_name ) ) ) { |
|
55 | - $value = call_user_func( array( $form->invoice, $method_name ) ); |
|
46 | + $wrap_class = getpaid_get_form_element_grid_class($address_field); |
|
47 | + $wrap_class = esc_attr("$wrap_class getpaid-address-field-wrapper"); |
|
48 | + $placeholder = empty($address_field['placeholder']) ? '' : esc_attr($address_field['placeholder']); |
|
49 | + $description = empty($address_field['description']) ? '' : wp_kses_post($address_field['description']); |
|
50 | + $value = !empty($user_id) ? get_user_meta($user_id, '_' . $address_field['name'], true) : ''; |
|
51 | + $label = empty($address_field['label']) ? '' : wp_kses_post($address_field['label']); |
|
52 | + |
|
53 | + $method_name = 'get_' . str_replace('wpinv_', '', $address_field['name']); |
|
54 | + if (!empty($form->invoice) && is_callable(array($form->invoice, $method_name))) { |
|
55 | + $value = call_user_func(array($form->invoice, $method_name)); |
|
56 | 56 | } |
57 | 57 | |
58 | - if ( empty( $value ) && 'wpinv_first_name' == $address_field['name'] && ! empty( $user ) ) { |
|
58 | + if (empty($value) && 'wpinv_first_name' == $address_field['name'] && !empty($user)) { |
|
59 | 59 | $value = $user->first_name; |
60 | 60 | } |
61 | 61 | |
62 | - if ( empty( $value ) && 'wpinv_last_name' == $address_field['name'] && ! empty( $user ) ) { |
|
62 | + if (empty($value) && 'wpinv_last_name' == $address_field['name'] && !empty($user)) { |
|
63 | 63 | $value = $user->last_name; |
64 | 64 | } |
65 | 65 | |
66 | - if ( ! empty( $address_field['required'] ) ) { |
|
66 | + if (!empty($address_field['required'])) { |
|
67 | 67 | $label .= "<span class='text-danger'> *</span>"; |
68 | 68 | } |
69 | 69 | |
70 | 70 | // Display the country. |
71 | - if ( 'wpinv_country' == $address_field['name'] ) { |
|
71 | + if ('wpinv_country' == $address_field['name']) { |
|
72 | 72 | |
73 | - echo "<div class='form-group mb-3 " . esc_attr( $wrap_class ) . " getpaid-address-field-wrapper__country'"; |
|
73 | + echo "<div class='form-group mb-3 " . esc_attr($wrap_class) . " getpaid-address-field-wrapper__country'"; |
|
74 | 74 | |
75 | 75 | aui()->select( |
76 | 76 | array( |
77 | 77 | 'options' => wpinv_get_country_list(), |
78 | - 'name' => esc_attr( $field_name ), |
|
79 | - 'id' => sanitize_html_class( $field_name ) . $uniqid, |
|
80 | - 'value' => esc_attr( $country ), |
|
78 | + 'name' => esc_attr($field_name), |
|
79 | + 'id' => sanitize_html_class($field_name) . $uniqid, |
|
80 | + 'value' => esc_attr($country), |
|
81 | 81 | 'placeholder' => $placeholder, |
82 | - 'required' => ! empty( $address_field['required'] ), |
|
83 | - 'label' => wp_kses_post( $label ), |
|
82 | + 'required' => !empty($address_field['required']), |
|
83 | + 'label' => wp_kses_post($label), |
|
84 | 84 | 'label_type' => 'vertical', |
85 | 85 | 'help_text' => $description, |
86 | 86 | 'class' => 'getpaid-address-field wpinv_country', |
@@ -94,7 +94,7 @@ discard block |
||
94 | 94 | true |
95 | 95 | ); |
96 | 96 | |
97 | - if ( wpinv_should_validate_vat_number() ) { |
|
97 | + if (wpinv_should_validate_vat_number()) { |
|
98 | 98 | |
99 | 99 | aui()->input( |
100 | 100 | array( |
@@ -103,7 +103,7 @@ discard block |
||
103 | 103 | 'id' => "shipping-toggle$uniqid", |
104 | 104 | 'wrap_class' => 'getpaid-address-field-wrapper__address-confirm mt-1 d-none', |
105 | 105 | 'required' => false, |
106 | - 'label' => __( 'I certify that I live in the country selected above', 'invoicing' ) . "<span class='text-danger'> *</span>", |
|
106 | + 'label' => __('I certify that I live in the country selected above', 'invoicing') . "<span class='text-danger'> *</span>", |
|
107 | 107 | 'value' => 1, |
108 | 108 | 'checked' => true, |
109 | 109 | 'class' => 'w-auto', |
@@ -118,9 +118,9 @@ discard block |
||
118 | 118 | } |
119 | 119 | |
120 | 120 | // Display the state. |
121 | - elseif ( 'wpinv_state' == $address_field['name'] ) { |
|
121 | + elseif ('wpinv_state' == $address_field['name']) { |
|
122 | 122 | |
123 | - if ( empty( $value ) ) { |
|
123 | + if (empty($value)) { |
|
124 | 124 | $value = wpinv_get_default_state(); |
125 | 125 | } |
126 | 126 | |
@@ -130,7 +130,7 @@ discard block |
||
130 | 130 | $placeholder, |
131 | 131 | $label, |
132 | 132 | $description, |
133 | - ! empty( $address_field['required'] ), |
|
133 | + !empty($address_field['required']), |
|
134 | 134 | $wrap_class, |
135 | 135 | $field_name, |
136 | 136 | true |
@@ -138,8 +138,8 @@ discard block |
||
138 | 138 | |
139 | 139 | } else { |
140 | 140 | |
141 | - $key = str_replace( 'wpinv_', '', $address_field['name'] ); |
|
142 | - $key = esc_attr( str_replace( '_', '-', $key ) ); |
|
141 | + $key = str_replace('wpinv_', '', $address_field['name']); |
|
142 | + $key = esc_attr(str_replace('_', '-', $key)); |
|
143 | 143 | $autocomplete = ''; |
144 | 144 | $replacements = array( |
145 | 145 | 'zip' => 'postal-code', |
@@ -152,37 +152,37 @@ discard block |
||
152 | 152 | ); |
153 | 153 | |
154 | 154 | |
155 | - if ( isset( $replacements[ $key ] ) ) { |
|
155 | + if (isset($replacements[$key])) { |
|
156 | 156 | $autocomplete = array( |
157 | - 'autocomplete' => "$field_type {$replacements[ $key ]}", |
|
157 | + 'autocomplete' => "$field_type {$replacements[$key]}", |
|
158 | 158 | ); |
159 | 159 | } |
160 | 160 | |
161 | 161 | $append = ''; |
162 | 162 | |
163 | - if ( 'billing' === $field_type && wpinv_should_validate_vat_number() && 'vat-number' === $key ) { |
|
164 | - $valid = esc_attr__( 'Valid', 'invoicing' ); |
|
165 | - $invalid = esc_attr__( 'Invalid', 'invoicing' ); |
|
166 | - $validate = esc_attr__( 'Validate', 'invoicing' ); |
|
163 | + if ('billing' === $field_type && wpinv_should_validate_vat_number() && 'vat-number' === $key) { |
|
164 | + $valid = esc_attr__('Valid', 'invoicing'); |
|
165 | + $invalid = esc_attr__('Invalid', 'invoicing'); |
|
166 | + $validate = esc_attr__('Validate', 'invoicing'); |
|
167 | 167 | $append = "<span class='btn btn-primary getpaid-vat-number-validate' data-valid='$valid' data-invalid='$invalid' data-validate='$validate'>$validate</span>"; |
168 | 168 | } |
169 | 169 | |
170 | - if ( 'billing' === $field_type ) { |
|
171 | - $description .= '<div class="getpaid-error-' . esc_attr( $field_name ) . ' getpaid-custom-payment-form-errors alert alert-danger d-none"></div>'; |
|
170 | + if ('billing' === $field_type) { |
|
171 | + $description .= '<div class="getpaid-error-' . esc_attr($field_name) . ' getpaid-custom-payment-form-errors alert alert-danger d-none"></div>'; |
|
172 | 172 | } |
173 | 173 | |
174 | 174 | aui()->input( |
175 | 175 | array( |
176 | - 'name' => esc_attr( $field_name ), |
|
177 | - 'id' => sanitize_html_class( $field_name ) . $uniqid, |
|
178 | - 'required' => ! empty( $address_field['required'] ), |
|
176 | + 'name' => esc_attr($field_name), |
|
177 | + 'id' => sanitize_html_class($field_name) . $uniqid, |
|
178 | + 'required' => !empty($address_field['required']), |
|
179 | 179 | 'placeholder' => $placeholder, |
180 | - 'label' => wp_kses_post( $label ), |
|
180 | + 'label' => wp_kses_post($label), |
|
181 | 181 | 'label_type' => 'vertical', |
182 | 182 | 'help_text' => $description, |
183 | 183 | 'type' => 'text', |
184 | - 'value' => esc_attr( $value ), |
|
185 | - 'class' => 'getpaid-address-field ' . esc_attr( $address_field['name'] ), |
|
184 | + 'value' => esc_attr($value), |
|
185 | + 'class' => 'getpaid-address-field ' . esc_attr($address_field['name']), |
|
186 | 186 | 'wrap_class' => "$wrap_class getpaid-address-field-wrapper__$key", |
187 | 187 | 'label_class' => 'getpaid-address-field-label getpaid-address-field-label__' . $key, |
188 | 188 | 'extra_attributes' => $autocomplete, |
@@ -193,7 +193,7 @@ discard block |
||
193 | 193 | |
194 | 194 | } |
195 | 195 | |
196 | - do_action( 'getpaid_payment_form_address_field_after_' . $address_field['name'], $field_type, $address_field ); |
|
196 | + do_action('getpaid_payment_form_address_field_after_' . $address_field['name'], $field_type, $address_field); |
|
197 | 197 | } |
198 | 198 | |
199 | 199 | echo '</div>'; |
@@ -7,14 +7,14 @@ |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | -if ( empty( $text ) ) { |
|
13 | - $text = __( 'Your IP address is:', 'invoicing' ); |
|
12 | +if (empty($text)) { |
|
13 | + $text = __('Your IP address is:', 'invoicing'); |
|
14 | 14 | } |
15 | 15 | |
16 | 16 | ?> |
17 | 17 | <div class="form-group mb-3 getpaid-ip-info"> |
18 | - <span><?php echo wp_kses_post( $text ); ?></span> |
|
19 | - <strong><?php echo esc_html( wpinv_get_ip() ); ?></strong> |
|
18 | + <span><?php echo wp_kses_post($text); ?></span> |
|
19 | + <strong><?php echo esc_html(wpinv_get_ip()); ?></strong> |
|
20 | 20 | </div> |
@@ -8,20 +8,20 @@ discard block |
||
8 | 8 | * @var GetPaid_Payment_Form $form The current payment form |
9 | 9 | */ |
10 | 10 | |
11 | -defined( 'ABSPATH' ) || exit; |
|
11 | +defined('ABSPATH') || exit; |
|
12 | 12 | |
13 | -if ( ! getpaid_has_published_discount() ) { |
|
13 | +if (!getpaid_has_published_discount()) { |
|
14 | 14 | return; |
15 | 15 | } |
16 | 16 | |
17 | -if ( ! empty( $description ) ) { |
|
17 | +if (!empty($description)) { |
|
18 | 18 | $description = "<small class='form-text text-muted'>$description</small>"; |
19 | 19 | } else { |
20 | 20 | $description = ''; |
21 | 21 | } |
22 | 22 | |
23 | 23 | $discount_code = ''; |
24 | -if ( ! empty( $form->invoice ) ) { |
|
24 | +if (!empty($form->invoice)) { |
|
25 | 25 | $discount_code = $form->invoice->get_discount_code(); |
26 | 26 | } |
27 | 27 | |
@@ -30,12 +30,12 @@ discard block |
||
30 | 30 | <div class="form-group mb-3"> |
31 | 31 | <div class="getpaid-discount-field border rounded p-3"> |
32 | 32 | <div class="getpaid-discount-field-inner d-flex flex-column flex-md-row"> |
33 | - <input name="discount" placeholder="<?php echo esc_attr( $input_label ); ?>" value="<?php echo esc_attr( $discount_code ); ?>" class="form-control mr-2 mb-2 getpaid-discount-field-input" style="flex: 1;" type="text"> |
|
34 | - <a href="#" class="btn btn-secondary submit-button mb-2 getpaid-discount-button"><?php echo esc_html( $button_label ); ?></a> |
|
33 | + <input name="discount" placeholder="<?php echo esc_attr($input_label); ?>" value="<?php echo esc_attr($discount_code); ?>" class="form-control mr-2 mb-2 getpaid-discount-field-input" style="flex: 1;" type="text"> |
|
34 | + <a href="#" class="btn btn-secondary submit-button mb-2 getpaid-discount-button"><?php echo esc_html($button_label); ?></a> |
|
35 | 35 | </div> |
36 | - <?php echo wp_kses_post( $description ); ?> |
|
36 | + <?php echo wp_kses_post($description); ?> |
|
37 | 37 | <div class="getpaid-custom-payment-form-errors alert alert-danger d-none"></div> |
38 | - <div class="getpaid-custom-payment-form-success alert alert-success d-none"><?php esc_html_e( 'Discount code applied!', 'invoicing' ); ?></div> |
|
38 | + <div class="getpaid-custom-payment-form-success alert alert-success d-none"><?php esc_html_e('Discount code applied!', 'invoicing'); ?></div> |
|
39 | 39 | </div> |
40 | 40 | </div> |
41 | 41 |
@@ -7,13 +7,13 @@ |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | -if ( empty( $text ) ) { |
|
13 | - $text = __( 'Total to pay:', 'invoicing' ); |
|
12 | +if (empty($text)) { |
|
13 | + $text = __('Total to pay:', 'invoicing'); |
|
14 | 14 | } |
15 | 15 | ?> |
16 | 16 | <div class="form-group mb-3 mt-4"> |
17 | - <strong><?php echo esc_html( $text ); ?></strong> |
|
17 | + <strong><?php echo esc_html($text); ?></strong> |
|
18 | 18 | <span class="getpaid-checkout-total-payable"></span> |
19 | 19 | </div> |
@@ -7,31 +7,31 @@ |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | 12 | // Prepare the selectable items. |
13 | 13 | $selectable = array(); |
14 | -foreach ( $form->get_items() as $item ) { |
|
15 | - if ( ! $item->is_required ) { |
|
16 | - $selectable[ $item->get_id() ] = $item->get_name() . ' — ' . wpinv_price( $item->get_initial_price() ); |
|
14 | +foreach ($form->get_items() as $item) { |
|
15 | + if (!$item->is_required) { |
|
16 | + $selectable[$item->get_id()] = $item->get_name() . ' — ' . wpinv_price($item->get_initial_price()); |
|
17 | 17 | } |
18 | 18 | } |
19 | 19 | |
20 | -if ( empty( $selectable ) ) { |
|
20 | +if (empty($selectable)) { |
|
21 | 21 | return; |
22 | 22 | } |
23 | 23 | |
24 | 24 | echo '<div class="getpaid-payment-form-items-checkbox form-group mb-3">'; |
25 | 25 | |
26 | -foreach ( $selectable as $item_id => $item_name ) { |
|
26 | +foreach ($selectable as $item_id => $item_name) { |
|
27 | 27 | |
28 | - $is_checked = get_post_meta( $item_id, 'selected_by_default', true ); |
|
28 | + $is_checked = get_post_meta($item_id, 'selected_by_default', true); |
|
29 | 29 | |
30 | 30 | aui()->input( |
31 | 31 | array( |
32 | 32 | 'type' => 'checkbox', |
33 | 33 | 'name' => 'getpaid-payment-form-selected-item', |
34 | - 'id' => 'getpaid-payment-form-selected-item' . uniqid( '_' ) . $item_id, |
|
34 | + 'id' => 'getpaid-payment-form-selected-item' . uniqid('_') . $item_id, |
|
35 | 35 | 'label' => $item_name, |
36 | 36 | 'value' => $item_id, |
37 | 37 | 'no_wrap' => true, |
@@ -7,11 +7,11 @@ |
||
7 | 7 | * @version 1.0.19 |
8 | 8 | */ |
9 | 9 | |
10 | -defined( 'ABSPATH' ) || exit; |
|
10 | +defined('ABSPATH') || exit; |
|
11 | 11 | |
12 | 12 | ?> |
13 | 13 | |
14 | 14 | <div class='form-group mb-3'> |
15 | - <label :for="active_form_element.id + '_edit'"><?php esc_html_e( 'The total payable text', 'invoicing' ); ?></label> |
|
15 | + <label :for="active_form_element.id + '_edit'"><?php esc_html_e('The total payable text', 'invoicing'); ?></label> |
|
16 | 16 | <textarea :id="active_form_element.id + '_edit'" v-model='active_form_element.text' class='form-control' rows='3'></textarea> |
17 | 17 | </div> |