Making WordPress.org


Ignore:
Timestamp:
03/02/2016 02:54:02 PM (9 years ago)
Author:
ocean90
Message:

Translate: Enhance the contributors table on project pages of a locale.

See #1388.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-routes/routes/locale.php

    r2663 r2667  
    335335
    336336        // Get the names of the contributors.
    337         foreach ( $contributors as $contributor_id ) {
    338             if ( isset( $locale_contributors['editors'][ $contributor_id ] ) ) {
     337        foreach ( $contributors as $contributor ) {
     338            if ( isset( $locale_contributors['editors'][ $contributor->user_id ] ) ) {
    339339                continue;
    340340            }
    341341
    342             if ( isset( $locale_contributors['contributors'][ $contributor_id ] ) ) {
     342
     343            if ( isset( $locale_contributors['contributors'][ $contributor->user_id ] ) ) {
     344                // Update last updated and counts per status.
     345                $locale_contributors['contributors'][ $contributor->user_id ]->last_update = max(
     346                    $locale_contributors['contributors'][ $contributor->user_id ]->last_update,
     347                    $contributor->last_update
     348                );
     349
     350                $locale_contributors['contributors'][ $contributor->user_id ]->total_count   += $contributor->total_count;
     351                $locale_contributors['contributors'][ $contributor->user_id ]->current_count += $contributor->current_count;
     352                $locale_contributors['contributors'][ $contributor->user_id ]->waiting_count += $contributor->waiting_count;
     353                $locale_contributors['contributors'][ $contributor->user_id ]->fuzzy_count   += $contributor->fuzzy_count;
    343354                continue;
    344355            }
    345356
    346             $user = get_user_by( 'id', $contributor_id );
     357            $user = get_user_by( 'id', $contributor->user_id );
    347358            if ( ! $user ) {
    348359                continue;
    349360            }
    350361
    351             $locale_contributors['contributors'][ $contributor_id ] = (object) array(
    352                 'nicename'     => $user->user_nicename,
    353                 'display_name' => $this->_encode( $user->display_name ),
    354                 'email'        => $user->user_email,
     362            $locale_contributors['contributors'][ $contributor->user_id ] = (object) array(
     363                'nicename'      => $user->user_nicename,
     364                'display_name'  => $this->_encode( $user->display_name ),
     365                'email'         => $user->user_email,
     366                'last_update'   => $contributor->last_update,
     367                'total_count'   => $contributor->total_count,
     368                'current_count' => $contributor->current_count,
     369                'waiting_count' => $contributor->waiting_count,
     370                'fuzzy_count'   => $contributor->fuzzy_count,
    355371            );
    356372        }
    357373        unset( $contributors );
     374
     375        uasort( $locale_contributors['contributors'], array( $this, '_sort_contributors_by_total_count_callback' ) );
    358376
    359377        return $locale_contributors;
     
    369387        global $wpdb;
    370388
    371         $user_ids = $wpdb->get_col( $wpdb->prepare( "
    372             SELECT DISTINCT( `user_id` )
     389        $contributors = $wpdb->get_results( $wpdb->prepare( "
     390            SELECT
     391                `user_id`,
     392                MAX( `date_added` ) AS `last_update`,
     393                COUNT( * ) as `total_count`,
     394                COUNT( CASE WHEN `status` = 'current' THEN `status` END ) AS `current_count`,
     395                COUNT( CASE WHEN `status` = 'waiting' THEN `status` END ) AS `waiting_count`,
     396                COUNT( CASE WHEN `status` = 'fuzzy' THEN `status` END ) AS `fuzzy_count`
    373397            FROM `{$wpdb->gp_translations}`
    374398            WHERE
    375399                `translation_set_id` = %d
    376400                AND `user_id` IS NOT NULL AND `user_id` != 0
    377                 AND `status` <> 'rejected'
     401                AND `status` IN( 'current', 'waiting', 'fuzzy' )
    378402                AND `date_modified` > %s
     403            GROUP BY `user_id`
    379404        ", $translation_set->id, date( 'Y-m-d', time() - YEAR_IN_SECONDS ) ) );
    380405
    381         return $user_ids;
     406        return $contributors;
    382407    }
    383408
     
    731756    }
    732757
     758    private function _sort_contributors_by_total_count_callback( $a, $b ) {
     759        return $a->total_count < $b->total_count;
     760    }
     761
    733762    private function _sort_reverse_name_callback( $a, $b ) {
    734763        // The Waiting project should always be first.
Note: See TracChangeset for help on using the changeset viewer.