[TikiWiki-commits] [Git][tikiwiki/tiki][27.x] [BP][FIX] Handle language preferences correctly in profile import/export

"Olivier Kango \(@olivierkango\) via TikiWiki-cvs" <[email protected]>
Newsgroups gmane.comp.cms.tiki.cvs
Message-ID <688b71daa5037_2c25a99281245e@gitlab-sidekiq-low-urgency-cpu-bound-v2-d9455d4c6-v5vwj.mail>

Olivier Kango pushed to branch 27.x at Tiki Wiki CMS Groupware / Tiki


Commits:
3fb0d6d2 by Olivier Kango at 2025-07-31T16:31:39+03:00
[BP][FIX] Handle language preferences correctly in profile import/export
---
* [BP][FIX] Handle language preferences correctly in profile import/export
---
* [FIX] Handle language preferences correctly in profile import/export
---
* Fix issue with in_array() on available_languages by converting string to array

See merge request tikiwiki/tiki!6925

(cherry picked from commit 720d9fd72dcf21e52e75c0d920371e3594303893)

See merge request tikiwiki/tiki!7624

(cherry picked from commit c34e74b244eab9154f433681b129e0061512fcc4)

See merge request tikiwiki/tiki!8147

- - - - -


2 changed files:

- lib/setup/language.php
- lib/setup/prefs.php


Changes:

=====================================
lib/setup/language.php
=====================================
@@ -14,8 +14,19 @@ if (basename($_SERVER['SCRIPT_NAME']) === basename(__FILE__)) {
 function isValidLocale($localeIdentifier = '')
 {
     global $prefs;
-    return preg_match("/[a-zA-Z-_]+$/", $localeIdentifier) && file_exists('lang/' . $localeIdentifier . '/language.php')
-        && ($prefs['restrict_language'] === 'n' || empty($prefs['available_languages']) || in_array($localeIdentifier, $prefs['available_languages']));
+
+    $availableLanguages = $prefs['available_languages'];
+
+    if (is_string($availableLanguages)) {
+        $availableLanguages = json_decode($availableLanguages, true);
+        if (json_last_error() !== JSON_ERROR_NONE) {
+            $availableLanguages = [];
+        }
+    }
+
+    return preg_match("/[a-zA-Z-_]+$/", $localeIdentifier)
+        && file_exists('lang/' . $localeIdentifier . '/language.php')
+        && ($prefs['restrict_language'] === 'n' || empty($availableLanguages) || in_array($localeIdentifier, $availableLanguages));
 }
 
 // Sets the language


=====================================
lib/setup/prefs.php
=====================================
@@ -282,11 +282,16 @@ function initialize_prefs($force = false)
         // Unserialize serialized preferences
         foreach ($serializedPreferences as $serializedPreference) {
             if (! empty($modified[$serializedPreference]) && ! is_array($modified[$serializedPreference])) {
-                $unserialized = @unserialize($modified[$serializedPreference]);
-                if ($unserialized === false) {
-                    Feedback::error(tr('Preference %0 failed to unserialize. Value was "%1"', $serializedPreference, $modified[$serializedPreference]));
+                $modifiedValue = $modified[$serializedPreference];
+                if (is_string($modifiedValue) && is_array(json_decode($modifiedValue, true)) && json_last_error() === JSON_ERROR_NONE) {
+                    $modified[$serializedPreference] = json_decode($modifiedValue, true);
                 } else {
-                    $modified[$serializedPreference] = $unserialized;
+                    $unserialized = @unserialize($modifiedValue);
+                    if ($unserialized === false) {
+                        Feedback::error(tr('Preference %0 failed to unserialize. Value was "%1"', $serializedPreference, $modifiedValue));
+                    } else {
+                        $modified[$serializedPreference] = $unserialized;
+                    }
                 }
             }
         }



View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/3fb0d6d2dbd9827a1995eff886cf07d19f9ee967

-- 
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/3fb0d6d2dbd9827a1995eff886cf07d19f9ee967
You're receiving this email because of your account on gitlab.com.

_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.