Skip to:
Content

bbPress.org

Changeset 3399


Ignore:
Timestamp:
08/08/2011 01:40:15 AM (13 years ago)
Author:
johnjamesjacoby
Message:

Separate actions and filters in BBP_BuddyPress class. Introduce activity_can_comment() and activity_get_permalink() filters to force bbPress's activity stream items to behave exactly like they do currently with group forums.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-extend-buddypress.php

    r3398 r3399  
    9090        $this->setup_globals();
    9191        $this->setup_actions();
    92     }
    93 
    94     /**
    95      * Component global variables
     92        $this->setup_filters();
     93    }
     94
     95    /**
     96     * Extension variables
    9697     *
    9798     * @since bbPress (r3395)
     
    117118
    118119    /**
    119      * Setup the admin hooks
     120     * Setup the actions
    120121     *
    121122     * @since bbPress (r3395)
     
    130131
    131132        // Register the activity stream actions
    132         add_action( 'bp_register_activity_actions', array( $this, 'register_activity_actions' ) );
     133        add_action( 'bp_register_activity_actions', array( $this, 'register_activity_actions' )        );
    133134
    134135        // Hook into topic creation
    135         add_action( 'bbp_new_topic', array( $this, 'topic_create' ), 10, 4 );
     136        add_action( 'bbp_new_topic',                array( $this, 'topic_create'              ), 10, 4 );
    136137
    137138        // Hook into reply creation
    138         add_action( 'bbp_new_reply', array( $this, 'reply_create' ), 10, 5 );
     139        add_action( 'bbp_new_reply',                array( $this, 'reply_create'              ), 10, 5 );
     140    }
     141   
     142    /**
     143     * Setup the filters
     144     *
     145     * @since bbPress (r3395)
     146     * @access private
     147     *
     148     * @uses add_filter() To add various filters
     149     * @uses add_action() To add various actions
     150     */
     151    private function setup_filters() {
     152
     153        /** Activity **********************************************************/
     154
     155        // Obey BuddyPress commenting rules
     156        add_filter( 'bp_activity_can_comment',   array( $this, 'activity_can_comment'   )        );
     157
     158        // Link directly to the topic or reply
     159        add_filter( 'bp_activity_get_permalink', array( $this, 'activity_get_permalink' ), 10, 2 );
    139160    }
    140161   
     
    238259    }
    239260   
     261    /**
     262     * Maybe disable activity stream comments on select actions
     263     *
     264     * @since bbPress (r3399)
     265     *
     266     * @global BP_Activity_Template $activities_template
     267     * @global BuddyPress $bp
     268     * @param boolean $can_comment
     269     * @uses bp_get_activity_action_name()
     270     * @return boolean
     271     */
     272    public function activity_can_comment( $can_comment = true ) {
     273        global $activities_template, $bp;
     274
     275        // Already forced off, so comply
     276        if ( false === $can_comment )
     277            return $can_comment;
     278
     279        // Check if blog & forum activity stream commenting is off
     280        if ( ( false === $activities_template->disable_blogforum_replies ) || (int) $activities_template->disable_blogforum_replies ) {
     281           
     282            // Get the current action name
     283            $action_name = bp_get_activity_action_name();
     284
     285            // Setup the array of possibly disabled actions
     286            $disabled_actions = array(
     287                $this->topic_create,
     288                $this->reply_create
     289            );
     290
     291            // Check if this activity stream action is disabled
     292            if ( in_array( $action_name, $disabled_actions ) ) {
     293                $can_comment = false;
     294            }
     295        }
     296
     297        return $can_comment;
     298    }
     299
     300    /**
     301     * Maybe link directly to topics and replies in activity stream entries
     302     *
     303     * @since bbPress (r3399)
     304     *
     305     * @param string $link
     306     * @param mixed $activity_object
     307     *
     308     * @return string The link to the activity stream item
     309     */
     310    public function activity_get_permalink( $link = '', $activity_object = false ) {
     311
     312        // Setup the array of actions to link directly to
     313        $disabled_actions = array(
     314            $this->topic_create,
     315            $this->reply_create
     316        );
     317
     318        // Check if this activity stream action is directly linked
     319        if ( in_array( $activity_object->type, $disabled_actions ) ) {
     320            $link = $activity_object->primary_link;
     321        }
     322
     323        return $link;
     324    }
     325
    240326    /** Topics ****************************************************************/
    241327
     
    306392            'action'            => $activity_action,
    307393            'content'           => $activity_content,
    308             'primary_link'      => $topic_link,
     394            'primary_link'      => $topic_permalink,
    309395            'type'              => $this->topic_create,
    310396            'item_id'           => $topic_id,
Note: See TracChangeset for help on using the changeset viewer.