Check headers for default variant when initializing default user options.
[lhc/web/wiklou.git] / languages / LanguageConverter.php
index 8b7d6cb..82e6359 100644 (file)
@@ -47,28 +47,28 @@ class LanguageConverter {
                'zh',
        );
 
-       var $mMainLanguageCode;
-       var $mVariants, $mVariantFallbacks, $mVariantNames;
-       var $mTablesLoaded = false;
-       var $mTables;
+       public $mMainLanguageCode;
+       public $mVariants, $mVariantFallbacks, $mVariantNames;
+       public $mTablesLoaded = false;
+       public $mTables;
        // 'bidirectional' 'unidirectional' 'disable' for each variant
-       var $mManualLevel;
+       public $mManualLevel;
 
        /**
         * @var String: memcached key name
         */
-       var $mCacheKey;
-
-       var $mLangObj;
-       var $mFlags;
-       var $mDescCodeSep = ':', $mDescVarSep = ';';
-       var $mUcfirst = false;
-       var $mConvRuleTitle = false;
-       var $mURLVariant;
-       var $mUserVariant;
-       var $mHeaderVariant;
-       var $mMaxDepth = 10;
-       var $mVarSeparatorPattern;
+       public $mCacheKey;
+
+       public $mLangObj;
+       public $mFlags;
+       public $mDescCodeSep = ':', $mDescVarSep = ';';
+       public $mUcfirst = false;
+       public $mConvRuleTitle = false;
+       public $mURLVariant;
+       public $mUserVariant;
+       public $mHeaderVariant;
+       public $mMaxDepth = 10;
+       public $mVarSeparatorPattern;
 
        const CACHE_VERSION_KEY = 'VERSION 6';
 
@@ -184,7 +184,7 @@ class LanguageConverter {
 
        /**
         * Get default variant.
-        * This function would not be affected by user's settings or headers
+        * This function would not be affected by user's settings
         * @return String: the default variant code
         */
        public function getDefaultVariant() {
@@ -192,6 +192,10 @@ class LanguageConverter {
 
                $req = $this->getURLVariant();
 
+               if ( !$req ) {
+                       $req = $this->getHeaderVariant();
+               }
+
                if ( $wgDefaultLanguageVariant && !$req ) {
                        $req = $this->validateVariant( $wgDefaultLanguageVariant );
                }
@@ -925,7 +929,11 @@ class LanguageConverter {
                        if ( $title && $title->exists() ) {
                                $revision = Revision::newFromTitle( $title );
                                if ( $revision ) {
-                                       $txt = $revision->getRawText();
+                                       if ( $revision->getContentModel() == CONTENT_MODEL_WIKITEXT ) {
+                                               $txt = $revision->getContent( Revision::RAW )->getNativeData();
+                                       }
+
+                                       //@todo: in the future, use a specialized content model, perhaps based on json!
                                }
                        }
                }
@@ -1035,9 +1043,9 @@ class LanguageConverter {
         * MediaWiki:Conversiontable* is updated.
         * @private
         *
-        * @param $article Article object
+        * @param $page WikiPage object
         * @param $user Object: User object for the current user
-        * @param $text String: article text (?)
+        * @param $content Content: new page content
         * @param $summary String: edit summary of the edit
         * @param $isMinor Boolean: was the edit marked as minor?
         * @param $isWatch Boolean: did the user watch this page or not?
@@ -1046,9 +1054,9 @@ class LanguageConverter {
         * @param $revision Object: new Revision object or null
         * @return Boolean: true
         */
-       function OnArticleSaveComplete( $article, $user, $text, $summary, $isMinor,
+       function OnArticleContentSaveComplete( $page, $user, $content, $summary, $isMinor,
                        $isWatch, $section, $flags, $revision ) {
-               $titleobj = $article->getTitle();
+               $titleobj = $page->getTitle();
                if ( $titleobj->getNamespace() == NS_MEDIAWIKI ) {
                        $title = $titleobj->getDBkey();
                        $t = explode( '/', $title, 3 );
@@ -1113,17 +1121,17 @@ class LanguageConverter {
  * @author fdcn <fdcn64@gmail.com>, PhiLiP <philip.npc@gmail.com>
  */
 class ConverterRule {
-       var $mText; // original text in -{text}-
-       var $mConverter; // LanguageConverter object
-       var $mRuleDisplay = '';
-       var $mRuleTitle = false;
-       var $mRules = '';// string : the text of the rules
-       var $mRulesAction = 'none';
-       var $mFlags = array();
-       var $mVariantFlags = array();
-       var $mConvTable = array();
-       var $mBidtable = array();// array of the translation in each variant
-       var $mUnidtable = array();// array of the translation in each variant
+       public $mText; // original text in -{text}-
+       public $mConverter; // LanguageConverter object
+       public $mRuleDisplay = '';
+       public $mRuleTitle = false;
+       public $mRules = '';// string : the text of the rules
+       public $mRulesAction = 'none';
+       public $mFlags = array();
+       public $mVariantFlags = array();
+       public $mConvTable = array();
+       public $mBidtable = array();// array of the translation in each variant
+       public $mUnidtable = array();// array of the translation in each variant
 
        /**
         * Constructor