Commit 2ea2fddc authored by Sergey Biryukov's avatar Sergey Biryukov
Browse files

Comments: Update comment cache in the upgrade routine for changing the...

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.
Reviewed by desrosj, SergeyBiryukov.
Merges [48748] and [48751] to the 5.5 branch.
Fixes #49236.
Built from https://develop.svn.wordpress.org/branches/5.5@48752


git-svn-id: https://core.svn.wordpress.org/branches/5.5@48514 1a063a9b-81f0-0310-95a4-ce76da25c4cd
parent 408ec70e
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -2174,9 +2174,6 @@ function upgrade_550() {
	global $wp_current_db_version;

	if ( $wp_current_db_version < 48121 ) {
		update_option( 'finished_updating_comment_type', 0 );
		wp_schedule_single_event( time() + ( 1 * MINUTE_IN_SECONDS ), 'wp_update_comment_type_batch' );

		$comment_previously_approved = get_option( 'comment_whitelist', '' );
		update_option( 'comment_previously_approved', $comment_previously_approved );
		delete_option( 'comment_whitelist' );
@@ -2198,6 +2195,11 @@ function upgrade_550() {
		delete_option( 'blacklist_keys' );
		delete_option( 'blocklist_keys' );
	}

	if ( $wp_current_db_version < 48748 ) {
		update_option( 'finished_updating_comment_type', 0 );
		wp_schedule_single_event( time() + ( 1 * MINUTE_IN_SECONDS ), 'wp_update_comment_type_batch' );
	}
}

/**
+19 −4
Original line number Diff line number Diff line
@@ -3839,11 +3839,11 @@ function _wp_batch_update_comment_type() {
	 */
	$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.
	$wpdb->query(
	// Get the IDs of the comments to update.
	$comment_ids = $wpdb->get_col(
		$wpdb->prepare(
			"UPDATE {$wpdb->comments}
			SET comment_type = 'comment'
			"SELECT comment_ID
			FROM {$wpdb->comments}
			WHERE comment_type = ''
			ORDER BY comment_ID DESC
			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 );
}

+2 −2
Original line number Diff line number Diff line
@@ -13,14 +13,14 @@
 *
 * @global string $wp_version
 */
$wp_version = '5.5-RC2-48747';
$wp_version = '5.5-RC2-48752';

/**
 * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
 *
 * @global int $wp_db_version
 */
$wp_db_version = 48575;
$wp_db_version = 48748;

/**
 * Holds the TinyMCE version.