Skip to:
Content

BuddyPress.org

Changeset 13519


Ignore:
Timestamp:
07/16/2023 03:43:26 PM (21 months ago)
Author:
imath
Message:

Make sure bp_core_new_nav_default() is ready for the BP Rewrites API

  • In case plain permalinks are used, use the $GLOBALS['wp']->query_string to set the buddypress()->unfiltered_uri global.
  • Do not edit sub nav links when calling bp_core_new_nav_default() if the URL parser is set to 'rewrites'.
  • Avoid a PHP notice if the new sub nav object misses the slug and/or the link properties.

Props corzel

See #4954
Fixes #8936
Closes https://github.com/buddypress/buddypress/pull/130

Location:
trunk/src/bp-core
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/bp-core-buddybar.php

    r13507 r13519  
    344344    );
    345345
    346     /**
    347      * Update secondary nav items:
    348      * - The previous default nav item needs to have its slug added to its link property.
    349      * - The new default nav item needs to have its slug removed from its link property.
    350      */
    351     $previous_default_subnav = $bp->members->nav->get( $parent_nav->slug . '/' . $parent_nav->default_subnav_slug );
    352 
    353     // Edit the link of the previous default nav item.
    354     $bp->members->nav->edit_nav(
    355         array(
    356             'link' => trailingslashit( $previous_default_subnav->link . $previous_default_subnav->slug ),
    357         ),
    358         $previous_default_subnav->slug,
    359         $parent_nav->slug
    360     );
    361 
    362     $new_default_subnav = $bp->members->nav->get( $parent_nav->slug . '/' . $r['subnav_slug'] );
    363 
    364     // Edit the link of the new default nav item.
    365     $bp->members->nav->edit_nav(
    366         array(
    367             'link' => rtrim( untrailingslashit( $new_default_subnav->link ), $new_default_subnav->slug ),
    368         ),
    369         $new_default_subnav->slug,
    370         $parent_nav->slug
    371     );
     346    // Only edit old & new default subnavs when using the Legacy URL parser.
     347    if ( 'rewrites' !== bp_core_get_query_parser() ) {
     348        /**
     349         * Update secondary nav items:
     350         * - The previous default nav item needs to have its slug added to its link property.
     351         * - The new default nav item needs to have its slug removed from its link property.
     352         */
     353        $previous_default_subnav = $bp->members->nav->get( $parent_nav->slug . '/' . $parent_nav->default_subnav_slug );
     354
     355        // Edit the link of the previous default nav item.
     356        $bp->members->nav->edit_nav(
     357            array(
     358                'link' => trailingslashit( $previous_default_subnav->link . $previous_default_subnav->slug ),
     359            ),
     360            $previous_default_subnav->slug,
     361            $parent_nav->slug
     362        );
     363
     364        $new_default_subnav = $bp->members->nav->get( $parent_nav->slug . '/' . $r['subnav_slug'] );
     365
     366        // Make sure the `$new_default_subnav` properties are set.
     367        if ( isset( $new_default_subnav->link, $new_default_subnav->slug ) ) {
     368            // Edit the link of the new default nav item.
     369            $bp->members->nav->edit_nav(
     370                array(
     371                    'link' => rtrim( untrailingslashit( $new_default_subnav->link ), $new_default_subnav->slug ),
     372                ),
     373                $new_default_subnav->slug,
     374                $parent_nav->slug
     375            );
     376        }
     377    }
    372378
    373379    if ( bp_is_current_component( $parent_nav->slug ) ) {
  • trunk/src/bp-core/bp-core-template-loader.php

    r13492 r13519  
    570570
    571571    if ( ! $bp->unfiltered_uri ) {
    572         $bp->unfiltered_uri        = explode( '/', $GLOBALS['wp']->request );
     572        $unfiltered_uri = explode( '/', $GLOBALS['wp']->request );
     573
     574        // Make sure to set the BP unfiltered_uri global when plain links are used.
     575        if ( ! bp_has_pretty_urls() ) {
     576            $bp_directories = array();
     577            foreach ( $bp->pages as $component_id => $page_properties ) {
     578                if ( isset( $bp->{$component_id}->rewrite_ids['directory'] ) ) {
     579                    $bp_directories[ $bp->{$component_id}->rewrite_ids['directory'] ] = $page_properties->slug;
     580                } elseif ( 'activate' === $component_id || 'register' === $component_id ) {
     581                    $bp_directories[ 'bp_member_' . $component_id ] = $page_properties->slug;
     582                }
     583            }
     584
     585            $url_query_chunks = bp_parse_args( $GLOBALS['wp']->query_string, array() );
     586            $directory        = key( $url_query_chunks );
     587            if ( isset( $bp_directories[ $directory ] ) ) {
     588                $url_query_chunks[ $directory ] = $bp_directories[ $directory ];
     589            }
     590
     591            $unfiltered_uri = array_values( $url_query_chunks );
     592        }
     593
     594        $bp->unfiltered_uri        = $unfiltered_uri;
    573595        $bp->unfiltered_uri_offset = 0;
    574596    }
Note: See TracChangeset for help on using the changeset viewer.