Skip to:
Content

BuddyPress.org

Changeset 12173


Ignore:
Timestamp:
06/16/2018 09:37:33 AM (8 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.