[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