Changeset 9720 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-routes/inc/routes/class-stats.php
- Timestamp:
- 04/14/2020 04:55:52 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-routes/inc/routes/class-stats.php
r9713 r9720 13 13 */ 14 14 class Stats extends GP_Route { 15 16 /**17 * Cache some expensive queries to be run on a Cron task.18 */19 public function cache_waiting_strings() {20 global $wpdb;21 22 // Run the query on a primary DB server to avoid timing out.23 if ( method_exists( $qpdb, 'send_reads_to_masters' ) ) {24 $wpdb->send_reads_to_masters();25 }26 27 $cached_projects = [28 GP::$project->by_path( 'wp-plugins' ),29 GP::$project->by_path( 'wp-themes' ),30 ];31 $sql = "SELECT32 locale, locale_slug,33 SUM( stats.waiting ) + SUM( stats.fuzzy ) as waiting_strings34 FROM {$wpdb->project_translation_status} stats35 LEFT JOIN {$wpdb->gp_projects} p ON stats.project_id = p.id36 WHERE37 p.parent_project_id = %d38 AND p.active = 139 GROUP BY locale, locale_slug";40 41 foreach ( $cached_projects as $project ) {42 $rows = $wpdb->get_results( $wpdb->prepare( $sql, $project->id ) );43 if ( ! $rows ) {44 continue;45 }46 47 $cached_data = [];48 foreach ( $rows as $set ) {49 $locale_key = $set->locale;50 if ( 'default' != $set->locale_slug ) {51 $locale_key = $set->locale . '/' . $set->locale_slug;52 }53 54 $cached_data[ $locale_key ] = (int) $set->waiting_strings;55 }56 $cached_data[ 'last_updated' ] = time();57 58 update_option( __CLASS__ . '_cached_waiting_' . $project->slug, $cached_data, false );59 }60 61 }62 15 63 16 public function get_stats_overview() { … … 100 53 path, locale, locale_slug, 101 54 (100 * stats.current/stats.all) as percent_complete, 102 stats.waiting+stats.fuzzy as waiting_strings 55 stats.waiting+stats.fuzzy as waiting_strings, 56 stats.date_modified as last_modified 103 57 FROM {$wpdb->project_translation_status} stats 104 58 LEFT JOIN {$wpdb->gp_projects} p ON stats.project_id = p.id … … 125 79 $translation_locale_statuses[ $locale_key ][ $set->path ] = $percent_complete; 126 80 81 // Don't include these in the 'waiting' section, override the value to be waiting strings w/ Date Modified. 82 if ( 'wp-plugins' === $set->path || 'wp-themes' === $set->path ) { 83 $translation_locale_statuses[ $locale_key ][ $set->path ] = $set->waiting_strings; 84 $projects[ $set->path ]->cache_last_updated = $set->last_modified; 85 continue; 86 } 87 127 88 if ( ! isset( $translation_locale_statuses[ $locale_key ]['waiting'] ) ) { 128 89 $translation_locale_statuses[ $locale_key ]['waiting'] = 0; … … 131 92 } 132 93 unset( $rows, $locale_key, $set ); 133 134 // Append the Plugins/Themes waiting strings135 foreach ( [ 'wp-plugins', 'wp-themes' ] as $project_slug ) {136 $cached_data = get_option( __CLASS__ . '_cached_waiting_' . $project_slug, [] );137 $projects[ $project_slug ]->cache_last_updated = gmdate( 'Y-m-d H:i:s \U\T\C', $cached_data['last_updated'] );138 foreach ( $cached_data as $locale => $waiting ) {139 $translation_locale_statuses[ $locale ][ $project_slug ] = $waiting;140 }141 }142 94 143 95 // Calculate a list of [Locale] = % subtotals 144 96 $translation_locale_complete = array(); 145 97 foreach ( $translation_locale_statuses as $locale => $sets ) { 146 unset( $sets['waiting'] );98 unset( $sets['waiting'], $sets['wp-plugins'], $sets['wp-themes'] ); 147 99 $sets_count = count( $sets ); 148 100 if ( $sets_count ) {
Note: See TracChangeset
for help on using the changeset viewer.