PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.5.12
GiveWP – Donation Plugin and Fundraising Platform v2.5.12
4.16.3 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 / class-give-logging.php
give / includes Last commit date
admin 6 years ago api 6 years ago database 6 years ago deprecated 6 years ago donors 6 years ago emails 6 years ago forms 6 years ago frontend 7 years ago gateways 6 years ago libraries 7 years ago payments 6 years ago actions.php 6 years ago ajax-functions.php 6 years ago class-give-async-process.php 7 years ago class-give-background-updater.php 6 years ago class-give-cache-setting.php 6 years ago class-give-cache.php 6 years ago class-give-cli-commands.php 6 years ago class-give-comment.php 7 years ago class-give-cron.php 6 years ago class-give-donate-form.php 6 years ago class-give-donor-wall-widget.php 6 years ago class-give-donor.php 6 years ago class-give-email-access.php 7 years ago class-give-license-handler.php 6 years ago class-give-logging.php 7 years ago class-give-readme-parser.php 7 years ago class-give-roles.php 6 years ago class-give-scripts.php 6 years ago class-give-session.php 6 years ago class-give-stats.php 7 years ago class-give-template-loader.php 8 years ago class-give-tooltips.php 7 years ago class-give-translation.php 8 years ago class-notices.php 6 years ago country-functions.php 6 years ago currencies-list.php 6 years ago currency-functions.php 7 years ago error-tracking.php 7 years ago filters.php 7 years ago formatting.php 6 years ago install.php 6 years ago login-register.php 7 years ago misc-functions.php 6 years ago plugin-compatibility.php 6 years ago post-types.php 6 years ago price-functions.php 7 years ago process-donation.php 6 years ago setting-functions.php 6 years ago shortcodes.php 6 years ago template-functions.php 6 years ago user-functions.php 6 years ago
class-give-logging.php
744 lines
1 <?php
2 /**
3 * Class for logging events and errors
4 *
5 * @package Give
6 * @subpackage Classes/Give_Logging
7 * @copyright Copyright (c) 2016, GiveWP
8 * @license https://opensource.org/licenses/gpl-license GNU Public License
9 * @since 1.0
10 */
11
12 // Exit if accessed directly.
13 if ( ! defined( 'ABSPATH' ) ) {
14 exit;
15 }
16
17 /**
18 * Give_Logging Class
19 *
20 * A general use class for logging events and errors.
21 *
22 * @since 1.0
23 */
24 class Give_Logging {
25 /**
26 * Logs data operation handler object.
27 *
28 * @since 2.0
29 * @access private
30 * @var Give_DB_Logs
31 */
32 public $log_db;
33
34 /**
35 * Log meta data operation handler object.
36 *
37 * @since 2.0
38 * @access private
39 * @var Give_DB_Log_Meta
40 */
41 public $logmeta_db;
42
43 /**
44 * Class Constructor
45 *
46 * Set up the Give Logging Class.
47 *
48 * @since 1.0
49 * @access public
50 */
51 public function __construct() {
52 /**
53 * Setup properties
54 */
55 $this->log_db = Give()->log_db;
56 $this->logmeta_db = Give()->logmeta_db;
57
58 /**
59 * Setup hooks.
60 */
61
62 add_action( 'save_post_give_payment', array( $this, 'background_process_delete_cache' ) );
63 add_action( 'save_post_give_forms', array( $this, 'background_process_delete_cache' ) );
64 add_action( 'save_post_give_log', array( $this, 'background_process_delete_cache' ) );
65 add_action( 'give_delete_log_cache', array( $this, 'delete_cache' ) );
66 add_action( 'update_log_metadata', array( $this, 'bc_200_set_payment_as_log_parent' ), 10, 4 );
67
68 // Backward compatibility.
69 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
70 // Create the log post type
71 add_action( 'init', array( $this, 'register_post_type' ), -2 );
72 }
73
74 // Create types taxonomy and default types
75 // @todo: remove this taxonomy, some addon use this taxonomy with there custom log post type for example: recurring
76 // Do not use this taxonomy with your log type because we will remove it in future releases.
77 add_action( 'init', array( $this, 'register_taxonomy' ), -2 );
78 }
79
80
81 /**
82 * Log Post Type
83 *
84 * Registers the 'give_log' Post Type.
85 *
86 * @since 1.0
87 * @access public
88 *
89 * @return void
90 */
91 public function register_post_type() {
92 /* Logs post type */
93 $log_args = array(
94 'labels' => array(
95 'name' => esc_html__( 'Logs', 'give' ),
96 ),
97 'public' => false,
98 'exclude_from_search' => true,
99 'publicly_queryable' => false,
100 'show_ui' => false,
101 'query_var' => false,
102 'rewrite' => false,
103 'capability_type' => 'post',
104 'supports' => array( 'title', 'editor' ),
105 'can_export' => true,
106 );
107
108 register_post_type( 'give_log', $log_args );
109 }
110
111 /**
112 * Log Type Taxonomy
113 *
114 * Registers the "Log Type" taxonomy. Used to determine the type of log entry.
115 *
116 * @since 1.0
117 * @access public
118 *
119 * @return void
120 */
121 public function register_taxonomy() {
122 register_taxonomy( 'give_log_type', 'give_log', array(
123 'public' => false,
124 ) );
125 }
126
127 /**
128 * Log Types
129 *
130 * Sets up the default log types and allows for new ones to be created.
131 *
132 * @since 1.0
133 * @access public
134 *
135 * @return array $terms
136 */
137 public function log_types() {
138 $terms = array(
139 'sale',
140 'gateway_error',
141 'api_request',
142 'update',
143 );
144
145 return apply_filters( 'give_log_types', $terms );
146 }
147
148 /**
149 * Check if a log type is valid
150 *
151 * Checks to see if the specified type is in the registered list of types.
152 *
153 * @since 1.0
154 * @access public
155 *
156 * @param string $type Log type.
157 *
158 * @return bool Whether log type is valid.
159 */
160 public function valid_type( $type ) {
161 return in_array( $type, $this->log_types() );
162 }
163
164 /**
165 * Create new log entry
166 *
167 * This is just a simple and fast way to log something. Use $this->insert_log()
168 * if you need to store custom meta data.
169 *
170 * @since 1.0
171 * @access public
172 *
173 * @param string $title Log entry title. Default is empty.
174 * @param string $message Log entry message. Default is empty.
175 * @param int $parent Log entry parent. Default is 0.
176 * @param string $type Log type. Default is empty string.
177 *
178 * @return int Log ID.
179 */
180 public function add( $title = '', $message = '', $parent = 0, $type = '' ) {
181 $log_data = array(
182 'post_title' => $title,
183 'post_content' => $message,
184 'post_parent' => $parent,
185 'log_type' => $type,
186 );
187
188 return $this->insert_log( $log_data );
189 }
190
191 /**
192 * Get Logs
193 *
194 * Retrieves log items for a particular object ID.
195 *
196 * @since 1.0
197 * @access public
198 *
199 * @param int $object_id Log object ID. Default is 0.
200 * @param string $type Log type. Default is empty string.
201 * @param int $paged Page number Default is null.
202 *
203 * @return array An array of the connected logs.
204 */
205 public function get_logs( $object_id = 0, $type = '', $paged = null ) {
206 return $this->get_connected_logs( array(
207 'log_parent' => $object_id,
208 'paged' => $paged,
209 'log_type' => $type,
210 ) );
211 }
212
213 /**
214 * Stores a log entry
215 *
216 * @since 1.0
217 * @access public
218 *
219 * @param array $log_data Log entry data.
220 * @param array $log_meta Log entry meta.
221 *
222 * @return int The ID of the newly created log item.
223 */
224 public function insert_log( $log_data = array(), $log_meta = array() ) {
225 $log_id = 0;
226
227 $defaults = array(
228 'log_parent' => 0,
229 'log_content' => '',
230 'log_type' => false,
231
232 // Backward compatibility.
233 'post_type' => 'give_log',
234 'post_status' => 'publish',
235 );
236
237 $args = wp_parse_args( $log_data, $defaults );
238 $this->bc_200_validate_params( $args, $log_meta );
239
240 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
241 global $wpdb;
242
243 // Backward Compatibility.
244 if ( ! $wpdb->get_var( "SELECT ID from {$this->log_db->table_name} ORDER BY id DESC LIMIT 1" ) ) {
245 $latest_log_id = $wpdb->get_var( "SELECT ID from $wpdb->posts ORDER BY id DESC LIMIT 1" );
246 $latest_log_id = empty( $latest_log_id ) ? 1 : ++ $latest_log_id;
247
248 $args['ID'] = $latest_log_id;
249 $this->log_db->insert( $args );
250 }
251 }
252
253 $log_id = $this->log_db->add( $args );
254
255 // Set log meta, if any
256 if ( $log_id && ! empty( $log_meta ) ) {
257 foreach ( (array) $log_meta as $key => $meta ) {
258 $this->logmeta_db->update_meta( $log_id, '_give_log_' . sanitize_key( $key ), $meta );
259 }
260 }
261
262
263 // Delete cache.
264 $this->delete_cache();
265
266 return $log_id;
267 }
268
269 /**
270 * Update and existing log item
271 *
272 * @since 1.0
273 * @access public
274 *
275 * @param array $log_data Log entry data.
276 * @param array $log_meta Log entry meta.
277 *
278 * @return bool|null True if successful, false otherwise.
279 */
280 public function update_log( $log_data = array(), $log_meta = array() ) {
281 $log_id = 0;
282
283 /**
284 * Fires before updating log entry.
285 *
286 * @since 1.0
287 *
288 * @param array $log_data Log entry data.
289 * @param array $log_meta Log entry meta.
290 */
291 do_action( 'give_pre_update_log', $log_data, $log_meta );
292
293 $defaults = array(
294 'log_parent' => 0,
295
296 // Backward compatibility.
297 'post_type' => 'give_log',
298 'post_status' => 'publish',
299 );
300
301 $args = wp_parse_args( $log_data, $defaults );
302 $this->bc_200_validate_params( $args, $log_meta );
303
304 // Store the log entry
305 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
306 // Backward compatibility.
307 $log_id = wp_update_post( $args );
308
309 if ( $log_id && ! empty( $log_meta ) ) {
310 foreach ( (array) $log_meta as $key => $meta ) {
311 if ( ! empty( $meta ) ) {
312 give_update_meta( $log_id, '_give_log_' . sanitize_key( $key ), $meta );
313 }
314 }
315 }
316 } else {
317 $log_id = $this->log_db->add( $args );
318
319 if ( $log_id && ! empty( $log_meta ) ) {
320 foreach ( (array) $log_meta as $key => $meta ) {
321 if ( ! empty( $meta ) ) {
322 $this->logmeta_db->update_meta( $log_id, '_give_log_' . sanitize_key( $key ), $meta );
323 }
324 }
325 }
326 }
327
328 /**
329 * Fires after updating log entry.
330 *
331 * @since 1.0
332 *
333 * @param int $log_id Log entry id.
334 * @param array $log_data Log entry data.
335 * @param array $log_meta Log entry meta.
336 */
337 do_action( 'give_post_update_log', $log_id, $log_data, $log_meta );
338 }
339
340 /**
341 * Retrieve all connected logs
342 *
343 * Used for retrieving logs related to particular items, such as a specific donation.
344 * For new table params check: Give_DB_Logs::get_column_defaults and Give_DB_Logs::get_sql#L262
345 *
346 * @since 1.0
347 * @since 2.0 Added new table logic.
348 * @access public
349 *
350 * @param array $args Query arguments.
351 *
352 * @return array|false Array if logs were found, false otherwise.
353 */
354 public function get_connected_logs( $args = array() ) {
355 $logs = array();
356
357 $defaults = array(
358 'number' => 20,
359 'paged' => get_query_var( 'paged' ),
360 'log_type' => false,
361
362 // Backward compatibility.
363 'post_type' => 'give_log',
364 'post_status' => 'publish',
365 );
366 $query_args = wp_parse_args( $args, $defaults );
367 $this->bc_200_validate_params( $query_args );
368
369 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
370 // Backward compatibility.
371 $logs = get_posts( $query_args );
372 $this->bc_200_add_new_properties( $logs );
373 } else {
374 $logs = $this->log_db->get_logs( $query_args );
375 }
376
377 return ( ! empty( $logs ) ? $logs : false );
378 }
379
380 /**
381 * Retrieve Log Count
382 *
383 * Retrieves number of log entries connected to particular object ID.
384 *
385 * @since 1.0
386 * @access public
387 *
388 * @param int $object_id Log object ID. Default is 0.
389 * @param string $type Log type. Default is empty string.
390 * @param array $meta_query Log meta query. Default is null.
391 * @param array $date_query Log data query. Default is null.
392 *
393 * @return int Log count.
394 */
395 public function get_log_count( $object_id = 0, $type = '', $meta_query = null, $date_query = null ) {
396 $logs_count = 0;
397
398 $query_args = array(
399 'number' => - 1,
400
401 // Backward comatibility.
402 'post_type' => 'give_log',
403 'post_status' => 'publish',
404 );
405
406 if ( $object_id ) {
407 $query_args['log_parent'] = $object_id;
408 }
409
410 if ( ! empty( $type ) && $this->valid_type( $type ) ) {
411 $query_args['log_type'] = $type;
412 }
413
414 if ( ! empty( $meta_query ) ) {
415 $query_args['meta_query'] = $meta_query;
416 }
417
418 if ( ! empty( $date_query ) ) {
419 $query_args['date_query'] = $date_query;
420 }
421
422 $this->bc_200_validate_params( $query_args );
423
424 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
425 // Backward compatibility.
426 $logs = new WP_Query( $query_args );
427 $logs_count = (int) $logs->post_count;
428 } else {
429 $logs_count = $this->log_db->count( $query_args );
430 }
431
432 return $logs_count;
433 }
434
435 /**
436 * Delete Logs
437 *
438 * Remove log entries connected to particular object ID.
439 *
440 * @since 1.0
441 * @access public
442 *
443 * @param int $object_id Log object ID. Default is 0.
444 * @param string $type Log type. Default is empty string.
445 * @param array $meta_query Log meta query. Default is null.
446 *
447 * @return void
448 */
449 public function delete_logs( $object_id = 0, $type = '', $meta_query = null ) {
450 $query_args = array(
451 'log_parent' => $object_id,
452 'number' => - 1,
453 'fields' => 'ID',
454
455 // Backward compatibility.
456 'post_type' => 'give_log',
457 'post_status' => 'publish',
458 );
459
460 if ( ! empty( $type ) && $this->valid_type( $type ) ) {
461 $query_args['log_type'] = $type;
462 }
463
464 if ( ! empty( $meta_query ) ) {
465 $query_args['meta_query'] = $meta_query;
466 }
467
468 $this->bc_200_validate_params( $query_args );
469
470 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
471 // Backward compatibility.
472 $logs = get_posts( $query_args );
473
474 if ( $logs ) {
475 foreach ( $logs as $log ) {
476 wp_delete_post( $log, true );
477 }
478 }
479 } else {
480 $logs = $this->log_db->get_logs( $query_args );
481
482 if ( $logs ) {
483 foreach ( $logs as $log ) {
484 if ( $this->log_db->delete( $log->ID ) ) {
485 $this->logmeta_db->delete_row( $log->ID );
486 }
487 }
488 }
489 }
490
491 $this->delete_cache();
492 }
493
494 /**
495 * Setup cron to delete log cache in background.
496 *
497 * @since 1.7
498 * @access public
499 *
500 * @param int $post_id
501 */
502 public function background_process_delete_cache( $post_id ) {
503 // Delete log cache immediately
504 wp_schedule_single_event( time() - 5, 'give_delete_log_cache' );
505 }
506
507 /**
508 * Delete all logging cache when form, log or payment updates
509 *
510 * @since 1.7
511 * @access public
512 *
513 * @return bool
514 */
515 public function delete_cache() {
516 // Add log related keys to delete.
517 $cache_give_logs = Give_Cache::get_options_like( 'give_logs' );
518 $cache_give_log_count = Give_Cache::get_options_like( 'log_count' );
519
520 $cache_option_names = array_merge( $cache_give_logs, $cache_give_log_count );
521
522 // Bailout.
523 if ( empty( $cache_option_names ) ) {
524 return false;
525 }
526
527 Give_Cache::delete( $cache_option_names );
528 }
529
530 /**
531 * Validate query params.
532 *
533 * @since 2.0
534 * @access private
535 *
536 * @param array $log_query
537 * @param array $log_meta
538 */
539 private function bc_200_validate_params( &$log_query, &$log_meta = array() ) {
540 $query_params = array(
541 'log_title' => 'post_title',
542 'log_parent' => 'post_parent',
543 'log_content' => 'post_content',
544 'log_type' => 'tax_query',
545 'log_date' => 'post_date',
546 'log_date_gmt' => 'post_date_gmt',
547 'number' => 'posts_per_page',
548 'meta_query' => 'meta_query',
549 );
550
551 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
552 // Set old params.
553 foreach ( $query_params as $new_query_param => $old_query_param ) {
554
555 if ( isset( $log_query[ $old_query_param ] ) && empty( $log_query[ $new_query_param ] ) ) {
556 $log_query[ $new_query_param ] = $log_query[ $old_query_param ];
557 continue;
558 } elseif ( ! isset( $log_query[ $new_query_param ] ) ) {
559 continue;
560 } elseif( empty( $log_query[ $new_query_param ] ) ) {
561 continue;
562 }
563
564 switch ( $new_query_param ) {
565 case 'log_type':
566 $log_query['tax_query'] = array(
567 array(
568 'taxonomy' => 'give_log_type',
569 'field' => 'slug',
570 'terms' => $log_query[ $new_query_param ],
571 ),
572 );
573 break;
574
575 case 'meta_query':
576 if( ! empty( $log_query['meta_query'] ) && empty( $log_query['post_parent'] ) ) {
577 foreach ( $log_query['meta_query'] as $index => $meta_query ){
578 if( ! is_array( $meta_query ) || empty( $meta_query['key'] ) ) {
579 continue;
580 }
581
582 switch ( $meta_query['key'] ) {
583 case '_give_log_form_id':
584 $log_query['post_parent'] = $meta_query['value'];
585 unset( $log_query['meta_query'][$index] );
586 break;
587 }
588 }
589 }
590 break;
591
592 default:
593 switch( $new_query_param ){
594 case 'log_parent':
595 $log_query['meta_query'][] = array(
596 'key' => '_give_log_payment_id',
597 'value' => $log_query[ $new_query_param ]
598 );
599
600 break;
601
602 default:
603 $log_query[ $old_query_param ] = $log_query[ $new_query_param ];
604 }
605 }
606 }
607 } else {
608 // Set only old params.
609 $query_params = array_flip( $query_params );
610 foreach ( $query_params as $old_query_param => $new_query_param ) {
611 if ( isset( $log_query[ $new_query_param ] ) && empty( $log_query[ $old_query_param ] ) ) {
612 $log_query[ $old_query_param ] = $log_query[ $new_query_param ];
613 continue;
614 } elseif ( ! isset( $log_query[ $old_query_param ] ) ) {
615 continue;
616 }
617
618 switch ( $old_query_param ) {
619 case 'tax_query':
620 if ( isset( $log_query[ $old_query_param ][0]['terms'] ) ) {
621 $log_query[ $new_query_param ] = $log_query[ $old_query_param ][0]['terms'];
622 }
623 break;
624
625 default:
626 $log_query[ $new_query_param ] = $log_query[ $old_query_param ];
627 }
628 }
629 }
630 }
631
632 /**
633 * Set new log properties.
634 *
635 * @since 2.0
636 * @access private
637 *
638 * @param array $logs
639 */
640 private function bc_200_add_new_properties( &$logs ) {
641 if ( empty( $logs ) ) {
642 return;
643 }
644
645 $query_params = array(
646 'log_title' => 'post_title',
647 'log_parent' => 'post_parent',
648 'log_content' => 'post_content',
649 'log_date' => 'post_date',
650 'log_date_gmt' => 'post_date_gmt',
651 'log_type' => 'give_log_type',
652 );
653
654 if ( ! give_has_upgrade_completed( 'v20_logs_upgrades' ) ) {
655 foreach ( $logs as $index => $log ) {
656 foreach ( $query_params as $new_query_param => $old_query_param ) {
657 if ( ! property_exists( $log, $old_query_param ) ) {
658 /**
659 * Set unmatched properties.
660 */
661
662 // 1. log_type
663 $term = get_the_terms( $log->ID, 'give_log_type' );
664 $term = ! is_wp_error( $term ) && ! empty( $term ) ? $term[0] : array();
665
666 $logs[ $index ]->{$new_query_param} = ! empty( $term ) ? $term->slug : '';
667
668 continue;
669 }
670
671 switch ( $old_query_param ) {
672 case 'post_parent':
673 $logs[ $index ]->{$new_query_param} = give_get_meta( $log->ID, '_give_log_payment_id', true );
674 break;
675
676 default:
677 $logs[ $index ]->{$new_query_param} = $log->{$old_query_param};
678 }
679 }
680 }
681 }
682 }
683
684 /**
685 * Change log parent to payment if set to form.
686 *
687 * @since 2.0
688 * @access public
689 *
690 * @param mixed $check
691 * @param int $log_id
692 * @param array $meta_key
693 * @param array $meta_value
694 *
695 * @return mixed
696 */
697 public function bc_200_set_payment_as_log_parent( $check, $log_id, $meta_key, $meta_value ) {
698 global $wpdb;
699 $update_status = false;
700 $post_type = get_post_type( $log_id );
701
702 // Bailout.
703 if (
704 'give_payment' === $post_type ||
705 '_give_log_payment_id' !== $meta_key
706 ) {
707 return $check;
708 }
709
710 $form_id = $wpdb->get_var(
711 $wpdb->prepare(
712 "
713 SELECT log_parent FROM {$this->log_db->table_name}
714 WHERE ID=%d
715 ",
716 $log_id
717 )
718 );
719
720 if ( $form_id ) {
721 $this->logmeta_db->delete_meta( $log_id, '_give_log_payment_id' );
722 $this->logmeta_db->update_meta( $log_id, '_give_log_form_id', $form_id );
723
724 $update_status = $wpdb->update(
725 $this->log_db->table_name,
726 array(
727 'log_parent' => $meta_value,
728 ),
729 array(
730 'ID' => $log_id,
731 ),
732 array(
733 '%s',
734 ),
735 array(
736 '%d',
737 )
738 );
739 }
740
741 return $update_status;
742 }
743 }
744