https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112300

Revision: 112300
Author:   tstarling
Date:     2012-02-24 05:14:42 +0000 (Fri, 24 Feb 2012)
Log Message:
-----------
Fixes for r94907/r94908: change in fallback behaviour allowing infinite loops. 
Tested SecurePoll and LandingCheck, not DonationInterface.

Modified Paths:
--------------
    
trunk/extensions/DonationInterface/globalcollect_gateway/globalcollect.adapter.php
    trunk/extensions/LandingCheck/SpecialLandingCheck.php
    trunk/extensions/SecurePoll/includes/pages/Page.php

Modified: 
trunk/extensions/DonationInterface/globalcollect_gateway/globalcollect.adapter.php
===================================================================
--- 
trunk/extensions/DonationInterface/globalcollect_gateway/globalcollect.adapter.php
  2012-02-24 04:31:26 UTC (rev 112299)
+++ 
trunk/extensions/DonationInterface/globalcollect_gateway/globalcollect.adapter.php
  2012-02-24 05:14:42 UTC (rev 112300)
@@ -1694,12 +1694,14 @@
                
                switch ( $type ) {
                        case 'request':
-                               $count = 0;
-                               //Count's just there making sure we don't get 
stuck here. 
-                               while ( !in_array( $language, 
$this->getAvailableLanguages() ) && $count < 3 ){
-                                       // Get the fallback language
-                                       $language = Language::getFallbackFor( 
$language );
-                                       $count += 1;
+                               if ( !in_array( $language, 
$this->getAvailableLanguages() ) ) {
+                                       $fallbacks = Language::getFallbacksFor( 
$language );
+                                       foreach ( $fallbacks as $fallback ) {
+                                               if ( in_array( $fallback, 
$this->getAvailableLanguages() ) ) {
+                                                       $language = $fallback;
+                                                       break;
+                                               }
+                                       }
                                }
 
                                if ( !in_array( $language, 
$this->getAvailableLanguages() ) ){

Modified: trunk/extensions/LandingCheck/SpecialLandingCheck.php
===================================================================
--- trunk/extensions/LandingCheck/SpecialLandingCheck.php       2012-02-24 
04:31:26 UTC (rev 112299)
+++ trunk/extensions/LandingCheck/SpecialLandingCheck.php       2012-02-24 
05:14:42 UTC (rev 112300)
@@ -178,10 +178,9 @@
                                $landingPage . '/' . $language
                        );
                        // Add fallback languages
-                       $code = $language;
-                       while ( $code !== 'en' ) {
-                               $code = Language::getFallbackFor( $code );
-                               $targetTexts[] = $landingPage . '/' . $code;
+                       $fallbacks = Language::getFallbacksFor( $language );
+                       foreach ( $fallbacks as $fallback ) {
+                               $targetTexts[] = $landingPage . '/' . $fallback;
                        }
                }
                

Modified: trunk/extensions/SecurePoll/includes/pages/Page.php
===================================================================
--- trunk/extensions/SecurePoll/includes/pages/Page.php 2012-02-24 04:31:26 UTC 
(rev 112299)
+++ trunk/extensions/SecurePoll/includes/pages/Page.php 2012-02-24 05:14:42 UTC 
(rev 112300)
@@ -38,16 +38,14 @@
                }
                $wgLang = Language::factory( $userLang );
 
-               $languages = array( $userLang );
-               $fallback = $userLang;
-               while ( $fallback = Language::getFallbackFor( $fallback ) ) {
-                       $languages[] = $fallback;
+               $languages = array_merge(
+                       array( $userLang ),
+                       Language::getFallbacksFor( $userLang ) );
+
+               if ( !in_array( $election->getLanguage(), $languages ) ) {
+                       $languages[] = $election->getLanguage();
                }
-               if ( $fallback != $election->getLanguage() ) {
-                       $fallback = $election->getLanguage();
-                       $languages[] = $fallback;
-               }
-               if ( $fallback != 'en' ) {
+               if ( !in_array( 'en', $languages ) ) {
                        $languages[] = 'en';
                }
                $this->context->setLanguages( $languages );


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

Reply via email to