includes(); $this->setup_globals(); $this->setup_actions(); $this->setup_nav(); $this->fully_loaded(); } /** * Include BuddyPress classes and functions */ public function includes() { // Helper BuddyPress functions require( bbpress()->includes_dir . 'extend/buddypress/functions.php' ); // Members modifications require( bbpress()->includes_dir . 'extend/buddypress/members.php' ); // BuddyPress Activity Extension class if ( bp_is_active( 'activity' ) ) { require( bbpress()->includes_dir . 'extend/buddypress/activity.php' ); } // BuddyPress Group Extension class if ( bbp_is_group_forums_active() && bp_is_active( 'groups' ) ) { require( bbpress()->includes_dir . 'extend/buddypress/group.php' ); } } /** * Setup globals * * The BP_FORUMS_SLUG constant is deprecated, and only used here for * backwards compatibility. * * @since bbPress (r3552) */ public function setup_globals() { $bp = buddypress(); // Define the parent forum ID if ( !defined( 'BP_FORUMS_PARENT_FORUM_ID' ) ) define( 'BP_FORUMS_PARENT_FORUM_ID', 1 ); // Define a slug, if necessary if ( !defined( 'BP_FORUMS_SLUG' ) ) define( 'BP_FORUMS_SLUG', $this->id ); // All globals for messaging component. $globals = array( 'path' => BP_PLUGIN_DIR, 'slug' => BP_FORUMS_SLUG, 'root_slug' => isset( $bp->pages->forums->slug ) ? $bp->pages->forums->slug : BP_FORUMS_SLUG, 'has_directory' => false, 'notification_callback' => 'messages_format_notifications', 'search_string' => __( 'Search Forums...', 'bbpress' ), ); parent::setup_globals( $globals ); } /** * Instantiate classes for BuddyPress integration * * @since bbPress (r3395) */ public function setup_components() { // Always load the members component bbpress()->extend->buddypress->members = new BBP_BuddyPress_Members; // Create new activity class if ( bp_is_active( 'activity' ) ) { bbpress()->extend->buddypress->activity = new BBP_BuddyPress_Activity; } // Register the group extension only if groups are active if ( bbp_is_group_forums_active() && bp_is_active( 'groups' ) ) { bp_register_group_extension( 'BBP_Forums_Group_Extension' ); } } /** * Setup the actions * * @since bbPress (r3395) * @access private * @uses add_filter() To add various filters * @uses add_action() To add various actions */ public function setup_actions() { // Setup the components add_action( 'bp_init', array( $this, 'setup_components' ) ); parent::setup_actions(); } /** * Allow the variables, actions, and filters to be modified by third party * plugins and themes. * * @since bbPress (r3902) */ private function fully_loaded() { do_action_ref_array( 'bbp_buddypress_loaded', array( $this ) ); } /** * Setup BuddyBar navigation * * @since bbPress (r3552) */ public function setup_nav() { // Stop if there is no user displayed or logged in if ( !is_user_logged_in() && !bp_displayed_user_id() ) return; // Define local variable(s) $sub_nav = array(); $user_domain = ''; // Add 'Forums' to the main navigation $main_nav = array( 'name' => __( 'Forums', 'bbpress' ), 'slug' => $this->slug, 'position' => 80, 'screen_function' => 'bbp_member_forums_screen_topics', 'default_subnav_slug' => 'topics', 'item_css_id' => $this->id ); // Determine user to use if ( bp_displayed_user_id() ) $user_domain = bp_displayed_user_domain(); elseif ( bp_loggedin_user_domain() ) $user_domain = bp_loggedin_user_domain(); else return; // User link $forums_link = trailingslashit( $user_domain . $this->slug ); // Topics started $sub_nav[] = array( 'name' => __( 'Topics Started', 'bbpress' ), 'slug' => 'topics', 'parent_url' => $forums_link, 'parent_slug' => $this->slug, 'screen_function' => 'bbp_member_forums_screen_topics', 'position' => 20, 'item_css_id' => 'topics' ); // Replies to topics $sub_nav[] = array( 'name' => __( 'Replies Created', 'bbpress' ), 'slug' => 'replies', 'parent_url' => $forums_link, 'parent_slug' => $this->slug, 'screen_function' => 'bbp_member_forums_screen_replies', 'position' => 40, 'item_css_id' => 'replies' ); // Favorite topics $sub_nav[] = array( 'name' => __( 'Favorites', 'bbpress' ), 'slug' => 'favorites', 'parent_url' => $forums_link, 'parent_slug' => $this->slug, 'screen_function' => 'bbp_member_forums_screen_favorites', 'position' => 60, 'item_css_id' => 'favorites' ); // Subscribed topics (my profile only) if ( bp_is_my_profile() ) { $sub_nav[] = array( 'name' => __( 'Subscriptions', 'bbpress' ), 'slug' => 'subscriptions', 'parent_url' => $forums_link, 'parent_slug' => $this->slug, 'screen_function' => 'bbp_member_forums_screen_subscriptions', 'position' => 60, 'item_css_id' => 'subscriptions' ); } parent::setup_nav( $main_nav, $sub_nav ); } /** * Set up the admin bar * * @since bbPress (r3552) */ public function setup_admin_bar() { // Prevent debug notices $wp_admin_nav = array(); // Menus for logged in user if ( is_user_logged_in() ) { // Setup the logged in user variables $user_domain = bp_loggedin_user_domain(); $forums_link = trailingslashit( $user_domain . $this->slug ); // Add the "My Account" sub menus $wp_admin_nav[] = array( 'parent' => buddypress()->my_account_menu_id, 'id' => 'my-account-' . $this->id, 'title' => __( 'Forums', 'bbpress' ), 'href' => trailingslashit( $forums_link ) ); // Topics $wp_admin_nav[] = array( 'parent' => 'my-account-' . $this->id, 'id' => 'my-account-' . $this->id . '-topics', 'title' => __( 'Topics Started', 'bbpress' ), 'href' => trailingslashit( $forums_link . 'topics' ) ); // Replies $wp_admin_nav[] = array( 'parent' => 'my-account-' . $this->id, 'id' => 'my-account-' . $this->id . '-replies', 'title' => __( 'Replies Created', 'bbpress' ), 'href' => trailingslashit( $forums_link . 'replies' ) ); // Favorites $wp_admin_nav[] = array( 'parent' => 'my-account-' . $this->id, 'id' => 'my-account-' . $this->id . '-favorites', 'title' => __( 'Favorite Topics', 'bbpress' ), 'href' => trailingslashit( $forums_link . 'favorites' ) ); // Subscriptions $wp_admin_nav[] = array( 'parent' => 'my-account-' . $this->id, 'id' => 'my-account-' . $this->id . '-subscriptions', 'title' => __( 'Subscribed Topics', 'bbpress' ), 'href' => trailingslashit( $forums_link . 'subscriptions' ) ); } parent::setup_admin_bar( $wp_admin_nav ); } /** * Sets up the title for pages and