From f52f2352ad680516a65253d37ddc9d55913a669d Mon Sep 17 00:00:00 2001 From: Serios Date: Fri, 19 Mar 2021 12:14:16 +0200 Subject: [PATCH] Fixing an issue with multilanguage values in Theme preferences When theme pref field have multilanguage enabled, values for the field are overwritten by last edited language. More detailed description about this behavior is given in #4455 --- e107_handlers/theme_handler.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/e107_handlers/theme_handler.php b/e107_handlers/theme_handler.php index bd9b0dc5f..be48efa89 100644 --- a/e107_handlers/theme_handler.php +++ b/e107_handlers/theme_handler.php @@ -2331,17 +2331,21 @@ class themeHandler if($name === 'theme_config') // v2.1.4 - don't use process() method. { $pref = e107::getThemeConfig(); - - $theme_pref = array(); - + $values = e107::getThemeConfig($this->id)->getPref(); + $fields = call_user_func(array(&$this->themeConfigObj, 'config')); foreach($fields as $field=>$data) { - $theme_pref[$field] = $_POST[$field]; + if(!empty($data['multilan'])) + { + $values[$field][e_LANGUAGE] = $_POST[$field][e_LANGUAGE]; + } else { + $values[$field] = $_POST[$field]; + } } - if($pref->setPref($theme_pref)->save(true,true,false)) + if($pref->setPref($values)->save(true,true,false)) { $siteThemePref = e107::getConfig()->get('sitetheme_pref'); if(!empty($siteThemePref))