Skip to:
Content

BuddyPress.org

Ticket #7239: 7239-1.patch

File 7239-1.patch, 17.2 KB (added by espellcaste, 5 years ago)
  • src/bp-forums/classes/class-bp-forums-component.php

     
     1<?php
     2/**
     3 * BuddyPress Foruns Loader.
     4 *
     5 * @package BuddyPress
     6 * @subpackage Foruns
     7 * @since 1.5.0
     8 */
     9
     10// Exit if accessed directly.
     11defined( 'ABSPATH' ) || exit;
     12
     13/**
     14 * Sets up the forums component.
     15 *
     16 * @since 1.5.0
     17 */
     18class BP_Forums_Component extends BP_Component {
     19
     20        /**
     21         * Start the forums component creation process.
     22         *
     23         * @since 1.5.0
     24         */
     25        public function __construct() {
     26                parent::start(
     27                        'forums',
     28                        __( 'Discussion Forums', 'buddypress' ),
     29                        buddypress()->plugin_dir,
     30                        array(
     31                                'adminbar_myaccount_order' => 80
     32                        )
     33                );
     34        }
     35
     36        /**
     37         * Set up bp-forums global settings.
     38         *
     39         * The BP_FORUMS_SLUG constant is deprecated, and only used here for
     40         * backwards compatibility.
     41         *
     42         * @since 1.5.0
     43         *
     44         * @see BP_Component::setup_globals() for description of parameters.
     45         *
     46         * @param array $args See {@link BP_Component::setup_globals()}.
     47         */
     48        public function setup_globals( $args = array() ) {
     49                $bp = buddypress();
     50
     51                // Define the parent forum ID.
     52                if ( ! defined( 'BP_FORUMS_PARENT_FORUM_ID' ) ) {
     53                        define( 'BP_FORUMS_PARENT_FORUM_ID', 1 );
     54                }
     55
     56                // Define a slug, if necessary.
     57                if ( ! defined( 'BP_FORUMS_SLUG' ) ) {
     58                        define( 'BP_FORUMS_SLUG', $this->id );
     59                }
     60
     61                // The location of the bbPress stand-alone config file.
     62                $bbconfig = bp_core_get_root_option( 'bb-config-location' );
     63                if ( '' !== $bbconfig ) {
     64                        $this->bbconfig = $bbconfig;
     65                }
     66
     67                // All globals for messaging component.
     68                // Note that global_tables is included in this array.
     69                $globals = array(
     70                        'slug'                  => BP_FORUMS_SLUG,
     71                        'root_slug'             => isset( $bp->pages->forums->slug ) ? $bp->pages->forums->slug : BP_FORUMS_SLUG,
     72                        'has_directory'         => true,
     73                        'notification_callback' => 'messages_format_notifications',
     74                        'search_string'         => __( 'Search Forums...', 'buddypress' ),
     75                );
     76
     77                parent::setup_globals( $globals );
     78        }
     79
     80        /**
     81         * Include bp-forums files.
     82         *
     83         * @since 1.5.0
     84         *
     85         * @see BP_Component::includes() for description of parameters.
     86         *
     87         * @param array $includes See {@link BP_Component::includes()}.
     88         */
     89        public function includes( $includes = array() ) {
     90
     91                // Files to include.
     92                $includes = array(
     93                        'actions',
     94                        'screens',
     95                        'classes',
     96                        'filters',
     97                        'template',
     98                        'functions',
     99                );
     100
     101                // bbPress stand-alone.
     102                if ( ! defined( 'BB_PATH' ) ) {
     103                        $includes[] = 'bbpress-sa';
     104                }
     105
     106                // Admin-specific code.
     107                if ( is_admin() ) {
     108                        $includes[] = 'deprecated/1.6';
     109                        $includes[] = 'deprecated/1.7';
     110                }
     111
     112                parent::includes( $includes );
     113        }
     114
     115        /**
     116         * Set up component navigation.
     117         *
     118         * @since 1.5.0
     119         *
     120         * @see BP_Component::setup_nav() for a description of arguments.
     121         *
     122         * @param array $main_nav Optional. See BP_Component::setup_nav() for
     123         *                        description.
     124         * @param array $sub_nav  Optional. See BP_Component::setup_nav() for
     125         *                        description.
     126         */
     127        public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
     128
     129                // Stop if forums haven't been set up yet.
     130                if ( ! bp_forums_is_installed_correctly() ) {
     131                        return;
     132                }
     133
     134                // Stop if there is no user displayed or logged in.
     135                if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
     136                        return;
     137                }
     138
     139                // Determine user to use.
     140                if ( bp_displayed_user_domain() ) {
     141                        $user_domain = bp_displayed_user_domain();
     142                } elseif ( bp_loggedin_user_domain() ) {
     143                        $user_domain = bp_loggedin_user_domain();
     144                } else {
     145                        return;
     146                }
     147
     148                // User link.
     149                $slug        = bp_get_forums_slug();
     150                $forums_link = trailingslashit( $user_domain . $slug );
     151
     152                // Add 'Forums' to the main navigation.
     153                $main_nav = array(
     154                        'name'                => __( 'Forums', 'buddypress' ),
     155                        'slug'                => $slug,
     156                        'position'            => 80,
     157                        'screen_function'     => 'bp_member_forums_screen_topics',
     158                        'default_subnav_slug' => 'topics',
     159                        'item_css_id'         => $this->id
     160                );
     161
     162                // Topics started.
     163                $sub_nav[] = array(
     164                        'name'            => __( 'Topics Started', 'buddypress' ),
     165                        'slug'            => 'topics',
     166                        'parent_url'      => $forums_link,
     167                        'parent_slug'     => $slug,
     168                        'screen_function' => 'bp_member_forums_screen_topics',
     169                        'position'        => 20,
     170                        'item_css_id'     => 'topics'
     171                );
     172
     173                // Topics replied to.
     174                $sub_nav[] = array(
     175                        'name'            => __( 'Replied To', 'buddypress' ),
     176                        'slug'            => 'replies',
     177                        'parent_url'      => $forums_link,
     178                        'parent_slug'     => $slug,
     179                        'screen_function' => 'bp_member_forums_screen_replies',
     180                        'position'        => 40,
     181                        'item_css_id'     => 'replies'
     182                );
     183
     184                parent::setup_nav( $main_nav, $sub_nav );
     185        }
     186
     187        /**
     188         * Set up bp-forums integration with the WordPress admin bar.
     189         *
     190         * @since 1.5.0
     191         *
     192         * @see BP_Component::setup_admin_bar() for a description of arguments.
     193         *
     194         * @param array $wp_admin_nav See BP_Component::setup_admin_bar()
     195         *                            for description.
     196         */
     197        public function setup_admin_bar( $wp_admin_nav = array() ) {
     198
     199                // Menus for logged in user.
     200                if ( is_user_logged_in() ) {
     201
     202                        // Setup the logged in user variables.
     203                        $forums_link = trailingslashit( bp_loggedin_user_domain() . bp_get_forums_slug() );
     204
     205                        // Add the "My Account" sub menus.
     206                        $wp_admin_nav[] = array(
     207                                'parent' => buddypress()->my_account_menu_id,
     208                                'id'     => 'my-account-' . $this->id,
     209                                'title'  => __( 'Forums', 'buddypress' ),
     210                                'href'   => $forums_link
     211                        );
     212
     213                        // Topics.
     214                        $wp_admin_nav[] = array(
     215                                'parent' => 'my-account-' . $this->id,
     216                                'id'     => 'my-account-' . $this->id . '-topics-started',
     217                                'title'  => __( 'Topics Started', 'buddypress' ),
     218                                'href'   => $forums_link
     219                        );
     220
     221                        // Replies.
     222                        $wp_admin_nav[] = array(
     223                                'parent' => 'my-account-' . $this->id,
     224                                'id'     => 'my-account-' . $this->id . '-replies',
     225                                'title'  => __( 'Replies', 'buddypress' ),
     226                                'href'   => trailingslashit( $forums_link . 'replies' )
     227                        );
     228
     229                        // Favorites.
     230                        $wp_admin_nav[] = array(
     231                                'parent' => 'my-account-' . $this->id,
     232                                'id'     => 'my-account-' . $this->id . '-favorite-topics',
     233                                'title'  => __( 'Favorite Topics', 'buddypress' ),
     234                                'href'   => trailingslashit( $forums_link . 'favorites' )
     235                        );
     236                }
     237
     238                parent::setup_admin_bar( $wp_admin_nav );
     239        }
     240
     241        /**
     242         * Set up the title for pages and the <title> element.
     243         *
     244         * @since 1.5.0
     245         */
     246        public function setup_title() {
     247
     248                // Adjust title based on view.
     249                if ( bp_is_forums_component() ) {
     250                        $bp = buddypress();
     251
     252                        if ( bp_is_my_profile() ) {
     253                                $bp->bp_options_title = __( 'Forums', 'buddypress' );
     254                        } else {
     255                                $bp->bp_options_avatar = bp_core_fetch_avatar( array(
     256                                        'item_id' => bp_displayed_user_id(),
     257                                        'type'    => 'thumb',
     258                                        'alt'     => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_get_displayed_user_fullname() )
     259                                ) );
     260                                $bp->bp_options_title  = bp_get_displayed_user_fullname();
     261                        }
     262                }
     263
     264                parent::setup_title();
     265        }
     266}
  • src/bp-forums/classes/class-bp-forums-component.php

    Property changes on: src/bp-forums/classes/class-bp-forums-component.php
    ___________________________________________________________________
    Added: svn:eol-style
    ## -0,0 +1 ##
    +native
    \ No newline at end of property
     
     1<?php
     2/**
     3 * BuddyPress Foruns Loader.
     4 *
     5 * @package BuddyPress
     6 * @subpackage Foruns
     7 * @since 1.5.0
     8 */
     9
     10// Exit if accessed directly.
     11defined( 'ABSPATH' ) || exit;
     12
     13/**
     14 * Sets up the forums component.
     15 *
     16 * @since 1.5.0
     17 */
     18class BP_Forums_Component extends BP_Component {
     19
     20        /**
     21         * Start the forums component creation process.
     22         *
     23         * @since 1.5.0
     24         */
     25        public function __construct() {
     26                parent::start(
     27                        'forums',
     28                        __( 'Discussion Forums', 'buddypress' ),
     29                        buddypress()->plugin_dir,
     30                        array(
     31                                'adminbar_myaccount_order' => 80
     32                        )
     33                );
     34        }
     35
     36        /**
     37         * Set up bp-forums global settings.
     38         *
     39         * The BP_FORUMS_SLUG constant is deprecated, and only used here for
     40         * backwards compatibility.
     41         *
     42         * @since 1.5.0
     43         *
     44         * @see BP_Component::setup_globals() for description of parameters.
     45         *
     46         * @param array $args See {@link BP_Component::setup_globals()}.
     47         */
     48        public function setup_globals( $args = array() ) {
     49                $bp = buddypress();
     50
     51                // Define the parent forum ID.
     52                if ( ! defined( 'BP_FORUMS_PARENT_FORUM_ID' ) ) {
     53                        define( 'BP_FORUMS_PARENT_FORUM_ID', 1 );
     54                }
     55
     56                // Define a slug, if necessary.
     57                if ( ! defined( 'BP_FORUMS_SLUG' ) ) {
     58                        define( 'BP_FORUMS_SLUG', $this->id );
     59                }
     60
     61                // The location of the bbPress stand-alone config file.
     62                $bbconfig = bp_core_get_root_option( 'bb-config-location' );
     63                if ( '' !== $bbconfig ) {
     64                        $this->bbconfig = $bbconfig;
     65                }
     66
     67                // All globals for messaging component.
     68                // Note that global_tables is included in this array.
     69                $globals = array(
     70                        'slug'                  => BP_FORUMS_SLUG,
     71                        'root_slug'             => isset( $bp->pages->forums->slug ) ? $bp->pages->forums->slug : BP_FORUMS_SLUG,
     72                        'has_directory'         => true,
     73                        'notification_callback' => 'messages_format_notifications',
     74                        'search_string'         => __( 'Search Forums...', 'buddypress' ),
     75                );
     76
     77                parent::setup_globals( $globals );
     78        }
     79
     80        /**
     81         * Include bp-forums files.
     82         *
     83         * @since 1.5.0
     84         *
     85         * @see BP_Component::includes() for description of parameters.
     86         *
     87         * @param array $includes See {@link BP_Component::includes()}.
     88         */
     89        public function includes( $includes = array() ) {
     90
     91                // Files to include.
     92                $includes = array(
     93                        'actions',
     94                        'screens',
     95                        'classes',
     96                        'filters',
     97                        'template',
     98                        'functions',
     99                );
     100
     101                // bbPress stand-alone.
     102                if ( ! defined( 'BB_PATH' ) ) {
     103                        $includes[] = 'bbpress-sa';
     104                }
     105
     106                // Admin-specific code.
     107                if ( is_admin() ) {
     108                        $includes[] = 'deprecated/1.6';
     109                        $includes[] = 'deprecated/1.7';
     110                }
     111
     112                parent::includes( $includes );
     113        }
     114
     115        /**
     116         * Set up component navigation.
     117         *
     118         * @since 1.5.0
     119         *
     120         * @see BP_Component::setup_nav() for a description of arguments.
     121         *
     122         * @param array $main_nav Optional. See BP_Component::setup_nav() for
     123         *                        description.
     124         * @param array $sub_nav  Optional. See BP_Component::setup_nav() for
     125         *                        description.
     126         */
     127        public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
     128
     129                // Stop if forums haven't been set up yet.
     130                if ( ! bp_forums_is_installed_correctly() ) {
     131                        return;
     132                }
     133
     134                // Stop if there is no user displayed or logged in.
     135                if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
     136                        return;
     137                }
     138
     139                // Determine user to use.
     140                if ( bp_displayed_user_domain() ) {
     141                        $user_domain = bp_displayed_user_domain();
     142                } elseif ( bp_loggedin_user_domain() ) {
     143                        $user_domain = bp_loggedin_user_domain();
     144                } else {
     145                        return;
     146                }
     147
     148                // User link.
     149                $slug        = bp_get_forums_slug();
     150                $forums_link = trailingslashit( $user_domain . $slug );
     151
     152                // Add 'Forums' to the main navigation.
     153                $main_nav = array(
     154                        'name'                => __( 'Forums', 'buddypress' ),
     155                        'slug'                => $slug,
     156                        'position'            => 80,
     157                        'screen_function'     => 'bp_member_forums_screen_topics',
     158                        'default_subnav_slug' => 'topics',
     159                        'item_css_id'         => $this->id
     160                );
     161
     162                // Topics started.
     163                $sub_nav[] = array(
     164                        'name'            => __( 'Topics Started', 'buddypress' ),
     165                        'slug'            => 'topics',
     166                        'parent_url'      => $forums_link,
     167                        'parent_slug'     => $slug,
     168                        'screen_function' => 'bp_member_forums_screen_topics',
     169                        'position'        => 20,
     170                        'item_css_id'     => 'topics'
     171                );
     172
     173                // Topics replied to.
     174                $sub_nav[] = array(
     175                        'name'            => __( 'Replied To', 'buddypress' ),
     176                        'slug'            => 'replies',
     177                        'parent_url'      => $forums_link,
     178                        'parent_slug'     => $slug,
     179                        'screen_function' => 'bp_member_forums_screen_replies',
     180                        'position'        => 40,
     181                        'item_css_id'     => 'replies'
     182                );
     183
     184                parent::setup_nav( $main_nav, $sub_nav );
     185        }
     186
     187        /**
     188         * Set up bp-forums integration with the WordPress admin bar.
     189         *
     190         * @since 1.5.0
     191         *
     192         * @see BP_Component::setup_admin_bar() for a description of arguments.
     193         *
     194         * @param array $wp_admin_nav See BP_Component::setup_admin_bar()
     195         *                            for description.
     196         */
     197        public function setup_admin_bar( $wp_admin_nav = array() ) {
     198
     199                // Menus for logged in user.
     200                if ( is_user_logged_in() ) {
     201
     202                        // Setup the logged in user variables.
     203                        $forums_link = trailingslashit( bp_loggedin_user_domain() . bp_get_forums_slug() );
     204
     205                        // Add the "My Account" sub menus.
     206                        $wp_admin_nav[] = array(
     207                                'parent' => buddypress()->my_account_menu_id,
     208                                'id'     => 'my-account-' . $this->id,
     209                                'title'  => __( 'Forums', 'buddypress' ),
     210                                'href'   => $forums_link
     211                        );
     212
     213                        // Topics.
     214                        $wp_admin_nav[] = array(
     215                                'parent' => 'my-account-' . $this->id,
     216                                'id'     => 'my-account-' . $this->id . '-topics-started',
     217                                'title'  => __( 'Topics Started', 'buddypress' ),
     218                                'href'   => $forums_link
     219                        );
     220
     221                        // Replies.
     222                        $wp_admin_nav[] = array(
     223                                'parent' => 'my-account-' . $this->id,
     224                                'id'     => 'my-account-' . $this->id . '-replies',
     225                                'title'  => __( 'Replies', 'buddypress' ),
     226                                'href'   => trailingslashit( $forums_link . 'replies' )
     227                        );
     228
     229                        // Favorites.
     230                        $wp_admin_nav[] = array(
     231                                'parent' => 'my-account-' . $this->id,
     232                                'id'     => 'my-account-' . $this->id . '-favorite-topics',
     233                                'title'  => __( 'Favorite Topics', 'buddypress' ),
     234                                'href'   => trailingslashit( $forums_link . 'favorites' )
     235                        );
     236                }
     237
     238                parent::setup_admin_bar( $wp_admin_nav );
     239        }
     240
     241        /**
     242         * Set up the title for pages and the <title> element.
     243         *
     244         * @since 1.5.0
     245         */
     246        public function setup_title() {
     247
     248                // Adjust title based on view.
     249                if ( bp_is_forums_component() ) {
     250                        $bp = buddypress();
     251
     252                        if ( bp_is_my_profile() ) {
     253                                $bp->bp_options_title = __( 'Forums', 'buddypress' );
     254                        } else {
     255                                $bp->bp_options_avatar = bp_core_fetch_avatar( array(
     256                                        'item_id' => bp_displayed_user_id(),
     257                                        'type'    => 'thumb',
     258                                        'alt'     => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_get_displayed_user_fullname() )
     259                                ) );
     260                                $bp->bp_options_title  = bp_get_displayed_user_fullname();
     261                        }
     262                }
     263
     264                parent::setup_title();
     265        }
     266}
  • src/bp-friends/bp-friends-loader.php

    Property changes on: src/bp-forums/classes/class-bp-forums-component.php
    ___________________________________________________________________
    Added: svn:eol-style
    ## -0,0 +1 ##
    +native
    \ No newline at end of property
     
    1717}
    1818
    1919/**
    20  * Set up the bp-forums component.
     20 * Set up the bp-friends component.
    2121 *
    2222 * @since 1.6.0
    2323 */
  • src/bp-groups/bp-groups-loader.php

     
    1919}
    2020
    2121/**
    22  * Bootstrap the Notifications component.
     22 * Set up the bp-groups component.
    2323 *
    2424 * @since 1.5.0
    2525 */
  • src/bp-messages/bp-messages-loader.php

     
    1717}
    1818
    1919/**
    20  * Bootstrap the Messages component.
     20 * Set up the bp-messages component.
     21 *
     22 * @since 1.6.0
    2123 */
    2224function bp_setup_messages() {
    2325        buddypress()->messages = new BP_Messages_Component();
  • src/bp-notifications/bp-notifications-loader.php

     
    1717}
    1818
    1919/**
    20  * Bootstrap the Notifications component.
     20 * Set up the bp-notifications component.
    2121 *
    2222 * @since 1.9.0
    2323 */
  • src/bp-settings/bp-settings-loader.php

     
    1515}
    1616
    1717/**
    18  * Instantiates the settings component.
     18 * Set up the bp-settings component.
    1919 *
    2020 * @since 1.6.0
    2121 */
  • src/bp-xprofile/bp-xprofile-loader.php

     
    1818}
    1919
    2020/**
    21  * Bootstrap the XProfile component.
     21 * Set up the bp-xprofile component.
    2222 *
    2323 * @since 1.6.0
    2424 */