Capitalization fix in memcached setting
[lhc/web/wiklou.git] / includes / SpecialPreferences.php
index c06816e..b93c7fc 100644 (file)
@@ -5,6 +5,9 @@
  * @subpackage SpecialPage
  */
 
+/* to get a list of languages in setting user's language preference */
+require_once('languages/Names.php');
+
 /**
  * Entry point that create the "Preferences" object
  */
@@ -24,16 +27,16 @@ function wfSpecialPreferences() {
 class PreferencesForm {
        var $mQuickbar, $mOldpass, $mNewpass, $mRetypePass, $mStubs;
        var $mRows, $mCols, $mSkin, $mMath, $mDate, $mUserEmail, $mEmailFlag, $mNick;
-       var $mUserLanguage;
+       var $mUserLanguage, $mUserVariant;
        var $mSearch, $mRecent, $mHourDiff, $mSearchLines, $mSearchChars, $mAction;
-       var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName;
+       var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize;
 
        /**
         * Constructor
         * Load some values
         */
        function PreferencesForm( &$request ) { 
-               global $wgLang, $wgAllowRealName;
+               global $wgLang, $wgContLang, $wgAllowRealName;
                
                $this->mQuickbar = $request->getVal( 'wpQuickbar' );
                $this->mOldpass = $request->getVal( 'wpOldpass' );
@@ -50,11 +53,14 @@ class PreferencesForm {
                $this->mEmailFlag = $request->getCheck( 'wpEmailFlag' ) ? 1 : 0;
                $this->mNick = $request->getVal( 'wpNick' );
                $this->mUserLanguage = $request->getVal( 'wpUserLanguage' );
+        $this->mUserVariant = $request->getVal( 'wpUserVariant' );
                $this->mSearch = $request->getVal( 'wpSearch' );
                $this->mRecent = $request->getVal( 'wpRecent' );
                $this->mHourDiff = $request->getVal( 'wpHourDiff' );
                $this->mSearchLines = $request->getVal( 'wpSearchLines' );
                $this->mSearchChars = $request->getVal( 'wpSearchChars' );
+               $this->mImageSize = $request->getVal( 'wpImageSize' );
+
                $this->mAction = $request->getVal( 'action' );
                $this->mReset = $request->getCheck( 'wpReset' );
                $this->mPosted = $request->wasPosted();
@@ -75,7 +81,7 @@ class PreferencesForm {
                # Note: namespaces don't necessarily have consecutive keys
                $this->mSearchNs = array();
                if ( $this->mPosted ) {
-                       $namespaces = $wgLang->getNamespaces();
+                       $namespaces = $wgContLang->getNamespaces();
                        foreach ( $namespaces as $i => $namespace ) {
                                if ( $i >= 0 ) {
                                        $this->mSearchNs[$i] = $request->getCheck( "wpNs$i" ) ? 1 : 0;
@@ -173,6 +179,7 @@ class PreferencesForm {
                $wgUser->setEmail( $this->mUserEmail );
                $wgUser->setRealName( $this->mRealName );
                $wgUser->setOption( 'language', $this->mUserLanguage );
+        $wgUser->setOption( 'variant', $this->mUserVariant );
                $wgUser->setOption( 'nickname', $this->mNick );
                $wgUser->setOption( 'quickbar', $this->mQuickbar );
                $wgUser->setOption( 'skin', $this->mSkin );
@@ -186,6 +193,7 @@ class PreferencesForm {
                $wgUser->setOption( 'cols', $this->validateInt( $this->mCols, 4, 1000 ) );
                $wgUser->setOption( 'stubthreshold', $this->validateIntOrNull( $this->mStubs ) );
                $wgUser->setOption( 'timecorrection', $this->validateTimeZone( $this->mHourDiff, -12, 14 ) );
+               $wgUser->setOption( 'imagesize', $this->mImageSize );
 
                # Set search namespace options
                foreach( $this->mSearchNs as $i => $value ) {
@@ -210,12 +218,13 @@ class PreferencesForm {
         * @access private
         */
        function resetPrefs() {
-               global $wgUser, $wgLang, $wgAllowRealName;
+               global $wgUser, $wgLang, $wgContLang, $wgAllowRealName;
 
                $this->mOldpass = $this->mNewpass = $this->mRetypePass = '';
                $this->mUserEmail = $wgUser->getEmail();
                $this->mRealName = ($wgAllowRealName) ? $wgUser->getRealName() : '';
                $this->mUserLanguage = $wgUser->getOption( 'language');
+        $this->mUserVariant = $wgUser->getOption( 'variant');
                if ( 1 == $wgUser->getOption( 'disablemail' ) ) { $this->mEmailFlag = 1; }
                else { $this->mEmailFlag = 0; }
                $this->mNick = $wgUser->getOption( 'nickname' );
@@ -231,6 +240,7 @@ class PreferencesForm {
                $this->mSearch = $wgUser->getOption( 'searchlimit' );
                $this->mSearchLines = $wgUser->getOption( 'contextlines' );
                $this->mSearchChars = $wgUser->getOption( 'contextchars' );
+               $this->mImageSize = $wgUser->getOption( 'imagesize' );
                $this->mRecent = $wgUser->getOption( 'rclimit' );
 
                $togs = $wgLang->getUserToggles();
@@ -239,7 +249,7 @@ class PreferencesForm {
                        $this->mToggles[$tname] = $wgUser->getOption( $tname );
                }
 
-               $namespaces = $wgLang->getNamespaces();
+               $namespaces = $wgContLang->getNamespaces();
                foreach ( $namespaces as $i => $namespace ) {
                        if ( $i >= 0 ) {
                                $this->mSearchNs[$i] = $wgUser->getOption( 'searchNs'.$i );
@@ -251,10 +261,10 @@ class PreferencesForm {
         * @access private
         */
        function namespacesCheckboxes() {
-               global $wgLang, $wgUser;
+               global $wgContLang, $wgUser;
                
                # Determine namespace checkboxes
-               $namespaces = $wgLang->getNamespaces();
+               $namespaces = $wgContLang->getNamespaces();
                $r1 = '';
 
                foreach ( $namespaces as $i => $name ) {
@@ -300,9 +310,10 @@ class PreferencesForm {
         * @access private
         */
        function mainPrefsForm( $err ) {
-               global $wgUser, $wgOut, $wgLang, $wgUseDynamicDates, $wgValidSkinNames;
-               global $wgAllowRealName;
-           
+               global $wgUser, $wgOut, $wgLang, $wgContLang, $wgUseDynamicDates, $wgValidSkinNames;
+               global $wgAllowRealName, $wgImageLimits;
+               global $wgLanguageNames, $wgDisableLangConversion;
+
                $wgOut->setPageTitle( wfMsg( 'preferences' ) );
                $wgOut->setArticleRelated( false );
                $wgOut->setRobotpolicy( 'noindex,nofollow' );
@@ -347,6 +358,7 @@ class PreferencesForm {
                $yem = wfMsg( 'youremail' );
                $yrn = ($wgAllowRealName) ? wfMsg( 'yourrealname' ) : '';
                $yl  = wfMsg( 'yourlanguage' );
+               $yv  = wfMsg( 'yourvariant' );
                $emf = wfMsg( 'emailflag' );
                $ynn = wfMsg( 'yournick' );
                $stt = wfMsg ( 'stubthreshold' ) ;
@@ -373,15 +385,49 @@ class PreferencesForm {
 
                $wgOut->addHTML( "<fieldset>
                <legend>".wfMsg('prefs-personal')."</legend>");
-               if ($wgAllowRealName) {
-                   $wgOut->addHTML("<div><label>$yrn: <input type='text' name=\"wpRealName\" value=\"{$this->mRealName}\" size='20' /></label></div>");
+                       if ($wgAllowRealName) {
+                       $wgOut->addHTML("<div><label>$yrn: <input type='text' name=\"wpRealName\" value=\"{$this->mRealName}\" size='20' /></label></div>");
                }
-               $wgOut->addHTML("
+               $wgOut->addHTML("
                <div><label>$yem: <input type='text' name=\"wpUserEmail\" value=\"{$this->mUserEmail}\" size='20' /></label></div>
-               <div><label><input type='checkbox' $emfc value=\"1\" name=\"wpEmailFlag\" /> $emf</label></div>
+               <div><label><input type='checkbox' $emfc value=\"1\" name=\"wpEmailFlag\" />$emf</label></div>
                <div><label>$ynn: <input type='text' name=\"wpNick\" value=\"{$this->mNick}\" size='12' /></label></div>
-               <div><label>$yl: <input type='text' name=\"wpUserLanguage\" value=\"{$this->mUserLanguage}\" size='8' /></label></div>\n" );
+               <div><label>$yl: <select name=\"wpUserLanguage\">\n");
+
+               foreach($wgLanguageNames as $code => $name) {
+                       global $IP;
+                       /* only add languages that have a file */
+                       $langfile="$IP/languages/Language".str_replace('-', '_', ucfirst($code)).".php";
+                       if(file_exists($langfile)) {
+                               $sel = ($code == $this->mUserLanguage)? 'selected="selected"' : '';
+                               $wgOut->addHtml("\t<option value=\"$code\" $sel>$code - $name</option>\n");
+                       }
+               }
+               $wgOut->addHtml("</select></label></div>\n" );
 
+               /* see if there are multiple language variants to choose from*/
+               if(!$wgDisableLangConversion) {
+                       $variants = $wgContLang->getVariants();
+                       $size=sizeof($variants);
+               
+                       $variantArray=array();
+                       foreach($variants as $v) {
+                               $v = str_replace( '_', '-', strtolower($v));
+                               if($name=$wgLanguageNames[$v]) {
+                                       $variantArray[$v] = $name;
+                               }
+                       }
+                       $size=sizeof($variantArray);
+               
+                       if(sizeof($variantArray) > 1) {
+                       $wgOut->addHtml("
+                               <div><label>$yv: <select name=\"wpUserVariant\">\n");
+                               foreach($variantArray as $code => $name) {
+                                       $sel = ($code==$this->mUserVariant)? 'selected="selected"' : '';
+                                       $wgOut->addHtml("\t<option value=\"$code\" $sel>$code - $name</option>\n");
+                               }
+                       }
+               }
                # Fields for changing password
                #
                $this->mOldpass = htmlspecialchars( $this->mOldpass );
@@ -470,6 +516,7 @@ class PreferencesForm {
                </div> " .
                $this->getToggle( "editwidth" ) .
                $this->getToggle( "showtoolbar" ) .
+               $this->getToggle( "previewonfirst" ) .
                $this->getToggle( "previewontop" ) .
                $this->getToggle( "watchdefault" ) .
                $this->getToggle( "minordefault" ) . "
@@ -479,8 +526,8 @@ class PreferencesForm {
                <legend>$timezone</legend>
                <div><b>$tzServerTime:</b> $nowserver</div>
                <div><b>$ltz:</b> $nowlocal</div>
-               <div><label>$tzo*: <input type='text' name=\"wpHourDiff\" value=\"{$this->mHourDiff}\" size='6' /></label></div>
-               <div><input type=\"button\" value=\"$tzGuess\" onClick=\"javascript:guessTimezone()\" id=\"guesstimezonebutton\" style=\"display:none\" /></div>
+               <div><label>$tzo*: <input type='text' name=\"wpHourDiff\" value=\"" . htmlspecialchars( $this->mHourDiff ) . "\" size='6' /></label></div>
+               <div><input type=\"button\" value=\"$tzGuess\" onclick=\"javascript:guessTimezone()\" id=\"guesstimezonebutton\" style=\"display:none\" /></div>
                <div class='prefsectiontip'>* {$tzt}</div>
        </fieldset>\n\n" );
 
@@ -490,6 +537,15 @@ class PreferencesForm {
                " . $this->getToggle( "hideminor" ) .
                $this->getToggle( "usenewrc" ) . "
                <div><label>$stt: <input type='text' name=\"wpStubs\" value=\"$this->mStubs\" size='6' /></label></div>
+                <div><label>".wfMsg('imagemaxsize')."<select name=\"wpImageSize\">");
+               
+               $imageLimitOptions='';
+               foreach ( $wgImageLimits as $index => $limits ) {
+                       $selected = ($index == $this->mImageSize) ? 'selected="selected"' : '';
+                       $imageLimitOptions .= "<option value=\"{$index}\" {$selected}>{$limits[0]}x{$limits[1]}</option>\n";
+               }
+               $wgOut->addHTML( "{$imageLimitOptions}</select></label></div>
+
        </fieldset>
        
        <fieldset>