Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
12/21/2016 02:42:05 AM (4 years ago)
Author:
boonebgorges
Message:

XProfile: More consistent cache behavior when fetching user data.

  • Inside of a profile group loop (BP_XProfile_Group::get()), don't fetch user data when pulling up BP_XProfile_Field objects. In the absence of finer-grained information about users, fetching a field object grabs the data associated with the logged-in user. But in many cases, the logged-in user is irrelevant to the fields being looped over, so there's no benefit to pulling up this data. (When necessary - fetch_data - the data is queried separately, later in the get() method.)
  • When caching database misses for a data query (because the specifed user doesn't have anything filled in for the given field), store the field_id and user_id properties on the cached object. This ensures that values are properly associated with their fields when being displayed.

These changes resolve an issue where cached data for the logged-in user
can be shown erroneously on another user's profile, when the other user
doesn't have a value for a given field.

Props m_uysl, r-a-y.
See #6091. Fixes #7401.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/classes/class-bp-xprofile-profiledata.php

    r11030 r11316  
    324324                    $d               = new stdClass;
    325325                    $d->id           = '';
    326                     $d->user_id      = '';
     326                    $d->user_id      = $user_id;
    327327                    $d->field_id     = $field_id;
    328328                    $d->value        = '';
     
    490490                    $d->id           = '';
    491491                    $d->user_id      = $id;
    492                     $d->field_id     = '';
     492                    $d->field_id     = $field_id;
    493493                    $d->value        = '';
    494494                    $d->last_updated = '';
Note: See TracChangeset for help on using the changeset viewer.