jenkins-bot has submitted this change and it was merged.

Change subject: Algorithm for prioritizing projects
......................................................................


Algorithm for prioritizing projects

While displaying in main page we display
active projects first

Change-Id: I480cf26c76c61dc5ab426352db774bfd213f62c1
---
M MainPage/ProjectHandler.php
M MainPage/specials/SpecialTwnMainPage.php
2 files changed, 31 insertions(+), 0 deletions(-)

Approvals:
  Santhosh: Verified; Looks good to me, approved
  jenkins-bot: Verified



diff --git a/MainPage/ProjectHandler.php b/MainPage/ProjectHandler.php
index 5969596..b5c3163 100644
--- a/MainPage/ProjectHandler.php
+++ b/MainPage/ProjectHandler.php
@@ -26,6 +26,35 @@
                return $projects;
        }
 
+       /**
+        * Sort the projects by to be determined algorithm. Like most sorting
+        * functions in PHP this modifies passed list in place.
+        * @param MessageGroup[] $groups
+        * @param string $language Language code.
+        */
+       public static function sortByPriority( &$groups, $language ) {
+               foreach ( $groups as $index => $g ) {
+                       $supported = $g->getTranslatableLanguages();
+                       if ( is_array( $supported ) && !isset( 
$supported[$language] ) ) {
+                               unset( $groups[$index] );
+                       }
+               }
+
+               usort( $groups, function ( $a, $b ) use ( $language ) {
+                       $aStats = MessageGroupStats::forItem( $a->getId(), 
$language );
+                       $bStats = MessageGroupStats::forItem( $b->getId(), 
$language );
+
+                       $aVal = $aStats[MessageGroupStats::PROOFREAD];
+                       $bVal = $aStats[MessageGroupStats::PROOFREAD];
+
+                       if ( $aVal === $bVal ) {
+                               return 0;
+                       } else {
+                               return ($aVal > $bVal) ? -1 : 1;
+                       }
+               } );
+       }
+
        // @todo FIXME: This is duplicate code Translate - 
ApiQueryMessageGroup. We can avoid
        // duplication if we make getIcon of that API public static.
        public static function getIcon( MessageGroup $g, $size ) {
diff --git a/MainPage/specials/SpecialTwnMainPage.php 
b/MainPage/specials/SpecialTwnMainPage.php
index 34c8873..7074a8b 100644
--- a/MainPage/specials/SpecialTwnMainPage.php
+++ b/MainPage/specials/SpecialTwnMainPage.php
@@ -95,6 +95,8 @@
                $out .= Html::openElement( 'div', array( 'class' => 'row 
twn-mainpage-project-tiles' ) );
 
                $projects = ProjectHandler::getProjects();
+               ProjectHandler::sortByPriority( $projects, 
$this->getLanguage()->getCode() );
+
                foreach ( $projects as $group ) {
                        $urls = ProjectHandler::getIcon( $group, 100 );
                        if ( isset( $urls['vector'] ) ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/56132
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I480cf26c76c61dc5ab426352db774bfd213f62c1
Gerrit-PatchSet: 3
Gerrit-Project: translatewiki
Gerrit-Branch: master
Gerrit-Owner: Nikerabbit <[email protected]>
Gerrit-Reviewer: Santhosh <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to