Skip to:
Content

BuddyPress.org

Ticket #5560: 5560.01.patch

File 5560.01.patch, 3.4 KB (added by r-a-y, 5 years ago)
  • bp-blogs/bp-blogs-activity.php

     
    852852        return $retval;
    853853}
    854854add_filter( 'bp_get_activity_comment_permalink', 'bp_blogs_activity_comment_permalink' );
     855
     856/**
     857 * Changes single activity comment entries to use the blog comment permalink.
     858 *
     859 * This is only done if the activity comment is associated with a blog comment.
     860 *
     861 * @since BuddyPress (2.1.0)
     862 *
     863 * @param string $retval The activity permalink
     864 * @param BP_Activity_Activity $activity
     865 * @return string
     866 */
     867function bp_blogs_activity_comment_single_permalink( $retval, $activity ) {
     868        if ( 'activity_comment' !== $activity->type ) {
     869                return $retval;
     870        }
     871
     872        $blog_comment_id = bp_activity_get_meta( $activity->id, 'bp_blogs_post_comment_id' );
     873
     874        if ( ! empty( $blog_comment_id ) ) {
     875                $retval = $activity->primary_link;
     876        }
     877
     878        return $retval;
     879}
     880add_filter( 'bp_activity_get_permalink', 'bp_blogs_activity_comment_single_permalink', 10, 2 );
     881
     882/**
     883 * Formats single activity comment entries to use the blog comment action.
     884 *
     885 * This is only done if the activity comment is associated with a blog comment.
     886 *
     887 * @since BuddyPress (2.1.0)
     888 *
     889 * @param string $retval The activity action
     890 * @param BP_Activity_Activity $activity
     891 * @return string
     892 */
     893function bp_blogs_activity_comment_single_action( $retval, $activity ) {
     894        if ( 'activity_comment' !== $activity->type ) {
     895                return $retval;
     896        }
     897
     898        $blog_comment_id = bp_activity_get_meta( $activity->id, 'bp_blogs_post_comment_id' );
     899
     900        if ( ! empty( $blog_comment_id ) ) {
     901                // fetch the parent blog post activity item
     902                $parent_blog_post_activity = new BP_Activity_Activity( $activity->item_id );
     903
     904                // fake a 'new_blog_comment' activity object
     905                $object = $activity;
     906
     907                // override 'item_id' to use blog ID
     908                $object->item_id = $parent_blog_post_activity->item_id;
     909
     910                // override 'secondary_item_id' to use comment ID
     911                $object->secondary_item_id = $blog_comment_id;
     912
     913                // now format the activity action using the 'new_blog_comment' action callback
     914                $retval = bp_blogs_format_activity_action_new_blog_comment( '', $object );
     915        }
     916
     917        return $retval;
     918}
     919add_filter( 'bp_get_activity_action_pre_meta', 'bp_blogs_activity_comment_single_action', 10, 2 );
     920
     921/**
     922 * Filters activity stream to match activity comments joined to blog comments.
     923 *
     924 * This is only done when the "Comments" dropdown filter is used and if
     925 * activity commenting is allowed on blog posts.
     926 *
     927 * @since BuddyPress (2.1.0)
     928 *
     929 * @param string $retval The activity action
     930 * @param BP_Activity_Activity $activity
     931 * @return string
     932 */
     933function bp_blogs_activity_comment_filter_stream( $retval ) {
     934        // not filtering for blog comments? stop now!
     935        if ( 'new_blog_comment' !== $retval['action'] ) {
     936                return $retval;
     937        }
     938
     939        // if activity comments are disabled for blog posts, stop now!
     940        if ( bp_disable_blogforum_comments() ) {
     941                return $retval;
     942        }
     943
     944        // override the activity stream parameters to match activity comments
     945        // associated with blog comments
     946        $retval['display_comments'] = 'stream';
     947        $retval['action']           = 'activity_comment';
     948        $retval['meta_query'][]     = array(
     949                'key' => 'bp_blogs_post_comment_id',
     950        );
     951
     952        return $retval;
     953}
     954add_filter( 'bp_after_has_activities_parse_args', 'bp_blogs_activity_comment_filter_stream' );