Skip to:
Content

BuddyPress.org

Changeset 12173


Ignore:
Timestamp:
06/16/2018 09:37:33 AM (7 years ago)
Author:
djpaul
Message:

Blogs: rename meta table key for compatibilty with #WP37923

The WordPress change introduces a blogmeta table in WordPress 5.0.
It uses $wpdb->blogmeta to access the table name, which is what BuddyPress has been using.

This'll be a breaking change for any manual SQL queries as soon as WP 5.0 is released.
When BuddyPress requires 5.0, we can look at migrating table content over, but that is some ways in the future.

Fixes #7834

Props needle, r-a-y

Location:
trunk
Files:
5 edited

Legend:

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

    r10417 r12173  
    2929        'object_type'   => buddypress()->blogs->id,
    3030        'object_column' => 'blog_id',
    31         'cache_group'   => 'blog_meta',
     31        'cache_group'   => 'bp_blog_meta',
    3232        'meta_table'    => buddypress()->blogs->table_name_blogmeta,
    3333    );
  • trunk/src/bp-blogs/bp-blogs-filters.php

    r11150 r12173  
    136136}
    137137add_filter( 'site_icon_image_sizes', 'bp_blogs_register_custom_site_icon_size' );
     138
     139/**
     140 * Filters the column name during blog metadata queries.
     141 *
     142 * This filters 'sanitize_key', which is used during various core metadata
     143 * API functions: {@link https://core.trac.wordpress.org/browser/branches/4.9/src/wp-includes/meta.php?lines=47,160,324}.
     144 * Due to how we are passing our meta type, we need to ensure that the correct
     145 * DB column is referenced during blogmeta queries.
     146 *
     147 * @since 4.0.0
     148 *
     149 * @see bp_blogs_delete_blogmeta()
     150 * @see bp_blogs_get_blogmeta()
     151 * @see bp_blogs_update_blogmeta()
     152 * @see bp_blogs_add_blogmeta()
     153 *
     154 * @param string $retval
     155 *
     156 * @return string
     157 */
     158function bp_blogs_filter_meta_column_name( $retval ) {
     159    if ( 'bp_blog_id' === $retval ) {
     160        $retval = 'blog_id';
     161    }
     162    return $retval;
     163}
  • trunk/src/bp-blogs/bp-blogs-functions.php

    r11788 r12173  
    176176
    177177        // Ensure that the cache is clear after the table TRUNCATE above.
    178         wp_cache_delete( $blog->blog_id, 'blog_meta' );
     178        wp_cache_delete( $blog->blog_id, 'bp_blog_meta' );
    179179
    180180        // Get all users.
     
    13031303    // Legacy - if no meta_key is passed, delete all for the blog_id.
    13041304    if ( empty( $meta_key ) ) {
    1305         $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->blogmeta} WHERE blog_id = %d", $blog_id ) );
     1305        $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->bp_blogmeta} WHERE blog_id = %d", $blog_id ) );
    13061306        $delete_all = false;
    13071307    } else {
     
    13101310
    13111311    add_filter( 'query', 'bp_filter_metaid_column_name' );
     1312    add_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
    13121313
    13131314    $retval = false;
    13141315    foreach ( $keys as $key ) {
    1315         $retval = delete_metadata( 'blog', $blog_id, $key, $meta_value, $delete_all );
     1316        $retval = delete_metadata( 'bp_blog', $blog_id, $key, $meta_value, $delete_all );
    13161317    }
    13171318
    13181319    remove_filter( 'query', 'bp_filter_metaid_column_name' );
     1320    remove_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
    13191321
    13201322    return $retval;
     
    13391341function bp_blogs_get_blogmeta( $blog_id, $meta_key = '', $single = true ) {
    13401342    add_filter( 'query', 'bp_filter_metaid_column_name' );
    1341     $retval = get_metadata( 'blog', $blog_id, $meta_key, $single );
     1343    add_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
     1344    $retval = get_metadata( 'bp_blog', $blog_id, $meta_key, $single );
     1345    remove_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
    13421346    remove_filter( 'query', 'bp_filter_metaid_column_name' );
    13431347
     
    13621366function bp_blogs_update_blogmeta( $blog_id, $meta_key, $meta_value, $prev_value = '' ) {
    13631367    add_filter( 'query', 'bp_filter_metaid_column_name' );
    1364     $retval = update_metadata( 'blog', $blog_id, $meta_key, $meta_value, $prev_value );
     1368    add_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
     1369    $retval = update_metadata( 'bp_blog', $blog_id, $meta_key, $meta_value, $prev_value );
     1370    remove_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
    13651371    remove_filter( 'query', 'bp_filter_metaid_column_name' );
    13661372
     
    13831389function bp_blogs_add_blogmeta( $blog_id, $meta_key, $meta_value, $unique = false ) {
    13841390    add_filter( 'query', 'bp_filter_metaid_column_name' );
    1385     $retval = add_metadata( 'blog', $blog_id, $meta_key, $meta_value, $unique );
     1391    add_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
     1392    $retval = add_metadata( 'bp_blog', $blog_id, $meta_key, $meta_value, $unique );
     1393    remove_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' );
    13861394    remove_filter( 'query', 'bp_filter_metaid_column_name' );
    13871395
  • trunk/src/bp-blogs/classes/class-bp-blogs-component.php

    r11934 r12173  
    6464
    6565        $meta_tables = array(
    66             'blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
     66            'bp_blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta',
    6767        );
    6868
     
    348348        // Global groups.
    349349        wp_cache_add_global_groups( array(
    350             'blog_meta'
     350            'bp_blog_meta'
    351351        ) );
    352352
  • trunk/tests/phpunit/testcases/blogs/cache.php

    r11737 r12173  
    3131
    3232        // Clear caches (due to _get_)
    33         wp_cache_delete( $b1, 'blog_meta' );
    34         wp_cache_delete( $b2, 'blog_meta' );
     33        wp_cache_delete( $b1, 'bp_blog_meta' );
     34        wp_cache_delete( $b2, 'bp_blog_meta' );
    3535
    3636        // Caches should be empty
    37         $this->assertFalse( wp_cache_get( $b1, 'blog_meta' ) );
    38         $this->assertFalse( wp_cache_get( $b2, 'blog_meta' ) );
     37        $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
     38        $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
    3939
    4040        bp_blogs_update_meta_cache( array( $b1, $b2 ) );
     
    7575        // The cache may contain more than just this, so loop through
    7676        // and check only relevant keys
    77         $b1_found = wp_cache_get( $b1, 'blog_meta' );
     77        $b1_found = wp_cache_get( $b1, 'bp_blog_meta' );
    7878        foreach ( $b1_expected as $k => $v ) {
    7979            $this->assertSame( $v, $b1_found[ $k ] );
    8080        }
    8181
    82         $b2_found = wp_cache_get( $b2, 'blog_meta' );
     82        $b2_found = wp_cache_get( $b2, 'bp_blog_meta' );
    8383        foreach ( $b2_expected as $k => $v ) {
    8484            $this->assertSame( $v, $b2_found[ $k ] );
     
    121121
    122122        // Clear caches (due to _get_)
    123         wp_cache_delete( $b1, 'blog_meta' );
    124         wp_cache_delete( $b2, 'blog_meta' );
     123        wp_cache_delete( $b1, 'bp_blog_meta' );
     124        wp_cache_delete( $b2, 'bp_blog_meta' );
    125125
    126126        // Caches should be empty
    127         $this->assertFalse( wp_cache_get( $b1, 'blog_meta' ) );
    128         $this->assertFalse( wp_cache_get( $b2, 'blog_meta' ) );
     127        $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
     128        $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
    129129
    130130        bp_has_blogs( array(
     
    167167        // The cache may contain more than just this, so loop through
    168168        // and check only relevant keys
    169         $b1_found = wp_cache_get( $b1, 'blog_meta' );
     169        $b1_found = wp_cache_get( $b1, 'bp_blog_meta' );
    170170        foreach ( $b1_expected as $k => $v ) {
    171171            $this->assertSame( $v, $b1_found[ $k ] );
    172172        }
    173173
    174         $b2_found = wp_cache_get( $b2, 'blog_meta' );
     174        $b2_found = wp_cache_get( $b2, 'bp_blog_meta' );
    175175        foreach ( $b2_expected as $k => $v ) {
    176176            $this->assertSame( $v, $b2_found[ $k ] );
     
    215215
    216216        // Clear caches (due to _get_)
    217         wp_cache_delete( $b1, 'blog_meta' );
    218         wp_cache_delete( $b2, 'blog_meta' );
     217        wp_cache_delete( $b1, 'bp_blog_meta' );
     218        wp_cache_delete( $b2, 'bp_blog_meta' );
    219219
    220220        // Caches should be empty
    221         $this->assertFalse( wp_cache_get( $b1, 'blog_meta' ) );
    222         $this->assertFalse( wp_cache_get( $b2, 'blog_meta' ) );
     221        $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
     222        $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
    223223
    224224        bp_has_blogs( array(
     
    227227
    228228        // Caches should be empty
    229         $this->assertFalse( wp_cache_get( $b1, 'blog_meta' ) );
    230         $this->assertFalse( wp_cache_get( $b2, 'blog_meta' ) );
     229        $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) );
     230        $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) );
    231231
    232232        $this->set_current_user( $old_user );
     
    305305        // prime cache
    306306        bp_blogs_get_blogmeta( $b1, 'url' );
    307         $this->assertNotEmpty( wp_cache_get( $b1, 'blog_meta' ) );
     307        $this->assertNotEmpty( wp_cache_get( $b1, 'bp_blog_meta' ) );
    308308
    309309        // updating blog details should purge cache
     
    313313
    314314        // assert cache is purged
    315         $this->assertEmpty( wp_cache_get( $b1, 'blog_meta' ) );
     315        $this->assertEmpty( wp_cache_get( $b1, 'bp_blog_meta' ) );
    316316    }
    317317}
Note: See TracChangeset for help on using the changeset viewer.