Ticket #7834: 7834.bp_blog.patch
File 7834.bp_blog.patch, 8.9 KB (added by , 7 years ago) |
---|
-
src/bp-blogs/bp-blogs-cache.php
28 28 'object_ids' => $blog_ids, 29 29 'object_type' => buddypress()->blogs->id, 30 30 'object_column' => 'blog_id', 31 'cache_group' => 'b log_meta',31 'cache_group' => 'bp_blog_meta', 32 32 'meta_table' => buddypress()->blogs->table_name_blogmeta, 33 33 ); 34 34 -
src/bp-blogs/bp-blogs-filters.php
135 135 return $sizes; 136 136 } 137 137 add_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 */ 157 function 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
175 175 foreach ( (array) $blogs as $blog ) { 176 176 177 177 // Ensure that the cache is clear after the table TRUNCATE above. 178 wp_cache_delete( $blog->blog_id, 'b log_meta' );178 wp_cache_delete( $blog->blog_id, 'bp_blog_meta' ); 179 179 180 180 // Get all users. 181 181 $users = get_users( array( … … 1302 1302 1303 1303 // Legacy - if no meta_key is passed, delete all for the blog_id. 1304 1304 if ( empty( $meta_key ) ) { 1305 $keys = $wpdb->get_col( $wpdb->prepare( "SELECT meta_key FROM {$wpdb->b logmeta} 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 ) ); 1306 1306 $delete_all = false; 1307 1307 } else { 1308 1308 $keys = array( $meta_key ); 1309 1309 } 1310 1310 1311 1311 add_filter( 'query', 'bp_filter_metaid_column_name' ); 1312 add_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' ); 1312 1313 1313 1314 $retval = false; 1314 1315 foreach ( $keys as $key ) { 1315 $retval = delete_metadata( 'b log', $blog_id, $key, $meta_value, $delete_all );1316 $retval = delete_metadata( 'bp_blog', $blog_id, $key, $meta_value, $delete_all ); 1316 1317 } 1317 1318 1318 1319 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 1320 remove_filter( 'sanitize_key', 'bp_blogs_filter_meta_column_name' ); 1319 1321 1320 1322 return $retval; 1321 1323 } … … 1338 1340 */ 1339 1341 function bp_blogs_get_blogmeta( $blog_id, $meta_key = '', $single = true ) { 1340 1342 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' ); 1342 1346 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 1343 1347 1344 1348 return $retval; … … 1361 1365 */ 1362 1366 function bp_blogs_update_blogmeta( $blog_id, $meta_key, $meta_value, $prev_value = '' ) { 1363 1367 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' ); 1365 1371 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 1366 1372 1367 1373 return $retval; … … 1382 1388 */ 1383 1389 function bp_blogs_add_blogmeta( $blog_id, $meta_key, $meta_value, $unique = false ) { 1384 1390 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' ); 1386 1394 remove_filter( 'query', 'bp_filter_metaid_column_name' ); 1387 1395 1388 1396 return $retval; -
src/bp-blogs/classes/class-bp-blogs-component.php
63 63 ); 64 64 65 65 $meta_tables = array( 66 'b log' => $bp->table_prefix . 'bp_user_blogs_blogmeta',66 'bp_blog' => $bp->table_prefix . 'bp_user_blogs_blogmeta', 67 67 ); 68 68 69 69 // Fetch the default directory title. … … 347 347 348 348 // Global groups. 349 349 wp_cache_add_global_groups( array( 350 'b log_meta'350 'bp_blog_meta' 351 351 ) ); 352 352 353 353 parent::setup_cache_groups(); -
tests/phpunit/testcases/blogs/cache.php
30 30 $b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' ); 31 31 32 32 // Clear caches (due to _get_) 33 wp_cache_delete( $b1, 'b log_meta' );34 wp_cache_delete( $b2, 'b log_meta' );33 wp_cache_delete( $b1, 'bp_blog_meta' ); 34 wp_cache_delete( $b2, 'bp_blog_meta' ); 35 35 36 36 // Caches should be empty 37 $this->assertFalse( wp_cache_get( $b1, 'b log_meta' ) );38 $this->assertFalse( wp_cache_get( $b2, 'b log_meta' ) );37 $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) ); 38 $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) ); 39 39 40 40 bp_blogs_update_meta_cache( array( $b1, $b2 ) ); 41 41 … … 74 74 75 75 // The cache may contain more than just this, so loop through 76 76 // and check only relevant keys 77 $b1_found = wp_cache_get( $b1, 'b log_meta' );77 $b1_found = wp_cache_get( $b1, 'bp_blog_meta' ); 78 78 foreach ( $b1_expected as $k => $v ) { 79 79 $this->assertSame( $v, $b1_found[ $k ] ); 80 80 } 81 81 82 $b2_found = wp_cache_get( $b2, 'b log_meta' );82 $b2_found = wp_cache_get( $b2, 'bp_blog_meta' ); 83 83 foreach ( $b2_expected as $k => $v ) { 84 84 $this->assertSame( $v, $b2_found[ $k ] ); 85 85 } … … 120 120 $b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' ); 121 121 122 122 // Clear caches (due to _get_) 123 wp_cache_delete( $b1, 'b log_meta' );124 wp_cache_delete( $b2, 'b log_meta' );123 wp_cache_delete( $b1, 'bp_blog_meta' ); 124 wp_cache_delete( $b2, 'bp_blog_meta' ); 125 125 126 126 // Caches should be empty 127 $this->assertFalse( wp_cache_get( $b1, 'b log_meta' ) );128 $this->assertFalse( wp_cache_get( $b2, 'b log_meta' ) );127 $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) ); 128 $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) ); 129 129 130 130 bp_has_blogs( array( 131 131 'user_id' => $u, … … 166 166 167 167 // The cache may contain more than just this, so loop through 168 168 // and check only relevant keys 169 $b1_found = wp_cache_get( $b1, 'b log_meta' );169 $b1_found = wp_cache_get( $b1, 'bp_blog_meta' ); 170 170 foreach ( $b1_expected as $k => $v ) { 171 171 $this->assertSame( $v, $b1_found[ $k ] ); 172 172 } 173 173 174 $b2_found = wp_cache_get( $b2, 'b log_meta' );174 $b2_found = wp_cache_get( $b2, 'bp_blog_meta' ); 175 175 foreach ( $b2_expected as $k => $v ) { 176 176 $this->assertSame( $v, $b2_found[ $k ] ); 177 177 } … … 214 214 $b2_last_activity = bp_blogs_get_blogmeta( $b2, 'last_activity' ); 215 215 216 216 // Clear caches (due to _get_) 217 wp_cache_delete( $b1, 'b log_meta' );218 wp_cache_delete( $b2, 'b log_meta' );217 wp_cache_delete( $b1, 'bp_blog_meta' ); 218 wp_cache_delete( $b2, 'bp_blog_meta' ); 219 219 220 220 // Caches should be empty 221 $this->assertFalse( wp_cache_get( $b1, 'b log_meta' ) );222 $this->assertFalse( wp_cache_get( $b2, 'b log_meta' ) );221 $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) ); 222 $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) ); 223 223 224 224 bp_has_blogs( array( 225 225 'update_meta_cache' => false, 226 226 ) ); 227 227 228 228 // Caches should be empty 229 $this->assertFalse( wp_cache_get( $b1, 'b log_meta' ) );230 $this->assertFalse( wp_cache_get( $b2, 'b log_meta' ) );229 $this->assertFalse( wp_cache_get( $b1, 'bp_blog_meta' ) ); 230 $this->assertFalse( wp_cache_get( $b2, 'bp_blog_meta' ) ); 231 231 232 232 $this->set_current_user( $old_user ); 233 233 } … … 304 304 305 305 // prime cache 306 306 bp_blogs_get_blogmeta( $b1, 'url' ); 307 $this->assertNotEmpty( wp_cache_get( $b1, 'b log_meta' ) );307 $this->assertNotEmpty( wp_cache_get( $b1, 'bp_blog_meta' ) ); 308 308 309 309 // updating blog details should purge cache 310 310 update_blog_details( $b1, array( … … 312 312 ) ); 313 313 314 314 // assert cache is purged 315 $this->assertEmpty( wp_cache_get( $b1, 'b log_meta' ) );315 $this->assertEmpty( wp_cache_get( $b1, 'bp_blog_meta' ) ); 316 316 } 317 317 }