Skip to:
Content

BuddyPress.org

Ticket #7834: 7834.bp_blog.patch

File 7834.bp_blog.patch, 8.9 KB (added by r-a-y, 7 years ago)
  • src/bp-blogs/bp-blogs-cache.php

     
    2828                'object_ids'    => $blog_ids,
    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        );
    3434
  • src/bp-blogs/bp-blogs-filters.php

     
    135135        return $sizes;
    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 3.1.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 * @return string
     156 */
     157function bp_blogs_filter_meta_column_name( $retval ) {
     158        if ( 'bp_blog_id' === $retval ) {
     159                $retval = 'blog_id';
     160        }
     161        return $retval;
     162}
     163 No newline at end of file
  • src/bp-blogs/bp-blogs-functions.php

     
    175175        foreach ( (array) $blogs as $blog ) {
    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.
    181181                $users = get_users( array(
     
    13021302
    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 {
    13081308                $keys = array( $meta_key );
    13091309        }
    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;
    13211323}
     
    13381340 */
    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
    13441348        return $retval;
     
    13611365 */
    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
    13671373        return $retval;
     
    13821388 */
    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
    13881396        return $retval;
  • src/bp-blogs/classes/class-bp-blogs-component.php

     
    6363                );
    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
    6969                // Fetch the default directory title.
     
    347347
    348348                // Global groups.
    349349                wp_cache_add_global_groups( array(
    350                         'blog_meta'
     350                        'bp_blog_meta'
    351351                ) );
    352352
    353353                parent::setup_cache_groups();
  • tests/phpunit/testcases/blogs/cache.php

     
    3030                $b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' );
    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 ) );
    4141
     
    7474
    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 ] );
    8585                }
     
    120120                $b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' );
    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(
    131131                        'user_id' => $u,
     
    166166
    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 ] );
    177177                }
     
    214214                $b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' );
    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(
    225225                        'update_meta_cache' => false,
    226226                ) );
    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 );
    233233        }
     
    304304
    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
    310310                update_blog_details( $b1, array(
     
    312312                ) );
    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}