Ticket #2849: 2849.diff
File 2849.diff, 3.7 KB (added by , 9 years ago) |
---|
-
tests/phpunit/testcases/admin/tools.php
166 166 167 167 /** 168 168 * @covers ::bbp_admin_repair_topic_hidden_reply_count 169 * @todo Implement test_bbp_admin_repair_topic_hidden_reply_count().170 169 */ 171 170 public function test_bbp_admin_repair_topic_hidden_reply_count() { 172 // Remove the following lines when you implement this test. 173 $this->markTestIncomplete( 174 'This test has not been implemented yet.' 175 ); 171 172 $f = $this->factory->forum->create(); 173 174 $t = $this->factory->topic->create( array( 175 'post_parent' => $f, 176 'topic_meta' => array( 177 'forum_id' => $f, 178 ), 179 ) ); 180 181 $r = $this->factory->reply->create( array( 182 'post_parent' => $t, 183 'reply_meta' => array( 184 'forum_id' => $f, 185 'topic_id' => $t, 186 ), 187 ) ); 188 189 $count = bbp_get_topic_reply_count( $t, true ); 190 $this->assertSame( 1, $count ); 191 192 $r = $this->factory->reply->create_many( 3, array( 193 'post_parent' => $t, 194 'reply_meta' => array( 195 'forum_id' => $f, 196 'topic_id' => $t, 197 ), 198 ) ); 199 200 bbp_spam_reply( $r[0] ); 201 bbp_unapprove_reply( $r[2] ); 202 203 $count = bbp_get_topic_reply_count_hidden( $t, true ); 204 $this->assertSame( 2, $count ); 205 206 // Delete the topic _bbp_reply_count_hidden meta key. 207 $this->assertTrue( delete_post_meta_by_key( '_bbp_reply_count_hidden' ) ); 208 209 $count = bbp_get_topic_reply_count_hidden( $t, true ); 210 $this->assertSame( 0, $count ); 211 212 // Repair the topic hidden reply count meta. 213 bbp_admin_repair_topic_hidden_reply_count(); 214 215 bbp_clean_post_cache( $t ); 216 217 $count = bbp_get_topic_reply_count_hidden( $t, true ); 218 $this->assertSame( 2, $count ); 176 219 } 177 220 178 221 /** -
src/includes/admin/tools.php
1062 1062 * @uses bbp_get_reply_post_type() To get the reply post type 1063 1063 * @uses bbp_get_trash_status_id() To get the trash status id 1064 1064 * @uses bbp_get_spam_status_id() To get the spam status id 1065 * @uses bbp_get_pending_status_id() To get the pending status id 1065 1066 * @return array An array of the status code and the message 1066 1067 */ 1067 1068 function bbp_admin_repair_topic_hidden_reply_count() { … … 1068 1069 1069 1070 // Define variables 1070 1071 $bbp_db = bbp_db(); 1071 $statement = __( 'Counting the number of spammedand trashed replies in each topic… %s', 'bbpress' );1072 $statement = __( 'Counting the number of pending, spammed, and trashed replies in each topic… %s', 'bbpress' ); 1072 1073 $result = __( 'Failed!', 'bbpress' ); 1073 1074 1074 1075 $sql_delete = "DELETE FROM `{$bbp_db->postmeta}` WHERE `meta_key` = '_bbp_reply_count_hidden';"; … … 1080 1081 $rpt = bbp_get_reply_post_type(); 1081 1082 $tps = bbp_get_trash_status_id(); 1082 1083 $sps = bbp_get_spam_status_id(); 1084 $pps = bbp_get_pending_status_id(); 1083 1085 1084 $sql = "INSERT INTO `{$bbp_db->postmeta}` (`post_id`, `meta_key`, `meta_value`) (SELECT `post_parent`, '_bbp_reply_count_hidden', COUNT(`post_status`) as `meta_value` FROM `{$bbp_db->posts}` WHERE `post_type` = '{$rpt}' AND `post_status` IN ( '{$tps}', '{$sps}' ) GROUP BY `post_parent`);";1086 $sql = "INSERT INTO `{$bbp_db->postmeta}` (`post_id`, `meta_key`, `meta_value`) (SELECT `post_parent`, '_bbp_reply_count_hidden', COUNT(`post_status`) as `meta_value` FROM `{$bbp_db->posts}` WHERE `post_type` = '{$rpt}' AND `post_status` IN ( '{$tps}', '{$sps}', '{$pps}' ) GROUP BY `post_parent`);"; 1085 1087 if ( is_wp_error( $bbp_db->query( $sql ) ) ) { 1086 1088 return array( 2, sprintf( $statement, $result ) ); 1087 1089 }