Comments: Update comment cache in the upgrade routine for changing the comment_type
DB field value in comments table.
This ensures that comment object cache is cleared after changing the comment type to `comment` instead of an empty string. Add a unit test for `_wp_batch_update_comment_type()`. Follow-up to [47597], [47626], [48225], [48227]. Props imath, westonruter. Fixes #49236. git-svn-id: https://develop.svn.wordpress.org/trunk@48748 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
9d1a31cd0a
commit
def2425406
@ -3839,11 +3839,11 @@ function _wp_batch_update_comment_type() {
|
|||||||
*/
|
*/
|
||||||
$comment_batch_size = (int) apply_filters( 'wp_update_comment_type_batch_size', 100 );
|
$comment_batch_size = (int) apply_filters( 'wp_update_comment_type_batch_size', 100 );
|
||||||
|
|
||||||
// Update the `comment_type` field value to be `comment` for the next batch of comments.
|
// Get the IDs of the comments to update.
|
||||||
$wpdb->query(
|
$comment_ids = $wpdb->get_col(
|
||||||
$wpdb->prepare(
|
$wpdb->prepare(
|
||||||
"UPDATE {$wpdb->comments}
|
"SELECT comment_ID
|
||||||
SET comment_type = 'comment'
|
FROM {$wpdb->comments}
|
||||||
WHERE comment_type = ''
|
WHERE comment_type = ''
|
||||||
ORDER BY comment_ID DESC
|
ORDER BY comment_ID DESC
|
||||||
LIMIT %d",
|
LIMIT %d",
|
||||||
@ -3851,6 +3851,21 @@ function _wp_batch_update_comment_type() {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ( $comment_ids ) {
|
||||||
|
$comment_id_list = implode( ',', $comment_ids );
|
||||||
|
|
||||||
|
// Update the `comment_type` field value to be `comment` for the next batch of comments.
|
||||||
|
$wpdb->query(
|
||||||
|
"UPDATE {$wpdb->comments}
|
||||||
|
SET comment_type = 'comment'
|
||||||
|
WHERE comment_type = ''
|
||||||
|
AND comment_ID IN ({$comment_id_list})" // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||||
|
);
|
||||||
|
|
||||||
|
// Make sure to clean the comment cache.
|
||||||
|
clean_comment_cache( $comment_ids );
|
||||||
|
}
|
||||||
|
|
||||||
delete_option( $lock_name );
|
delete_option( $lock_name );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
49
tests/phpunit/tests/comment/wpBatchUpdateCommentType.php
Normal file
49
tests/phpunit/tests/comment/wpBatchUpdateCommentType.php
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group comment
|
||||||
|
* @covers ::_wp_batch_update_comment_type
|
||||||
|
*/
|
||||||
|
class Tests_Batch_Update_Comment_Type extends WP_UnitTestCase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 49236
|
||||||
|
*/
|
||||||
|
public function test__wp_batch_update_comment_type() {
|
||||||
|
global $wpdb;
|
||||||
|
|
||||||
|
$comment_ids = self::factory()->comment->create_many( 3 );
|
||||||
|
$comment_id_list = implode( ',', $comment_ids );
|
||||||
|
|
||||||
|
$wpdb->query(
|
||||||
|
"UPDATE {$wpdb->comments}
|
||||||
|
SET comment_type = ''
|
||||||
|
WHERE comment_type = 'comment'
|
||||||
|
AND comment_ID in ({$comment_id_list})" // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
|
||||||
|
);
|
||||||
|
|
||||||
|
clean_comment_cache( $comment_ids );
|
||||||
|
|
||||||
|
foreach ( $comment_ids as $comment_id ) {
|
||||||
|
$comment = get_comment( $comment_id );
|
||||||
|
$this->assertEmpty( $comment->comment_type );
|
||||||
|
}
|
||||||
|
|
||||||
|
add_filter( 'wp_update_comment_type_batch_size', array( $this, 'filter_comment_type_batch_size' ) );
|
||||||
|
add_filter( 'schedule_event', '__return_null' );
|
||||||
|
|
||||||
|
_wp_batch_update_comment_type();
|
||||||
|
|
||||||
|
remove_filter( 'wp_update_comment_type_batch_size', array( $this, 'filter_comment_type_batch_size' ) );
|
||||||
|
remove_filter( 'schedule_event', '__return_null' );
|
||||||
|
|
||||||
|
foreach ( $comment_ids as $comment_id ) {
|
||||||
|
$updated_comment = get_comment( $comment_id );
|
||||||
|
$this->assertEquals( 'comment', $updated_comment->comment_type );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function filter_comment_type_batch_size() {
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user