Map dummy language codes in sites
[lhc/web/wiklou.git] / includes / site / DBSiteStore.php
index 974789f..c1c10c2 100644 (file)
@@ -40,6 +40,11 @@ class DBSiteStore implements SiteStore {
         */
        private $dbLoadBalancer;
 
+       /**
+        * @var string[]
+        */
+       private $languageCodeMapping = [];
+
        /**
         * @since 1.27
         *
@@ -96,15 +101,17 @@ class DBSiteStore implements SiteStore {
                );
 
                foreach ( $res as $row ) {
+                       $languageCode = $row->site_language === '' ? null : $row->site_language;
+                       if ( isset( $this->languageCodeMapping[ $languageCode ] ) ) {
+                               $languageCode = $this->languageCodeMapping[ $languageCode ];
+                       }
+
                        $site = Site::newForType( $row->site_type );
                        $site->setGlobalId( $row->site_global_key );
                        $site->setInternalId( (int)$row->site_id );
                        $site->setForward( (bool)$row->site_forward );
                        $site->setGroup( $row->site_group );
-                       $site->setLanguageCode( $row->site_language === ''
-                               ? null
-                               : $row->site_language
-                       );
+                       $site->setLanguageCode( $languageCode );
                        $site->setSource( $row->site_source );
                        $site->setExtraData( unserialize( $row->site_data ) );
                        $site->setExtraConfig( unserialize( $row->site_config ) );
@@ -287,4 +294,13 @@ class DBSiteStore implements SiteStore {
                return $ok;
        }
 
+       /**
+        * Provide an array that maps language codes
+        *
+        * @param string[] $newMapping
+        */
+       public function setLanguageCodeMapping( array $newMapping ) {
+               $this->languageCodeMapping = $newMapping;
+       }
+
 }