Skip to:
Content

bbPress.org

Changeset 4397


Ignore:
Timestamp:
11/11/2012 11:51:42 PM (9 years ago)
Author:
johnjamesjacoby
Message:

BuddyPress:

  • Remove component.php, and consolidate into loader.php.
  • Introduce members.php, for modifying bbPress profile links.
  • Rename loading class and references where appropriate.
  • See #2020.
Location:
trunk/includes
Files:
1 added
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/core/extend.php

    r4396 r4397  
    6666
    6767    // Instantiate BuddyPress for bbPress
    68     bbpress()->extend->buddypress = new BBP_BuddyPress();
     68    bbpress()->extend->buddypress = new BBP_Forums_Component();
    6969}
  • trunk/includes/extend/buddypress/loader.php

    r4395 r4397  
    22
    33/**
    4  * Main bbPress BuddyPress Class
    5  *
    6  * @package bbPress
    7  * @subpackage BuddyPress
    8  * @todo maybe move to BuddyPress Forums once bbPress 1.1 can be removed
    9  * @todo move this into the main component?
    10  */
    11 
    12 // Exit if accessed directly
    13 if ( !defined( 'ABSPATH' ) ) exit;
    14 
    15 if ( !class_exists( 'BBP_BuddyPress' ) ) :
    16 /**
    17  * Loads BuddyPress extension
    18  *
    19  * @since bbPress (r3395)
     4 * bbPress BuddyPress Component Class
    205 *
    216 * @package bbPress
    227 * @subpackage BuddyPress
    238 */
    24 class BBP_BuddyPress {
    25 
    26     /** Setup Methods *********************************************************/
    27 
    28     /**
    29      * The main bbPress BuddyPress loader
    30      *
    31      * @since bbPress (r3395)
     9
     10// Exit if accessed directly
     11if ( !defined( 'ABSPATH' ) ) exit;
     12
     13if ( !class_exists( 'BBP_Forums_Component' ) ) :
     14/**
     15 * Loads Forums Component
     16 *
     17 * @since bbPress (r3552)
     18 *
     19 * @package bbPress
     20 * @subpackage BuddyPress
     21 */
     22class BBP_Forums_Component extends BP_Component {
     23
     24    /**
     25     * Start the forums component creation process
     26     *
     27     * @since bbPress (r3552)
    3228     */
    3329    public function __construct() {
     30        parent::start(
     31            'forums',
     32            __( 'Forums', 'bbpress' ),
     33            BP_PLUGIN_DIR
     34        );
    3435        $this->includes();
     36        $this->setup_globals();
    3537        $this->setup_actions();
    36         $this->setup_filters();
     38        $this->setup_nav();
    3739        $this->fully_loaded();
    3840    }
     
    4244     */
    4345    public function includes() {
    44 
    45         // BuddyPress Component Extension class
    46         require( bbpress()->includes_dir . 'extend/buddypress/component.php' );
    4746
    4847        // Helper BuddyPress functions
    4948        require( bbpress()->includes_dir . 'extend/buddypress/functions.php' );
    5049
    51         // BuddyPress Activity Extension class
     50        // Members modifications
     51        require( bbpress()->includes_dir . 'extend/buddypress/members.php' );
     52
     53        // BuddyPress Activity Extension class
    5254        if ( bp_is_active( 'activity' ) ) {
    5355            require( bbpress()->includes_dir . 'extend/buddypress/activity.php' );
    5456        }
    5557
    56         // BuddyPress Group Extension class 
     58        // BuddyPress Group Extension class
    5759        if ( bbp_is_group_forums_active() && bp_is_active( 'groups' ) ) {
    5860            require( bbpress()->includes_dir . 'extend/buddypress/group.php' );
     
    6163
    6264    /**
    63      * Instantiate classes for integration
     65     * Setup globals
     66     *
     67     * The BP_FORUMS_SLUG constant is deprecated, and only used here for
     68     * backwards compatibility.
     69     *
     70     * @since bbPress (r3552)
     71     */
     72    public function setup_globals() {
     73        $bp = buddypress();
     74
     75        // Define the parent forum ID
     76        if ( !defined( 'BP_FORUMS_PARENT_FORUM_ID' ) )
     77            define( 'BP_FORUMS_PARENT_FORUM_ID', 1 );
     78
     79        // Define a slug, if necessary
     80        if ( !defined( 'BP_FORUMS_SLUG' ) )
     81            define( 'BP_FORUMS_SLUG', $this->id );
     82
     83        // All globals for messaging component.
     84        $globals = array(
     85            'path'                  => BP_PLUGIN_DIR,
     86            'slug'                  => BP_FORUMS_SLUG,
     87            'root_slug'             => isset( $bp->pages->forums->slug ) ? $bp->pages->forums->slug : BP_FORUMS_SLUG,
     88            'has_directory'         => false,
     89            'notification_callback' => 'messages_format_notifications',
     90            'search_string'         => __( 'Search Forums...', 'bbpress' ),
     91        );
     92
     93        parent::setup_globals( $globals );
     94    }
     95
     96    /**
     97     * Instantiate classes for BuddyPress integration
     98     *
     99     * @since bbPress (r3395)
    64100     */
    65101    public function setup_components() {
    66102
    67         // Create the new BuddyPress Forums component
    68         if ( ! bp_is_active( 'forums' ) || ! bp_forums_is_installed_correctly() ) {
    69             buddypress()->forums = new BBP_Forums_Component();
    70         }
     103        // Always load the members component
     104        bbpress()->extend->buddypress->members = new BBP_BuddyPress_Members;
    71105
    72106        // Create new activity class
    73107        if ( bp_is_active( 'activity' ) ) {
    74             bbpress()->extend->activity = new BBP_BuddyPress_Activity;
     108            bbpress()->extend->buddypress->activity = new BBP_BuddyPress_Activity;
    75109        }
    76110
     
    89123     * @uses add_action() To add various actions
    90124     */
    91     private function setup_actions() {
     125    public function setup_actions() {
    92126
    93127        // Setup the components
    94128        add_action( 'bp_init', array( $this, 'setup_components' ) );
    95129
    96         /** Favorites *********************************************************/
    97 
    98         // Move handler to 'bp_actions' - BuddyPress bypasses template_loader
    99         remove_action( 'template_redirect', 'bbp_favorites_handler', 1 );
    100         add_action(    'bp_actions',        'bbp_favorites_handler', 1 );
    101 
    102         /** Subscriptions *****************************************************/
    103 
    104         // Move handler to 'bp_actions' - BuddyPress bypasses template_loader
    105         remove_action( 'template_redirect', 'bbp_subscriptions_handler', 1 );
    106         add_action(    'bp_actions',        'bbp_subscriptions_handler', 1 );
    107     }
    108 
    109     /**
    110      * Setup the filters
    111      *
    112      * @since bbPress (r3395)
    113      * @access private
    114      * @uses add_filter() To add various filters
    115      * @uses add_action() To add various actions
    116      */
    117     private function setup_filters() {
    118 
    119         // Override bbPress user profile URL with BuddyPress profile URL
    120         add_filter( 'bbp_pre_get_user_profile_url',    array( $this, 'user_profile_url'            )        );
    121         add_filter( 'bbp_get_favorites_permalink',     array( $this, 'get_favorites_permalink'     ), 10, 2 );
    122         add_filter( 'bbp_get_subscriptions_permalink', array( $this, 'get_subscriptions_permalink' ), 10, 2 );
     130        parent::setup_actions();
    123131    }
    124132
     
    132140        do_action_ref_array( 'bbp_buddypress_loaded', array( $this ) );
    133141    }
    134    
    135     /**
    136      * Override bbPress profile URL with BuddyPress profile URL
    137      *
    138      * @since bbPress (r3401)
    139      * @param string $url
    140      * @param int $user_id
    141      * @param string $user_nicename
    142      * @return string
    143      */
    144     public function user_profile_url( $user_id ) {
     142
     143    /**
     144     * Setup BuddyBar navigation
     145     *
     146     * @since bbPress (r3552)
     147     */
     148    public function setup_nav() {
     149
     150        // Stop if there is no user displayed or logged in
     151        if ( !is_user_logged_in() && !bp_displayed_user_id() )
     152            return;
    145153
    146154        // Define local variable(s)
    147         $profile_url = '';
    148 
    149         // Special handling for forum component
    150         if ( bp_is_current_component( 'forums' ) ) {
    151 
    152             // Empty action or 'topics' action
    153             if ( !bp_current_action() || bp_is_current_action( 'topics' ) ) {
    154                 $profile_url = bp_core_get_user_domain( $user_id ) . 'forums/topics';
    155 
    156             // Empty action or 'topics' action
    157             } elseif ( bp_is_current_action( 'replies' ) ) {
    158                 $profile_url = bp_core_get_user_domain( $user_id ) . 'forums/replies';
    159 
    160             // 'favorites' action
    161             } elseif ( bbp_is_favorites_active() && bp_is_current_action( 'favorites' ) ) {
    162                 $profile_url = $this->get_favorites_permalink( '', $user_id );
    163 
    164             // 'subscriptions' action
    165             } elseif ( bbp_is_subscriptions_active() && bp_is_current_action( 'subscriptions' ) ) {
    166                 $profile_url = $this->get_subscriptions_permalink( '', $user_id );
     155        $sub_nav     = array();
     156        $user_domain = '';
     157
     158        // Add 'Forums' to the main navigation
     159        $main_nav = array(
     160            'name'                => __( 'Forums', 'bbpress' ),
     161            'slug'                => $this->slug,
     162            'position'            => 80,
     163            'screen_function'     => 'bbp_member_forums_screen_topics',
     164            'default_subnav_slug' => 'topics',
     165            'item_css_id'         => $this->id
     166        );
     167
     168        // Determine user to use
     169        if ( bp_displayed_user_id() )
     170            $user_domain = bp_displayed_user_domain();
     171        elseif ( bp_loggedin_user_domain() )
     172            $user_domain = bp_loggedin_user_domain();
     173        else
     174            return;
     175
     176        // User link
     177        $forums_link = trailingslashit( $user_domain . $this->slug );
     178
     179        // Topics started
     180        $sub_nav[] = array(
     181            'name'            => __( 'Topics Started', 'bbpress' ),
     182            'slug'            => 'topics',
     183            'parent_url'      => $forums_link,
     184            'parent_slug'     => $this->slug,
     185            'screen_function' => 'bbp_member_forums_screen_topics',
     186            'position'        => 20,
     187            'item_css_id'     => 'topics'
     188        );
     189
     190        // Replies to topics
     191        $sub_nav[] = array(
     192            'name'            => __( 'Topics Replied To', 'bbpress' ),
     193            'slug'            => 'replies',
     194            'parent_url'      => $forums_link,
     195            'parent_slug'     => $this->slug,
     196            'screen_function' => 'bbp_member_forums_screen_replies',
     197            'position'        => 40,
     198            'item_css_id'     => 'replies'
     199        );
     200
     201        // Favorite topics
     202        $sub_nav[] = array(
     203            'name'            => __( 'Favorites', 'bbpress' ),
     204            'slug'            => 'favorites',
     205            'parent_url'      => $forums_link,
     206            'parent_slug'     => $this->slug,
     207            'screen_function' => 'bbp_member_forums_screen_favorites',
     208            'position'        => 60,
     209            'item_css_id'     => 'favorites'
     210        );
     211
     212        // Subscribed topics (my profile only)
     213        if ( bp_is_my_profile() ) {
     214            $sub_nav[] = array(
     215                'name'            => __( 'Subscriptions', 'bbpress' ),
     216                'slug'            => 'subscriptions',
     217                'parent_url'      => $forums_link,
     218                'parent_slug'     => $this->slug,
     219                'screen_function' => 'bbp_member_forums_screen_subscriptions',
     220                'position'        => 60,
     221                'item_css_id'     => 'subscriptions'
     222            );
     223        }
     224
     225        parent::setup_nav( $main_nav, $sub_nav );
     226    }
     227
     228    /**
     229     * Set up the admin bar
     230     *
     231     * @since bbPress (r3552)
     232     */
     233    public function setup_admin_bar() {
     234
     235        // Prevent debug notices
     236        $wp_admin_nav = array();
     237
     238        // Menus for logged in user
     239        if ( is_user_logged_in() ) {
     240
     241            // Setup the logged in user variables
     242            $user_domain = bp_loggedin_user_domain();
     243            $forums_link = trailingslashit( $user_domain . $this->slug );
     244
     245            // Add the "My Account" sub menus
     246            $wp_admin_nav[] = array(
     247                'parent' => buddypress()->my_account_menu_id,
     248                'id'     => 'my-account-' . $this->id,
     249                'title'  => __( 'Forums', 'bbpress' ),
     250                'href'   => trailingslashit( $forums_link )
     251            );
     252
     253            // Topics
     254            $wp_admin_nav[] = array(
     255                'parent' => 'my-account-' . $this->id,
     256                'id'     => 'my-account-' . $this->id . '-topics',
     257                'title'  => __( 'Topics Started', 'bbpress' ),
     258                'href'   => trailingslashit( $forums_link . 'topics' )
     259            );
     260
     261            // Replies
     262            $wp_admin_nav[] = array(
     263                'parent' => 'my-account-' . $this->id,
     264                'id'     => 'my-account-' . $this->id . '-replies',
     265                'title'  => __( 'Topics Replied To', 'bbpress' ),
     266                'href'   => trailingslashit( $forums_link . 'replies' )
     267            );
     268
     269            // Favorites
     270            $wp_admin_nav[] = array(
     271                'parent' => 'my-account-' . $this->id,
     272                'id'     => 'my-account-' . $this->id . '-favorites',
     273                'title'  => __( 'Favorite Topics', 'bbpress' ),
     274                'href'   => trailingslashit( $forums_link . 'favorites' )
     275            );
     276
     277            // Subscriptions
     278            $wp_admin_nav[] = array(
     279                'parent' => 'my-account-' . $this->id,
     280                'id'     => 'my-account-' . $this->id . '-subscriptions',
     281                'title'  => __( 'Subscribed Topics', 'bbpress' ),
     282                'href'   => trailingslashit( $forums_link . 'subscriptions' )
     283            );
     284        }
     285
     286        parent::setup_admin_bar( $wp_admin_nav );
     287    }
     288
     289    /**
     290     * Sets up the title for pages and <title>
     291     *
     292     * @since bbPress (r3552)
     293     */
     294    public function setup_title() {
     295        $bp = buddypress();
     296
     297        // Adjust title based on view
     298        if ( bp_is_forums_component() ) {
     299            if ( bp_is_my_profile() ) {
     300                $bp->bp_options_title = __( 'Forums', 'bbpress' );
     301            } else {
     302                $bp->bp_options_avatar = bp_core_fetch_avatar( array(
     303                    'item_id' => $bp->displayed_user->id,
     304                    'type'    => 'thumb'
     305                ) );
     306                $bp->bp_options_title = $bp->displayed_user->fullname;
    167307            }
    168 
    169         // Not in users' forums area
    170         } else {
    171             $profile_url = bp_core_get_user_domain( $user_id );
    172         }
    173 
    174         return trailingslashit( $profile_url );
    175     }
    176 
    177     /**
    178      * Override bbPress favorites URL with BuddyPress profile URL
    179      *
    180      * @since bbPress (r3721)
    181      * @param string $url
    182      * @param int $user_id
    183      * @return string
    184      */
    185     public function get_favorites_permalink( $url, $user_id ) {
    186         $url = trailingslashit( bp_core_get_user_domain( $user_id ) . 'forums/favorites' );
    187         return $url;
    188     }
    189 
    190     /**
    191      * Override bbPress subscriptions URL with BuddyPress profile URL
    192      *
    193      * @since bbPress (r3721)
    194      * @param string $url
    195      * @param int $user_id
    196      * @return string
    197      */
    198     public function get_subscriptions_permalink( $url, $user_id ) {
    199         $url = trailingslashit( bp_core_get_user_domain( $user_id ) . 'forums/subscriptions' );
    200         return $url;
     308        }
     309
     310        parent::setup_title();
    201311    }
    202312}
Note: See TracChangeset for help on using the changeset viewer.