Map dummy language codes in sites
[lhc/web/wiklou.git] / includes / site / FileBasedSiteLookup.php
index 9654440..424d8e6 100644 (file)
@@ -42,6 +42,11 @@ class FileBasedSiteLookup implements SiteLookup {
         */
        private $cacheFile;
 
+       /**
+        * @var string[]
+        */
+       private $languageCodeMapping = [];
+
        /**
         * @param string $cacheFile
         */
@@ -118,13 +123,18 @@ class FileBasedSiteLookup implements SiteLookup {
         * @return Site
         */
        private function newSiteFromArray( array $data ) {
+               $languageCode = $data['language'];
+               if ( isset( $this->languageCodeMapping[ $languageCode ] ) ) {
+                       $languageCode = $this->languageCodeMapping[ $languageCode ];
+               }
+
                $siteType = array_key_exists( 'type', $data ) ? $data['type'] : Site::TYPE_UNKNOWN;
                $site = Site::newForType( $siteType );
 
                $site->setGlobalId( $data['globalid'] );
                $site->setForward( $data['forward'] );
                $site->setGroup( $data['group'] );
-               $site->setLanguageCode( $data['language'] );
+               $site->setLanguageCode( $languageCode );
                $site->setSource( $data['source'] );
                $site->setExtraData( $data['data'] );
                $site->setExtraConfig( $data['config'] );
@@ -136,4 +146,13 @@ class FileBasedSiteLookup implements SiteLookup {
                return $site;
        }
 
+       /**
+        * Provide an array that maps language codes
+        *
+        * @param string[] $newMapping
+        */
+       public function setLanguageCodeMapping( array $newMapping ) {
+               $this->languageCodeMapping = $newMapping;
+       }
+
 }