Changeset 4695 for trunk/includes/admin/tools.php
- Timestamp:
- 01/22/2013 04:10:01 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/includes/admin/tools.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/includes/admin/tools.php
r4690 r4695 162 162 10 => array( 'bbp-sync-forum-visibility', __( 'Recalculate private and hidden forums', 'bbpress' ), 'bbp_admin_repair_forum_visibility' ), 163 163 15 => array( 'bbp-sync-all-topics-forums', __( 'Recalculate last activity in each topic and forum', 'bbpress' ), 'bbp_admin_repair_freshness' ), 164 20 => array( 'bbp-group-forums', __( 'Repair BuddyPress Group Forum relationships', 'bbpress' ), 'bbp_admin_repair_group_forum_relationship' ), 165 25 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_admin_repair_forum_topic_count' ), 166 30 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_admin_repair_forum_reply_count' ), 167 35 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_reply_count' ), 168 40 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_admin_repair_topic_voice_count' ), 169 45 => array( 'bbp-topic-hidden-replies', __( 'Count spammed & trashed replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_hidden_reply_count' ), 170 50 => array( 'bbp-user-topics', __( 'Count topics for each user', 'bbpress' ), 'bbp_admin_repair_user_topic_count' ), 171 55 => array( 'bbp-user-replies', __( 'Count replies for each user', 'bbpress' ), 'bbp_admin_repair_user_reply_count' ), 172 60 => array( 'bbp-user-favorites', __( 'Remove trashed topics from user favorites', 'bbpress' ), 'bbp_admin_repair_user_favorites' ), 173 65 => array( 'bbp-user-subscriptions', __( 'Remove trashed topics from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_subscriptions' ), 174 70 => array( 'bbp-user-role-map', __( 'Remap existing users to default forum roles', 'bbpress' ), 'bbp_admin_repair_user_roles' ) 164 20 => array( 'bbp-sync-all-topics-sticky', __( 'Recalculate the sticky replationship of each topic', 'bbpress' ), 'bbp_admin_repair_sticky' ), 165 25 => array( 'bbp-group-forums', __( 'Repair BuddyPress Group Forum relationships', 'bbpress' ), 'bbp_admin_repair_group_forum_relationship' ), 166 30 => array( 'bbp-forum-topics', __( 'Count topics in each forum', 'bbpress' ), 'bbp_admin_repair_forum_topic_count' ), 167 35 => array( 'bbp-forum-replies', __( 'Count replies in each forum', 'bbpress' ), 'bbp_admin_repair_forum_reply_count' ), 168 40 => array( 'bbp-topic-replies', __( 'Count replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_reply_count' ), 169 45 => array( 'bbp-topic-voices', __( 'Count voices in each topic', 'bbpress' ), 'bbp_admin_repair_topic_voice_count' ), 170 50 => array( 'bbp-topic-hidden-replies', __( 'Count spammed & trashed replies in each topic', 'bbpress' ), 'bbp_admin_repair_topic_hidden_reply_count' ), 171 55 => array( 'bbp-user-topics', __( 'Count topics for each user', 'bbpress' ), 'bbp_admin_repair_user_topic_count' ), 172 60 => array( 'bbp-user-replies', __( 'Count replies for each user', 'bbpress' ), 'bbp_admin_repair_user_reply_count' ), 173 65 => array( 'bbp-user-favorites', __( 'Remove trashed topics from user favorites', 'bbpress' ), 'bbp_admin_repair_user_favorites' ), 174 70 => array( 'bbp-user-subscriptions', __( 'Remove trashed topics from user subscriptions', 'bbpress' ), 'bbp_admin_repair_user_subscriptions' ), 175 75 => array( 'bbp-user-role-map', __( 'Remap existing users to default forum roles', 'bbpress' ), 'bbp_admin_repair_user_roles' ) 175 176 ); 176 177 ksort( $repair_list ); … … 705 706 // If no role map exists, give the default forum role (bbp-participant) 706 707 $new_role = isset( $role_map[$role] ) ? $role_map[$role] : $default_role; 707 708 708 709 // Get users of this site, limited to 1000 709 710 while ( $users = get_users( array( … … 830 831 bbp_update_forum( array( 'forum_id' => $forum_id ) ); 831 832 } 833 } 834 835 // Complete results 836 return array( 0, sprintf( $statement, __( 'Complete!', 'bbpress' ) ) ); 837 } 838 839 /** 840 * Repairs the relationship of sticky topics to the actual parent forum 841 * 842 * @since bbPress (r4695) 843 * 844 * @uses wpdb::get_col() To run our recount sql queries 845 * @uses is_wp_error() To check if the executed query returned {@link WP_Error} 846 * @return array An array of the status code and the message 847 */ 848 function bbp_admin_repair_sticky() { 849 global $wpdb; 850 851 $statement = __( 'Repairing the sticky topic to the parent forum relationships… %s', 'bbpress' ); 852 $result = __( 'Failed!', 'bbpress' ); 853 $forums = $wpdb->get_col( "SELECT ID FROM `{$wpdb->posts}` WHERE `post_type` = 'forum';" ); 854 855 // Bail if no forums found 856 if ( empty( $forums ) || is_wp_error( $forums ) ) 857 return array( 1, sprintf( $statement, $result ) ); 858 859 // Loop through forums and get their sticky topics 860 foreach ( $forums as $forum ) { 861 $forum_stickies[$forum] = get_post_meta( $forum, '_bbp_sticky_topics', true ); 862 } 863 864 // Cleanup 865 unset( $forums, $forum ); 866 867 // Loop through each forum with sticky topics 868 foreach ( $forum_stickies as $forum_id => $stickies ) { 869 870 // Skip if no stickies 871 if ( empty( $stickies ) ) { 872 continue; 873 } 874 875 // Loop through each sticky topic 876 foreach ( $stickies as $id => $topic_id ) { 877 878 // If the topic is not a super sticky, and the forum ID does not 879 // match the topic's forum ID, unset the forum's sticky meta. 880 if ( ! bbp_is_topic_super_sticky( $topic_id ) && $forum_id != bbp_get_topic_forum_id( $topic_id ) ) { 881 unset( $forum_stickies[$forum_id][$id] ); 882 } 883 } 884 885 // Get sticky topic ID's, or use empty string 886 $stickers = empty( $forum_stickies[$forum_id] ) ? '' : array_values( $forum_stickies[$forum_id] ); 887 888 // Update the forum's sticky topics meta 889 update_post_meta( $forum_id, '_bbp_sticky_topics', $stickers ); 832 890 } 833 891
Note: See TracChangeset
for help on using the changeset viewer.