Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
10/07/2015 02:30:31 PM (9 years ago)
Author:
boonebgorges
Message:

Introduce cache support for xprofile fields.

xprofile_get_field() will now look in the cache before returning a
BP_XProfile_Field object (via the new BP_XProfile_Field::get_instance()),
and will populate the cache if necessary. It's strongly recommended to use
xprofile_get_field() when fetching individual existing fields, instead of
creating new BP_XProfile_Field objects directly.

BP_XProfile_Group::get() now leverages the field cache too. Instead of a
SELECT * query, it fetches a list of matching field IDs SELECT id, and
populates the full field objects from the cache, if available. The fields
property of BP_XProfile_Group objects is now an array of BP_XProfile_Field
objects, not stdClass. See #6358.

Props boonebgorges, r-a-y.
See #6638.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/bp-xprofile-cache.php

    r10163 r10198  
    284284add_action( 'update_option_bp-xprofile-fullname-field-name', 'xprofile_clear_fullname_field_id_cache' );
    285285
     286/**
     287 * Clear a field's caches.
     288 *
     289 * @since 2.4.0
     290 *
     291 * @param int|BP_XProfile_Field A field ID or a field object.
     292 * @param bool False on failure.
     293 */
     294function bp_xprofile_clear_field_cache( $field ) {
     295    if ( is_numeric( $field ) ) {
     296        $field_id = (int) $field;
     297    } elseif ( $field instanceof BP_XProfile_Field ) {
     298        $field_id = (int) $field->id;
     299    }
     300
     301    if ( ! isset( $field_id ) ) {
     302        return false;
     303    }
     304
     305    wp_cache_delete( $field_id, 'bp_xprofile_fields' );
     306    wp_cache_delete( $field_id, 'xprofile_meta' );
     307}
     308add_action( 'xprofile_field_after_save', 'bp_xprofile_clear_field_cache' );
     309
    286310// List actions to clear super cached pages on, if super cache is installed.
    287311add_action( 'xprofile_updated_profile', 'bp_core_clear_cache' );
Note: See TracChangeset for help on using the changeset viewer.