From 7018deaf87cf4df0791a8cbd34144bdf2e1500b5 Mon Sep 17 00:00:00 2001 From: Rachel Baker Date: Tue, 27 Dec 2016 17:21:04 +0000 Subject: [PATCH] Comments: Fix placement of the `wp_update_comment_data` filter to safeguard filtered data from triggering a database error. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduced in [38674], the `wp_update_comment_data` filter took place after the `$data` was sliced and prepared for the database update statement. The location of the filter assumed the result of anyone applying it would not change the data type or make structural modifications or additions to the $data array. 😅 This moves the `wp_update_comment_data` filter to take place before the `$data` is sliced and prepared for the database update statement. Props dshanske for initial patch. Fixes #39380. git-svn-id: https://develop.svn.wordpress.org/trunk@39640 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/comment.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/comment.php b/src/wp-includes/comment.php index 8bb2e9eb3c..ae759c04f5 100644 --- a/src/wp-includes/comment.php +++ b/src/wp-includes/comment.php @@ -2186,8 +2186,6 @@ function wp_update_comment($commentarr) { $comment_ID = $data['comment_ID']; $comment_post_ID = $data['comment_post_ID']; - $keys = array( 'comment_post_ID', 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_type', 'comment_parent', 'user_id', 'comment_agent', 'comment_author_IP' ); - $data = wp_array_slice_assoc( $data, $keys ); /** * Filters the comment data immediately before it is updated in the database. @@ -2202,6 +2200,9 @@ function wp_update_comment($commentarr) { */ $data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr ); + $keys = array( 'comment_post_ID', 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_type', 'comment_parent', 'user_id', 'comment_agent', 'comment_author_IP' ); + $data = wp_array_slice_assoc( $data, $keys ); + $rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) ); clean_comment_cache( $comment_ID );