Changeset 5368
- Timestamp:
- 06/05/2014 09:33:50 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/includes/admin/tools.php
r5314 r5368 284 284 function bbp_admin_repair_list() { 285 285 $repair_list = array( 286 0 => array( 'bbp-sync-topic-meta', __( 'Recalculate the parent topic for each post','bbpress' ), 'bbp_admin_repair_topic_meta' ),287 5 => array( 'bbp-sync-forum-meta', __( 'Recalculate the parent forum for each post','bbpress' ), 'bbp_admin_repair_forum_meta' ),286 0 => array( 'bbp-sync-topic-meta', __( 'Recalculate parent topic for each reply', 'bbpress' ), 'bbp_admin_repair_topic_meta' ), 287 5 => array( 'bbp-sync-forum-meta', __( 'Recalculate parent forum for each reply', 'bbpress' ), 'bbp_admin_repair_forum_meta' ), 288 288 10 => array( 'bbp-sync-forum-visibility', __( 'Recalculate private and hidden forums', 'bbpress' ), 'bbp_admin_repair_forum_visibility' ), 289 289 15 => array( 'bbp-sync-all-topics-forums', __( 'Recalculate last activity in each topic and forum', 'bbpress' ), 'bbp_admin_repair_freshness' ), 290 20 => array( 'bbp-sync-all-topics-sticky', __( 'Recalculate the sticky relationship of each topic', 'bbpress' ), 'bbp_admin_repair_sticky' ), 291 25 => array( 'bbp-group-forums', __( 'Repair BuddyPress Group Forum relationships', 'bbpress' ), 'bbp_admin_repair_group_forum_relationship' ), 292 30 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_admin_repair_forum_topic_count' ), 293 35 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_admin_repair_forum_reply_count' ), 294 40 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_reply_count' ), 295 45 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_admin_repair_topic_voice_count' ), 296 50 => array( 'bbp-topic-hidden-replies', __( 'Count spammed & trashed replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_hidden_reply_count' ), 297 55 => array( 'bbp-user-topics', __( 'Count topics for each user', 'bbpress' ), 'bbp_admin_repair_user_topic_count' ), 298 60 => array( 'bbp-user-replies', __( 'Count replies for each user', 'bbpress' ), 'bbp_admin_repair_user_reply_count' ), 299 65 => array( 'bbp-user-favorites', __( 'Remove trashed topics from user favorites', 'bbpress' ), 'bbp_admin_repair_user_favorites' ), 300 70 => array( 'bbp-user-topic-subscriptions', __( 'Remove trashed topics from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_topic_subscriptions' ), 301 75 => array( 'bbp-user-forum-subscriptions', __( 'Remove trashed forums from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_forum_subscriptions' ), 302 80 => array( 'bbp-user-role-map', __( 'Remap existing users to default forum roles', 'bbpress' ), 'bbp_admin_repair_user_roles' ) 290 20 => array( 'bbp-sync-all-topics-sticky', __( 'Recalculate sticky relationship of each topic', 'bbpress' ), 'bbp_admin_repair_sticky' ), 291 25 => array( 'bbp-sync-all-reply-positions', __( 'Recalculate reply position hierarchy', 'bbpress' ), 'bbp_admin_repair_reply_menu_order' ), 292 30 => array( 'bbp-group-forums', __( 'Repair BuddyPress Group Forum relationships', 'bbpress' ), 'bbp_admin_repair_group_forum_relationship' ), 293 35 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_admin_repair_forum_topic_count' ), 294 40 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_admin_repair_forum_reply_count' ), 295 45 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_reply_count' ), 296 50 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_admin_repair_topic_voice_count' ), 297 55 => array( 'bbp-topic-hidden-replies', __( 'Count spammed & trashed replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_hidden_reply_count' ), 298 60 => array( 'bbp-user-topics', __( 'Count topics for each user', 'bbpress' ), 'bbp_admin_repair_user_topic_count' ), 299 65 => array( 'bbp-user-replies', __( 'Count replies for each user', 'bbpress' ), 'bbp_admin_repair_user_reply_count' ), 300 70 => array( 'bbp-user-favorites', __( 'Remove trashed topics from user favorites', 'bbpress' ), 'bbp_admin_repair_user_favorites' ), 301 75 => array( 'bbp-user-topic-subscriptions', __( 'Remove trashed topics from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_topic_subscriptions' ), 302 80 => array( 'bbp-user-forum-subscriptions', __( 'Remove trashed forums from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_forum_subscriptions' ), 303 85 => array( 'bbp-user-role-map', __( 'Remap existing users to default forum roles', 'bbpress' ), 'bbp_admin_repair_user_roles' ) 303 304 ); 304 305 ksort( $repair_list ); … … 326 327 $result = __( 'Failed!', 'bbpress' ); 327 328 328 $sql_delete = "DELETE FROM `{$wpdb->postmeta}` WHERE `meta_key` = '_bbp_reply_count';";329 if ( is_wp_error( $wpdb->query( $sql_delete ) ) )330 return array( 1, sprintf( $statement, $result ) );331 332 329 // Post types and status 333 330 $tpt = bbp_get_topic_post_type(); … … 336 333 $cps = bbp_get_closed_status_id(); 337 334 335 // Delete the meta key _bbp_reply_count for each topic 336 $sql_delete = "DELETE `postmeta` FROM `{$wpdb->postmeta}` AS `postmeta` 337 LEFT JOIN `{$wpdb->posts}` AS `posts` ON `posts`.`ID` = `postmeta`.`post_id` 338 WHERE `posts`.`post_type` = '{$tpt}' 339 AND `postmeta`.`meta_key` = '_bbp_reply_count'"; 340 341 if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) { 342 return array( 1, sprintf( $statement, $result ) ); 343 } 344 345 // Recalculate the meta key _bbp_reply_count for each topic 338 346 $sql = "INSERT INTO `{$wpdb->postmeta}` (`post_id`, `meta_key`, `meta_value`) ( 339 347 SELECT `topics`.`ID` AS `post_id`, '_bbp_reply_count' AS `meta_key`, COUNT(`replies`.`ID`) As `meta_value` … … 347 355 GROUP BY `topics`.`ID`);"; 348 356 349 if ( is_wp_error( $wpdb->query( $sql ) ) ) 357 if ( is_wp_error( $wpdb->query( $sql ) ) ) { 350 358 return array( 2, sprintf( $statement, $result ) ); 359 } 351 360 352 361 return array( 0, sprintf( $statement, __( 'Complete!', 'bbpress' ) ) ); … … 620 629 $result = __( 'Failed!', 'bbpress' ); 621 630 622 $sql_delete = "DELETE FROM `{$wpdb->postmeta}` WHERE `meta_key` IN ( '_bbp_reply_count', '_bbp_total_reply_count' );"; 623 if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) 624 return array( 1, sprintf( $statement, $result ) ); 625 631 // Post type 632 $fpt = bbp_get_forum_post_type(); 633 634 // Delete the meta keys _bbp_reply_count and _bbp_total_reply_count for each forum 635 $sql_delete = "DELETE `postmeta` FROM `{$wpdb->postmeta}` AS `postmeta` 636 LEFT JOIN `{$wpdb->posts}` AS `posts` ON `posts`.`ID` = `postmeta`.`post_id` 637 WHERE `posts`.`post_type` = '{$fpt}' 638 AND `postmeta`.`meta_key` = '_bbp_reply_count' 639 OR `postmeta`.`meta_key` = '_bbp_total_reply_count'"; 640 641 if ( is_wp_error( $wpdb->query( $sql_delete ) ) ) { 642 return array( 1, sprintf( $statement, $result ) ); 643 } 644 645 // Recalculate the metas key _bbp_reply_count and _bbp_total_reply_count for each forum 626 646 $forums = get_posts( array( 'post_type' => bbp_get_forum_post_type(), 'numberposts' => -1 ) ); 627 647 if ( !empty( $forums ) ) { … … 1283 1303 1284 1304 // Complete results 1305 return array( 0, sprintf( $statement, __( 'Complete!', 'bbpress' ) ) ); 1306 } 1307 1308 /** 1309 * Recalculate reply menu order 1310 * 1311 * @since bbPress (r5367) 1312 * 1313 * @uses wpdb::query() To run our recount sql queries 1314 * @uses is_wp_error() To check if the executed query returned {@link WP_Error} 1315 * @uses bbp_get_reply_post_type() To get the reply post type 1316 * @uses bbp_update_reply_position() To update the reply position 1317 * @return array An array of the status code and the message 1318 */ 1319 function bbp_admin_repair_reply_menu_order() { 1320 global $wpdb; 1321 1322 $statement = __( 'Recalculating reply menu order … %s', 'bbpress' ); 1323 $result = __( 'No reply hierachy to recalculate!', 'bbpress' ); 1324 1325 // Post type 1326 $rpt = bbp_get_reply_post_type(); 1327 1328 // Get an array of reply id's to update the menu oder for each reply 1329 $replies = $wpdb->get_results( "SELECT `a`.`ID` FROM `{$wpdb->posts}` AS `a` 1330 INNER JOIN ( 1331 SELECT `menu_order`, `post_parent` 1332 FROM `{$wpdb->posts}` 1333 GROUP BY `menu_order`, `post_parent` 1334 HAVING COUNT( * ) >1 1335 )`b` 1336 ON `a`.`menu_order` = `b`.`menu_order` 1337 AND `a`.`post_parent` = `b`.`post_parent` 1338 WHERE `post_type` = '{$rpt}';", OBJECT_K ); 1339 1340 // Bail if no replies returned 1341 if ( empty( $replies ) ) { 1342 return array( 1, sprintf( $statement, $result ) ); 1343 } 1344 1345 // Recalculate the menu order position for each reply 1346 foreach ( $replies as $reply ) { 1347 bbp_update_reply_position( $reply->ID ); 1348 } 1349 1350 // Cleanup 1351 unset( $replies, $reply ); 1352 1353 // Flush the cache; things are about to get ugly. 1354 wp_cache_flush(); 1355 1285 1356 return array( 0, sprintf( $statement, __( 'Complete!', 'bbpress' ) ) ); 1286 1357 }
Note: See TracChangeset
for help on using the changeset viewer.