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' ) |
| 293 | 35 => array( 'bbp-sync-closed-topics', __( 'Repair closed topics', 'bbpress' ), 'bbp_admin_repair_closed_topics' ), |
| 294 | 40 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_admin_repair_forum_topic_count' ), |
| 295 | 45 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_admin_repair_forum_reply_count' ), |
| 296 | 50 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_reply_count' ), |
| 297 | 55 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_admin_repair_topic_voice_count' ), |
| 298 | 60 => array( 'bbp-topic-hidden-replies', __( 'Count spammed & trashed replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_hidden_reply_count' ), |
| 299 | 65 => array( 'bbp-user-topics', __( 'Count topics for each user', 'bbpress' ), 'bbp_admin_repair_user_topic_count' ), |
| 300 | 70 => array( 'bbp-user-replies', __( 'Count replies for each user', 'bbpress' ), 'bbp_admin_repair_user_reply_count' ), |
| 301 | 75 => array( 'bbp-user-favorites', __( 'Remove trashed topics from user favorites', 'bbpress' ), 'bbp_admin_repair_user_favorites' ), |
| 302 | 80 => array( 'bbp-user-topic-subscriptions', __( 'Remove trashed topics from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_topic_subscriptions' ), |
| 303 | 85 => array( 'bbp-user-forum-subscriptions', __( 'Remove trashed forums from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_forum_subscriptions' ), |
| 304 | 90 => array( 'bbp-user-role-map', __( 'Remap existing users to default forum roles', 'bbpress' ), 'bbp_admin_repair_user_roles' ) |
| 1219 | * Repair closed topics |
| 1220 | * |
| 1221 | * Closed topics that are missing the postmeta "_bbp_status" key value "publish" |
| 1222 | * result in unexpected behaviour, primarily this would have only occured if you |
| 1223 | * had imported forums from another forum package previous to bbPress v2.6, |
| 1224 | * https://bbpress.trac.wordpress.org/ticket/2577 |
| 1225 | * |
| 1226 | * @since bbPress (rXXXX) |
| 1227 | * |
| 1228 | * @uses wpdb::get_col() To run our recount sql queries |
| 1229 | * @uses is_wp_error() To check if the executed query returned {@link WP_Error} |
| 1230 | * @uses bbp_get_topic_post_type() To get the topic post type |
| 1231 | * @uses get_post_meta() To get the sticky topics |
| 1232 | * @uses update_post_meta To update the topics sticky post meta |
| 1233 | * @return array An array of the status code and the message |
| 1234 | */ |
| 1235 | function bbp_admin_repair_closed_topics() { |
| 1236 | global $wpdb; |
| 1237 | |
| 1238 | $statement = __( 'Repairing closed topics… %s', 'bbpress' ); |
| 1239 | $changed = 0; |
| 1240 | $result = __( 'Failed!', 'bbpress' ); |
| 1241 | $closed_topics = $wpdb->get_col( "SELECT ID FROM `{$wpdb->posts}` WHERE `post_type` = '" . bbp_get_topic_post_type() . "' AND `post_status` = 'closed';" ); |
| 1242 | |
| 1243 | // Bail if no closed topics found |
| 1244 | if ( empty( $closed_topics ) || is_wp_error( $closed_topics ) ) |
| 1245 | return array( 1, sprintf( $statement, $result ) ); |
| 1246 | |
| 1247 | // Loop through each closed topic |
| 1248 | foreach ( $closed_topics as $closed_topic ) { |
| 1249 | |
| 1250 | // Check if the closed topic already has a postmeta _bbp_status value |
| 1251 | $topic_status = get_post_meta( $closed_topic, '_bbp_status', true ); |
| 1252 | |
| 1253 | // If we don't have a postmeta _bbp_status value |
| 1254 | if( empty($topic_status) ) { |
| 1255 | update_post_meta($closed_topic, '_bbp_status', 'publish'); |
| 1256 | ++$changed; // Keep a count to display at the end |
| 1257 | } |
| 1258 | } |
| 1259 | |
| 1260 | // Cleanup |
| 1261 | unset( $closed_topics, $closed_topic, $topic_status ); |
| 1262 | |
| 1263 | // Complete results |
| 1264 | $result = sprintf( _n( 'Complete! 1 closed topic repaired.', 'Complete! %s closed topics repaired.', $changed, 'bbpress' ), $changed ); |
| 1265 | return array( 0, sprintf( $statement, $result ) ); |
| 1266 | } |
| 1267 | |
| 1268 | /** |