Skip to:
Content

bbPress.org

Changeset 6370


Ignore:
Timestamp:
03/07/2017 09:54:24 PM (10 years ago)
Author:
johnjamesjacoby
Message:

BuddyPress: Dynamic activity for topics & replies, part 1.

  • Functions for activity action filters

Props thebrandonallen. See #2794.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/includes/extend/buddypress/functions.php

    r6320 r6370  
    745745        return (bool) $bbp->current_user->is_group_creator;
    746746}
     747
     748/* BuddyPress Activity Action Callbacks ***************************************/
     749
     750/**
     751 * Return an array of allowed activity actions
     752 *
     753 * @since 2.6.0 bbPress (r6370)
     754 *
     755 * @return array
     756 */
     757function bbp_get_activity_actions() {
     758        return apply_filters( 'bbp_get_activity_actions', array(
     759                'topic' => __( '%1$s started the topic %2$s in the forum %3$s',    'bbpress' ),
     760                'reply' => __( '%1$s replied to the topic %2$s in the forum %3$s', 'bbpress' )
     761        ) );
     762}
     763
     764/**
     765 * Generic function to format the dynamic BuddyPress activity action for new
     766 * topics/replies.
     767 *
     768 * @since 2.6.0 bbPress (r6370)
     769 *
     770 * @param string               $type     The type of post. Expects `topic` or `reply`.
     771 * @param string               $action   The current action string.
     772 * @param BP_Activity_Activity $activity The BuddyPress activity object.
     773 *
     774 * @return string The formatted activity action.
     775 */
     776function bbp_format_activity_action_new_post( $type = '', $action = '', $activity = false ) {
     777
     778        // Get actions
     779        $actions = bbp_get_activity_actions();
     780
     781        // Bail early if we don't have a valid type
     782        if ( ! in_array( $type, array_keys( $actions ), true ) ) {
     783                return $action;
     784        }
     785
     786        /**
     787         * Overrides the formatted activity action new activity string.
     788         *
     789         * @since 2.6.0 bbPress (r6370)
     790         *
     791         * @param string               $activity_action Activity action string value
     792         * @param string               $type            The type of post. Expects `topic` or `reply`.
     793         * @param string               $action          The current action string.
     794         * @param BP_Activity_Activity $activity        The BuddyPress activity object.
     795         */
     796        if ( $pre = apply_filters( 'bbp_pre_format_activity_action_new_post', false, $type, $action, $activity ) ) {
     797                return $pre;
     798        }
     799
     800        // Groups component
     801        if ( 'groups' === $activity->component ) {
     802                if ( 'topic' === $type ) {
     803                        $topic_id = bbp_get_topic_id( $activity->secondary_item_id );
     804                        $forum_id = bbp_get_topic_forum_id( $topic_id );
     805                } else {
     806                        $topic_id = bbp_get_reply_topic_id( $activity->secondary_item_id );
     807                        $forum_id = bbp_get_topic_forum_id( $topic_id );
     808                }
     809
     810        // General component (bbpress/forums/other)
     811        } else {
     812                if ( 'topic' === $type ) {
     813                        $topic_id = bbp_get_topic_id( $activity->item_id );
     814                        $forum_id = bbp_get_forum_id( $activity->secondary_item_id );
     815                } else {
     816                        $topic_id = bbp_get_topic_id( $activity->secondary_item_id );
     817                        $forum_id = bbp_get_topic_forum_id( $topic_id );
     818                }
     819        }
     820
     821        // User link for topic author
     822        $user_link = bbp_get_user_profile_link( $activity->user_id );
     823
     824        // Topic link
     825        $topic_permalink = bbp_get_topic_permalink( $topic_id );
     826        $topic_title     = get_post_field( 'post_title', $topic_id, 'raw' );
     827        $topic_link      = '<a href="' . esc_url( $topic_permalink ) . '">' . esc_html( $topic_title ) . '</a>';
     828
     829        // Forum link
     830        $forum_permalink = bbp_get_forum_permalink( $forum_id );
     831        $forum_title     = get_post_field( 'post_title', $forum_id, 'raw' );
     832        $forum_link      = '<a href="' . esc_url( $forum_permalink ) . '">' . esc_html( $forum_title ) . '</a>';
     833
     834        // Format
     835        $activity_action = sprintf( $actions[ $type ], $user_link, $topic_link, $forum_link );
     836
     837        /**
     838         * Filters the formatted activity action new activity string.
     839         *
     840         * @since 2.6.0 bbPress (r6370)
     841         *
     842         * @param string               $activity_action Activity action string value
     843         * @param string               $type            The type of post. Expects `topic` or `reply`.
     844         * @param string               $action          The current action string.
     845         * @param BP_Activity_Activity $activity        The BuddyPress activity object.
     846         */
     847        return apply_filters( 'bbp_format_activity_action_new_post', $activity_action, $type, $action, $activity );
     848}
     849
     850/**
     851 * Formats the dynamic BuddyPress activity action for new topics.
     852 *
     853 * @since 2.6.0 bbPress (r6370)
     854 *
     855 * @param string $action   The current action string
     856 * @param object $activity The BuddyPress activity object
     857 *
     858 * @return string The formatted activity action.
     859 */
     860function bbp_format_activity_action_new_topic( $action, $activity ) {
     861        $action = bbp_format_activity_action_new_post( 'topic', $action, $activity );
     862
     863        /**
     864         * Filters the formatted activity action new topic string.
     865         *
     866         * @since 2.6.0 bbPress (r6370)
     867         *
     868         * @param string               $action   Activity action string value
     869         * @param BP_Activity_Activity $activity Activity item object
     870         */
     871        return apply_filters( 'bbp_format_activity_action_new_topic', $action, $activity );
     872}
     873
     874/**
     875 * Formats the dynamic BuddyPress activity action for new replies.
     876 *
     877 * @since 2.6.0 bbPress (r6370)
     878 *
     879 * @param string $action   The current action string
     880 * @param object $activity The BuddyPress activity object
     881 *
     882 * @return string The formatted activity action
     883 */
     884function bbp_format_activity_action_new_reply( $action, $activity ) {
     885        $action = bbp_format_activity_action_new_post( 'reply', $action, $activity );
     886
     887        /**
     888         * Filters the formatted activity action new reply string.
     889         *
     890         * @since 2.6.0 bbPress (r6370)
     891         *
     892         * @param string               $action   Activity action string value
     893         * @param BP_Activity_Activity $activity Activity item object
     894         */
     895        return apply_filters( 'bbp_format_activity_action_new_reply', $action, $activity );
     896}
Note: See TracChangeset for help on using the changeset viewer.