Changeset 8190
- Timestamp:
- 03/28/2014 10:52:14 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
bp-activity/bp-activity-template.php (modified) (1 diff)
-
bp-blogs/bp-blogs-activity.php (modified) (1 diff)
-
bp-blogs/bp-blogs-functions.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-activity/bp-activity-template.php
r8142 r8190 2773 2773 } 2774 2774 2775 /** 2776 * Recurse through all activity comments and return the activity comment IDs. 2777 * 2778 * @since BuddyPress (2.0.0) 2779 * 2780 * @param array $activity Array of activities generated from {@link bp_activity_get()}. 2781 * @param array $activity_ids Used for recursion purposes in this function. 2782 * @return array 2783 */ 2784 function bp_activity_recurse_comments_activity_ids( $activity = array(), $activity_ids = array() ) { 2785 if ( is_array( $activity ) && ! empty( $activity['activities'] ) ) { 2786 $activity = $activity['activities'][0]; 2787 } 2788 2789 if ( ! empty( $activity->children ) ) { 2790 foreach ($activity->children as $child ) { 2791 $activity_ids[] = $child->id; 2792 2793 if( ! empty( $child->children ) ) { 2794 $activity_ids = bp_activity_recurse_comments_activity_ids( $child, $activity_ids ); 2795 } 2796 } 2797 } 2798 2799 return $activity_ids; 2800 } 2775 2801 2776 2802 /** -
trunk/bp-blogs/bp-blogs-activity.php
r8189 r8190 433 433 return $open; 434 434 } 435 436 /** POST COMMENT SYNCHRONIZATION ****************************************/ 437 438 /** 439 * Syncs activity comments and posts them back as blog comments. 440 * 441 * Note: This is only a one-way sync - activity comments -> blog comment. 442 * 443 * For blog post -> activity comment, see {@link bp_blogs_record_comment()}. 444 * 445 * @since BuddyPress (2.0.0) 446 * 447 * @param int $comment_id The activity ID for the posted activity comment. 448 * @param array $params Parameters for the activity comment. 449 * @param object Parameters of the parent activity item (in this case, the blog post). 450 */ 451 function bp_blogs_sync_add_from_activity_comment( $comment_id, $params, $parent_activity ) { 452 // if parent activity isn't a blog post, stop now! 453 if ( $parent_activity->type != 'new_blog_post' ) { 454 return; 455 } 456 457 // if activity comments are disabled for blog posts, stop now! 458 if ( bp_disable_blogforum_comments() ) { 459 return; 460 } 461 462 // get userdata 463 if ( $params['user_id'] == bp_loggedin_user_id() ) { 464 $user = buddypress()->loggedin_user->userdata; 465 } else { 466 $user = bp_core_get_core_userdata( $params['user_id'] ); 467 } 468 469 // see if a parent WP comment ID exists 470 if ( ! empty( $params['parent_id'] ) ) { 471 $comment_parent = bp_activity_get_meta( $params['parent_id'], 'bp_blogs_post_comment_id' ); 472 } else { 473 $comment_parent = 0; 474 } 475 476 // comment args 477 $args = array( 478 'comment_post_ID' => $parent_activity->secondary_item_id, 479 'comment_author' => bp_core_get_user_displayname( $params['user_id'] ), 480 'comment_author_email' => $user->user_email, 481 'comment_author_url' => bp_core_get_user_domain( $params['user_id'], $user->user_nicename, $user->user_login ), 482 'comment_content' => $params['content'], 483 'comment_type' => '', // could be interesting to add 'buddypress' here... 484 'comment_parent' => (int) $comment_parent, 485 'user_id' => $params['user_id'], 486 487 // commenting these out for now 488 //'comment_author_IP' => '127.0.0.1', 489 //'comment_agent' => '', 490 491 'comment_approved' => 1 492 ); 493 494 // prevent separate activity entry being made 495 remove_action( 'comment_post', 'bp_blogs_record_comment', 10, 2 ); 496 497 // handle multisite 498 switch_to_blog( $parent_activity->item_id ); 499 500 // handle timestamps for the WP comment after we've switched to the blog 501 $args['comment_date'] = current_time( 'mysql' ); 502 $args['comment_date_gmt'] = current_time( 'mysql', 1 ); 503 504 // post the comment 505 $post_comment_id = wp_insert_comment( $args ); 506 507 // add meta to comment 508 add_comment_meta( $post_comment_id, 'bp_activity_comment_id', $comment_id ); 509 510 // add meta to activity comment 511 bp_activity_update_meta( $comment_id, 'bp_blogs_post_comment_id', $post_comment_id ); 512 513 // resave activity comment with WP comment permalink 514 // 515 // in bp_blogs_activity_comment_permalink(), we change activity comment 516 // permalinks to use the post comment link 517 // 518 // @todo since this is done after AJAX posting, the activity comment permalink 519 // doesn't change on the frontend until the next page refresh. 520 $resave_activity = new BP_Activity_Activity( $comment_id ); 521 $resave_activity->primary_link = get_comment_link( $post_comment_id ); 522 $resave_activity->save(); 523 524 // multisite again! 525 restore_current_blog(); 526 527 // add the comment hook back 528 add_action( 'comment_post', 'bp_blogs_record_comment', 10, 2 ); 529 530 do_action( 'bp_blogs_sync_add_from_activity_comment', $comment_id, $args, $parent_activity, $user ); 531 } 532 add_action( 'bp_activity_comment_posted', 'bp_blogs_sync_add_from_activity_comment', 10, 3 ); 533 534 /** 535 * Deletes the blog comment when the associated activity comment is deleted. 536 * 537 * Note: This is hooked on the 'bp_activity_delete_comment_pre' filter instead 538 * of the 'bp_activity_delete_comment' action because we need to fetch the 539 * activity comment children before they are deleted. 540 * 541 * @since BuddyPress (2.0.0) 542 * 543 * @param bool $retval 544 * @param int $parent_activity_id The parent activity ID for the activity comment. 545 * @param int $activity_id The activity ID for the pending deleted activity comment. 546 */ 547 function bp_blogs_sync_delete_from_activity_comment( $retval, $parent_activity_id, $activity_id ) { 548 // check if parent activity is a blog post 549 $parent_activity = new BP_Activity_Activity( $parent_activity_id ); 550 if ( 'new_blog_post' != $parent_activity->type ) { 551 return $retval; 552 } 553 554 // fetch the activity comments for the activity item 555 $activity = bp_activity_get( array( 556 'in' => $activity_id, 557 'display_comments' => 'stream', 558 ) ); 559 560 // get all activity comment IDs for the pending deleted item 561 $activity_ids = bp_activity_recurse_comments_activity_ids( $activity ); 562 $activity_ids[] = $activity_id; 563 564 // handle multisite 565 // switch to the blog where the comment was made 566 switch_to_blog( $parent_activity->item_id ); 567 568 // remove associated blog comments 569 bp_blogs_remove_associated_blog_comments( $activity_ids, current_user_can( 'moderate_comments' ) ); 570 571 // multisite again! 572 restore_current_blog(); 573 574 // rebuild activity comment tree 575 // emulate bp_activity_delete_comment() 576 BP_Activity_Activity::rebuild_activity_comment_tree( $parent_activity_id ); 577 578 // we're overriding the default bp_activity_delete_comment() functionality 579 // so we need to return false 580 return false; 581 } 582 add_filter( 'bp_activity_delete_comment_pre', 'bp_blogs_sync_delete_from_activity_comment', 10, 3 ); 583 584 /** 585 * Updates the blog comment when the associated activity comment is edited. 586 * 587 * @since BuddyPress (2.0.0) 588 * 589 * @param BP_Activity_Activity $activity The activity object. 590 */ 591 function bp_blogs_sync_activity_edit_to_post_comment( BP_Activity_Activity $activity ) { 592 // not an activity comment? stop now! 593 if ( 'activity_comment' !== $activity->type ) { 594 return; 595 } 596 597 // this is a new entry, so stop! 598 // we only want edits! 599 if ( empty( $activity->id ) ) { 600 return; 601 } 602 603 // prevent recursion 604 remove_action( 'bp_activity_before_save', 'bp_blogs_sync_activity_edit_to_post_comment', 20 ); 605 606 // Try to see if a corresponding blog comment exists 607 $post_comment_id = bp_activity_get_meta( $activity->id, 'bp_blogs_post_comment_id' ); 608 609 if ( empty( $post_comment_id ) ) { 610 return; 611 } 612 613 // fetch parent activity item 614 $parent_activity = new BP_Activity_Activity( $activity->item_id ); 615 616 // sanity check 617 if ( 'new_blog_post' !== $parent_activity->type ) { 618 return; 619 } 620 621 // handle multisite 622 switch_to_blog( $parent_activity->item_id ); 623 624 // update the blog post comment 625 wp_update_comment( array( 626 'comment_ID' => $post_comment_id, 627 'comment_content' => $activity->content 628 ) ); 629 630 restore_current_blog(); 631 } 632 add_action( 'bp_activity_before_save', 'bp_blogs_sync_activity_edit_to_post_comment', 20 ); 633 634 /** 635 * When a post is trashed, remove each comment's associated activity meta. 636 * 637 * When a post is trashed and later untrashed, we currently don't reinstate 638 * activity items for these comments since their activity entries are already 639 * deleted when initially trashed. 640 * 641 * Since these activity entries are deleted, we need to remove the deleted 642 * activity comment IDs from each comment's meta when a post is trashed. 643 * 644 * @since BuddyPress (2.0.0) 645 * 646 * @param int $post_id The post ID 647 * @param array $statuses Array of comment statuses. The key is comment ID, the 648 * value is the $comment->comment_approved value. 649 */ 650 function bp_blogs_remove_activity_meta_for_trashed_comments( $post_id, $statuses ) { 651 foreach ( $statuses as $comment_id => $comment_approved ) { 652 delete_comment_meta( $comment_id, 'bp_activity_comment_id' ); 653 } 654 } 655 add_action( 'trashed_post_comments', 'bp_blogs_remove_activity_meta_for_trashed_comments', 10, 2 ); 656 657 /** 658 * Utility function to set up some variables for use in the activity loop. 659 * 660 * Grabs the blog's comment depth and the post's open comment status options 661 * for later use in the activity and activity comment loops. 662 * 663 * This is to prevent having to requery these items later on. 664 * 665 * @since BuddyPress (2.0.0) 666 * 667 * @see bp_blogs_disable_activity_commenting() 668 * @see bp_blogs_setup_comment_loop_globals_on_ajax() 669 * 670 * @param object $activity The BP_Activity_Activity object 671 */ 672 function bp_blogs_setup_activity_loop_globals( $activity ) { 673 if ( ! is_object( $activity ) ) { 674 return; 675 } 676 677 // parent not a blog post? stop now! 678 if ( 'new_blog_post' !== $activity->type ) { 679 return; 680 } 681 682 if ( empty( $activity->id ) ) { 683 return; 684 } 685 686 // if we've already done this before, stop now! 687 if ( isset( buddypress()->blogs->allow_comments[ $activity->id ] ) ) { 688 return; 689 } 690 691 $allow_comments = bp_blogs_comments_open( $activity ); 692 $thread_depth = bp_blogs_get_blogmeta( $activity->item_id, 'thread_comments_depth' ); 693 694 // initialize a local object so we won't have to query this again in the 695 // comment loop 696 if ( empty( buddypress()->blogs->allow_comments ) ) { 697 buddypress()->blogs->allow_comments = array(); 698 } 699 if ( empty( buddypress()->blogs->thread_depth ) ) { 700 buddypress()->blogs->thread_depth = array(); 701 } 702 703 // cache comment settings in the buddypress() singleton to reference later in 704 // the activity comment loop 705 // @see bp_blogs_disable_activity_replies() 706 // 707 // thread_depth is keyed by activity ID instead of blog ID because when we're 708 // in a comment loop, we don't have access to the blog ID... 709 // should probably object cache these values instead... 710 buddypress()->blogs->allow_comments[ $activity->id ] = $allow_comments; 711 buddypress()->blogs->thread_depth[ $activity->id ] = $thread_depth; 712 } 713 714 /** 715 * Set up some globals used in the activity comment loop when AJAX is used. 716 * 717 * @since BuddyPress (2.0.0) 718 * 719 * @see bp_blogs_setup_activity_loop_globals() 720 */ 721 function bp_blogs_setup_comment_loop_globals_on_ajax() { 722 // not AJAX? stop now! 723 if ( ! defined( 'DOING_AJAX' ) ) { 724 return; 725 } 726 if ( false === (bool) constant( 'DOING_AJAX' ) ) { 727 return; 728 } 729 730 // get the parent activity item 731 $comment = bp_activity_current_comment(); 732 $parent_activity = new BP_Activity_Activity( $comment->item_id ); 733 734 // setup the globals 735 bp_blogs_setup_activity_loop_globals( $parent_activity ); 736 } 737 add_action( 'bp_before_activity_comment', 'bp_blogs_setup_comment_loop_globals_on_ajax' ); 738 739 /** 740 * Disable activity commenting for blog posts based on certain criteria. 741 * 742 * If activity commenting is enabled for blog posts, we still need to disable 743 * commenting if: 744 * - comments are disabled for the WP blog post from the admin dashboard 745 * - the WP blog post is supposed to be automatically closed from comments 746 * based on a certain age 747 * - the activity entry is a 'new_blog_comment' type 748 * 749 * @since BuddyPress (2.0.0) 750 * 751 * @param bool $retval Is activity commenting enabled for this activity entry? 752 * @return bool 753 */ 754 function bp_blogs_disable_activity_commenting( $retval ) { 755 // if activity commenting is disabled, return current value 756 if ( bp_disable_blogforum_comments() ) { 757 return $retval; 758 } 759 760 // activity commenting is enabled for blog posts 761 switch ( bp_get_activity_action_name() ) { 762 763 // we still have to disable activity commenting for 'new_blog_comment' items 764 // commenting should only be done on the parent 'new_blog_post' item 765 case 'new_blog_comment' : 766 $retval = false; 767 768 break; 769 770 // check if commenting is disabled for the WP blog post 771 // we should extrapolate this and automate this for plugins... or not 772 case 'new_blog_post' : 773 global $activities_template; 774 775 // setup some globals we'll need to reference later 776 bp_blogs_setup_activity_loop_globals( $activities_template->activity ); 777 778 // if comments are closed for the WP blog post, we should disable 779 // activity comments for this activity entry 780 if ( empty( buddypress()->blogs->allow_comments[bp_get_activity_id()] ) ) { 781 $retval = false; 782 } 783 784 break; 785 } 786 787 return $retval; 788 } 789 add_filter( 'bp_activity_can_comment', 'bp_blogs_disable_activity_commenting' ); 790 791 /** 792 * Check if an activity comment associated with a blog post can be replied to. 793 * 794 * By default, disables replying to activity comments if the corresponding WP 795 * blog post no longer accepts comments. 796 * 797 * This check uses a locally-cached value set in {@link bp_blogs_disable_activity_commenting()} 798 * via {@link bp_blogs_setup_activity_loop_globals()}. 799 * 800 * @since BuddyPress (2.0.0) 801 * 802 * @param bool $retval Are replies allowed for this activity reply? 803 * @param object $comment The activity comment object 804 * @return bool 805 */ 806 function bp_blogs_can_comment_reply( $retval, $comment ) { 807 if ( is_array( $comment ) ) { 808 $comment = (object) $comment; 809 } 810 811 // check comment depth and disable if depth is too large 812 if ( isset( buddypress()->blogs->thread_depth[$comment->item_id] ) ){ 813 if ( $comment->mptt_left > buddypress()->blogs->thread_depth[$comment->item_id] ) { 814 $retval = false; 815 } 816 } 817 818 // check if we should disable activity replies based on the parent activity 819 if ( isset( buddypress()->blogs->allow_comments[$comment->item_id] ) ){ 820 // the blog post has closed off commenting, so we should disable all activity 821 // comments under the parent 'new_blog_post' activity entry 822 if ( empty( buddypress()->blogs->allow_comments[$comment->item_id] ) ) { 823 $retval = false; 824 } 825 } 826 827 return $retval; 828 } 829 add_filter( 'bp_activity_can_comment_reply', 'bp_blogs_can_comment_reply', 10, 2 ); 830 831 /** 832 * Changes activity comment permalinks to use the blog comment permalink 833 * instead of the activity permalink. 834 * 835 * This is only done if activity commenting is allowed and whether the parent 836 * activity item is a 'new_blog_post' entry. 837 * 838 * @since BuddyPress (2.0.0) 839 * 840 * @param string $retval The activity comment permalink 841 * @return string 842 */ 843 function bp_blogs_activity_comment_permalink( $retval ) { 844 global $activities_template; 845 846 if ( isset( buddypress()->blogs->allow_comments[$activities_template->activity->current_comment->item_id] ) ){ 847 $retval = $activities_template->activity->current_comment->primary_link; 848 } 849 850 return $retval; 851 } 852 add_filter( 'bp_get_activity_comment_permalink', 'bp_blogs_activity_comment_permalink' ); -
trunk/bp-blogs/bp-blogs-functions.php
r8189 r8190 539 539 $comment_link = get_comment_link( $recorded_comment->comment_ID ); 540 540 541 // Prepare to record in activity streams 542 if ( is_multisite() ) 543 $activity_action = sprintf( __( '%1$s commented on the post, %2$s, on the site %3$s', 'buddypress' ), bp_core_get_userlink( $user_id ), '<a href="' . $post_permalink . '">' . apply_filters( 'the_title', $recorded_comment->post->post_title ) . '</a>', '<a href="' . get_blog_option( $blog_id, 'home' ) . '">' . get_blog_option( $blog_id, 'blogname' ) . '</a>' ); 544 else 545 $activity_action = sprintf( __( '%1$s commented on the post, %2$s', 'buddypress' ), bp_core_get_userlink( $user_id ), '<a href="' . $post_permalink . '">' . apply_filters( 'the_title', $recorded_comment->post->post_title ) . '</a>' ); 546 547 $activity_content = $recorded_comment->comment_content; 548 549 // Record in activity streams 550 bp_blogs_record_activity( array( 551 'user_id' => $user_id, 552 'content' => apply_filters_ref_array( 'bp_blogs_activity_new_comment_content', array( $activity_content, &$recorded_comment, $comment_link ) ), 553 'primary_link' => apply_filters_ref_array( 'bp_blogs_activity_new_comment_primary_link', array( $comment_link, &$recorded_comment ) ), 554 'type' => 'new_blog_comment', 555 'item_id' => $blog_id, 556 'secondary_item_id' => $comment_id, 557 'recorded_time' => $recorded_comment->comment_date_gmt 558 ) ); 541 // Setup activity args 542 $args = array(); 543 544 $args['user_id'] = $user_id; 545 $args['content'] = apply_filters_ref_array( 'bp_blogs_activity_new_comment_content', array( $recorded_comment->comment_content, &$recorded_comment, $comment_link ) ); 546 $args['primary_link'] = apply_filters_ref_array( 'bp_blogs_activity_new_comment_primary_link', array( $comment_link, &$recorded_comment ) ); 547 $args['recorded_time'] = $recorded_comment->comment_date_gmt; 548 549 // Setup some different activity args depending if activity commenting is 550 // enabled or not 551 552 // if cannot comment, record separate activity entry 553 // this is the old way of doing things 554 if ( bp_disable_blogforum_comments() ) { 555 $args['type'] = 'new_blog_comment'; 556 $args['item_id'] = $blog_id; 557 $args['secondary_item_id'] = $comment_id; 558 559 // record the activity entry 560 bp_blogs_record_activity( $args ); 561 562 // record comment as BP activity comment under the parent 'new_blog_post' 563 // activity item 564 } else { 565 // this is a comment edit 566 // check to see if corresponding activity entry already exists 567 if ( ! empty( $_REQUEST['action'] ) ) { 568 $existing_activity_id = get_comment_meta( $comment_id, 'bp_activity_comment_id', true ); 569 570 if ( ! empty( $existing_activity_id ) ) { 571 $args['id'] = $existing_activity_id; 572 } 573 } 574 575 // find the parent 'new_blog_post' activity entry 576 $parent_activity_id = bp_activity_get_activity_id( array( 577 'user_id' => $user_id, 578 'component' => 'blogs', 579 'type' => 'new_blog_post', 580 'item_id' => $blog_id, 581 'secondary_item_id' => $recorded_comment->comment_post_ID 582 ) ); 583 584 // we found the parent activity entry 585 // so let's go ahead and reconfigure some activity args 586 if ( ! empty( $parent_activity_id ) ) { 587 // set the 'item_id' with the parent activity entry ID 588 $args['item_id'] = $parent_activity_id; 589 590 // now see if the WP parent comment has a BP activity ID 591 $comment_parent = 0; 592 if ( ! empty( $recorded_comment->comment_parent ) ) { 593 $comment_parent = get_comment_meta( $recorded_comment->comment_parent, 'bp_activity_comment_id', true ); 594 } 595 596 // WP parent comment does not have a BP activity ID 597 // so set to 'new_blog_post' activity ID 598 if ( empty( $comment_parent ) ) { 599 $comment_parent = $parent_activity_id; 600 } 601 602 $args['secondary_item_id'] = $comment_parent; 603 $args['component'] = 'activity'; 604 $args['type'] = 'activity_comment'; 605 606 // could not find corresponding parent activity entry 607 // so wipe out $args array 608 } else { 609 $args = array(); 610 } 611 612 // Record in activity streams 613 if ( ! empty( $args ) ) { 614 // @todo should we use bp_activity_new_comment()? that function will also send 615 // an email to people in the activity comment thread 616 // 617 // what if a site already has some comment email notification plugin setup? 618 // this is why I decided to go with bp_activity_add() to avoid any conflict 619 // with existing comment email notification plugins 620 $comment_activity_id = bp_activity_add( $args ); 621 622 if ( empty( $args['id'] ) ) { 623 // add meta to activity comment 624 bp_activity_update_meta( $comment_activity_id, 'bp_blogs_post_comment_id', $comment_id ); 625 626 // add meta to comment 627 add_comment_meta( $comment_id, 'bp_activity_comment_id', $comment_activity_id ); 628 } 629 } 630 } 559 631 560 632 // Update the blogs last active date … … 730 802 global $wpdb; 731 803 732 // Delete activity stream item 733 bp_blogs_delete_activity( array( 'item_id' => $wpdb->blogid, 'secondary_item_id' => $comment_id, 'type' => 'new_blog_comment' ) ); 804 // activity comments are disabled for blog posts 805 // which means that individual activity items exist for blog comments 806 if ( bp_disable_blogforum_comments() ) { 807 // Delete the individual activity stream item 808 bp_blogs_delete_activity( array( 809 'item_id' => $wpdb->blogid, 810 'secondary_item_id' => $comment_id, 811 'type' => 'new_blog_comment' 812 ) ); 813 814 // activity comments are enabled for blog posts 815 // remove the associated activity item 816 } else { 817 // get associated activity ID from comment meta 818 $activity_id = get_comment_meta( $comment_id, 'bp_activity_comment_id', true ); 819 820 // delete the associated activity comment 821 // 822 // also removes child post comments and associated activity comments 823 if ( ! empty( $activity_id ) && bp_is_active( 'activity' ) ) { 824 // fetch the activity comments for the activity item 825 $activity = bp_activity_get( array( 826 'in' => $activity_id, 827 'display_comments' => 'stream', 828 ) ); 829 830 // get all activity comment IDs for the pending deleted item 831 if ( ! empty( $activity['activities'] ) ) { 832 $activity_ids = bp_activity_recurse_comments_activity_ids( $activity ); 833 $activity_ids[] = $activity_id; 834 835 // delete activity items 836 foreach ( $activity_ids as $activity_id ) { 837 bp_activity_delete( array( 838 'id' => $activity_id 839 ) ); 840 } 841 842 // remove associated blog comments 843 bp_blogs_remove_associated_blog_comments( $activity_ids ); 844 845 // rebuild activity comment tree 846 BP_Activity_Activity::rebuild_activity_comment_tree( $activity['activities'][0]->item_id ); 847 } 848 } 849 } 734 850 735 851 do_action( 'bp_blogs_remove_comment', $wpdb->blogid, $comment_id, bp_loggedin_user_id() ); 736 852 } 737 853 add_action( 'delete_comment', 'bp_blogs_remove_comment' ); 854 855 /** 856 * Removes blog comments that are associated with activity comments. 857 * 858 * @since BuddyPress (2.0.0) 859 * 860 * @see bp_blogs_remove_comment() 861 * @see bp_blogs_sync_delete_from_activity_comment() 862 * 863 * @param array $activity_ids The activity IDs to check association with blog 864 * comments. 865 * @param bool $force_delete Whether to force delete the comments. If false, 866 * comments are trashed instead. 867 */ 868 function bp_blogs_remove_associated_blog_comments( $activity_ids = array(), $force_delete = true ) { 869 // query args 870 $query_args = array( 871 'meta_query' => array( 872 array( 873 'key' => 'bp_activity_comment_id', 874 'value' => implode( ',', (array) $activity_ids ), 875 'compare' => 'IN', 876 ) 877 ) 878 ); 879 880 // get comment 881 $comment_query = new WP_Comment_Query; 882 $comments = $comment_query->query( $query_args ); 883 884 // found the corresponding comments 885 // let's delete them! 886 foreach ( $comments as $comment ) { 887 wp_delete_comment( $comment->comment_ID, $force_delete ); 888 889 // if we're trashing the comment, remove the meta key as well 890 if ( empty( $force_delete ) ) { 891 delete_comment_meta( $comment->comment_ID, 'bp_activity_comment_id' ); 892 } 893 } 894 } 738 895 739 896 /** … … 765 922 766 923 // This clause was moved in from bp_blogs_remove_comment() in BuddyPress 1.6. It handles delete/hold. 767 if ( in_array( $new_status, array( 'delete', 'hold' ) ) ) 924 if ( in_array( $new_status, array( 'delete', 'hold' ) ) ) { 768 925 return bp_blogs_remove_comment( $comment->comment_ID ); 769 926 770 927 // These clauses handle trash, spam, and un-spams. 771 elseif ( in_array( $new_status, array( 'trash', 'spam' ) ) )928 } elseif ( in_array( $new_status, array( 'trash', 'spam' ) ) ) { 772 929 $action = 'spam_activity'; 773 elseif ( 'approved' == $new_status )930 } elseif ( 'approved' == $new_status ) { 774 931 $action = 'ham_activity'; 932 } 775 933 776 934 // Get the activity 777 $activity_id = bp_activity_get_activity_id( array( 'component' => $bp->blogs->id, 'item_id' => get_current_blog_id(), 'secondary_item_id' => $comment->comment_ID, 'type' => 'new_blog_comment', ) ); 935 if ( bp_disable_blogforum_comments() ) { 936 $activity_id = bp_activity_get_activity_id( array( 'component' => $bp->blogs->id, 'item_id' => get_current_blog_id(), 'secondary_item_id' => $comment->comment_ID, 'type' => 'new_blog_comment', ) ); 937 } else { 938 $activity_id = get_comment_meta( $comment->comment_ID, 'bp_activity_comment_id', true ); 939 } 778 940 779 941 // Check activity item exists 780 if ( ! $activity_id ) { 781 942 if ( empty( $activity_id ) ) { 782 943 // If no activity exists, but the comment has been approved, record it into the activity table. 783 if ( 'approved' == $new_status ) 944 if ( 'approved' == $new_status ) { 784 945 return bp_blogs_record_comment( $comment->comment_ID, true ); 946 } 785 947 786 948 return;
Note: See TracChangeset
for help on using the changeset viewer.