Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/17/2014 08:27:26 AM (12 years ago)
Author:
r-a-y
Message:

Remove object cache for bp_core_get_user_domain() function.

This caused issues when using a persistent object cache and when the
members directory page slug was changed in the admin area.

Because bp_core_get_user_domain() has its own object cache that is
keyed to each individual user, cache invalidation becomes troublesome.

Since we are already caching the username, this makes caching the
user domain redundant. Thus, this commit removes the object
cache associated with the bp_core_get_user_domain() function, while
leaving the 'bp_core_get_user_domain_pre_cache' filter in place for
backwards compatibility.

Fixes #5402.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-members/bp-members-functions.php

    r7863 r7911  
    125125function bp_core_get_user_domain( $user_id, $user_nicename = false, $user_login = false ) {
    126126
    127     if ( empty( $user_id ) )
     127    if ( empty( $user_id ) ) {
    128128        return;
    129 
    130     if ( !$domain = wp_cache_get( 'bp_user_domain_' . $user_id, 'bp' ) ) {
    131         $username = bp_core_get_username( $user_id, $user_nicename, $user_login );
    132 
    133         if ( bp_is_username_compatibility_mode() )
    134             $username = rawurlencode( $username );
    135 
    136         $after_domain = bp_core_enable_root_profiles() ? $username : bp_get_members_root_slug() . '/' . $username;
    137         $domain       = trailingslashit( bp_get_root_domain() . '/' . $after_domain );
    138         $domain       = apply_filters( 'bp_core_get_user_domain_pre_cache', $domain, $user_id, $user_nicename, $user_login );
    139 
    140         // Cache the link
    141         if ( !empty( $domain ) ) {
    142             wp_cache_set( 'bp_user_domain_' . $user_id, $domain, 'bp' );
    143         }
    144     }
     129    }
     130
     131    $username = bp_core_get_username( $user_id, $user_nicename, $user_login );
     132
     133    if ( bp_is_username_compatibility_mode() ) {
     134        $username = rawurlencode( $username );
     135    }
     136
     137    $after_domain = bp_core_enable_root_profiles() ? $username : bp_get_members_root_slug() . '/' . $username;
     138    $domain       = trailingslashit( bp_get_root_domain() . '/' . $after_domain );
     139
     140    // Don't use this filter.  Subject to removal in a future release.
     141    // Use the 'bp_core_get_user_domain' filter instead.
     142    $domain       = apply_filters( 'bp_core_get_user_domain_pre_cache', $domain, $user_id, $user_nicename, $user_login );
    145143
    146144    return apply_filters( 'bp_core_get_user_domain', $domain, $user_id, $user_nicename, $user_login );
Note: See TracChangeset for help on using the changeset viewer.