Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
04/24/2023 02:32:27 AM (22 months ago)
Author:
imath
Message:

Make canonical redirection & Ajax requesting BP Rewrites ready

  • Introduces bp_core_setup_query_parser() to decide when to postpone some key hooks firing to bp_parse_query.
  • Introduces bp_core_get_query_parser() to get the query parser in use. It contains a filter BP Classic will be able to use to force the Legacy URL parser. So far it uses legacy for pretty links and rewrites for plain links.
  • Edit bp_redirect_canonical() & bp_get_canonical_url() so that they use the BP Rewrites API.
  • Introduces bp_core_set_ajax_uri_globals() to set the BuddyPress URI globales using the BP Rewrites API inside the Ajax context thanks to the updated bp_reset_query() function.
  • To avoid using WP() at each Ajax call, introduces a simple Ajax actions registration process thanks to the new bp_ajax_register_action().
  • Update Legacy & Nouveau template packs so that they use this logic. As BP Default will require the legacy URL parser and will be moved inside BP Classic, the theme can stay the way it is.
  • Improve the bp_rewrites_pre_get_slug filter logic making it depends on the bp_core_get_query_parser() function.
  • Make sure to reset the Members navigation to a new BP_Core_Nav based on the displayed user once the user is available in the component's parse_query() method.

Props r-a-y, johnjamesjacoby, boonebgorges

Closes https://github.com/buddypress/buddypress/pull/91
See #4954

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-members/classes/class-bp-members-component.php

    r13455 r13461  
    235235        $bp->loggedin_user->domain = bp_members_get_user_url( bp_loggedin_user_id() );
    236236
    237         /** Displayed user ***************************************************
     237        /**
     238         * Set the Displayed user for the classic BuddyPress. This should only be the case when the
     239         * legacy parser is on. When BP Rewrites are on, the displayed user is set in
     240         * `BP_Members_Component::parse_query()`.
    238241         */
    239 
    240         // The core userdata of the user who is currently being displayed.
    241         $bp->displayed_user->userdata = bp_core_get_core_userdata( bp_displayed_user_id() );
    242 
    243         // Fetch the full name displayed user.
    244         $bp->displayed_user->fullname = isset( $bp->displayed_user->userdata->display_name ) ? $bp->displayed_user->userdata->display_name : '';
    245 
    246         // The domain for the user currently being displayed.
    247         $bp->displayed_user->domain = bp_members_get_user_url( bp_displayed_user_id() );
    248 
    249         // If A user is displayed, check if there is a front template
    250         if ( bp_get_displayed_user() ) {
    251             $bp->displayed_user->front_template = bp_displayed_user_get_front_template();
     242        if ( bp_displayed_user_id() ) {
     243            // The core userdata of the user who is currently being displayed.
     244            $bp->displayed_user->userdata = bp_core_get_core_userdata( bp_displayed_user_id() );
     245
     246            // Fetch the full name displayed user.
     247            $bp->displayed_user->fullname = isset( $bp->displayed_user->userdata->display_name ) ? $bp->displayed_user->userdata->display_name : '';
     248
     249            // The domain for the user currently being displayed.
     250            $bp->displayed_user->domain = bp_members_get_user_url( bp_displayed_user_id() );
     251
     252            // If A user is displayed, check if there is a front template
     253            if ( bp_get_displayed_user() ) {
     254                $bp->displayed_user->front_template = bp_displayed_user_get_front_template();
     255            }
    252256        }
    253257
     
    394398            }
    395399
    396             if ( !empty( $bp->action_variables ) ) {
     400            if ( ! empty( $bp->action_variables ) ) {
    397401                $bp->canonical_stack['action_variables'] = bp_action_variables();
    398402            }
     
    855859                }
    856860
    857                 // If A user is displayed, check if there is a front template.
     861                // If a user is displayed, check if there is a front template and reset navigation.
    858862                if ( bp_get_displayed_user() ) {
    859863                    $bp->displayed_user->front_template = bp_displayed_user_get_front_template();
     864
     865                    // Reset the nav for the members component.
     866                    $this->nav = new BP_Core_Nav();
    860867                }
    861868
Note: See TracChangeset for help on using the changeset viewer.