Skip to:
Content

BuddyPress.org

Changeset 13441


Ignore:
Timestamp:
03/23/2023 07:35:38 PM (11 months ago)
Author:
imath
Message:

Make BP_Core_Nav generate "BP Rewrites ready" navigation links

  • Remove all components $parent_url attributes when setting sub nav items.
  • Only use the bp_core_create_nav_link() $link attribute argument & the bp_core_create_subnav_link() $parent_url attribute argument if specified to preserve backward compatibility.
  • Migrates the Community search feature so that it uses BP Rewrites.
  • Perform some bp_loggedin_user_domain() in favor of bp_loggedin_user_url().
  • Update some PHPUnit tests.

Props r-a-y, johnjamesjacoby, boonebgorges

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

Location:
trunk
Files:
38 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-activity/bp-activity-notifications.php

    r13433 r13441  
    3030    $user_id       = $secondary_item_id;
    3131    $user_fullname = bp_core_get_user_displayname( $user_id );
     32    $activity_slug = bp_get_activity_slug();
    3233
    3334    switch ( $action ) {
    3435        case 'new_at_mention':
    3536            $action_filter = 'at_mentions';
    36             $link          = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/';
     37            $link          = bp_loggedin_user_url(
     38                array(
     39                    'single_item_component' => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug, $activity_slug ),
     40                    'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug . '_mentions', 'mentions' ),
     41                )
     42            );
    3743
    3844            /* translators: %s: the current user display name */
  • trunk/src/bp-activity/classes/class-bp-activity-activity.php

    r13414 r13441  
    300300
    301301        if ( empty( $this->primary_link ) ) {
    302             $this->primary_link = bp_loggedin_user_domain();
     302            $this->primary_link = bp_loggedin_user_url();
    303303        }
    304304
  • trunk/src/bp-activity/classes/class-bp-activity-component.php

    r13432 r13441  
    255255        }
    256256
    257         // Determine user to use.
    258         if ( bp_displayed_user_domain() ) {
    259             $user_domain = bp_displayed_user_domain();
    260         } elseif ( bp_loggedin_user_domain() ) {
    261             $user_domain = bp_loggedin_user_domain();
    262         } else {
    263             return;
    264         }
    265 
    266         $slug          = bp_get_activity_slug();
    267         $activity_link = trailingslashit( $user_domain . $slug );
     257        $slug = bp_get_activity_slug();
    268258
    269259        // Add 'Activity' to the main navigation.
     
    281271            'name'            => _x( 'Personal', 'Profile activity screen sub nav', 'buddypress' ),
    282272            'slug'            => 'just-me',
    283             'parent_url'      => $activity_link,
    284273            'parent_slug'     => $slug,
    285274            'screen_function' => 'bp_activity_screen_my_activity',
     
    292281                'name'            => _x( 'Mentions', 'Profile activity screen sub nav', 'buddypress' ),
    293282                'slug'            => 'mentions',
    294                 'parent_url'      => $activity_link,
    295283                'parent_slug'     => $slug,
    296284                'screen_function' => 'bp_activity_screen_mentions',
     
    305293                'name'            => _x( 'Favorites', 'Profile activity screen sub nav', 'buddypress' ),
    306294                'slug'            => 'favorites',
    307                 'parent_url'      => $activity_link,
    308295                'parent_slug'     => $slug,
    309296                'screen_function' => 'bp_activity_screen_favorites',
     
    318305                'name'            => _x( 'Friends', 'Profile activity screen sub nav', 'buddypress' ),
    319306                'slug'            => bp_get_friends_slug(),
    320                 'parent_url'      => $activity_link,
    321307                'parent_slug'     => $slug,
    322308                'screen_function' => 'bp_activity_screen_friends',
     
    331317                'name'            => _x( 'Groups', 'Profile activity screen sub nav', 'buddypress' ),
    332318                'slug'            => bp_get_groups_slug(),
    333                 'parent_url'      => $activity_link,
    334319                'parent_slug'     => $slug,
    335320                'screen_function' => 'bp_activity_screen_groups',
     
    359344
    360345            // Setup the logged in user variables.
    361             $activity_link = trailingslashit( bp_loggedin_user_domain() . bp_get_activity_slug() );
     346            $activity_slug        = bp_get_activity_slug();
     347            $custom_activity_slug = bp_rewrites_get_slug( 'members', 'member_' . $activity_slug, $activity_slug );
    362348
    363349            // Unread message count.
     
    380366                'id'     => 'my-account-' . $this->id,
    381367                'title'  => _x( 'Activity', 'My Account Activity sub nav', 'buddypress' ),
    382                 'href'   => $activity_link
     368                'href'   => bp_loggedin_user_url(
     369                    array(
     370                        'single_item_component' => $custom_activity_slug,
     371                    )
     372                ),
    383373            );
    384374
     
    388378                'id'       => 'my-account-' . $this->id . '-personal',
    389379                'title'    => _x( 'Personal', 'My Account Activity sub nav', 'buddypress' ),
    390                 'href'     => trailingslashit( $activity_link . 'just-me' ),
    391                 'position' => 10
     380                'href'     => bp_loggedin_user_url(
     381                    array(
     382                        'single_item_component' => $custom_activity_slug,
     383                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug . '_just_me', 'just-me' ),
     384                    )
     385                ),
     386                'position' => 10,
    392387            );
    393388
     
    398393                    'id'       => 'my-account-' . $this->id . '-mentions',
    399394                    'title'    => $title,
    400                     'href'     => trailingslashit( $activity_link . 'mentions' ),
    401                     'position' => 20
     395                    'href'     => bp_loggedin_user_url(
     396                        array(
     397                            'single_item_component' => $custom_activity_slug,
     398                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug . '_mentions', 'mentions' ),
     399                        )
     400                    ),
     401                    'position' => 20,
    402402                );
    403403            }
     
    409409                    'id'       => 'my-account-' . $this->id . '-favorites',
    410410                    'title'    => _x( 'Favorites', 'My Account Activity sub nav', 'buddypress' ),
    411                     'href'     => trailingslashit( $activity_link . 'favorites' ),
    412                     'position' => 30
     411                    'href'     => bp_loggedin_user_url(
     412                        array(
     413                            'single_item_component' => $custom_activity_slug,
     414                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug . '_favorites', 'favorites' ),
     415                        )
     416                    ),
     417                    'position' => 30,
    413418                );
    414419            }
     
    416421            // Friends?
    417422            if ( bp_is_active( 'friends' ) ) {
     423                $friends_slug   = bp_get_friends_slug();
    418424                $wp_admin_nav[] = array(
    419425                    'parent'   => 'my-account-' . $this->id,
    420426                    'id'       => 'my-account-' . $this->id . '-friends',
    421427                    'title'    => _x( 'Friends', 'My Account Activity sub nav', 'buddypress' ),
    422                     'href'     => trailingslashit( $activity_link . bp_get_friends_slug() ),
    423                     'position' => 40
     428                    'href'     => bp_loggedin_user_url(
     429                        array(
     430                            'single_item_component' => $custom_activity_slug,
     431                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug . '_' . $friends_slug, $friends_slug ),
     432                        )
     433                    ),
     434                    'position' => 40,
    424435                );
    425436            }
     
    427438            // Groups?
    428439            if ( bp_is_active( 'groups' ) ) {
     440                $groups_slug    = bp_get_groups_slug();
    429441                $wp_admin_nav[] = array(
    430442                    'parent'   => 'my-account-' . $this->id,
    431443                    'id'       => 'my-account-' . $this->id . '-groups',
    432444                    'title'    => _x( 'Groups', 'My Account Activity sub nav', 'buddypress' ),
    433                     'href'     => trailingslashit( $activity_link . bp_get_groups_slug() ),
     445                    'href'     => bp_loggedin_user_url(
     446                        array(
     447                            'single_item_component' => $custom_activity_slug,
     448                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $activity_slug . '_' . $groups_slug, $groups_slug ),
     449                        )
     450                    ),
    434451                    'position' => 50
    435452                );
  • trunk/src/bp-activity/screens/permalink.php

    r13436 r13441  
    154154        } else {
    155155            bp_core_add_message( __( 'You do not have access to this activity.', 'buddypress' ), 'error' );
    156             bp_core_redirect( bp_loggedin_user_domain() );
     156            bp_core_redirect( bp_loggedin_user_url() );
    157157        }
    158158    }
  • trunk/src/bp-blogs/classes/class-bp-blogs-component.php

    r13436 r13441  
    219219        }
    220220
    221         // Determine user to use.
    222         if ( bp_displayed_user_domain() ) {
    223             $user_domain = bp_displayed_user_domain();
    224         } elseif ( bp_loggedin_user_domain() ) {
    225             $user_domain = bp_loggedin_user_domain();
    226         } else {
     221        // Stop if there is no user displayed or logged in.
     222        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    227223            return;
    228224        }
    229225
    230226        $slug       = bp_get_blogs_slug();
    231         $parent_url = trailingslashit( $user_domain . $slug );
    232227
    233228        // Add 'Sites' to the main navigation.
     
    255250            'name'            => __( 'My Sites', 'buddypress' ),
    256251            'slug'            => 'my-sites',
    257             'parent_url'      => $parent_url,
    258252            'parent_slug'     => $slug,
    259253            'screen_function' => 'bp_blogs_screen_my_blogs',
     
    290284
    291285            // Setup the logged in user variables.
    292             $blogs_link = trailingslashit( bp_loggedin_user_domain() . bp_get_blogs_slug() );
     286            $blogs_slug        = bp_get_blogs_slug();
     287            $custom_blogs_slug = bp_rewrites_get_slug( 'members', 'member_' . $blogs_slug, $blogs_slug );
    293288
    294289            // Add the "Sites" sub menu.
     
    297292                'id'     => 'my-account-' . $this->id,
    298293                'title'  => __( 'Sites', 'buddypress' ),
    299                 'href'   => $blogs_link
     294                'href'   => bp_loggedin_user_url(
     295                    array(
     296                        'single_item_component' => $custom_blogs_slug,
     297                    )
     298                ),
    300299            );
    301300
     
    305304                'id'       => 'my-account-' . $this->id . '-my-sites',
    306305                'title'    => __( 'My Sites', 'buddypress' ),
    307                 'href'     => trailingslashit( $blogs_link . 'my-sites' ),
    308                 'position' => 10
     306                'href'     => bp_loggedin_user_url(
     307                    array(
     308                        'single_item_component' => $custom_blogs_slug,
     309                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $blogs_slug . '_my_sites', 'my-sites' ),
     310                    )
     311                ),
     312                'position' => 10,
    309313            );
    310314
  • trunk/src/bp-core/bp-core-blocks.php

    r13440 r13441  
    324324                </a>
    325325            </div>',
    326             bp_loggedin_user_domain(),
     326            bp_loggedin_user_url(),
    327327            bp_get_loggedin_user_avatar(
    328328                array(
  • trunk/src/bp-core/bp-core-buddybar.php

    r13436 r13441  
    161161        'name'                    => $r['name'],
    162162        'slug'                    => $r['slug'],
    163         'link'                    => trailingslashit( bp_loggedin_user_domain() . $r['slug'] ),
    164163        'css_id'                  => $r['item_css_id'],
    165164        'show_for_displayed_user' => $r['show_for_displayed_user'],
     
    561560
    562561    // If we don't have the required info we need, don't create this subnav item.
    563     if ( empty( $r['name'] ) || empty( $r['slug'] ) || empty( $r['parent_slug'] ) || empty( $r['parent_url'] ) || empty( $r['screen_function'] ) )
    564         return false;
    565 
    566     // Link was not forced, so create one.
    567     if ( empty( $r['link'] ) ) {
     562    if ( empty( $r['name'] ) || empty( $r['slug'] ) || empty( $r['parent_slug'] ) || empty( $r['screen_function'] ) ) {
     563        return false;
     564    }
     565
     566    // Preserve backward compatibility for plugins forcing URLs.
     567    if ( empty( $r['link'] ) && ! empty( $r['parent_url'] ) ) {
    568568        $r['link'] = trailingslashit( $r['parent_url'] . $r['slug'] );
    569 
    570         $parent_nav = $bp->{$component}->nav->get_primary( array( 'slug' => $r['parent_slug'] ), false );
    571 
    572         // If this sub item is the default for its parent, skip the slug.
    573         if ( $parent_nav ) {
    574             $parent_nav_item = reset( $parent_nav );
    575             if ( ! empty( $parent_nav_item->default_subnav_slug ) && $r['slug'] === $parent_nav_item->default_subnav_slug ) {
    576                 $r['link'] = trailingslashit( $r['parent_url'] );
    577             }
    578         }
    579569    }
    580570
     
    601591    );
    602592
     593    // Add the item to the subnav.
    603594    buddypress()->{$component}->nav->add_nav( $subnav_item );
    604595
  • trunk/src/bp-core/bp-core-functions.php

    r13436 r13441  
    25882588    bp_core_redirect( apply_filters( 'bp_core_search_site', home_url( $slug . $query_string . urlencode( $search_terms ) ), $search_terms ) );
    25892589}
    2590 add_action( 'bp_init', 'bp_core_action_search_site', 7 );
     2590add_action( 'bp_parse_query', 'bp_core_action_search_site', 13, 0 );
    25912591
    25922592/**
  • trunk/src/bp-core/bp-core-rewrites.php

    r13436 r13441  
    119119 */
    120120function bp_rewrites_get_url( $args = array() ) {
    121     $bp   = buddypress();
     121    $bp  = buddypress();
    122122    $url = get_home_url( bp_get_root_blog_id() );
    123123
     
    159159            // Using pretty URLs.
    160160        } else {
    161             if ( ! isset( $component->rewrite_ids['directory'] ) || ! isset( $component->directory_permastruct ) ) {
     161            if ( isset( $component->rewrite_ids['directory'] ) && isset( $component->directory_permastruct ) ) {
     162                if ( isset( $r['member_register'] ) ) {
     163                    $url = str_replace( '%' . $component->rewrite_ids['member_register'] . '%', '', $component->register_permastruct );
     164                    unset( $r['member_register'] );
     165                } elseif ( isset( $r['member_activate'] ) ) {
     166                    $url = str_replace( '%' . $component->rewrite_ids['member_activate'] . '%', '', $component->activate_permastruct );
     167                    unset( $r['member_activate'] );
     168                } elseif ( isset( $r['create_single_item'] ) ) {
     169                    $create_slug = 'create';
     170                    if ( 'groups' === $component->id ) {
     171                        $create_slug = bp_rewrites_get_slug( 'groups', 'group_create', 'create' );
     172                    } elseif ( 'blogs' === $component->id ) {
     173                        $create_slug = bp_rewrites_get_slug( 'blogs', 'blog_create', 'create' );
     174                    }
     175
     176                    $url = str_replace( '%' . $component->rewrite_ids['directory'] . '%', $create_slug, $component->directory_permastruct );
     177                    unset( $r['create_single_item'] );
     178                } else {
     179                    $url = str_replace( '%' . $component->rewrite_ids['directory'] . '%', $r['single_item'], $component->directory_permastruct );
     180
     181                    // Remove the members directory slug when root profiles are on.
     182                    if ( bp_core_enable_root_profiles() && 'members' === $component->id && isset( $r['single_item'] ) && $r['single_item'] ) {
     183                        $url = str_replace( $bp->members->root_slug . '/', '', $url );
     184                    }
     185
     186                    unset( $r['single_item'] );
     187                }
     188
     189                $r = array_filter( $r );
     190
     191                if ( isset( $r['directory_type'] ) && $r['directory_type'] ) {
     192                    if ( 'members' === $component->id ) {
     193                        array_unshift( $r, bp_get_members_member_type_base() );
     194                    } elseif ( 'groups' === $component->id && bp_is_active( 'groups' ) ) {
     195                        array_unshift( $r, bp_get_groups_group_type_base() );
     196                    } else {
     197                        unset( $r['directory_type'] );
     198                    }
     199                }
     200
     201                if ( isset( $r['single_item_action_variables'] ) && $r['single_item_action_variables'] ) {
     202                    $r['single_item_action_variables'] = join( '/', (array) $r['single_item_action_variables'] );
     203                }
     204
     205                if ( isset( $r['create_single_item_variables'] ) && $r['create_single_item_variables'] ) {
     206                    $r['create_single_item_variables'] = join( '/', (array) $r['create_single_item_variables'] );
     207                }
     208            } elseif ( isset( $r['community_search'] ) && 1 === $r['community_search'] ) {
     209                $r   = array_filter( $r );
     210                $url = '';
     211
     212                unset( $r['community_search'] );
     213                array_unshift( $r, bp_get_search_slug() );
     214            } else {
    162215                return $url;
    163             }
    164 
    165             if ( isset( $r['member_register'] ) ) {
    166                 $url = str_replace( '%' . $component->rewrite_ids['member_register'] . '%', '', $component->register_permastruct );
    167                 unset( $r['member_register'] );
    168             } elseif ( isset( $r['member_activate'] ) ) {
    169                 $url = str_replace( '%' . $component->rewrite_ids['member_activate'] . '%', '', $component->activate_permastruct );
    170                 unset( $r['member_activate'] );
    171             } elseif ( isset( $r['create_single_item'] ) ) {
    172                 $create_slug = 'create';
    173                 if ( 'groups' === $component->id ) {
    174                     $create_slug = bp_rewrites_get_slug( 'groups', 'group_create', 'create' );
    175                 } elseif ( 'blogs' === $component->id ) {
    176                     $create_slug = bp_rewrites_get_slug( 'blogs', 'blog_create', 'create' );
    177                 }
    178 
    179                 $url = str_replace( '%' . $component->rewrite_ids['directory'] . '%', $create_slug, $component->directory_permastruct );
    180                 unset( $r['create_single_item'] );
    181             } else {
    182                 $url = str_replace( '%' . $component->rewrite_ids['directory'] . '%', $r['single_item'], $component->directory_permastruct );
    183 
    184                 // Remove the members directory slug when root profiles are on.
    185                 if ( bp_core_enable_root_profiles() && 'members' === $component->id && isset( $r['single_item'] ) && $r['single_item'] ) {
    186                     $url = str_replace( $bp->members->root_slug . '/', '', $url );
    187                 }
    188 
    189                 unset( $r['single_item'] );
    190             }
    191 
    192             $r = array_filter( $r );
    193 
    194             if ( isset( $r['directory_type'] ) && $r['directory_type'] ) {
    195                 if ( 'members' === $component->id ) {
    196                     array_unshift( $r, bp_get_members_member_type_base() );
    197                 } elseif ( 'groups' === $component->id && bp_is_active( 'groups' ) ) {
    198                     array_unshift( $r, bp_get_groups_group_type_base() );
    199                 } else {
    200                     unset( $r['directory_type'] );
    201                 }
    202             }
    203 
    204             if ( isset( $r['single_item_action_variables'] ) && $r['single_item_action_variables'] ) {
    205                 $r['single_item_action_variables'] = join( '/', (array) $r['single_item_action_variables'] );
    206             }
    207 
    208             if ( isset( $r['create_single_item_variables'] ) && $r['create_single_item_variables'] ) {
    209                 $r['create_single_item_variables'] = join( '/', (array) $r['create_single_item_variables'] );
    210216            }
    211217
  • trunk/src/bp-core/bp-core-template.php

    r13436 r13441  
    520520    $url = bp_rewrites_get_url(
    521521        array(
    522             'component_id' => bp_get_search_slug(),
     522            'component_id'     => 'core',
     523            'community_search' => 1,
    523524        )
    524525    );
     
    36433644    foreach ( $bp->{$component}->nav->get_item_nav() as $nav_menu ) {
    36443645        // Get the correct menu link. See https://buddypress.trac.wordpress.org/ticket/4624.
    3645         $link = bp_loggedin_user_domain() ? str_replace( bp_loggedin_user_domain(), bp_displayed_user_domain(), $nav_menu->link ) : trailingslashit( bp_displayed_user_domain() . $nav_menu->link );
     3646        $link = $nav_menu->link;
     3647        if ( bp_loggedin_user_url() ) {
     3648            $link = str_replace( bp_loggedin_user_url(), bp_displayed_user_url(), $nav_menu->link );
     3649        }
    36463650
    36473651        // Add this menu.
  • trunk/src/bp-core/classes/class-bp-core-login-widget.php

    r13108 r13441  
    7777
    7878            <div class="bp-login-widget-user-avatar">
    79                 <a href="<?php echo bp_loggedin_user_domain(); ?>">
     79                <a href="<?php bp_loggedin_user_link(); ?>">
    8080                    <?php bp_loggedin_user_avatar( 'type=thumb&width=50&height=50' ); ?>
    8181                </a>
  • trunk/src/bp-core/classes/class-bp-core-nav.php

    r13108 r13441  
    3636
    3737    /**
     38     * The component ID.
     39     *
     40     * @since 12.0.0
     41     * @var string
     42     */
     43    private $component_id;
     44
     45    /**
    3846     * Initializes the Nav belonging to the specified object.
    3947     *
     
    4250     * @param int $object_id The item ID to build the nav for. Default is the displayed user ID.
    4351     */
    44     public function __construct( $object_id = 0 ) {
    45         if ( empty( $object_id ) ) {
     52    public function __construct( $object_id = 0, $component_id = 'members' ) {
     53        if ( bp_is_active( $component_id ) ) {
     54            $this->component_id = $component_id;
     55        }
     56
     57        if ( empty( $object_id ) && 'members' === $this->component_id ) {
    4658            $this->object_id = (int) bp_displayed_user_id();
    4759        } else {
     
    136148        }
    137149
     150        $path_chunks = array(
     151            'component_id' => $this->component_id,
     152        );
     153
    138154        // We have a child and the parent exists.
    139155        if ( ! empty( $args['parent_slug'] ) ) {
    140             $slug              = $args['parent_slug'] . '/' . $args['slug'];
    141             $args['secondary'] = true;
     156            $slug                                 = $args['parent_slug'] . '/' . $args['slug'];
     157            $path_chunks['single_item_component'] = $args['parent_slug'];
     158            $path_chunks['single_item_action']    = $args['slug'];
     159            $args['secondary']                    = true;
    142160
    143161        // This is a parent.
    144162        } else {
    145             $slug            = $args['slug'];
    146             $args['primary'] = true;
     163            $slug                                 = $args['slug'];
     164            $path_chunks['single_item_component'] = $slug;
     165            $args['primary']                      = true;
     166        }
     167
     168        /*
     169         * This is where we set links using BP Rewrites.
     170         *
     171         * @since 12.0.0
     172         */
     173        if ( ! isset( $args['link'] ) || ! $args['link'] ) {
     174            if ( 'groups' === $this->component_id ) {
     175                if ( isset( $path_chunks['single_item_component'] ) ) {
     176                    $path_chunks['single_item'] = str_replace( '_manage', '', $path_chunks['single_item_component'] );
     177                } else {
     178                    $path_chunks['single_item'] = groups_get_slug( $this->object_id );
     179                }
     180
     181                $chunk = 'single_item_action';
     182                if ( $path_chunks['single_item'] . '_manage' ===  $path_chunks['single_item_component'] ) {
     183                    $chunk                             = 'single_item_action_variables';
     184                    $path_chunks[ $chunk ]             = $path_chunks['single_item_action'];
     185                    $path_chunks['single_item_action'] = bp_rewrites_get_slug( 'groups', 'bp_group_read_admin', 'admin' );
     186                    $group_screens = bp_get_group_screens( 'manage' );
     187                } else {
     188                    $group_screens = bp_get_group_screens( 'read' );
     189                }
     190
     191                if ( isset( $group_screens[ $args['slug'] ] ) ) {
     192                    $args['rewrite_id']    = $group_screens[ $args['slug'] ]['rewrite_id'];
     193                    $path_chunks[ $chunk ] = bp_rewrites_get_slug( 'groups', $args['rewrite_id'], $args['slug'] );
     194
     195                    if ( 'single_item_action_variables' === $chunk ) {
     196                        $path_chunks[ $chunk ] = array( $path_chunks[ $chunk ] );
     197                    }
     198                }
     199
     200                unset( $path_chunks['single_item_component'] );
     201                $args['link'] = bp_rewrites_get_url( $path_chunks );
     202            } else {
     203                $path_chunks['single_item_component'] = bp_rewrites_get_slug( 'members', 'member_' . $path_chunks['single_item_component'], $path_chunks['single_item_component'] );
     204
     205                if ( isset( $path_chunks['single_item_action'] ) && ! is_numeric( $path_chunks['single_item_action'] ) ) {
     206                    $path_chunks['single_item_action'] = bp_rewrites_get_slug(
     207                        'members',
     208                        'member_' . $path_chunks['single_item_component'] . '_' . $path_chunks['single_item_action'],
     209                        $path_chunks['single_item_action']
     210                    );
     211                }
     212
     213                $args['link'] = bp_members_get_user_url( $this->object_id, $path_chunks );
     214            }
    147215        }
    148216
  • trunk/src/bp-core/classes/class-bp-core.php

    r13432 r13441  
    292292        // Is the logged in user is a mod for the current item?
    293293        bp_update_is_item_mod( false, 'core' );
     294
     295        /*
     296         * As the BP Core component is excluded from the BP Component code
     297         * used to set the Rewrite IDs, we need to set it here. As the `search`
     298         * word is already a WordPress rewrite tag, we are not adding a custom
     299         * rule for this component to avoid messing with it.
     300         */
     301        $this->rewrite_ids = array(
     302            'community_search' => 'bp_search',
     303        );
    294304
    295305        parent::setup_globals(
     
    401411
    402412        parent::register_post_statuses();
     413    }
     414
     415    /**
     416     * Parse the WP_Query and eventually set the BP Search mechanism.
     417     *
     418     * Search doesn't have an associated page, so we check for it separately.
     419     *
     420     * @since 12.0.0
     421     *
     422     * @param WP_Query $query Required. See BP_Component::parse_query() for
     423     *                        description.
     424     */
     425    public function parse_query( $query ) {
     426        $is_search = $query->get( 'pagename' ) === bp_get_search_slug() || ( isset( $_GET['bp_search'] ) && 1 === (int) $_GET['bp_search'] );
     427
     428        if ( isset( $_POST['search-terms'] ) && $is_search ) {
     429            buddypress()->current_component = bp_get_search_slug();
     430        }
     431
     432        parent::parse_query( $query );
    403433    }
    404434
  • trunk/src/bp-friends/bp-friends-notifications.php

    r13092 r13441  
    2929 */
    3030function friends_format_notifications( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
     31    $friends_slug        = bp_get_friends_slug();
     32    $custom_friends_slug = bp_rewrites_get_slug( 'members', 'member_' . $friends_slug, $friends_slug );
    3133
    3234    switch ( $action ) {
    3335        case 'friendship_accepted':
    34             $link = trailingslashit( bp_loggedin_user_domain() . bp_get_friends_slug() . '/my-friends' );
     36            $link = bp_loggedin_user_url(
     37                array(
     38                    'single_item_component' => $custom_friends_slug,
     39                    'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_my_friends', 'my-friends' ),
     40                )
     41            );
    3542
    3643            // $action and $amount are used to generate dynamic filter names.
     
    5158
    5259        case 'friendship_request':
    53             $link = bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/?new';
     60            $link = add_query_arg(
     61                'new',
     62                1,
     63                bp_loggedin_user_url(
     64                    array(
     65                        'single_item_component' => $custom_friends_slug,
     66                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     67                    )
     68                )
     69            );
    5470
    5571            $action = 'request';
  • trunk/src/bp-friends/bp-friends-template.php

    r13434 r13441  
    378378
    379379        $friendship_status = bp_is_friend( $potential_friend_id );
     380        $friends_slug        = bp_get_friends_slug();
     381        $custom_friends_slug = bp_rewrites_get_slug( 'members', 'member_' . $friends_slug, $friends_slug );
    380382
    381383        if ( empty( $friendship_status ) ) {
     
    392394                    'wrapper_class'     => 'friendship-button pending_friend',
    393395                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
    394                     'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/cancel/' . $potential_friend_id . '/', 'friends_withdraw_friendship' ),
     396                    'link_href'         => wp_nonce_url(
     397                        bp_loggedin_user_url(
     398                            array(
     399                                'single_item_component'        => $custom_friends_slug,
     400                                'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     401                                'single_item_action_variables' => array( bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests_cancel', 'cancel' ), $potential_friend_id ),
     402                            )
     403                        ),
     404                        'friends_withdraw_friendship'
     405                    ),
    395406                    'link_text'         => __( 'Cancel Friendship Request', 'buddypress' ),
    396407                    'link_title'        => __( 'Cancel Friendship Requested', 'buddypress' ),
     
    409420                    'wrapper_class'     => 'friendship-button awaiting_response_friend',
    410421                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
    411                     'link_href'         => bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/',
     422                    'link_href'         => bp_loggedin_user_url(
     423                        array(
     424                            'single_item_component' => $custom_friends_slug,
     425                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     426                        )
     427                    ),
    412428                    'link_text'         => __( 'Friendship Requested', 'buddypress' ),
    413429                    'link_title'        => __( 'Friendship Requested', 'buddypress' ),
     
    426442                    'wrapper_class'     => 'friendship-button is_friend',
    427443                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
    428                     'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/remove-friend/' . $potential_friend_id . '/', 'friends_remove_friend' ),
     444                    'link_href'         => wp_nonce_url(
     445                        bp_loggedin_user_url(
     446                            array(
     447                                'single_item_component'        => $custom_friends_slug,
     448                                'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_remove_friend', 'remove-friend' ),
     449                                'single_item_action_variables' => array( $potential_friend_id ),
     450                            )
     451                        ),
     452                        'friends_remove_friend'
     453                    ),
    429454                    'link_text'         => __( 'Cancel Friendship', 'buddypress' ),
    430455                    'link_title'        => __( 'Cancel Friendship', 'buddypress' ),
     
    443468                    'wrapper_class'     => 'friendship-button not_friends',
    444469                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
    445                     'link_href'         => wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $potential_friend_id . '/', 'friends_add_friend' ),
     470                    'link_href'         => wp_nonce_url(
     471                        bp_loggedin_user_url(
     472                            array(
     473                                'single_item_component'        => $custom_friends_slug,
     474                                'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_add_friend', 'add-friend' ),
     475                                'single_item_action_variables' => array( $potential_friend_id ),
     476                            )
     477                        ),
     478                        'friends_add_friend'
     479                    ),
    446480                    'link_text'         => __( 'Add Friend', 'buddypress' ),
    447481                    'link_title'        => __( 'Add Friend', 'buddypress' ),
     
    610644        }
    611645
     646        $friends_slug = bp_get_friends_slug();
     647        $url          = wp_nonce_url(
     648            bp_loggedin_user_url(
     649                array(
     650                    'single_item_component'        => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug, $friends_slug ),
     651                    'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     652                    'single_item_action_variables' => array( bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests_accept', 'accept' ), $friendship_id ),
     653                )
     654            ),
     655            'friends_accept_friendship'
     656        );
     657
    612658        /**
    613659         * Filters the URL for accepting the current friendship request in the loop.
     
    616662         * @since 2.6.0 Added the `$friendship_id` parameter.
    617663         *
    618          * @param string $value         Accept-friendship URL.
     664         * @param string $url           Accept-friendship URL.
    619665         * @param int    $friendship_id ID of the friendship.
    620666         */
    621         return apply_filters( 'bp_get_friend_accept_request_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/accept/' . $friendship_id ), 'friends_accept_friendship' ), $friendship_id );
     667        return apply_filters( 'bp_get_friend_accept_request_link', $url, $friendship_id );
    622668    }
    623669
     
    647693        }
    648694
     695        $friends_slug = bp_get_friends_slug();
     696        $url          = wp_nonce_url(
     697            bp_loggedin_user_url(
     698                array(
     699                    'single_item_component'        => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug, $friends_slug ),
     700                    'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     701                    'single_item_action_variables' => array( bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests_reject', 'reject' ), $friendship_id ),
     702                )
     703            ),
     704            'friends_reject_friendship'
     705        );
     706
    649707        /**
    650708         * Filters the URL for rejecting the current friendship request in the loop.
     
    653711         * @since 2.6.0 Added the `$friendship_id` parameter.
    654712         *
    655          * @param string $value         Reject-friendship URL.
     713         * @param string $url           Reject-friendship URL.
    656714         * @param int    $friendship_id ID of the friendship.
    657715         */
    658         return apply_filters( 'bp_get_friend_reject_request_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/reject/' . $friendship_id ), 'friends_reject_friendship' ), $friendship_id );
     716        return apply_filters( 'bp_get_friend_reject_request_link', $url, $friendship_id );
    659717    }
    660718
  • trunk/src/bp-friends/classes/class-bp-friends-component.php

    r13432 r13441  
    162162    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    163163
    164         // Determine user to use.
    165         if ( bp_displayed_user_domain() ) {
    166             $user_domain = bp_displayed_user_domain();
    167         } elseif ( bp_loggedin_user_domain() ) {
    168             $user_domain = bp_loggedin_user_domain();
    169         } else {
     164        // Stop if there is no user displayed or logged in.
     165        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    170166            return;
    171167        }
    172168
    173         $access       = bp_core_can_edit_settings();
    174         $slug         = bp_get_friends_slug();
    175         $friends_link = trailingslashit( $user_domain . $slug );
     169        $access = bp_core_can_edit_settings();
     170        $slug   = bp_get_friends_slug();
    176171
    177172        // Add 'Friends' to the main navigation.
     
    202197            'name'            => _x( 'Friendships', 'Friends screen sub nav', 'buddypress' ),
    203198            'slug'            => 'my-friends',
    204             'parent_url'      => $friends_link,
    205199            'parent_slug'     => $slug,
    206200            'screen_function' => 'friends_screen_my_friends',
     
    212206            'name'            => _x( 'Requests', 'Friends screen sub nav', 'buddypress' ),
    213207            'slug'            => 'requests',
    214             'parent_url'      => $friends_link,
    215208            'parent_slug'     => $slug,
    216209            'screen_function' => 'friends_screen_requests',
     
    238231
    239232            // Setup the logged in user variables.
    240             $friends_link = trailingslashit( bp_loggedin_user_domain() . bp_get_friends_slug() );
     233            $friends_slug        = bp_get_friends_slug();
     234            $custom_friends_slug = bp_rewrites_get_slug( 'members', 'member_' . $friends_slug, $friends_slug );
    241235
    242236            // Pending friend requests.
     
    263257                'id'     => 'my-account-' . $this->id,
    264258                'title'  => $title,
    265                 'href'   => $friends_link,
     259                'href'   => bp_loggedin_user_url(
     260                    array(
     261                        'single_item_component' => $custom_friends_slug,
     262                    )
     263                ),
    266264            );
    267265
     
    271269                'id'       => 'my-account-' . $this->id . '-friendships',
    272270                'title'    => _x( 'Friendships', 'My Account Friends menu sub nav', 'buddypress' ),
    273                 'href'     => trailingslashit( $friends_link . 'my-friends' ),
     271                'href'     => bp_loggedin_user_url(
     272                    array(
     273                        'single_item_component' => $custom_friends_slug,
     274                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_my_friends', 'my-friends' ),
     275                    )
     276                ),
    274277                'position' => 10,
    275278            );
     
    280283                'id'       => 'my-account-' . $this->id . '-requests',
    281284                'title'    => $pending,
    282                 'href'     => trailingslashit( $friends_link . 'requests' ),
     285                'href'     => bp_loggedin_user_url(
     286                    array(
     287                        'single_item_component' => $custom_friends_slug,
     288                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     289                    )
     290                ),
    283291                'position' => 20,
    284292            );
  • trunk/src/bp-friends/screens/requests.php

    r13092 r13441  
    1414 */
    1515function friends_screen_requests() {
     16    $redirect = false;
     17
    1618    if ( bp_is_action_variable( 'accept', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) {
    1719        // Check the nonce.
    1820        check_admin_referer( 'friends_accept_friendship' );
    1921
    20         if ( friends_accept_friendship( bp_action_variable( 1 ) ) )
     22        if ( friends_accept_friendship( bp_action_variable( 1 ) ) ) {
    2123            bp_core_add_message( __( 'Friendship accepted', 'buddypress' ) );
    22         else
     24        } else {
    2325            bp_core_add_message( __( 'Friendship could not be accepted', 'buddypress' ), 'error' );
     26        }
    2427
    25         bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) );
     28        $redirect = true;
    2629
    2730    } elseif ( bp_is_action_variable( 'reject', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) {
     
    2932        check_admin_referer( 'friends_reject_friendship' );
    3033
    31         if ( friends_reject_friendship( bp_action_variable( 1 ) ) )
     34        if ( friends_reject_friendship( bp_action_variable( 1 ) ) ) {
    3235            bp_core_add_message( __( 'Friendship rejected', 'buddypress' ) );
    33         else
     36        } else {
    3437            bp_core_add_message( __( 'Friendship could not be rejected', 'buddypress' ), 'error' );
     38        }
    3539
    36         bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) );
     40        $redirect = true;
    3741
    3842    } elseif ( bp_is_action_variable( 'cancel', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) {
     
    4044        check_admin_referer( 'friends_withdraw_friendship' );
    4145
    42         if ( friends_withdraw_friendship( bp_loggedin_user_id(), bp_action_variable( 1 ) ) )
     46        if ( friends_withdraw_friendship( bp_loggedin_user_id(), bp_action_variable( 1 ) ) ) {
    4347            bp_core_add_message( __( 'Friendship request withdrawn', 'buddypress' ) );
    44         else
     48        } else {
    4549            bp_core_add_message( __( 'Friendship request could not be withdrawn', 'buddypress' ), 'error' );
     50        }
    4651
    47         bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) );
     52        $redirect = true;
     53    }
     54
     55    if ( $redirect ) {
     56        $friends_slug = bp_get_friends_slug();
     57
     58        bp_core_redirect(
     59            bp_loggedin_user_url(
     60                array(
     61                    'single_item_component' => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug, $friends_slug ),
     62                    'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $friends_slug . '_requests', 'requests' ),
     63                )
     64            )
     65        );
    4866    }
    4967
  • trunk/src/bp-groups/actions/leave-group.php

    r13437 r13441  
    4646        }
    4747
    48         $group = groups_get_current_group();
     48        $group    = groups_get_current_group();
    4949        $redirect = bp_get_group_url( $group );
    5050
    5151        if ( ! $group->is_visible ) {
    52             $redirect = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() );
     52            $groups_slug = bp_get_groups_slug();
     53            $redirect    = bp_loggedin_user_url(
     54                array(
     55                    'single_item_component' => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug ),
     56                )
     57            );
    5358        }
    5459
  • trunk/src/bp-groups/bp-groups-adminbar.php

    r13437 r13441  
    5757    }
    5858
     59    $manage_screens = bp_get_group_screens( 'manage' );
     60
    5961    // Build the Group Admin menus.
    6062    foreach ( $secondary_nav_items as $menu ) {
     
    6668         * the 'show_in_admin_bar' argument of your edit screen to true
    6769         */
    68         if ( $menu->show_in_admin_bar ) {
     70        if ( $menu->show_in_admin_bar && isset( $manage_screens[ $menu->slug ] ) ) {
    6971            /* translators: %s the group menu name */
    7072            $title = sprintf( _x( 'Edit Group %s', 'Group WP Admin Bar manage links', 'buddypress' ), $menu->name );
     
    7678            }
    7779
    78             $wp_admin_bar->add_node( array(
    79                 'parent' => $bp->group_admin_menu_id,
    80                 'id'     => $menu->slug,
    81                 'title'  => $title,
    82                 'href'   => bp_get_groups_action_link( 'admin/' . $menu->slug )
    83             ) );
     80            $wp_admin_bar->add_node(
     81                array(
     82                    'parent' => $bp->group_admin_menu_id,
     83                    'id'     => $menu->slug,
     84                    'title'  => $title,
     85                    'href'   => bp_get_group_url(
     86                        $bp->groups->current_group,
     87                        array(
     88                            'single_item_action'           => bp_rewrites_get_slug( 'groups', 'bp_group_read_admin', 'admin' ),
     89                            'single_item_action_variables' => bp_rewrites_get_slug( 'groups', $manage_screens[ $menu->slug ]['rewrite_id'], $menu->slug ),
     90                        )
     91                    ),
     92                )
     93            );
    8494        }
    8595    }
  • trunk/src/bp-groups/bp-groups-notifications.php

    r13437 r13441  
    531531            $group_id = $item_id;
    532532
    533             $group      = groups_get_group( $group_id );
    534             $group_link = bp_get_group_url( $group );
    535             $amount     = 'single';
     533            $group              = groups_get_group( $group_id );
     534            $group_link         = bp_get_group_url( $group );
     535            $groups_slug        = bp_get_groups_slug();
     536            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
     537            $amount             = 'single';
    536538
    537539            if ( (int) $total_items > 1 ) {
     
    539541                $text              = sprintf( __( '%1$d accepted group membership requests for the group "%2$s"', 'buddypress' ), (int) $total_items, $group->name );
    540542                $amount            = 'multiple';
    541                 $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1';
     543                $notification_link = add_query_arg(
     544                    'n',
     545                    1,
     546                    bp_loggedin_user_url(
     547                        array(
     548                            'single_item_component' => $custom_groups_slug,
     549                        )
     550                    )
     551                );
    542552
    543553                if ( 'string' == $format ) {
     
    622632            $group_id = $item_id;
    623633
    624             $group      = groups_get_group( $group_id );
    625             $group_link = bp_get_group_url( $group );
    626             $amount     = 'single';
     634            $group              = groups_get_group( $group_id );
     635            $group_link         = bp_get_group_url( $group );
     636            $groups_slug        = bp_get_groups_slug();
     637            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
     638            $amount             = 'single';
    627639
    628640            if ( (int) $total_items > 1 ) {
     
    630642                $text              = sprintf( __( '%1$d rejected group membership requests for the group "%2$s"', 'buddypress' ), (int) $total_items, $group->name );
    631643                $amount            = 'multiple';
    632                 $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1';
     644                $notification_link = add_query_arg(
     645                    'n',
     646                    1,
     647                    bp_loggedin_user_url(
     648                        array(
     649                            'single_item_component' => $custom_groups_slug,
     650                        )
     651                    )
     652                );
    633653
    634654                if ( 'string' == $format ) {
     
    712732            $group_id = $item_id;
    713733
    714             $group      = groups_get_group( $group_id );
    715             $group_link = bp_get_group_url( $group );
    716             $amount     = 'single';
     734            $group              = groups_get_group( $group_id );
     735            $group_link         = bp_get_group_url( $group );
     736            $groups_slug        = bp_get_groups_slug();
     737            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
     738            $amount             = 'single';
    717739
    718740            if ( (int) $total_items > 1 ) {
     
    720742                $text              = sprintf( __( 'You were promoted to an admin in %d groups', 'buddypress' ), (int) $total_items );
    721743                $amount            = 'multiple';
    722                 $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1';
     744                $notification_link = add_query_arg(
     745                    'n',
     746                    1,
     747                    bp_loggedin_user_url(
     748                        array(
     749                            'single_item_component' => $custom_groups_slug,
     750                        )
     751                    )
     752                );
    723753
    724754                if ( 'string' == $format ) {
     
    796826            $group_id = $item_id;
    797827
    798             $group      = groups_get_group( $group_id );
    799             $group_link = bp_get_group_url( $group );
    800             $amount     = 'single';
     828            $group              = groups_get_group( $group_id );
     829            $group_link         = bp_get_group_url( $group );
     830            $groups_slug        = bp_get_groups_slug();
     831            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
     832            $amount             = 'single';
    801833
    802834            if ( (int) $total_items > 1 ) {
     
    804836                $text              = sprintf( __( 'You were promoted to a mod in %d groups', 'buddypress' ), (int) $total_items );
    805837                $amount            = 'multiple';
    806                 $notification_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) . '?n=1';
     838                $notification_link = add_query_arg(
     839                    'n',
     840                    1,
     841                    bp_loggedin_user_url(
     842                        array(
     843                            'single_item_component' => $custom_groups_slug,
     844                        )
     845                    )
     846                );
    807847
    808848                if ( 'string' == $format ) {
     
    878918
    879919        case 'group_invite':
    880             $group_id   = $item_id;
    881             $group      = groups_get_group( $group_id );
    882             $group_link = bp_get_group_url( $group );
    883             $amount     = 'single';
    884 
    885             $notification_link = bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/?n=1';
     920            $group_id           = $item_id;
     921            $group              = groups_get_group( $group_id );
     922            $group_link         = bp_get_group_url( $group );
     923            $groups_slug        = bp_get_groups_slug();
     924            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
     925            $amount             = 'single';
     926            $notification_link  = add_query_arg(
     927                'n',
     928                1,
     929                bp_loggedin_user_url(
     930                    array(
     931                        'single_item_component' => $custom_groups_slug,
     932                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites', 'invites' ),
     933                    )
     934                )
     935            );
    886936
    887937            if ( (int) $total_items > 1 ) {
  • trunk/src/bp-groups/bp-groups-template.php

    r13437 r13441  
    12741274
    12751275    if ( $slug ) {
    1276         $supported_chunks = array_fill_keys( array( 'single_item_component', 'single_item_action', 'single_item_action_variables' ), true );
     1276        $supported_chunks = array_fill_keys( array( 'single_item_action', 'single_item_action_variables' ), true );
    12771277        $path_chunks      = bp_parse_args(
    12781278            array_intersect_key( $path_chunks, $supported_chunks ),
     
    33413341        }
    33423342
     3343        $views = bp_get_group_screens( 'manage' );
     3344        if ( isset( $views[ $page ]['rewrite_id'] ) ) {
     3345            $page = bp_rewrites_get_slug( 'groups', $views[ $page ]['rewrite_id'], $page );
     3346        }
     3347
     3348        $url = bp_get_group_url(
     3349            $group,
     3350            array(
     3351                'single_item_action'           => bp_rewrites_get_slug( 'groups', 'bp_group_read_admin', 'admin' ),
     3352                'single_item_action_variables' => $page,
     3353            )
     3354        );
     3355
    33433356        /**
    33443357         * Filters the 'action' attribute for a group admin form.
     
    33483361         * @since 10.0.0 Added the `$page` parameter.
    33493362         *
    3350          * @param string          $value Action attribute for a group admin form.
     3363         * @param string          $url  Action attribute for a group admin form.
    33513364         * @param BP_Groups_Group $group The group object.
    33523365         * @param int|string|bool $page  Page slug.
    33533366         */
    3354         return apply_filters( 'bp_group_admin_form_action', trailingslashit( bp_get_group_permalink( $group ) . 'admin/' . $page ), $group, $page );
     3367        return apply_filters( 'bp_group_admin_form_action', $url, $group, $page );
    33553368    }
    33563369
     
    35263539        }
    35273540
    3528         $user_domain = bp_loggedin_user_domain();
     3541        $groups_slug = bp_get_groups_slug();
     3542        $path_chunks = array(
     3543            'single_item_component'        => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug ),
     3544            'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites', 'invites' ),
     3545            'single_item_action_variables' => array( bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites_accept', 'accept' ), $group->id ),
     3546        );
     3547
    35293548        if ( bp_is_user() ) {
    3530             $user_domain = bp_displayed_user_domain();
    3531         }
     3549            $user_domain = bp_displayed_user_url( $path_chunks );
     3550        } else {
     3551            $user_domain = bp_loggedin_user_url( $path_chunks );
     3552        }
     3553
     3554        $url = wp_nonce_url( $user_domain, 'groups_accept_invite' );
    35323555
    35333556        /**
     
    35373560         * @since 2.5.0 Added the `$group` parameter.
    35383561         *
    3539          * @param string $value URL for accepting an invitation to a group.
     3562         * @param string $url  URL for accepting an invitation to a group.
    35403563         * @param object $group Group object.
    35413564         */
    3542         return apply_filters( 'bp_get_group_accept_invite_link', wp_nonce_url( trailingslashit( $user_domain . bp_get_groups_slug() . '/invites/accept/' . $group->id ), 'groups_accept_invite' ), $group );
     3565        return apply_filters( 'bp_get_group_accept_invite_link', $url, $group );
    35433566    }
    35443567
     
    35673590        }
    35683591
    3569         $user_domain = bp_loggedin_user_domain();
     3592        $groups_slug = bp_get_groups_slug();
     3593        $path_chunks = array(
     3594            'single_item_component'        => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug ),
     3595            'single_item_action'           => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites', 'invites' ),
     3596            'single_item_action_variables' => array( bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites_reject', 'reject' ), $group->id ),
     3597        );
     3598
    35703599        if ( bp_is_user() ) {
    3571             $user_domain = bp_displayed_user_domain();
    3572         }
     3600            $user_domain = bp_displayed_user_url( $path_chunks );
     3601        } else {
     3602            $user_domain = bp_loggedin_user_url( $path_chunks );
     3603        }
     3604
     3605        $url = wp_nonce_url( $user_domain, 'groups_reject_invite' );
    35733606
    35743607        /**
     
    35783611         * @since 2.5.0 Added the `$group` parameter.
    35793612         *
    3580          * @param string $value URL for rejecting an invitation to a group.
     3613         * @param string $url  URL for rejecting an invitation to a group.
    35813614         * @param object $group Group object.
    35823615         */
    3583         return apply_filters( 'bp_get_group_reject_invite_link', wp_nonce_url( trailingslashit( $user_domain . bp_get_groups_slug() . '/invites/reject/' . $group->id ), 'groups_reject_invite' ), $group );
     3616        return apply_filters( 'bp_get_group_reject_invite_link', $url, $group );
    35843617    }
    35853618
  • trunk/src/bp-groups/classes/class-bp-group-extension.php

    r13437 r13441  
    737737                'slug'            => $this->slug,
    738738                'parent_slug'     => bp_get_current_group_slug(),
    739                 'parent_url'      => $group_permalink,
    740739                'position'        => $this->nav_item_position,
    741740                'item_css_id'     => 'nav-' . $this->slug,
     
    960959        }
    961960
    962         $screen = $this->screens['edit'];
    963 
    964         $position = isset( $screen['position'] ) ? (int) $screen['position'] : 10;
    965         $position += 40;
    966 
     961        $screen        = $this->screens['edit'];
     962        $position      = isset( $screen['position'] ) ? (int) $screen['position'] : 10;
     963        $position     += 40;
    967964        $current_group = groups_get_current_group();
    968         $admin_link    = trailingslashit( bp_get_group_permalink( $current_group ) . 'admin' );
    969965
    970966        $subnav_args = array(
     
    972968            'slug'            => $screen['slug'],
    973969            'parent_slug'     => $current_group->slug . '_manage',
    974             'parent_url'      => $admin_link,
    975970            'user_has_access' => bp_is_item_admin(),
    976971            'position'        => $position,
  • trunk/src/bp-groups/classes/class-bp-groups-component.php

    r13437 r13441  
    315315
    316316            // Initialize the nav for the groups component.
    317             $this->nav = new BP_Core_Nav( $this->current_group->id );
     317            $this->nav = new BP_Core_Nav( $this->current_group->id, $this->id );
    318318
    319319        // Set current_group to 0 to prevent debug errors.
     
    566566    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    567567
    568         // Determine user to use.
    569         if ( bp_displayed_user_domain() ) {
    570             $user_domain = bp_displayed_user_domain();
    571         } elseif ( bp_loggedin_user_domain() ) {
    572             $user_domain = bp_loggedin_user_domain();
    573         } else {
    574             $user_domain = false;
    575         }
    576 
    577         // Only grab count if we're on a user page.
    578         if ( bp_is_user() ) {
    579             $class = ( 0 === groups_total_groups_for_user( bp_displayed_user_id() ) ) ? 'no-count' : 'count';
    580 
    581             $nav_name = sprintf(
    582                 /* translators: %s: Group count for the current user */
    583                 _x( 'Groups %s', 'Group screen nav with counter', 'buddypress' ),
    584                 sprintf(
    585                     '<span class="%s">%s</span>',
    586                     esc_attr( $class ),
    587                     bp_get_total_group_count_for_user()
    588                 )
     568        if ( is_user_logged_in() || bp_displayed_user_id() ) {
     569            // Only grab count if we're on a user page.
     570            if ( bp_is_user() ) {
     571                $class = ( 0 === groups_total_groups_for_user( bp_displayed_user_id() ) ) ? 'no-count' : 'count';
     572
     573                $nav_name = sprintf(
     574                    /* translators: %s: Group count for the current user */
     575                    _x( 'Groups %s', 'Group screen nav with counter', 'buddypress' ),
     576                    sprintf(
     577                        '<span class="%s">%s</span>',
     578                        esc_attr( $class ),
     579                        bp_get_total_group_count_for_user()
     580                    )
     581                );
     582            } else {
     583                $nav_name = _x( 'Groups', 'Group screen nav without counter', 'buddypress' );
     584            }
     585
     586            $slug   = bp_get_groups_slug();
     587            $access = bp_core_can_edit_settings();
     588
     589            // Add 'Groups' to the main navigation.
     590            $main_nav = array(
     591                'name'                => $nav_name,
     592                'slug'                => $slug,
     593                'position'            => 70,
     594                'screen_function'     => 'groups_screen_my_groups',
     595                'default_subnav_slug' => 'my-groups',
     596                'item_css_id'         => $this->id
    589597            );
    590         } else {
    591             $nav_name = _x( 'Groups', 'Group screen nav without counter', 'buddypress' );
    592         }
    593 
    594         $slug = bp_get_groups_slug();
    595 
    596         // Add 'Groups' to the main navigation.
    597         $main_nav = array(
    598             'name'                => $nav_name,
    599             'slug'                => $slug,
    600             'position'            => 70,
    601             'screen_function'     => 'groups_screen_my_groups',
    602             'default_subnav_slug' => 'my-groups',
    603             'item_css_id'         => $this->id
    604         );
    605 
    606         if ( ! empty( $user_domain ) ) {
    607             $access      = bp_core_can_edit_settings();
    608             $groups_link = trailingslashit( $user_domain . $slug );
    609598
    610599            // Add the My Groups nav item.
     
    612601                'name'            => __( 'Memberships', 'buddypress' ),
    613602                'slug'            => 'my-groups',
    614                 'parent_url'      => $groups_link,
    615603                'parent_slug'     => $slug,
    616604                'screen_function' => 'groups_screen_my_groups',
     
    624612                    'name'            => __( 'Invitations', 'buddypress' ),
    625613                    'slug'            => 'invites',
    626                     'parent_url'      => $groups_link,
    627614                    'parent_slug'     => $slug,
    628615                    'screen_function' => 'groups_screen_group_invites',
     
    659646                'name'            =>  _x( 'Home', 'Group screen navigation title', 'buddypress' ),
    660647                'slug'            => 'home',
    661                 'parent_url'      => $group_link,
    662648                'parent_slug'     => $this->current_group->slug,
    663649                'screen_function' => 'groups_screen_group_home',
     
    674660                    'name'            => _x( 'Request Membership','Group screen nav', 'buddypress' ),
    675661                    'slug'            => 'request-membership',
    676                     'parent_url'      => $group_link,
    677662                    'parent_slug'     => $this->current_group->slug,
    678663                    'screen_function' => 'groups_screen_group_request_membership',
     
    689674                        'name'            => _x( 'Activity', 'My Group screen nav', 'buddypress' ),
    690675                        'slug'            => 'activity',
    691                         'parent_url'      => $group_link,
    692676                        'parent_slug'     => $this->current_group->slug,
    693677                        'screen_function' => 'groups_screen_group_activity',
     
    709693                    ),
    710694                    'slug'            => 'members',
    711                     'parent_url'      => $group_link,
    712695                    'parent_slug'     => $this->current_group->slug,
    713696                    'screen_function' => 'groups_screen_group_members',
     
    723706                    'name'            => _x( 'Send Invites', 'My Group screen nav', 'buddypress' ),
    724707                    'slug'            => 'send-invites',
    725                     'parent_url'      => $group_link,
    726708                    'parent_slug'     => $this->current_group->slug,
    727709                    'screen_function' => 'groups_screen_group_invite',
     
    738720                    'name'            => _x( 'Manage', 'My Group screen nav', 'buddypress' ),
    739721                    'slug'            => 'admin',
    740                     'parent_url'      => $group_link,
    741722                    'parent_slug'     => $this->current_group->slug,
    742723                    'screen_function' => 'groups_screen_group_admin',
     
    747728                );
    748729
    749                 $admin_link = trailingslashit( $group_link . 'admin' );
     730                $admin_link = bp_get_group_url(
     731                    $this->current_group,
     732                    array(
     733                        'single_item_action' => bp_rewrites_get_slug( 'groups', 'bp_group_read_admin', 'admin' ),
     734                    )
     735                );
    750736
    751737                // Common params to all nav items.
    752738                $default_params = array(
    753                     'parent_url'        => $admin_link,
    754739                    'parent_slug'       => $this->current_group->slug . '_manage',
    755740                    'screen_function'   => 'groups_screen_group_admin',
     
    845830
    846831            // Setup the logged in user variables.
    847             $groups_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() );
     832            $groups_slug        = bp_get_groups_slug();
     833            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
    848834
    849835            $title   = _x( 'Groups', 'My Account Groups', 'buddypress' );
     
    873859                'id'     => 'my-account-' . $this->id,
    874860                'title'  => $title,
    875                 'href'   => $groups_link
     861                'href'   => bp_loggedin_user_url(
     862                    array(
     863                        'single_item_component' => $custom_groups_slug,
     864                    )
     865                ),
    876866            );
    877867
     
    881871                'id'       => 'my-account-' . $this->id . '-memberships',
    882872                'title'    => _x( 'Memberships', 'My Account Groups sub nav', 'buddypress' ),
    883                 'href'     => trailingslashit( $groups_link . 'my-groups' ),
    884                 'position' => 10
     873                'href'     => bp_loggedin_user_url(
     874                    array(
     875                        'single_item_component' => $custom_groups_slug,
     876                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_my_groups', 'my-groups' ),
     877                    )
     878                ),
     879                'position' => 10,
    885880            );
    886881
     
    891886                    'id'       => 'my-account-' . $this->id . '-invites',
    892887                    'title'    => $pending,
    893                     'href'     => trailingslashit( $groups_link . 'invites' ),
    894                     'position' => 30
     888                    'href'     => bp_loggedin_user_url(
     889                        array(
     890                            'single_item_component' => $custom_groups_slug,
     891                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites', 'invites' ),
     892                        )
     893                    ),
     894                    'position' => 30,
    895895                );
    896896            }
  • trunk/src/bp-groups/screens/single/admin/delete-group.php

    r11923 r13441  
    1515function groups_screen_group_admin_delete_group() {
    1616
    17     if ( 'delete-group' != bp_get_group_current_admin_tab() )
     17    if ( 'delete-group' != bp_get_group_current_admin_tab() ) {
    1818        return false;
     19    }
    1920
    20     if ( ! bp_is_item_admin() && !bp_current_user_can( 'bp_moderate' ) )
     21    if ( ! bp_is_item_admin() && !bp_current_user_can( 'bp_moderate' ) ) {
    2122        return false;
     23    }
    2224
    2325    $bp = buddypress();
    2426
    2527    if ( isset( $_REQUEST['delete-group-button'] ) && isset( $_REQUEST['delete-group-understand'] ) ) {
     28        $groups_slug = bp_get_groups_slug();
     29        $redirect    = bp_loggedin_user_url(
     30            array(
     31                'single_item_component' => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug ),
     32            )
     33        );
    2634
    2735        // Check the nonce first.
    28         if ( !check_admin_referer( 'groups_delete_group' ) ) {
     36        if ( ! check_admin_referer( 'groups_delete_group' ) ) {
    2937            return false;
    3038        }
     
    4048
    4149        // Group admin has deleted the group, now do it.
    42         if ( !groups_delete_group( $bp->groups->current_group->id ) ) {
     50        if ( ! groups_delete_group( $bp->groups->current_group->id ) ) {
    4351            bp_core_add_message( __( 'There was an error deleting the group. Please try again.', 'buddypress' ), 'error' );
    4452        } else {
     
    5361             */
    5462            do_action( 'groups_group_deleted', $bp->groups->current_group->id );
    55 
    56             bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) );
    5763        }
    5864
    59         bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) );
     65        bp_core_redirect( $redirect );
    6066    }
    6167
  • trunk/src/bp-members/bp-members-adminbar.php

    r13395 r13441  
    4343            'group'  => true,
    4444            'title'  => __( 'Edit My Profile', 'buddypress' ),
    45             'href'   => bp_loggedin_user_domain(),
     45            'href'   => bp_loggedin_user_url(),
    4646            'meta'   => array(
    4747            'class'  => 'ab-sub-secondary'
     
    201201
    202202    if ( bp_current_user_can( 'bp_members_invitations_view_screens' ) ) {
    203         $bp               = buddypress();
    204         $invitations_link = trailingslashit( bp_loggedin_user_domain() . bp_get_members_invitations_slug() );
     203        $bp                 = buddypress();
     204        $invite_slug        = bp_get_members_invitations_slug();
     205        $custom_invite_slug = bp_rewrites_get_slug( 'members', 'member_' . $invite_slug, $invite_slug );
    205206
    206207        $wp_admin_bar->add_node(
     
    209210                'parent' => $bp->my_account_menu_id,
    210211                'title'  => __( 'Invitations', 'buddypress' ),
    211                 'href'   => $invitations_link,
     212                'href'   => bp_loggedin_user_url(
     213                    array(
     214                        'single_item_component' => $custom_invite_slug,
     215                    )
     216                ),
    212217                'meta'   => array(
    213218                    'class'  => 'ab-sub-secondary'
     
    222227                    'parent' => $bp->my_account_menu_id . '-invitations',
    223228                    'title'  => __( 'Send Invites', 'buddypress' ),
    224                     'href'   => $invitations_link . 'send-invites/',
     229                    'href'   => bp_loggedin_user_url(
     230                        array(
     231                            'single_item_component' => $custom_invite_slug,
     232                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $invite_slug . '_send_invites', 'send-invites' ),
     233                        )
     234                    ),
    225235                    'meta'   => array(
    226236                        'class'  => 'ab-sub-secondary'
     
    235245                'parent' => $bp->my_account_menu_id . '-invitations',
    236246                'title'  => __( 'Pending Invites', 'buddypress' ),
    237                 'href'   => $invitations_link . 'list-invites/',
     247                'href'   => bp_loggedin_user_url(
     248                    array(
     249                        'single_item_component' => $custom_invite_slug,
     250                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $invite_slug . '_list_invites', 'list-invites' ),
     251                    )
     252                ),
    238253                'meta'   => array(
    239254                    'class'  => 'ab-sub-secondary'
  • trunk/src/bp-members/bp-members-invitations.php

    r13395 r13441  
    3636    );
    3737
    38     $parent_link = trailingslashit( bp_displayed_user_domain() . bp_get_members_invitations_slug() );
    39 
    4038    /* Create two subnav items for community invitations */
    4139    bp_core_new_subnav_item(
     
    4442            'slug'            => 'send-invites',
    4543            'parent_slug'     => bp_get_members_invitations_slug(),
    46             'parent_url'      => $parent_link,
    4744            'screen_function' => 'members_screen_send_invites',
    4845            'position'        => 10,
     
    5653            'slug'            => 'list-invites',
    5754            'parent_slug'     => bp_get_members_invitations_slug(),
    58             'parent_url'      => $parent_link,
    5955            'screen_function' => 'members_screen_list_sent_invites',
    6056            'position'        => 20,
  • trunk/src/bp-members/bp-members-template.php

    r13436 r13441  
    15871587        }
    15881588
    1589         if ( bp_loggedin_user_domain() ) {
    1590             $link = str_replace( bp_loggedin_user_domain(), bp_displayed_user_domain(), $user_nav_item->link );
     1589        if ( bp_loggedin_user_url() ) {
     1590            $link = str_replace( bp_loggedin_user_url(), bp_displayed_user_url(), $user_nav_item->link );
    15911591        } else {
    1592             $link = trailingslashit( bp_displayed_user_domain() . $user_nav_item->link );
     1592            $link = $user_nav_item->link;
    15931593        }
    15941594
  • trunk/src/bp-members/classes/class-bp-members-component.php

    r13437 r13441  
    429429        $subnavs = array();
    430430
    431         $access       = bp_core_can_edit_settings();
    432         $slug         = bp_get_profile_slug();
    433         $profile_link = bp_get_members_component_link( buddypress()->profile->id );
     431        $access = bp_core_can_edit_settings();
     432        $slug   = bp_get_profile_slug();
    434433
    435434        // Change Avatar.
     
    438437                'name'            => _x( 'Change Profile Photo', 'Profile header sub menu', 'buddypress' ),
    439438                'slug'            => 'change-avatar',
    440                 'parent_url'      => $profile_link,
    441439                'parent_slug'     => $slug,
    442440                'screen_function' => 'bp_members_screen_change_avatar',
     
    451449                'name'            => _x( 'Change Cover Image', 'Profile header sub menu', 'buddypress' ),
    452450                'slug'            => 'change-cover-image',
    453                 'parent_url'      => $profile_link,
    454451                'parent_slug'     => $slug,
    455452                'screen_function' => 'bp_members_screen_change_cover_image',
     
    486483        if ( ! bp_displayed_user_has_front_template() && $is_xprofile_active ) {
    487484            add_action( 'bp_xprofile_setup_nav', array( $this, 'setup_xprofile_nav' ) );
    488             return;
    489         }
    490 
    491         // Determine user to use.
    492         if ( bp_displayed_user_domain() ) {
    493             $user_domain = bp_displayed_user_domain();
    494         } elseif ( bp_loggedin_user_domain() ) {
    495             $user_domain = bp_loggedin_user_domain();
    496         } else {
    497485            return;
    498486        }
     
    534522            'name'            => _x( 'View', 'Member profile view', 'buddypress' ),
    535523            'slug'            => 'public',
    536             'parent_url'      => trailingslashit( $user_domain . $slug ),
    537524            'parent_slug'     => $slug,
    538525            'screen_function' => 'bp_members_screen_display_profile',
     
    556543            $front_subnav = $this->sub_nav;
    557544            $front_subnav['parent_slug'] = 'front';
    558 
    559             // In case the subnav is displayed in the front template
    560             $front_subnav['parent_url'] = trailingslashit( $user_domain . 'front' );
    561545
    562546            // Set the subnav
  • trunk/src/bp-messages/classes/class-bp-messages-component.php

    r13435 r13441  
    197197    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    198198
    199         // Determine user to use.
    200         if ( bp_displayed_user_domain() ) {
    201             $user_domain = bp_displayed_user_domain();
    202         } elseif ( bp_loggedin_user_domain() ) {
    203             $user_domain = bp_loggedin_user_domain();
    204         } else {
     199        // Stop if there is no user displayed or logged in.
     200        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    205201            return;
    206202        }
    207203
    208         $access        = bp_core_can_edit_settings();
    209         $slug          = bp_get_messages_slug();
    210         $messages_link = trailingslashit( $user_domain . $slug );
     204        $access = bp_core_can_edit_settings();
     205        $slug   = bp_get_messages_slug();
    211206
    212207        // Only grab count if we're on a user page and current user has access.
     
    242237            'name'            => __( 'Inbox', 'buddypress' ),
    243238            'slug'            => 'inbox',
    244             'parent_url'      => $messages_link,
    245239            'parent_slug'     => $slug,
    246240            'screen_function' => 'messages_screen_inbox',
     
    253247                'name'            => __( 'Starred', 'buddypress' ),
    254248                'slug'            => bp_get_messages_starred_slug(),
    255                 'parent_url'      => $messages_link,
    256249                'parent_slug'     => $slug,
    257250                'screen_function' => 'bp_messages_star_screen',
     
    264257            'name'            => __( 'Sent', 'buddypress' ),
    265258            'slug'            => 'sentbox',
    266             'parent_url'      => $messages_link,
    267259            'parent_slug'     => $slug,
    268260            'screen_function' => 'messages_screen_sentbox',
     
    275267            'name'            => __( 'Compose', 'buddypress' ),
    276268            'slug'            => 'compose',
    277             'parent_url'      => $messages_link,
    278269            'parent_slug'     => $slug,
    279270            'screen_function' => 'messages_screen_compose',
     
    286277            'name'            => __( 'Notices', 'buddypress' ),
    287278            'slug'            => 'notices',
    288             'parent_url'      => $messages_link,
    289279            'parent_slug'     => $slug,
    290280            'screen_function' => 'messages_screen_notices',
  • trunk/src/bp-notifications/classes/class-bp-notifications-component.php

    r13432 r13441  
    147147    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    148148
    149         // Determine user to use.
    150         if ( bp_displayed_user_domain() ) {
    151             $user_domain = bp_displayed_user_domain();
    152         } elseif ( bp_loggedin_user_domain() ) {
    153             $user_domain = bp_loggedin_user_domain();
    154         } else {
     149        // Stop if there is no user displayed or logged in.
     150        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    155151            return;
    156152        }
    157153
    158         $access             = bp_core_can_edit_settings();
    159         $slug               = bp_get_notifications_slug();
    160         $notifications_link = trailingslashit( $user_domain . $slug );
     154        $access = bp_core_can_edit_settings();
     155        $slug   = bp_get_notifications_slug();
    161156
    162157        // Only grab count if we're on a user page and current user has access.
     
    192187            'name'            => _x( 'Unread', 'Notification screen nav', 'buddypress' ),
    193188            'slug'            => 'unread',
    194             'parent_url'      => $notifications_link,
    195189            'parent_slug'     => $slug,
    196190            'screen_function' => 'bp_notifications_screen_unread',
     
    203197            'name'            => _x( 'Read', 'Notification screen nav', 'buddypress' ),
    204198            'slug'            => 'read',
    205             'parent_url'      => $notifications_link,
    206199            'parent_slug'     => $slug,
    207200            'screen_function' => 'bp_notifications_screen_read',
  • trunk/src/bp-settings/classes/class-bp-settings-component.php

    r13432 r13441  
    133133    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    134134
    135         // Determine user to use.
    136         if ( bp_displayed_user_domain() ) {
    137             $user_domain = bp_displayed_user_domain();
    138         } elseif ( bp_loggedin_user_domain() ) {
    139             $user_domain = bp_loggedin_user_domain();
    140         } else {
     135        // Stop if there is no user displayed or logged in.
     136        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    141137            return;
    142138        }
    143139
    144         $access        = bp_core_can_edit_settings();
    145         $slug          = bp_get_settings_slug();
    146         $settings_link = trailingslashit( $user_domain . $slug );
     140        $access = bp_core_can_edit_settings();
     141        $slug   = bp_get_settings_slug();
    147142
    148143        // Add the settings navigation item.
     
    160155            'name'            => __( 'General', 'buddypress' ),
    161156            'slug'            => 'general',
    162             'parent_url'      => $settings_link,
    163157            'parent_slug'     => $slug,
    164158            'screen_function' => 'bp_settings_screen_general',
     
    172166            'name'            => __( 'Email', 'buddypress' ),
    173167            'slug'            => 'notifications',
    174             'parent_url'      => $settings_link,
    175168            'parent_slug'     => $slug,
    176169            'screen_function' => 'bp_settings_screen_notification',
     
    184177                'name'            => __( 'Capabilities', 'buddypress' ),
    185178                'slug'            => 'capabilities',
    186                 'parent_url'      => $settings_link,
    187179                'parent_slug'     => $slug,
    188180                'screen_function' => 'bp_settings_screen_capabilities',
     
    206198                'name'            => __( 'Export Data', 'buddypress' ),
    207199                'slug'            => 'data',
    208                 'parent_url'      => $settings_link,
    209200                'parent_slug'     => $slug,
    210201                'screen_function' => 'bp_settings_screen_data',
     
    219210                'name'            => __( 'Delete Account', 'buddypress' ),
    220211                'slug'            => 'delete-account',
    221                 'parent_url'      => $settings_link,
    222212                'parent_slug'     => $slug,
    223213                'screen_function' => 'bp_settings_screen_delete_account',
  • trunk/src/bp-templates/bp-nouveau/includes/groups/functions.php

    r13437 r13441  
    434434 */
    435435function bp_nouveau_groups_invites_restriction_nav() {
    436     $slug        = bp_nouveau_get_component_slug( 'settings' );
    437     $user_domain = bp_loggedin_user_domain();
    438 
    439     if ( bp_displayed_user_domain() ) {
    440         $user_domain = bp_displayed_user_domain();
    441     }
    442436
    443437    bp_core_new_subnav_item( array(
    444438        'name'            => _x( 'Group Invites', 'Group invitations main menu title', 'buddypress' ),
    445439        'slug'            => 'invites',
    446         'parent_url'      => trailingslashit( $user_domain . $slug ),
    447         'parent_slug'     => $slug,
     440        'parent_slug'     => bp_nouveau_get_component_slug( 'settings' ),
    448441        'screen_function' => 'bp_nouveau_groups_screen_invites_restriction',
    449442        'item_css_id'     => 'invites',
  • trunk/src/bp-templates/bp-nouveau/includes/messages/functions.php

    r13274 r13441  
    100100
    101101        // Make sure to use the displayed user domain.
    102         if ( bp_loggedin_user_domain() ) {
    103             $root_url = str_replace( bp_loggedin_user_domain(), bp_displayed_user_domain(), $root_url );
     102        if ( bp_loggedin_user_url() ) {
     103            $root_url = str_replace( bp_loggedin_user_url(), bp_displayed_user_url(), $root_url );
    104104        }
    105105    } else {
    106         $root_url = trailingslashit( bp_displayed_user_domain() . $slug );
     106        $root_url = $primary_nav->link;
    107107    }
    108108
  • trunk/src/bp-templates/bp-nouveau/includes/template-tags.php

    r13437 r13441  
    10871087
    10881088        if ( 'personal' === $bp_nouveau->displayed_nav && ! empty( $nav_item->primary ) ) {
    1089             if ( bp_loggedin_user_domain() ) {
    1090                 $link = str_replace( bp_loggedin_user_domain(), bp_displayed_user_domain(), $link );
    1091             } else {
    1092                 $link = trailingslashit( bp_displayed_user_domain() . $link );
     1089            if ( bp_loggedin_user_url() ) {
     1090                $link = str_replace( bp_loggedin_user_url(), bp_displayed_user_url(), $link );
    10931091            }
    10941092        }
  • trunk/src/bp-xprofile/classes/class-bp-xprofile-component.php

    r13432 r13441  
    230230    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    231231
    232         // Determine user to use.
    233         if ( bp_displayed_user_domain() ) {
    234             $user_domain = bp_displayed_user_domain();
    235         } elseif ( bp_loggedin_user_domain() ) {
    236             $user_domain = bp_loggedin_user_domain();
    237         } else {
     232        // Stop if there is no user displayed or logged in.
     233        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    238234            return;
    239235        }
    240236
    241         $access       = bp_core_can_edit_settings();
    242         $slug         = bp_get_profile_slug();
    243         $profile_link = trailingslashit( $user_domain . $slug );
     237        $access = bp_core_can_edit_settings();
     238        $slug   = bp_get_profile_slug();
    244239
    245240        // Add 'Profile' to the main navigation.
     
    257252            'name'            => _x( 'View', 'Profile header sub menu', 'buddypress' ),
    258253            'slug'            => 'public',
    259             'parent_url'      => $profile_link,
    260254            'parent_slug'     => $slug,
    261255            'screen_function' => 'xprofile_screen_display_profile',
     
    267261            'name'            => _x( 'Edit','Profile header sub menu', 'buddypress' ),
    268262            'slug'            => 'edit',
    269             'parent_url'      => $profile_link,
    270263            'parent_slug'     => $slug,
    271264            'screen_function' => 'xprofile_screen_edit_profile',
     
    294287        }
    295288
    296         // Determine user to use.
    297         if ( bp_displayed_user_domain() ) {
    298             $user_domain = bp_displayed_user_domain();
    299         } elseif ( bp_loggedin_user_domain() ) {
    300             $user_domain = bp_loggedin_user_domain();
    301         } else {
     289        // Stop if there is no user displayed or logged in.
     290        if ( ! is_user_logged_in() && ! bp_displayed_user_id() ) {
    302291            return;
    303292        }
     
    309298            'name'            => _x( 'Profile Visibility', 'Profile settings sub nav', 'buddypress' ),
    310299            'slug'            => 'profile',
    311             'parent_url'      => trailingslashit( $user_domain . $settings_slug ),
    312300            'parent_slug'     => $settings_slug,
    313301            'screen_function' => 'bp_xprofile_screen_settings',
  • trunk/tests/phpunit/testcases/core/nav/bpCoreNewNavItem.php

    r13437 r13441  
    173173            'name'                    => 'Settings',
    174174            'slug'                    => 'settings',
    175             'link'                    => trailingslashit( bp_loggedin_user_domain() . 'settings' ),
     175            'link'                    => bp_members_get_user_url(
     176                $u,
     177                array(
     178                    'single_item_component' => 'settings',
     179                )
     180            ),
    176181            'css_id'                  => 'settings',
    177182            'show_for_displayed_user' => false,
     
    218223            'name'                    => 'Woof',
    219224            'slug'                    => 'woof',
    220             'link'                    => trailingslashit( bp_loggedin_user_domain() . 'woof' ),
     225            'link'                    => bp_members_get_user_url(
     226                $u,
     227                array(
     228                    'single_item_component' => 'woof',
     229                )
     230            ),
    221231            'css_id'                  => 'woof',
    222232            'show_for_displayed_user' => false,
  • trunk/tests/phpunit/testcases/core/nav/bpCoreNewSubnavItem.php

    r13433 r13441  
    55 */
    66class BP_Tests_Core_Nav_BpCoreNewSubnavItem extends BP_UnitTestCase {
     7    protected $permalink_structure = '';
     8
     9    public function set_up() {
     10        parent::set_up();
     11        $this->permalink_structure = get_option( 'permalink_structure', '' );
     12    }
     13
     14    public function tear_down() {
     15        $this->set_permalink_structure( $this->permalink_structure );
     16
     17        parent::tear_down();
     18    }
    719
    820    /**
     
    1022     */
    1123    public function test_user_subnav() {
     24        $this->set_permalink_structure( '/%postname%/' );
    1225        $bp_options_nav = buddypress()->bp_options_nav;
    1326
     
    1629        $this->set_current_user( $u );
    1730
    18         $user_domain = bp_members_get_user_url( $u );
    19 
    20         $this->go_to( $user_domain );
     31        $this->go_to( bp_members_get_user_url( $u ) );
    2132
    2233        bp_core_new_nav_item( array(
    2334            'name'            => 'Foo Parent',
    2435            'slug'            => 'foo-parent',
    25             'link'            => trailingslashit( $user_domain . 'foo-parent' ),
    2636            'screen_function' => 'foo_screen_function',
    2737            'position'        => 10,
     
    3141            'name'            => 'Foo',
    3242            'slug'            => 'foo',
    33             'parent_url'      => trailingslashit( $user_domain . 'foo-parent' ),
     43            'parent_url'      => bp_members_get_user_url(
     44                $u,
     45                array(
     46                    'single_item_component' => 'foo-parent',
     47                )
     48            ),
    3449            'parent_slug'     => 'foo-parent',
    3550            'screen_function' => 'foo_screen_function',
     
    3954        $expected = array(
    4055            'name'              => 'Foo',
    41             'link'              => trailingslashit( $user_domain . 'foo-parent/foo' ),
     56            'link'              => bp_members_get_user_url(
     57                $u,
     58                array(
     59                    'single_item_component' => 'foo-parent',
     60                    'single_item_action'    => 'foo',
     61                )
     62            ),
    4263            'slug'              => 'foo',
    4364            'css_id'            => 'foo',
     
    6384            'slug' => 'foo',
    6485            'parent_slug' => 'foo',
    65             'parent_url' => 'foo',
    6686            'screen_function' => 'foo',
    6787        ) ) );
     
    7191            'name' => 'foo',
    7292            'parent_slug' => 'foo',
    73             'parent_url' => 'foo',
    7493            'screen_function' => 'foo',
    7594        ) ) );
     
    7998            'name' => 'foo',
    8099            'slug' => 'foo',
    81             'parent_url' => 'foo',
    82             'screen_function' => 'foo',
    83         ) ) );
    84 
    85         // 'parent_url'
    86         $this->assertFalse( bp_core_new_subnav_item( array(
    87             'name' => 'foo',
    88             'slug' => 'foo',
    89             'parent_slug' => 'foo',
    90100            'screen_function' => 'foo',
    91101        ) ) );
     
    96106            'slug' => 'foo',
    97107            'parent_slug' => 'foo',
    98             'parent_url' => 'foo',
    99108        ) ) );
    100109    }
     
    179188            'name' => 'Foo',
    180189            'slug' => 'foo',
     190            'url' => 'http://example.com/foo/',
    181191            'screen_function' => 'foo',
    182192            'default_subnav_slug' => 'bar',
     
    191201        ) );
    192202
    193         $this->assertSame( 'http://example.com/foo/', buddypress()->bp_options_nav['foo']['bar']['link'] );
     203        $this->assertSame( 'http://example.com/foo/bar/', buddypress()->bp_options_nav['foo']['bar']['link'] );
    194204
    195205        // clean up
     
    202212     */
    203213    public function test_should_trailingslash_link_when_link_is_autogenerated_using_slug() {
     214        $this->set_permalink_structure( '/%postname%/' );
    204215        bp_core_new_nav_item( array(
    205216            'name' => 'Foo',
     
    225236     */
    226237    public function test_should_trailingslash_link_when_link_is_autogenerated_not_using_slug() {
     238        $this->set_permalink_structure( '/%postname%/' );
    227239        bp_core_new_nav_item( array(
    228240            'name' => 'foo',
     
    241253        ) );
    242254
    243         $expected = bp_get_root_domain() . '/foo-parent/';
     255        $expected = bp_get_root_domain() . '/foo-parent/bar/';
    244256        $this->assertSame( $expected, buddypress()->bp_options_nav['foo-parent']['bar']['link'] );
    245257    }
  • trunk/tests/phpunit/testcases/groups/class-bp-group-extension.php

    r13437 r13441  
    911911                $g_obj,
    912912                array(
    913                     'single_item_component' => 'members',
     913                    'single_item_action' => 'members',
    914914                )
    915915            )
Note: See TracChangeset for help on using the changeset viewer.