PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.7.4
GiveWP – Donation Plugin and Fundraising Platform v2.7.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / includes / payments / backward-compatibility.php
give / includes / payments Last commit date
actions.php 6 years ago backward-compatibility.php 6 years ago class-give-payment.php 6 years ago class-give-sequential-donation-number.php 6 years ago class-payment-stats.php 6 years ago class-payments-query.php 6 years ago functions.php 6 years ago
backward-compatibility.php
709 lines
1 <?php
2 /**
3 * Split _give_payment_meta to new Give core meta_keys.
4 *
5 * @since 2.0
6 *
7 * @param $object_id
8 * @param array $meta_value
9 *
10 * @return void
11 */
12 function _give_20_bc_split_and_save_give_payment_meta( $object_id, $meta_value ) {
13 // Bailout
14 if ( empty( $meta_value ) ) {
15 return;
16 } elseif ( ! is_array( $meta_value ) ) {
17 $meta_value = array();
18 }
19
20 remove_filter( 'get_post_metadata', '_give_20_bc_get_new_payment_meta', 10 );
21
22 // Date payment meta.
23 if ( ! empty( $meta_value['date'] ) ) {
24 give_update_meta( $object_id, '_give_payment_date', $meta_value['date'] );
25 }
26
27 // Currency payment meta.
28 if ( ! empty( $meta_value['currency'] ) ) {
29 give_update_meta( $object_id, '_give_payment_currency', $meta_value['currency'] );
30 }
31
32 // User information.
33 if ( ! empty( $meta_value['user_info'] ) ) {
34 // Donor first name.
35 if ( ! empty( $meta_value['user_info']['first_name'] ) ) {
36 give_update_meta( $object_id, '_give_donor_billing_first_name', $meta_value['user_info']['first_name'] );
37 }
38
39 // Donor last name.
40 if ( ! empty( $meta_value['user_info']['last_name'] ) ) {
41 give_update_meta( $object_id, '_give_donor_billing_last_name', $meta_value['user_info']['last_name'] );
42 }
43
44 // Donor address payment meta.
45 if ( ! empty( $meta_value['user_info']['address'] ) ) {
46
47 // Address1.
48 if ( ! empty( $meta_value['user_info']['address']['line1'] ) ) {
49 give_update_meta( $object_id, '_give_donor_billing_address1', $meta_value['user_info']['address']['line1'] );
50 }
51
52 // Address2.
53 if ( ! empty( $meta_value['user_info']['address']['line2'] ) ) {
54 give_update_meta( $object_id, '_give_donor_billing_address2', $meta_value['user_info']['address']['line2'] );
55 }
56
57 // City.
58 if ( ! empty( $meta_value['user_info']['address']['city'] ) ) {
59 give_update_meta( $object_id, '_give_donor_billing_city', $meta_value['user_info']['address']['city'] );
60 }
61
62 // Zip.
63 if ( ! empty( $meta_value['user_info']['address']['zip'] ) ) {
64 give_update_meta( $object_id, '_give_donor_billing_zip', $meta_value['user_info']['address']['zip'] );
65 }
66
67 // State.
68 if ( ! empty( $meta_value['user_info']['address']['state'] ) ) {
69 give_update_meta( $object_id, '_give_donor_billing_state', $meta_value['user_info']['address']['state'] );
70 }
71
72 // Country.
73 if ( ! empty( $meta_value['user_info']['address']['country'] ) ) {
74 give_update_meta( $object_id, '_give_donor_billing_country', $meta_value['user_info']['address']['country'] );
75 }
76 }
77 }// End if().
78
79 add_filter( 'get_post_metadata', '_give_20_bc_get_new_payment_meta', 10, 5 );
80 }
81
82 /**
83 * Add backward compatibility to get meta value of _give_payment_meta meta key.
84 *
85 * @since 2.0
86 *
87 * @param $object_id
88 * @param array $meta_value
89 *
90 * @return array
91 */
92 function _give_20_bc_give_payment_meta_value( $object_id, $meta_value ) {
93 $cache_key = "_give_payment_meta_{$object_id}";
94 $cache = Give_Cache::get_db_query( $cache_key );
95
96 if ( ! is_null( $cache ) ) {
97 return $cache;
98 }
99
100 // Set default value to array.
101 if ( ! is_array( $meta_value ) ) {
102 $meta_value = array();
103 }
104
105 // Donation key.
106 $meta_value['key'] = give_get_meta( $object_id, '_give_payment_purchase_key', true );
107
108 // Donation form.
109 $meta_value['form_title'] = give_get_meta( $object_id, '_give_payment_form_title', true );
110
111 // Donor email.
112 $meta_value['email'] = give_get_meta( $object_id, '_give_payment_donor_email', true );
113 $meta_value['email'] = ! empty( $meta_value['email'] ) ?
114 $meta_value['email'] :
115 Give()->donors->get_column( 'email', give_get_payment_donor_id( $object_id ) );
116
117 // Form id.
118 $meta_value['form_id'] = give_get_meta( $object_id, '_give_payment_form_id', true );
119
120 // Price id.
121 $meta_value['price_id'] = give_get_meta( $object_id, '_give_payment_price_id', true );
122
123 // Date.
124 $meta_value['date'] = give_get_meta( $object_id, '_give_payment_date', true );
125 $meta_value['date'] = ! empty( $meta_value['date'] ) ?
126 $meta_value['date'] :
127 get_post_field( 'post_date', $object_id );
128
129 // Currency.
130 $meta_value['currency'] = give_get_meta( $object_id, '_give_payment_currency', true );
131
132 // Decode donor data.
133 $donor_names = give_get_donor_name_by( give_get_meta( $object_id, '_give_payment_donor_id', true ), 'donor' );
134 $donor_names = explode( ' ', $donor_names, 2 );
135
136 // Donor first name.
137 $donor_data['first_name'] = give_get_meta( $object_id, '_give_donor_billing_first_name', true );
138 $donor_data['first_name'] = ! empty( $donor_data['first_name'] ) ?
139 $donor_data['first_name'] :
140 $donor_names[0];
141
142 // Donor last name.
143 $donor_data['last_name'] = give_get_meta( $object_id, '_give_donor_billing_last_name', true );
144 $donor_data['last_name'] = ! empty( $donor_data['last_name'] ) ?
145 $donor_data['last_name'] :
146 ( isset( $donor_names[1] ) ? $donor_names[1] : '' );
147
148 // Donor email.
149 $donor_data['email'] = $meta_value['email'];
150
151 // User ID.
152 $donor_data['id'] = give_get_payment_user_id( $object_id );
153
154 $donor_data['address'] = false;
155
156 // Address1.
157 if ( $address1 = give_get_meta( $object_id, '_give_donor_billing_address1', true ) ) {
158 $donor_data['address']['line1'] = $address1;
159 }
160
161 // Address2.
162 if ( $address2 = give_get_meta( $object_id, '_give_donor_billing_address2', true ) ) {
163 $donor_data['address']['line2'] = $address2;
164 }
165
166 // City.
167 if ( $city = give_get_meta( $object_id, '_give_donor_billing_city', true ) ) {
168 $donor_data['address']['city'] = $city;
169 }
170
171 // Zip.
172 if ( $zip = give_get_meta( $object_id, '_give_donor_billing_zip', true ) ) {
173 $donor_data['address']['zip'] = $zip;
174 }
175
176 // State.
177 if ( $state = give_get_meta( $object_id, '_give_donor_billing_state', true ) ) {
178 $donor_data['address']['state'] = $state;
179 }
180
181 // Country.
182 if ( $country = give_get_meta( $object_id, '_give_donor_billing_country', true ) ) {
183 $donor_data['address']['country'] = $country;
184 }
185
186 $meta_value['user_info'] = maybe_unserialize( $donor_data );
187
188 Give_Cache::set_db_query( $cache_key, $meta_value );
189
190 return $meta_value;
191 }
192
193 /**
194 * Add backward compatibility old meta while saving.
195 * 1. _give_payment_meta (split into multiple single meta keys)
196 * 2. _give_payment_user_email (renamed to _give_payment_donor_email)
197 * 3. _give_payment_customer_id (renamed to _give_payment_donor_id)
198 * 4. give_payment_user_ip (renamed to give_payment_donor_ip)
199 *
200 * @since 2.0
201 *
202 * @param null|bool $check Whether to allow updating metadata for the given type.
203 * @param int $object_id Object ID.
204 * @param string $meta_key Meta key.
205 * @param mixed $meta_value Meta value. Must be serializable if non-scalar.
206 * @param mixed $prev_value Optional. If specified, only update existing
207 * metadata entries with the specified value.
208 * Otherwise, update all entries.
209 *
210 * @return mixed
211 */
212 function _give_20_bc_saving_old_payment_meta( $check, $object_id, $meta_key, $meta_value, $prev_value ) {
213 // Bailout.
214 if ( 'give_payment' !== get_post_type( $object_id ) ) {
215 return $check;
216 }
217
218 // Bailout.
219 if (
220 ! in_array(
221 $meta_key,
222 array(
223 '_give_payment_meta',
224 '_give_payment_user_email',
225 '_give_payment_customer_id',
226 'give_payment_user_ip',
227 )
228 )
229 ) {
230 return $check;
231 }
232
233 if ( '_give_payment_meta' === $meta_key ) {
234 _give_20_bc_split_and_save_give_payment_meta( $object_id, $meta_value );
235 } elseif ( '_give_payment_user_email' === $meta_key ) {
236 give_update_meta( $object_id, '_give_payment_donor_email', $meta_value );
237 $check = true;
238 } elseif ( '_give_payment_customer_id' === $meta_key ) {
239 give_update_meta( $object_id, '_give_payment_donor_id', $meta_value );
240 $check = true;
241 } elseif ( 'give_payment_user_ip' === $meta_key ) {
242 give_update_meta( $object_id, '_give_payment_donor_ip', $meta_value );
243 $check = true;
244 }
245
246 return $check;
247 }
248
249 add_filter( 'update_post_metadata', '_give_20_bc_saving_old_payment_meta', 10, 5 );
250
251
252 /**
253 * Add backward compatibility to get old payment meta.
254 *
255 * @since 2.0
256 *
257 * @param $check
258 * @param $object_id
259 * @param $meta_key
260 * @param $single
261 *
262 * @return mixed
263 */
264 function _give_20_bc_get_old_payment_meta( $check, $object_id, $meta_key, $single ) {
265 global $wpdb;
266
267 // Early exit.
268 if ( 'give_payment' !== get_post_type( $object_id ) ) {
269 return $check;
270 }
271 // Deprecated meta keys.
272 $old_meta_keys = array(
273 '_give_payment_customer_id',
274 '_give_payment_user_email',
275 '_give_payment_user_ip',
276 );
277
278 // Add _give_payment_meta to backward compatibility
279 if ( ! give_has_upgrade_completed( 'v20_upgrades_payment_metadata' ) ) {
280 $old_meta_keys[] = '_give_payment_meta';
281 }
282
283 // Bailout.
284 if ( ! in_array( $meta_key, $old_meta_keys ) ) {
285 return $check;
286 }
287
288 $cache_key = "{$meta_key}_{$object_id}";
289 $check = Give_Cache::get_db_query( $cache_key );
290
291 if ( is_null( $check ) ) {
292 switch ( $meta_key ) {
293
294 // Handle old meta keys.
295 case '_give_payment_meta':
296 remove_filter( 'get_post_metadata', '_give_20_bc_get_old_payment_meta' );
297
298 // if ( $meta_value = give_get_meta( $object_id, '_give_payment_meta' ) ) {
299 $meta_value = ! empty( $meta_value ) ?
300 current( $meta_value ) :
301 (array) maybe_unserialize(
302 $wpdb->get_var(
303 $wpdb->prepare(
304 "
305 SELECT meta_value
306 FROM $wpdb->postmeta
307 WHERE post_id=%d
308 AND meta_key=%s
309 ",
310 $object_id,
311 '_give_payment_meta'
312 )
313 )
314 );
315 $check = _give_20_bc_give_payment_meta_value( $object_id, $meta_value );
316 // }
317
318 add_filter( 'get_post_metadata', '_give_20_bc_get_old_payment_meta', 10, 5 );
319
320 break;
321
322 case '_give_payment_customer_id':
323 if ( $donor_id = give_get_meta( $object_id, '_give_payment_donor_id', $single ) ) {
324 $check = $donor_id;
325 }
326 break;
327
328 case '_give_payment_user_email':
329 if ( $donor_email = give_get_meta( $object_id, '_give_payment_donor_email', $single ) ) {
330 $check = $donor_email;
331 }
332 break;
333
334 case '_give_payment_user_ip':
335 if ( $donor_ip = give_get_meta( $object_id, '_give_payment_donor_ip', $single ) ) {
336 $check = $donor_ip;
337 }
338 break;
339 }// End switch().
340
341 Give_Cache::set_db_query( $cache_key, $check );
342 }
343
344 // Put result in an array on zero index.
345 if ( ! is_null( $check ) ) {
346 $check = array( $check );
347 }
348
349 return $check;
350 }
351
352 add_filter( 'get_post_metadata', '_give_20_bc_get_old_payment_meta', 10, 5 );
353
354
355 /**
356 * Add backward compatibility to get new payment meta.
357 *
358 * @since 2.0
359 *
360 * @param $check
361 * @param $object_id
362 * @param $meta_key
363 * @param $single
364 *
365 * @return mixed
366 */
367 function _give_20_bc_get_new_payment_meta( $check, $object_id, $meta_key, $single ) {
368 global $wpdb;
369
370 // Early exit.
371 if ( 'give_payment' !== get_post_type( $object_id ) ) {
372 return $check;
373 }
374
375 $new_meta_keys = array(
376 '_give_payment_donor_id',
377 '_give_payment_donor_email',
378 '_give_payment_donor_ip',
379 '_give_donor_billing_first_name',
380 '_give_donor_billing_last_name',
381 '_give_donor_billing_address1',
382 '_give_donor_billing_address2',
383 '_give_donor_billing_city',
384 '_give_donor_billing_zip',
385 '_give_donor_billing_state',
386 '_give_donor_billing_country',
387 '_give_payment_date',
388 '_give_payment_currency',
389 );
390
391 // metadata_exists fx will cause of firing get_post_metadata filter again so remove it to prevent infinite loop.
392 remove_filter( 'get_post_metadata', '_give_20_bc_get_new_payment_meta' );
393
394 // Bailout.
395 if (
396 ! in_array( $meta_key, $new_meta_keys ) ||
397 metadata_exists( 'post', $object_id, $meta_key )
398 ) {
399 add_filter( 'get_post_metadata', '_give_20_bc_get_new_payment_meta', 10, 5 );
400
401 return $check;
402 }
403
404 add_filter( 'get_post_metadata', '_give_20_bc_get_new_payment_meta', 10, 5 );
405
406 $cache_key = "{$meta_key}_{$object_id}";
407 $check = Give_Cache::get_db_query( $cache_key );
408
409 if ( is_null( $check ) ) {
410 switch ( $meta_key ) {
411
412 // Handle new meta keys.
413 case '_give_payment_donor_id':
414 $check = $wpdb->get_var(
415 $wpdb->prepare(
416 "SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id=%d AND meta_key=%s",
417 $object_id,
418 '_give_payment_customer_id'
419 )
420 );
421 break;
422
423 case '_give_payment_donor_email':
424 $check = $wpdb->get_var(
425 $wpdb->prepare(
426 "SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id=%d AND meta_key=%s",
427 $object_id,
428 '_give_payment_user_email'
429 )
430 );
431 break;
432
433 case '_give_payment_donor_ip':
434 $check = $wpdb->get_var(
435 $wpdb->prepare(
436 "SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id=%s AND meta_key=%s",
437 $object_id,
438 '_give_payment_user_ip'
439 )
440 );
441 break;
442
443 case '_give_donor_billing_first_name':
444 case '_give_donor_billing_last_name':
445 case '_give_donor_billing_address1':
446 case '_give_donor_billing_address2':
447 case '_give_donor_billing_city':
448 case '_give_donor_billing_zip':
449 case '_give_donor_billing_state':
450 case '_give_donor_billing_country':
451 case '_give_payment_date':
452 case '_give_payment_currency':
453 $donation_meta = Give_Cache::get_db_query( "_give_payment_meta_{$object_id}" );
454
455 if ( is_null( $donation_meta ) ) {
456 $donation_meta = $wpdb->get_var(
457 $wpdb->prepare(
458 "SELECT meta_value FROM {$wpdb->postmeta} WHERE post_id=%d AND meta_key=%s",
459 $object_id,
460 '_give_payment_meta'
461 )
462 );
463 $donation_meta = maybe_unserialize( $donation_meta );
464 $donation_meta = ! is_array( $donation_meta ) ? array() : $donation_meta;
465 Give_Cache::set_db_query( "_give_payment_meta_{$object_id}", $donation_meta );
466 }
467
468 // Get results.
469 if ( empty( $donation_meta ) ) {
470 $check = '';
471 } elseif ( in_array( $meta_key, array( '_give_payment_date', '_give_payment_currency' ) ) ) {
472 $payment_meta_key = str_replace( '_give_payment_', '', $meta_key );
473
474 if ( isset( $donation_meta[ $payment_meta_key ] ) ) {
475 $check = $donation_meta[ $payment_meta_key ];
476 }
477 } else {
478 $payment_meta_key = str_replace( '_give_donor_billing_', '', $meta_key );
479
480 switch ( $payment_meta_key ) {
481 case 'address1':
482 if ( isset( $donation_meta['user_info']['address']['line1'] ) ) {
483 $check = $donation_meta['user_info']['address']['line1'];
484 }
485 break;
486
487 case 'address2':
488 if ( isset( $donation_meta['user_info']['address']['line2'] ) ) {
489 $check = $donation_meta['user_info']['address']['line2'];
490 }
491 break;
492
493 case 'first_name':
494 if ( isset( $donation_meta['user_info']['first_name'] ) ) {
495 $check = $donation_meta['user_info']['first_name'];
496 }
497 break;
498
499 case 'last_name':
500 if ( isset( $donation_meta['user_info']['last_name'] ) ) {
501 $check = $donation_meta['user_info']['last_name'];
502 }
503 break;
504
505 default:
506 if ( isset( $donation_meta['user_info']['address'][ $payment_meta_key ] ) ) {
507 $check = $donation_meta['user_info']['address'][ $payment_meta_key ];
508 }
509 }
510 }
511
512 break;
513 }// End switch().
514
515 // Set cache.
516 Give_Cache::set_db_query( $cache_key, $check );
517 }
518
519 // Put result in an array on zero index.
520 if ( ! $single ) {
521 $check = array( $check );
522 }
523
524 return $check;
525 }
526
527 // Apply filter only if upgrade does not complete yet.
528 if ( ! give_has_upgrade_completed( 'v20_upgrades_payment_metadata' ) ) {
529 add_filter( 'get_post_metadata', '_give_20_bc_get_new_payment_meta', 10, 5 );
530 }
531
532
533 /**
534 * Add support for old payment meta keys.
535 *
536 * @since 2.0
537 *
538 * @param WP_Query $query
539 *
540 * @return void
541 */
542 function _give_20_bc_support_deprecated_meta_key_query( $query ) {
543 $new_meta_keys = array(
544 '_give_payment_customer_id' => '_give_payment_donor_id',
545 '_give_payment_user_email' => '_give_payment_donor_email',
546 // '_give_payment_user_ip' => '_give_payment_donor_ip',
547 );
548
549 $deprecated_meta_keys = array_flip( $new_meta_keys );
550
551 // Set meta keys.
552 $meta_keys = array();
553
554 // Bailout.
555 if ( ! empty( $query->query_vars['meta_key'] ) ) {
556 if ( in_array( $query->query_vars['meta_key'], $new_meta_keys ) ) {
557 $meta_keys = $deprecated_meta_keys;
558 } elseif ( in_array( $query->query_vars['meta_key'], $deprecated_meta_keys ) ) {
559 $meta_keys = $new_meta_keys;
560 }
561
562 if ( ! empty( $meta_keys ) ) {
563 // Set meta_query
564 $query->set(
565 'meta_query',
566 array(
567 'relation' => 'OR',
568 array(
569 'key' => $query->query_vars['meta_key'],
570 'value' => $query->query_vars['meta_value'],
571 ),
572 array(
573 'key' => $meta_keys[ $query->query_vars['meta_key'] ],
574 'value' => $query->query_vars['meta_value'],
575 ),
576 )
577 );
578
579 // Unset single meta query.
580 unset( $query->query_vars['meta_key'] );
581 unset( $query->query_vars['meta_value'] );
582 }
583 } elseif (
584 ! empty( $query->query_vars['meta_query'] ) &&
585 ( 1 === count( $query->query_vars['meta_query'] ) )
586 ) {
587 $meta_query = current( $query->query_vars['meta_query'] );
588
589 if ( empty( $meta_query[0]['key'] ) ) {
590 return;
591 }
592
593 if ( in_array( $meta_query[0]['key'], $new_meta_keys ) ) {
594 $meta_keys = $deprecated_meta_keys;
595 } elseif ( in_array( $meta_query[0]['key'], $deprecated_meta_keys ) ) {
596 $meta_keys = $new_meta_keys;
597 } else {
598 return;
599 }
600
601 if ( ! empty( $meta_keys ) ) {
602 // Set meta_query
603 $query->set(
604 'meta_query',
605 array(
606 'relation' => 'OR',
607 array(
608 'key' => $query->query_vars['meta_query'][0]['key'],
609 'value' => $query->query_vars['meta_query'][0]['value'],
610 ),
611 array(
612 'key' => $meta_keys[ $query->query_vars['meta_query'][0]['key'] ],
613 'value' => $query->query_vars['meta_query'][0]['value'],
614 ),
615 )
616 );
617 }
618 }
619 }
620
621 // Apply filter only if upgrade does not complete.
622 if ( ! give_has_upgrade_completed( 'v20_upgrades_payment_metadata' ) ) {
623 add_action( 'pre_get_posts', '_give_20_bc_support_deprecated_meta_key_query' );
624 }
625
626 /**
627 * Save payment backward compatibility.
628 * Note: some addon still can use user_info in set payment meta
629 * we will use this info to set first name, last name and address of donor
630 *
631 * @since 2.0
632 *
633 * @param Give_Payment $payment
634 * @param string $key
635 */
636 function _give_20_bc_payment_save( $payment, $key ) {
637 switch ( $key ) {
638 case 'user_info':
639 if ( empty( $payment->user_info ) ) {
640 // Bailout.
641 break;
642 } elseif ( is_string( $payment->user_info ) ) {
643 // Check if value serialize.
644 $payment->user_info = maybe_unserialize( $payment->user_info );
645 }
646
647 // Save first name.
648 if ( isset( $payment->user_info['first_name'] ) ) {
649 $payment->update_meta( '_give_donor_billing_first_name', $payment->user_info['first_name'] );
650 }
651
652 // Save last name.
653 if ( isset( $payment->user_info['last_name'] ) ) {
654 $payment->update_meta( '_give_donor_billing_last_name', $payment->user_info['last_name'] );
655 }
656
657 // Save address.
658 if ( ! empty( $payment->user_info['address'] ) ) {
659 foreach ( $payment->user_info['address'] as $address_name => $address ) {
660 switch ( $address_name ) {
661 case 'line1':
662 $payment->update_meta( '_give_donor_billing_address1', $address );
663 break;
664
665 case 'line2':
666 $payment->update_meta( '_give_donor_billing_address2', $address );
667 break;
668
669 default:
670 $payment->update_meta( "_give_donor_billing_{$address_name}", $address );
671 }
672 }
673 }
674
675 break;
676 }
677 }
678
679
680 // Apply filter only if upgrade complete.
681 if ( give_has_upgrade_completed( 'v20_upgrades_payment_metadata' ) ) {
682 add_action( 'give_payment_save', '_give_20_bc_payment_save', 10, 2 );
683 }
684
685
686 /**
687 * Delete pre upgrade cache for donations.
688 *
689 * @since 2.0
690 *
691 * @param $check
692 * @param $object_id
693 *
694 * @return mixed
695 */
696 function __give_20_bc_flush_cache( $check, $object_id ) {
697 if ( 'give_payment' === get_post_type( $object_id ) ) {
698 Give_Cache::delete_group( $object_id, 'give-donations' );
699 }
700
701 return $check;
702 }
703
704 // Apply only if upgrade does not complete.
705 if ( ! give_has_upgrade_completed( 'v20_move_metadata_into_new_table' ) ) {
706 add_action( 'update_post_metadata', '__give_20_bc_flush_cache', 9999, 2 );
707 add_action( 'add_post_metadata', '__give_20_bc_flush_cache', 9999, 2 );
708 }
709