Changeset 13287
- Timestamp:
- 03/06/2024 06:19:50 AM (23 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-plugin-support-resolved.php
r9284 r13287 32 32 $wpdb->set_blog_id( WPORG_SUPPORT_FORUMS_BLOGID ); 33 33 // phpcs:ignore WordPress.VIP.DirectDatabaseQuery 34 $results = $wpdb->get_results( $wpdb->prepare( "SELECT t.slug as plugin_slug, meta_value as resolved, count(*) as topic_count 35 FROM {$wpdb->posts} p 36 JOIN {$wpdb->postmeta} pm ON (p.ID = pm.post_id AND pm.meta_key = 'topic_resolved') 37 JOIN {$wpdb->term_relationships} tr ON (p.ID = tr.object_id) 38 JOIN {$wpdb->term_taxonomy} tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'topic-plugin') 39 JOIN {$wpdb->terms} t ON (tt.term_id = t.term_id) 40 WHERE 41 post_type = 'topic' AND 42 post_status = 'publish' AND 43 post_parent = (SELECT ID FROM {$wpdb->posts} WHERE post_type = 'forum' AND post_name = 'plugins-and-hacks') AND 44 post_date >= %s 45 46 GROUP BY t.slug, meta_value", $time_limit ) ); 34 $results = $wpdb->get_results( $wpdb->prepare( 35 "SELECT t.slug as plugin_slug, meta_value as resolved, count(*) as topic_count, max(p.post_date) AS most_recent_thread 36 FROM {$wpdb->posts} p 37 JOIN {$wpdb->postmeta} pm ON (p.ID = pm.post_id AND pm.meta_key = 'topic_resolved') 38 JOIN {$wpdb->term_relationships} tr ON (p.ID = tr.object_id) 39 JOIN {$wpdb->term_taxonomy} tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'topic-plugin') 40 JOIN {$wpdb->terms} t ON (tt.term_id = t.term_id) 41 WHERE 42 post_type = 'topic' AND 43 post_status = 'publish' AND 44 post_parent = (SELECT ID FROM {$wpdb->posts} WHERE post_type = 'forum' AND post_name = 'plugins-and-hacks') AND 45 post_date >= %s 46 47 GROUP BY t.slug, meta_value", 48 $time_limit 49 ) ); 47 50 $wpdb->set_blog_id( WPORG_PLUGIN_DIRECTORY_BLOGID ); 48 51 49 52 foreach ( $results as $result ) { 50 if ( ! isset( $plugin_stats[ $result->plugin_slug ] ) ) { 51 $plugin_stats[ $result->plugin_slug ] = [ 52 'yes' => 0, 53 'no' => 0, 54 'mu' => 0, 55 ]; 56 } 53 $plugin_stats[ $result->plugin_slug ] ??= [ 54 'yes' => 0, 55 'no' => 0, 56 'mu' => 0, 57 'most_recent_thread' => 0, 58 ]; 57 59 58 $plugin_stats[ $result->plugin_slug ][ $result->resolved ] = (int) $result->topic_count; 60 $plugin_stats[ $result->plugin_slug ][ $result->resolved ] = (int) $result->topic_count; 61 $plugin_stats[ $result->plugin_slug ]['most_recent_thread'] = max( 62 strtotime( $result->most_recent_thread ), 63 $plugin_stats[ $result->plugin_slug ]['most_recent_thread'] 64 ); 59 65 } 60 66 … … 68 74 update_post_meta( $plugin->ID, 'support_threads', wp_slash( $stats['yes'] + $stats['no'] ) ); 69 75 update_post_meta( $plugin->ID, 'support_threads_resolved', wp_slash( $stats['yes'] ) ); 76 update_post_meta( $plugin->ID, '_last_support_thread', wp_slash( $stats['most_recent_thread'] ) ); 70 77 } 71 78 72 79 Manager::clear_memory_heavy_variables(); 73 80 } 81 82 // Find any plugin whose last support thread was before the above time cutoff and mark it as having no threads. 83 $plugins = get_posts( [ 84 'post_type' => 'plugin', 85 'post_status' => 'publish', 86 'posts_per_page' => -1, 87 'fields' => 'ids', 88 'meta_query' => [ 89 [ 90 [ 91 'key' => '_last_support_thread', 92 'compare' => '<', 93 'value' => strtotime( $time_limit ), 94 ], 95 'relation' => 'OR', 96 [ 97 'key' => '_last_support_thread', 98 'compare' => 'NOT EXISTS', 99 ], 100 ], 101 [ 102 'key' => 'support_threads', 103 'compare' => '>', 104 'value' => 0, 105 ], 106 ], 107 ] ); 108 109 foreach ( $plugins as $plugin_id ) { 110 update_post_meta( $plugin_id, 'support_threads', 0 ); 111 update_post_meta( $plugin_id, 'support_threads_resolved', 0 ); 112 } 74 113 } 75 114
Note: See TracChangeset
for help on using the changeset viewer.