Skip to:
Content

BuddyPress.org

Ticket #3428: 3428.01.patch

File 3428.01.patch, 8.4 KB (added by boonebgorges, 8 years ago)
  • bp-activity/bp-activity-loader.php

    class BP_Activity_Component extends BP_Component { 
    7676                        'path'                  => BP_PLUGIN_DIR,
    7777                        'slug'                  => BP_ACTIVITY_SLUG,
    7878                        'root_slug'             => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
     79                        'has_directory'         => true,
    7980                        'search_string'         => __( 'Search Activity...', 'buddypress' ),
    8081                        'global_tables'         => $global_tables,
    8182                        'notification_callback' => 'bp_activity_format_notifications',
  • bp-blogs/bp-blogs-loader.php

    class BP_Blogs_Component extends BP_Component { 
    5353                        'path'                  => BP_PLUGIN_DIR,
    5454                        'slug'                  => BP_BLOGS_SLUG,
    5555                        'root_slug'             => isset( $bp->pages->blogs->slug ) ? $bp->pages->blogs->slug : BP_BLOGS_SLUG,
     56                        'has_directory'         => true,
    5657                        'notification_callback' => 'bp_blogs_format_notifications',
    5758                        'search_string'         => __( 'Search sites...', 'buddypress' ),
    5859                        'autocomplete_all'      => defined( 'BP_MESSAGES_AUTOCOMPLETE_ALL' ),
  • bp-core/admin/bp-core-admin.php

    function bp_core_admin_page_options() { 
    483483        // Get the existing WP pages
    484484        $existing_pages = bp_core_get_page_meta();
    485485
    486         // An array of strings looped over to create component setup markup
    487         $directory_pages = array(
    488                 'members'  => __( 'Community Members', 'buddypress' ),
    489                 'activity' => __( 'Activity Streams',  'buddypress' ),
    490                 'groups'   => __( 'User Groups',       'buddypress' ),
    491                 'forums'   => __( 'Discussion Forums', 'buddypress' ),
    492         );
    493 
    494         if ( is_multisite() )
    495                 $directory_pages['blogs'] = __( "Site Directory", 'buddypress' ); ?>
     486        // Now, set up an array of components (along with component names) that have directory pages
     487        $directory_pages = array();
     488        foreach( $bp->loaded_components as $component_id => $data ) {
     489                if ( isset( $bp->{$component_id} ) ) {
     490                        // Only components that need directories should be listed here
     491                        if ( empty( $bp->{$component_id}->has_directory ) )
     492                                continue;
     493                       
     494                        // component->name was introduced in BP 1.5, so we must provide a fallback
     495                        $component_name = isset( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $component_id );
     496                       
     497                        $directory_pages[$component_id] = $component_name;
     498                       
     499                }
     500        }
     501       
     502        $directory_pages = apply_filters( 'bp_directory_pages', $directory_pages );
     503       
     504        ?>
    496505       
    497506        <h3><?php _e( 'Directories', 'buddypress' ); ?></h3>
    498507       
  • bp-core/bp-core-component.php

    class BP_Component { 
    3333         * @var string Unique slug (used in query string and permalinks)
    3434         */
    3535        var $slug;
     36       
     37        /**
     38         * @var bool Does this component need a top-level directory?
     39         */
     40        var $has_directory;
    3641
    3742        /**
    3843         * @var string The path to the plugins files
    class BP_Component { 
    107112                $defaults = array(
    108113                        'slug'                  => '',
    109114                        'root_slug'             => '',
     115                        'has_directory'         => false,
    110116                        'notification_callback' => '',
    111117                        'search_string'         => '',
    112118                        'global_tables'         => ''
    class BP_Component { 
    119125                // Slug used for root directory
    120126                $this->root_slug     = apply_filters( 'bp_' . $this->id . '_root_slug',     $r['root_slug']     );
    121127
     128                // Does this component have a top-level directory?
     129                $this->has_directory = apply_filters( 'bp_' . $this->id . '_has_directory', $r['has_directory'] );
     130
    122131                // Search string
    123132                $this->search_string = apply_filters( 'bp_' . $this->id . '_search_string', $r['search_string'] );
    124133
  • bp-core/bp-core-functions.php

    function bp_core_get_page_meta() { 
    9292                }
    9393        }
    9494
     95        foreach( $page_ids as $component_name => $page_id ) {
     96                if ( empty( $component_name ) || empty( $page_id ) )
     97                        unset( $page_ids[$component_name] );
     98        }
     99
    95100        return apply_filters( 'bp_core_get_page_meta', $page_ids );
    96101}
    97102
    function bp_core_update_page_meta( $blog_page_ids ) { 
    121126function bp_core_get_page_names() {
    122127        global $wpdb, $bp;
    123128
    124         // Set pages as standard class
    125         $pages = new stdClass;
    126 
    127129        // Get pages and IDs
    128130        if ( $page_ids = bp_core_get_page_meta() ) {
     131               
     132                // Set pages as standard class
     133                $pages = new stdClass;
    129134
    130135                $posts_table_name = bp_is_multiblog_mode() ? $wpdb->get_blog_prefix( bp_get_root_blog_id() ) . 'posts' : $wpdb->posts;
    131136                $page_ids_sql     = implode( ',', (array)$page_ids );
    function bp_core_activation_notice() { 
    420425        $wp_page_components  = array();
    421426
    422427        // Only some BP components require a WP page to function - those with a non-empty root_slug
    423         foreach( $bp->active_components as $component_id => $is_active ) {
    424                 if ( !empty( $bp->{$component_id}->root_slug ) ) {
     428        foreach( $bp->loaded_components as $component_id => $is_active ) {
     429                if ( !empty( $bp->{$component_id}->has_directory ) ) {
    425430                        $wp_page_components[] = array(
    426431                                'id'    => $component_id,
    427                                 'name'  => $bp->{$component_id}->name
     432                                'name'  => isset( $bp->{$component_id}->name ) ? $bp->{$component_id}->name : ucwords( $bp->{$component_id}->id )
    428433                        );
    429434                }
    430435        }
    function bp_core_add_root_component( $slug ) { 
    10681073
    10691074        if ( empty( $bp->pages ) )
    10701075                $bp->pages = bp_core_get_page_names();
    1071 
     1076               
    10721077        $match = false;
    1073 
     1078       
    10741079        // Check if the slug is registered in the $bp->pages global
    10751080        foreach ( (array)$bp->pages as $key => $page ) {
    10761081                if ( $key == $slug || $page->slug == $slug )
    function bp_core_add_root_component( $slug ) { 
    10801085        // If there was no match, add a page for this root component
    10811086        if ( empty( $match ) ) {
    10821087                $bp->add_root[] = $slug;
    1083                 add_action( 'bp_init', 'bp_core_create_root_component_page' );
     1088                //add_action( 'bp_init', 'bp_core_create_root_component_page' );
     1089        }
     1090       
     1091        // Make sure that this component is registered as requiring a top-level directory
     1092        if ( isset( $bp->{$slug} ) ) {
     1093                $bp->loaded_components[$bp->{$slug}->slug] = $bp->{$slug}->id;
     1094                $bp->{$slug}->has_directory = true;
    10841095        }
    10851096}
    10861097
  • bp-forums/bp-forums-loader.php

    class BP_Forums_Component extends BP_Component { 
    5555                $globals = array(
    5656                        'slug'                  => BP_FORUMS_SLUG,
    5757                        'root_slug'             => isset( $bp->pages->forums->slug ) ? $bp->pages->forums->slug : BP_FORUMS_SLUG,
     58                        'has_directory'         => true,
    5859                        'notification_callback' => 'messages_format_notifications',
    5960                        'search_string'         => __( 'Search Forums...', 'buddypress' ),
    6061                );
  • bp-groups/bp-groups-loader.php

    class BP_Groups_Component extends BP_Component { 
    7878                $globals = array(
    7979                        'slug'                  => BP_GROUPS_SLUG,
    8080                        'root_slug'             => isset( $bp->pages->groups->slug ) ? $bp->pages->groups->slug : BP_GROUPS_SLUG,
     81                        'has_directory'         => true,
    8182                        'notification_callback' => 'groups_format_notifications',
    8283                        'search_string'         => __( 'Search Groups...', 'buddypress' ),
    8384                        'global_tables'         => $global_tables
  • bp-members/bp-members-loader.php

    class BP_Members_Component extends BP_Component { 
    6565                $globals = array(
    6666                        'slug'          => BP_MEMBERS_SLUG,
    6767                        'root_slug'     => isset( $bp->pages->members->slug ) ? $bp->pages->members->slug : BP_MEMBERS_SLUG,
     68                        'has_directory' => true,
    6869                        'search_string' => __( 'Search Members...', 'buddypress' ),
    6970                );
    7071