Happy New Year
[squirrelmail.git] / plugins / squirrelspell / modules / lang_change.mod
index 3617e5fed8084b9a7aecc0493a10b023b454cc5a..3d2365342696e38367bdbea044a49564da250f71 100644 (file)
@@ -1,98 +1,74 @@
 <?php
+
 /**
  * lang_change.mod
- * ----------------
- * Squirrelspell module
  *
- * Copyright (c) 1999-2003 The SquirrelMail development team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
+ * Squirrelspell module
  *
  * This module changes the international dictionaries selection
- * for the user. Called after LANG_SETUP module.                
+ * for the user. Called after LANG_SETUP module.
  *
- * $Id$
- *
- * @author Konstantin Riabitsev <icon@duke.edu> ($Author$)
- * @version $Date$
+ * @author Konstantin Riabitsev <icon at duke.edu>
+ * @copyright 1999-2020 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package plugins
+ * @subpackage squirrelspell
  */
 
+sqgetGlobalVar('smtoken', $submitted_token, SQ_POST, '');
+sm_validate_security_token($submitted_token, -1, TRUE);
+
 global $SQSPELL_APP_DEFAULT;
 
-$use_langs = $_POST['use_langs'];
-$lang_default = $_POST['lang_default'];
+if (! sqgetGlobalVar('use_langs',$use_langs,SQ_POST)) {
+    $use_langs = array($SQSPELL_APP_DEFAULT);
+}
 
-$words = sqspell_getWords();
-if (!$words) {
-  $words = sqspell_makeDummy();
+if (! sqgetGlobalVar('lang_default',$lang_default,SQ_POST)) {
+    $lang_default = $SQSPELL_APP_DEFAULT;
 }
-$langs = sqspell_getSettings($words);
-if (sizeof($use_langs)){
-  /**
-   * See if the user clicked any options on the previous page.
-   */
-  if (sizeof($use_langs)>1){
-    /**
-     * See if s/he wants more than one dictionary.
-     */
-    if ($use_langs[0]!=$lang_default){
-      /**
-       * See if we need to juggle the order of the dictionaries
-       * to make the default dictionary first in line.
-       */
-      if (in_array($lang_default, $use_langs)){
-       /**
-        * See if the user was dumb and chose a default dictionary
-        * to be something other than the ones he selected.
-        */
-       $hold = array_shift($use_langs);
-       $lang_string = join(", ", $use_langs);
-       $lang_string = str_replace("$lang_default", "$hold", $lang_string);
-       $lang_string = $lang_default . ", " . $lang_string;
-      } else {
-       /** 
-        * Yes, he is dumb.
-        */
-       $lang_string = join(', ', $use_langs);
-      }
-    } else {
-      /**
-       * No need to juggle the order -- preferred is already first.
-       */
-      $lang_string = join(', ', $use_langs);
+
+/**
+ * Rebuild languages. Default language is first one.
+ */
+$new_langs = array($lang_default);
+foreach ($use_langs as $lang) {
+    if (! in_array($lang,$new_langs)) {
+        $new_langs[]=$lang;
     }
-  } else {
-    /**
-     * Just one dictionary, please.
-     */
-    $lang_string = $use_langs[0];
-  }
-  $lang_array = explode( ',', $lang_string );
+}
+
+if (sizeof($new_langs)>1) {
   $dsp_string = '';
-  foreach( $lang_array as $a) {
-    $dsp_string .= _(trim($a)) . ', ';
+  foreach( $new_langs as $a) {
+    $dsp_string .= _(sm_encode_html_special_chars(trim($a))) . _(", ");
   }
+  // remove last comma and space
   $dsp_string = substr( $dsp_string, 0, -2 );
+
+  // i18n: first %s is comma separated list of languages, second %s - default language.
+  // Language names are translated, if they are present in squirrelmail.po file.
+  // make sure that you don't use html codes in language name translations
   $msg = '<p>'
-    . sprintf(_("Settings adjusted to: %s with %s as default dictionary."), '<strong>'.$dsp_string.'</strong>', '<strong>'._($lang_default).'</strong>')
+    . sprintf(_("Settings adjusted to: %s with %s as default dictionary."),
+             '<strong>'.sm_encode_html_special_chars($dsp_string).'</strong>',
+             '<strong>'.sm_encode_html_special_chars(_($lang_default)).'</strong>')
     . '</p>';
 } else {
   /**
-   * No dictionaries selected. Use system default.
+   * Only one dictionary is selected.
    */
   $msg = '<p>'
-    . sprintf(_("Using %s dictionary (system default) for spellcheck." ), '<strong>'.$SQSPELL_APP_DEFAULT.'</strong>')
+    . sprintf(_("Using %s dictionary for spellcheck." ), '<strong>'.sm_encode_html_special_chars(_($new_langs[0])).'</strong>')
     . '</p>';
-  $lang_string = $SQSPELL_APP_DEFAULT;
 }
-$old_lang_string = join(", ", $langs);
-$words = str_replace("# LANG: $old_lang_string", "# LANG: $lang_string", 
-                    $words);
-/**
- * Write it down where the sun don't shine.
- */
-sqspell_writeWords($words);
-sqspell_makePage(_("International Dictionaries Preferences Updated"), 
-                null, $msg);
+
+/** save settings */
+sqspell_saveSettings($new_langs);
+
+sqspell_makePage(_("International Dictionaries Preferences Updated"),
+        null, $msg);
 
 /**
  * For Emacs weenies:
@@ -101,4 +77,3 @@ sqspell_makePage(_("International Dictionaries Preferences Updated"),
  * End:
  * vim: syntax=php
  */
-?>