This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | /** |
||
4 | * Class for managing comments |
||
5 | * |
||
6 | * @package Give |
||
7 | * @subpackage Classes/Give_Cache |
||
8 | * @copyright Copyright (c) 2018, GiveWP |
||
9 | * @license https://opensource.org/licenses/gpl-license GNU Public License |
||
10 | * @since 2.2.0 |
||
11 | */ |
||
12 | class Give_Comment { |
||
13 | /** |
||
14 | * Instance. |
||
15 | * |
||
16 | * @since 2.2.0 |
||
17 | * @access private |
||
18 | * @var |
||
19 | */ |
||
20 | static private $instance; |
||
21 | |||
22 | /** |
||
23 | * Comment Types. |
||
24 | * |
||
25 | * @since 2.2.0 |
||
26 | * @access private |
||
27 | * @var array |
||
28 | */ |
||
29 | private $comment_types; |
||
30 | |||
31 | /** |
||
32 | * Comment Table. |
||
33 | * |
||
34 | * @since 2.3.0 |
||
35 | * @access public |
||
36 | * @var Give_DB_Comments |
||
37 | */ |
||
38 | public $db; |
||
39 | |||
40 | /** |
||
41 | * Comment Meta Table. |
||
42 | * |
||
43 | * @since 2.3.0 |
||
44 | * @access public |
||
45 | * @var Give_DB_Comment_Meta |
||
46 | */ |
||
47 | public $db_meta; |
||
48 | |||
49 | /** |
||
50 | * Singleton pattern. |
||
51 | * |
||
52 | * @since 2.2.0 |
||
53 | * @access private |
||
54 | */ |
||
55 | private function __construct() { |
||
56 | } |
||
57 | |||
58 | |||
59 | /** |
||
60 | * Get instance. |
||
61 | * |
||
62 | * @since 2.2.0 |
||
63 | * @access pu |
||
64 | * @return Give_Comment |
||
65 | */ |
||
66 | View Code Duplication | public static function get_instance() { |
|
67 | if ( null === static::$instance ) { |
||
68 | self::$instance = new static(); |
||
69 | self::$instance->init(); |
||
70 | } |
||
71 | |||
72 | return self::$instance; |
||
73 | } |
||
74 | |||
75 | /** |
||
76 | * Initialize |
||
77 | * |
||
78 | * @since 2.2.0 |
||
79 | * @access private |
||
80 | */ |
||
81 | private function init() { |
||
82 | $this->db = new Give_DB_Comments(); |
||
83 | $this->db_meta = new Give_DB_Comment_Meta(); |
||
84 | |||
85 | /** |
||
86 | * Filter the comment type |
||
87 | * |
||
88 | * @since 2.2.0 |
||
89 | */ |
||
90 | $this->comment_types = apply_filters( |
||
91 | 'give_comment_type', |
||
92 | self::get_comment_types( array( 'payment', 'donor' ) ) |
||
93 | ); |
||
94 | |||
95 | // Backward compatibility. |
||
96 | if ( ! give_has_upgrade_completed( 'v230_move_donation_note' ) ) { |
||
97 | add_action( 'pre_get_comments', array( $this, 'hide_comments' ), 10 ); |
||
98 | add_filter( 'comments_clauses', array( $this, 'hide_comments_pre_wp_41' ), 10, 1 ); |
||
99 | add_filter( 'comment_feed_where', array( $this, 'hide_comments_from_feeds' ), 10, 1 ); |
||
100 | add_filter( 'wp_count_comments', array( $this, 'remove_comments_from_comment_counts' ), 10, 2 ); |
||
101 | add_filter( 'get_comment_author', array( $this, '__get_comment_author' ), 10, 3 ); |
||
102 | } |
||
103 | } |
||
104 | |||
105 | /** |
||
106 | * Insert/Update comment |
||
107 | * |
||
108 | * @since 2.2.0 |
||
109 | * @access public |
||
110 | * |
||
111 | * @param array $comment_args Comment arguments. |
||
112 | * |
||
113 | * @return int|WP_Error |
||
114 | */ |
||
115 | public static function add( $comment_args = array() ) { |
||
116 | // Backward compatibility. |
||
117 | $func_args = func_get_args(); |
||
118 | $comment_id = self::_bc_add( $func_args ); |
||
119 | if ( ! is_null( $comment_id ) ) { |
||
120 | return $comment_id; |
||
121 | } |
||
122 | |||
123 | // Backward compatibility. |
||
124 | View Code Duplication | if( is_numeric( $comment_args ) ) { |
|
125 | $comment_args = array( |
||
126 | 'comment_parent' => $func_args[0], |
||
127 | 'comment_content' => $func_args[1], |
||
128 | 'comment_type' => 'payment' === $func_args[2] ? 'donation' : $func_args[1], |
||
129 | ); |
||
130 | } |
||
131 | |||
132 | $comment_args = wp_parse_args( |
||
133 | $comment_args, |
||
134 | array( |
||
135 | 'comment_ID' => 0, |
||
136 | 'comment_parent' => 0, |
||
137 | 'comment_type' => 'general', |
||
138 | ) |
||
139 | ); |
||
140 | |||
141 | $is_existing_comment = array_key_exists( 'comment_ID', $comment_args ) && ! empty( $comment_args['comment_ID'] ); |
||
142 | $action_type = $is_existing_comment ? 'update' : 'insert'; |
||
143 | |||
144 | /** |
||
145 | * Fires before inserting/updating payment|donor comment. |
||
146 | * |
||
147 | * @param int $id Payment|Donor ID. |
||
148 | * @param string $note Comment text. |
||
149 | * |
||
150 | * @since 1.0 |
||
151 | */ |
||
152 | do_action( |
||
153 | "give_pre_{$action_type}_{$comment_args['comment_type']}_note", |
||
154 | $comment_args['comment_parent'], |
||
155 | $comment_args['comment_content'], |
||
156 | $comment_args |
||
157 | ); |
||
158 | |||
159 | $comment_id = Give()->comment->db->add( |
||
160 | array( |
||
161 | 'comment_ID' => absint( $comment_args['comment_ID'] ), |
||
162 | 'comment_content' => $comment_args['comment_content'], |
||
163 | 'comment_parent' => $comment_args['comment_parent'], |
||
164 | 'comment_type' => $comment_args['comment_type'], |
||
165 | ) |
||
166 | ); |
||
167 | |||
168 | /** |
||
169 | * Fires after payment|donor comment inserted/updated. |
||
170 | * |
||
171 | * @param int $comment_id Comment ID. |
||
172 | * @param int $id Payment|Donor ID. |
||
173 | * @param string $note Comment text. |
||
174 | * |
||
175 | * @since 1.0 |
||
176 | */ |
||
177 | do_action( |
||
178 | "give_{$action_type}_{$comment_args['comment_type']}_note", |
||
179 | $comment_args['comment_ID'], |
||
180 | $comment_args['comment_parent'], |
||
181 | $comment_args['comment_content'], |
||
182 | $comment_args |
||
183 | ); |
||
184 | |||
185 | return $comment_id; |
||
186 | } |
||
187 | |||
188 | |||
189 | /** |
||
190 | * Delete comment |
||
191 | * |
||
192 | * @since 2.2.0 |
||
193 | * @access public |
||
194 | * |
||
195 | * @param int $comment_id The comment ID to delete. |
||
196 | * |
||
197 | * @since 1.0 |
||
198 | * |
||
199 | * @return bool True on success, false otherwise. |
||
200 | */ |
||
201 | public static function delete( $comment_id ) { |
||
202 | // Backward compatibility. |
||
203 | $func_args = func_get_args(); |
||
204 | $ret = self::_bc_delete( $func_args ); |
||
205 | if ( ! is_null( $ret ) ) { |
||
206 | return $ret; |
||
207 | } |
||
208 | |||
209 | $ret = false; |
||
210 | |||
211 | // Bailout |
||
212 | if ( empty( $comment_id ) ) { |
||
213 | return $ret; |
||
214 | } |
||
215 | |||
216 | /* @var stdClass $comment */ |
||
217 | $comment = Give()->comment->db->get_by( 'comment_ID', $comment_id ); |
||
218 | |||
219 | if ( ! is_object( $comment ) ) { |
||
220 | return $ret; |
||
221 | } |
||
222 | |||
223 | $comment_type = $comment->comment_type; |
||
224 | $comment_parent = $comment->comment_parent; |
||
225 | |||
226 | /** |
||
227 | * Fires before deleting donation note. |
||
228 | * |
||
229 | * @param int $comment_id Comment ID. |
||
230 | * @param int $id Payment|Donor ID. |
||
231 | * |
||
232 | * @since 1.0 |
||
233 | */ |
||
234 | do_action( "give_pre_delete_{$comment_type}_note", $comment_id, $comment_parent ); |
||
235 | |||
236 | $ret = Give()->comment->db->delete( $comment_id ); |
||
237 | |||
238 | // Delete comment meta. |
||
239 | Give()->comment->db_meta->delete_all_meta( $comment_id ); |
||
240 | |||
241 | /** |
||
242 | * Fires after donation note deleted. |
||
243 | * |
||
244 | * @param int $comment_id Note ID. |
||
245 | * @param int $id Payment|Donor ID. |
||
246 | * @param bool $ret Flag to check if comment deleted or not. |
||
247 | * |
||
248 | * @since 1.0 |
||
249 | */ |
||
250 | do_action( "give_post_delete_{$comment_type}_note", $comment_id, $comment_parent, $ret ); |
||
251 | |||
252 | return $ret; |
||
253 | } |
||
254 | |||
255 | |||
256 | /** |
||
257 | * Get comments |
||
258 | * |
||
259 | * @since 2.2.0 |
||
260 | * @access public |
||
261 | * |
||
262 | * @param array $comment_args |
||
263 | * |
||
264 | * @return array |
||
265 | */ |
||
266 | public static function get( $comment_args ) { |
||
267 | global $wpdb; |
||
268 | |||
269 | // Backward compatibility. |
||
270 | $func_args = func_get_args(); |
||
271 | $comments = self::_bc_get( $func_args ); |
||
272 | if ( ! is_null( $comments ) ) { |
||
273 | return $comments; |
||
274 | } |
||
275 | |||
276 | // Backward compatibility. |
||
277 | View Code Duplication | if( is_numeric( $comment_args ) ) { |
|
278 | $comment_args = array( |
||
279 | 'comment_parent' => $func_args[0], |
||
280 | 'comment_type' => 'payment' === $func_args[1] ? 'donation' : $func_args[1], |
||
281 | ); |
||
282 | } |
||
283 | |||
284 | $comments = $wpdb->get_results( Give()->comment->db->get_sql( $comment_args ) ); |
||
285 | |||
286 | return $comments; |
||
287 | } |
||
288 | |||
289 | /** |
||
290 | * Exclude comments from showing in Recent |
||
291 | * Comments widgets |
||
292 | * |
||
293 | * @since 2.2.0 |
||
294 | * @access public |
||
295 | * |
||
296 | * @param object $query WordPress Comment Query Object. |
||
297 | * |
||
298 | * @return void |
||
299 | */ |
||
300 | public function hide_comments( $query ) { |
||
301 | if ( version_compare( floatval( get_bloginfo( 'version' ) ), '4.1', '>=' ) ) { |
||
302 | $types = isset( $query->query_vars['type__not_in'] ) ? $query->query_vars['type__not_in'] : array(); |
||
303 | if ( ! is_array( $types ) ) { |
||
304 | $types = array( $types ); |
||
305 | } |
||
306 | |||
307 | $types = array_filter( array_merge( $types, $this->comment_types ) ); |
||
308 | |||
309 | $query->query_vars['type__not_in'] = $types; |
||
310 | } |
||
311 | } |
||
312 | |||
313 | /** |
||
314 | * Exclude notes (comments) from showing in Recent Comments widgets |
||
315 | * |
||
316 | * @since 2.2.0 |
||
317 | * @access public |
||
318 | * |
||
319 | * @param array $clauses Comment clauses for comment query. |
||
320 | * |
||
321 | * @return array $clauses Updated comment clauses. |
||
322 | */ |
||
323 | public function hide_comments_pre_wp_41( $clauses ) { |
||
324 | if ( version_compare( floatval( get_bloginfo( 'version' ) ), '4.1', '<' ) ) { |
||
325 | foreach ( $this->comment_types as $comment_type ) { |
||
326 | $clauses['where'] .= " AND comment_type != \"{$comment_type}\""; |
||
327 | } |
||
328 | } |
||
329 | |||
330 | return $clauses; |
||
331 | } |
||
332 | |||
333 | /** |
||
334 | * Exclude notes (comments) from showing in comment feeds |
||
335 | * |
||
336 | * @since 2.2.0 |
||
337 | * @access public |
||
338 | * |
||
339 | * @param string $where |
||
340 | * |
||
341 | * @return string $where |
||
342 | */ |
||
343 | public function hide_comments_from_feeds( $where ) { |
||
344 | global $wpdb; |
||
345 | |||
346 | foreach ( $this->comment_types as $comment_type ) { |
||
347 | $where .= $wpdb->prepare( ' AND comment_type!=%s', $comment_type ); |
||
348 | } |
||
349 | |||
350 | return $where; |
||
351 | } |
||
352 | |||
353 | /** |
||
354 | * Remove Give Comments from the wp_count_comments function |
||
355 | * |
||
356 | * @since 2.2.0 |
||
357 | * @access public |
||
358 | * |
||
359 | * @param array $stats (empty from core filter). |
||
360 | * @param int $post_id Post ID. |
||
361 | * |
||
362 | * @return array|object Array of comment counts. |
||
363 | */ |
||
364 | public function remove_comments_from_comment_counts( $stats, $post_id ) { |
||
365 | global $wpdb; |
||
366 | |||
367 | $post_id = (int) $post_id; |
||
368 | |||
369 | if ( apply_filters( 'give_count_payment_notes_in_comments', false ) ) { |
||
370 | return $stats; |
||
371 | } |
||
372 | |||
373 | $stats = Give_Cache::get_group( "comments-{$post_id}", 'counts' ); |
||
374 | |||
375 | // Return result from cache. |
||
376 | if ( ! is_null( $stats ) ) { |
||
377 | return $stats; |
||
378 | } |
||
379 | |||
380 | $where = 'WHERE'; |
||
381 | |||
382 | foreach ( $this->comment_types as $index => $comment_type ) { |
||
383 | $where .= ( $index ? ' AND ' : ' ' ) . "comment_type != \"{$comment_type}\""; |
||
384 | } |
||
385 | |||
386 | if ( $post_id > 0 ) { |
||
387 | $where .= $wpdb->prepare( ' AND comment_post_ID = %d', $post_id ); |
||
388 | } |
||
389 | |||
390 | $count = $wpdb->get_results( |
||
391 | " |
||
392 | SELECT comment_approved, COUNT( * ) AS num_comments |
||
393 | FROM {$wpdb->comments} {$where} |
||
394 | GROUP BY comment_approved |
||
395 | ", |
||
396 | ARRAY_A |
||
397 | ); |
||
398 | |||
399 | $total = 0; |
||
400 | $approved = array( |
||
401 | '0' => 'moderated', |
||
0 ignored issues
–
show
introduced
by
![]() |
|||
402 | '1' => 'approved', |
||
403 | 'spam' => 'spam', |
||
404 | 'trash' => 'trash', |
||
405 | 'post-trashed' => 'post-trashed', |
||
406 | ); |
||
407 | |||
408 | foreach ( (array) $count as $row ) { |
||
409 | // Don't count post-trashed toward totals. |
||
410 | if ( 'post-trashed' != $row['comment_approved'] && 'trash' != $row['comment_approved'] ) { |
||
411 | $total += $row['num_comments']; |
||
412 | } |
||
413 | if ( isset( $approved[ $row['comment_approved'] ] ) ) { |
||
414 | $stats[ $approved[ $row['comment_approved'] ] ] = $row['num_comments']; |
||
415 | } |
||
416 | } |
||
417 | |||
418 | $stats['total_comments'] = $stats['all'] = $total; |
||
419 | foreach ( $approved as $key ) { |
||
420 | if ( empty( $stats[ $key ] ) ) { |
||
421 | $stats[ $key ] = 0; |
||
422 | } |
||
423 | } |
||
424 | |||
425 | $stats = (object) $stats; |
||
426 | |||
427 | Give_Cache::set_group( "comments-{$post_id}", $stats, 'counts' ); |
||
428 | |||
429 | return $stats; |
||
430 | } |
||
431 | |||
432 | /** |
||
433 | * Get donor name |
||
434 | * |
||
435 | * @since 2.2.0 |
||
436 | * @access public |
||
437 | * |
||
438 | * @param string $author |
||
439 | * @param int $comment_id |
||
440 | * @param WP_Comment $comment |
||
441 | * |
||
442 | * @return mixed |
||
443 | */ |
||
444 | public function __get_comment_author( $author, $comment_id, $comment ) { |
||
445 | if ( in_array( $comment->comment_type, $this->comment_types ) ) { |
||
446 | switch ( $comment->comment_type ) { |
||
447 | case 'give_payment_note': |
||
448 | if ( get_comment_meta( $comment_id, '_give_donor_id', true ) ) { |
||
449 | $author = give_get_donor_name_by( $comment->comment_post_ID ); |
||
450 | } |
||
451 | } |
||
452 | } |
||
453 | |||
454 | return $author; |
||
455 | } |
||
456 | |||
457 | |||
458 | /** |
||
459 | * Get comment types |
||
460 | * |
||
461 | * @since 2.2.0 |
||
462 | * @access public |
||
463 | * |
||
464 | * @param array @comment_types |
||
465 | * |
||
466 | * @return array |
||
467 | */ |
||
468 | public static function get_comment_types( $comment_types ) { |
||
469 | $_comment_types = array(); |
||
470 | foreach ( $comment_types as $comment_type ) { |
||
471 | $_comment_types[] = "give_{$comment_type}_note"; |
||
472 | } |
||
473 | |||
474 | return $_comment_types; |
||
475 | } |
||
476 | |||
477 | /** |
||
478 | * Get comments |
||
479 | * Note: This function add backward compatibility for get function |
||
480 | * |
||
481 | * @since 2.3.0 |
||
482 | * @access public |
||
483 | * |
||
484 | * @param array $comment_args |
||
485 | * |
||
486 | * @return array|null |
||
487 | */ |
||
488 | private static function _bc_get( $comment_args ) { |
||
489 | $comments = null; |
||
490 | |||
491 | if ( ! give_has_upgrade_completed( 'v230_move_donor_note' ) ) { |
||
492 | $id = $comment_args[0]; |
||
493 | $comment_type = $comment_args[1]; |
||
494 | $comment_args = isset( $comment_args[2] ) ? $comment_args[2] : array(); |
||
495 | $search = isset( $comment_args[3] ) ? $comment_args[3] : ''; |
||
496 | |||
497 | // Set default meta_query value. |
||
498 | if ( ! isset( $comment_args['meta_query'] ) ) { |
||
499 | $comment_args['meta_query'] = array(); |
||
500 | } |
||
501 | |||
502 | // Bailout |
||
503 | if ( empty( $id ) || empty( $comment_type ) ) { |
||
504 | return $comments; |
||
505 | } |
||
506 | |||
507 | remove_action( 'pre_get_comments', array( self::$instance, 'hide_comments' ), 10 ); |
||
508 | remove_filter( 'comments_clauses', array( self::$instance, 'hide_comments_pre_wp_41' ), 10 ); |
||
509 | |||
510 | switch ( $comment_type ) { |
||
511 | View Code Duplication | case 'payment': |
|
512 | $comment_args['meta_query'] = ! empty( $comment_args['meta_query'] ) |
||
513 | ? $comment_args['meta_query'] |
||
514 | : array( |
||
515 | array( |
||
516 | 'key' => '_give_donor_id', |
||
517 | 'compare' => 'NOT EXISTS', |
||
518 | ), |
||
519 | ); |
||
520 | |||
521 | $comments = get_comments( wp_parse_args( |
||
522 | $comment_args, |
||
523 | array( |
||
524 | 'post_id' => $id, |
||
525 | 'order' => 'ASC', |
||
526 | 'search' => $search, |
||
527 | 'type' => 'give_payment_note', |
||
528 | ) |
||
529 | ) ); |
||
530 | break; |
||
531 | |||
532 | View Code Duplication | case 'donor': |
|
533 | $comment_args['meta_query'] = ! empty( $comment_args['meta_query'] ) |
||
534 | ? $comment_args['meta_query'] |
||
535 | : array( |
||
536 | array( |
||
537 | 'key' => "_give_{$comment_type}_id", |
||
538 | 'value' => $id, |
||
539 | ), |
||
540 | ); |
||
541 | |||
542 | $comments = get_comments( wp_parse_args( |
||
543 | $comment_args, |
||
544 | array( |
||
545 | 'order' => 'ASC', |
||
546 | 'search' => $search, |
||
547 | 'type' => 'give_donor_note', |
||
548 | ) |
||
549 | ) ); |
||
550 | break; |
||
551 | } |
||
552 | |||
553 | add_action( 'pre_get_comments', array( self::$instance, 'hide_comments' ), 10, 1 ); |
||
554 | add_filter( 'comments_clauses', array( self::$instance, 'hide_comments_pre_wp_41' ), 10, 1 ); |
||
555 | } |
||
556 | |||
557 | return $comments; |
||
558 | } |
||
559 | |||
560 | |||
561 | /** |
||
562 | * Insert/Update comment |
||
563 | * Note: This function add backward compatibility for add function |
||
564 | * |
||
565 | * @since 2.3.0 |
||
566 | * @access public |
||
567 | * |
||
568 | * @param array $comment_args Comment arguments. |
||
569 | * |
||
570 | * @return int|null|WP_Error |
||
571 | */ |
||
572 | private static function _bc_add( $comment_args = array() ) { |
||
573 | $comment_id = null; |
||
574 | |||
575 | if ( ! give_has_upgrade_completed( 'v230_move_donor_note' ) ) { |
||
576 | $id = $comment_args[0]; |
||
577 | $note = $comment_args[1]; |
||
578 | $comment_type = $comment_args[2]; |
||
579 | $comment_args = isset( $comment_args[3] ) ? $comment_args[3] : array(); |
||
580 | |||
581 | |||
582 | // Bailout |
||
583 | if ( empty( $id ) || empty( $note ) || empty( $comment_type ) ) { |
||
584 | return new WP_Error( 'give_invalid_required_param', __( 'This comment has invalid ID or comment text or comment type', 'give' ) ); |
||
585 | } |
||
586 | |||
587 | $is_existing_comment = array_key_exists( 'comment_ID', $comment_args ) && ! empty( $comment_args['comment_ID'] ); |
||
588 | $action_type = $is_existing_comment ? 'update' : 'insert'; |
||
589 | |||
590 | /** |
||
591 | * Fires before inserting/updating payment|donor comment. |
||
592 | * |
||
593 | * @param int $id Payment|Donor ID. |
||
594 | * @param string $note Comment text. |
||
595 | * |
||
596 | * @since 1.0 |
||
597 | */ |
||
598 | do_action( "give_pre_{$action_type}_{$comment_type}_note", $id, $note ); |
||
599 | |||
600 | $comment_args = wp_parse_args( |
||
601 | $comment_args, |
||
602 | array( |
||
603 | 'comment_post_ID' => $id, |
||
604 | 'comment_content' => $note, |
||
605 | 'user_id' => is_admin() ? get_current_user_id() : 0, |
||
606 | 'comment_date' => current_time( 'mysql' ), |
||
607 | 'comment_date_gmt' => current_time( 'mysql', 1 ), |
||
608 | 'comment_approved' => 1, |
||
609 | 'comment_parent' => 0, |
||
610 | 'comment_author' => '', |
||
611 | 'comment_author_IP' => '', |
||
612 | 'comment_author_url' => '', |
||
613 | 'comment_author_email' => '', |
||
614 | 'comment_type' => "give_{$comment_type}_note", |
||
615 | |||
616 | ) |
||
617 | ); |
||
618 | |||
619 | |||
620 | // Check comment max length. |
||
621 | $error = wp_check_comment_data_max_lengths( $comment_args ); |
||
622 | if ( is_wp_error( $error ) ) { |
||
623 | return $error; |
||
624 | } |
||
625 | |||
626 | // Remove moderation emails when comment posted. |
||
627 | remove_action( 'comment_post', 'wp_new_comment_notify_moderator' ); |
||
628 | remove_action( 'comment_post', 'wp_new_comment_notify_postauthor' ); |
||
629 | |||
630 | // Remove comment flood check. |
||
631 | remove_action( 'check_comment_flood', 'check_comment_flood_db', 10 ); |
||
632 | |||
633 | $comment_id = $is_existing_comment |
||
634 | ? wp_update_comment( $comment_args ) |
||
635 | : wp_new_comment( $comment_args, true ); |
||
636 | |||
637 | // Add moderation emails when comment posted. |
||
638 | add_action( 'comment_post', 'wp_new_comment_notify_moderator' ); |
||
639 | add_action( 'comment_post', 'wp_new_comment_notify_postauthor' ); |
||
640 | |||
641 | // Add comment flood check. |
||
642 | add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 4 ); |
||
643 | |||
644 | update_comment_meta( $comment_id, "_give_{$comment_type}_id", $id ); |
||
645 | |||
646 | /** |
||
647 | * Fires after payment|donor comment inserted/updated. |
||
648 | * |
||
649 | * @param int $comment_id Comment ID. |
||
650 | * @param int $id Payment|Donor ID. |
||
651 | * @param string $note Comment text. |
||
652 | * |
||
653 | * @since 1.0 |
||
654 | */ |
||
655 | do_action( "give_{$action_type}_{$comment_type}_note", $comment_id, $id, $note ); |
||
656 | } |
||
657 | |||
658 | return $comment_id; |
||
659 | } |
||
660 | |||
661 | /** |
||
662 | * Delete comment |
||
663 | * Note: This function add backward compatibility for delete function |
||
664 | * @since 2.3.0 |
||
665 | * @access public |
||
666 | * |
||
667 | * @param array $comment_args Comment arguments. |
||
668 | * |
||
669 | * @since 1.0 |
||
670 | * |
||
671 | * @return bool True on success, false otherwise. |
||
672 | */ |
||
673 | private static function _bc_delete( $comment_args ) { |
||
674 | $ret = null; |
||
675 | |||
676 | if ( ! give_has_upgrade_completed( 'v230_move_donor_note' ) ) { |
||
677 | $comment_id = $comment_args[0]; |
||
678 | $id = $comment_args[1]; |
||
679 | $comment_type = $comment_args[2]; |
||
680 | |||
681 | $ret = false; |
||
682 | |||
683 | // Bailout |
||
684 | if ( empty( $id ) || empty( $comment_id ) || empty( $comment_type ) ) { |
||
685 | return $ret; |
||
686 | } |
||
687 | /** |
||
688 | * Fires before deleting donation note. |
||
689 | * |
||
690 | * @param int $comment_id Comment ID. |
||
691 | * @param int $id Payment|Donor ID. |
||
692 | * |
||
693 | * @since 1.0 |
||
694 | */ |
||
695 | do_action( "give_pre_delete_{$comment_type}_note", $comment_id, $id ); |
||
696 | |||
697 | $ret = wp_delete_comment( $comment_id, true ); |
||
698 | |||
699 | |||
700 | /** |
||
701 | * Fires after donation note deleted. |
||
702 | * |
||
703 | * @param int $comment_id Note ID. |
||
704 | * @param int $id Payment|Donor ID. |
||
705 | * @param bool $ret Flag to check if comment deleted or not. |
||
706 | * |
||
707 | * @since 1.0 |
||
708 | */ |
||
709 | do_action( "give_post_delete_{$comment_type}_note", $comment_id, $id, $ret ); |
||
710 | } |
||
711 | |||
712 | return $ret; |
||
713 | } |
||
714 | } |
||
715 |