mirror of
https://github.com/humhub/humhub.git
synced 2025-03-04 07:08:58 +01:00
Improved Setting caching
This commit is contained in:
parent
c9814cf0cd
commit
101b321323
@ -33,21 +33,48 @@ class DynamicConfig extends \yii\base\Object
|
||||
self::save($config);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called when a a setting is changed.
|
||||
*
|
||||
* @see Setting
|
||||
* @param Setting $setting
|
||||
*/
|
||||
public static function onSettingChange($setting)
|
||||
{
|
||||
// Only rewrite static configuration file when necessary
|
||||
if ($setting->module_id != 'mailing' &&
|
||||
$setting->module_id != 'cache' &&
|
||||
$setting->name != 'name' &&
|
||||
$setting->name != 'defaultLanguage' &&
|
||||
$setting->name != 'theme' &&
|
||||
$setting->name != 'timeZone' &&
|
||||
$setting->name != 'authentication_internal'
|
||||
) {
|
||||
return;
|
||||
$config = self::load();
|
||||
self::setSettingValue($config['params'], $setting);
|
||||
self::save($config);
|
||||
}
|
||||
|
||||
public static function setSettingValue(&$config, $setting)
|
||||
{
|
||||
|
||||
$moduleId = $setting->module_id;
|
||||
if ($moduleId == '') {
|
||||
$moduleId = 'core';
|
||||
}
|
||||
|
||||
self::rewrite();
|
||||
$value = '';
|
||||
if ($setting->value_text != '') {
|
||||
$value = $setting->value_text;
|
||||
} else {
|
||||
$value = $setting->value;
|
||||
}
|
||||
|
||||
$config['settings'][$moduleId][$setting->name] = $value;
|
||||
}
|
||||
|
||||
public static function getSettingValue($name, $moduleId)
|
||||
{
|
||||
if ($moduleId == '') {
|
||||
$moduleId = 'core';
|
||||
}
|
||||
|
||||
if (isset(Yii::$app->params['settings'][$moduleId][$name])) {
|
||||
return Yii::$app->params['settings'][$moduleId][$name];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -179,6 +206,10 @@ class DynamicConfig extends \yii\base\Object
|
||||
$config = ArrayHelper::merge($config, Theme::getThemeConfig(Setting::Get('theme')));
|
||||
$config['params']['config_created_at'] = time();
|
||||
|
||||
foreach (Setting::find()->all() as $setting) {
|
||||
self::setSettingValue($config['params'], $setting);
|
||||
}
|
||||
|
||||
self::save($config);
|
||||
}
|
||||
|
||||
|
@ -119,6 +119,11 @@ class Setting extends \yii\db\ActiveRecord
|
||||
return self::GetFixedValue($name, $moduleId);
|
||||
}
|
||||
|
||||
$configValue = DynamicConfig::getSettingValue($name, $moduleId);
|
||||
if ($configValue !== null) {
|
||||
return $configValue;
|
||||
}
|
||||
|
||||
$record = self::GetRecord($name, $moduleId);
|
||||
return $record->value;
|
||||
}
|
||||
@ -182,6 +187,10 @@ class Setting extends \yii\db\ActiveRecord
|
||||
public static function GetText($name, $moduleId = "")
|
||||
{
|
||||
|
||||
if (DynamicConfig::getSettingValue($name, $moduleId) !== null) {
|
||||
return DynamicConfig::getSettingValue($name, $moduleId);
|
||||
}
|
||||
|
||||
$record = self::GetRecord($name, $moduleId);
|
||||
return $record->value_text;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ namespace humhub\modules\admin\controllers;
|
||||
|
||||
use Yii;
|
||||
use yii\helpers\Url;
|
||||
use humhub\libs\DynamicConfig;
|
||||
use humhub\models\Setting;
|
||||
use humhub\models\UrlOembed;
|
||||
use humhub\modules\admin\components\Controller;
|
||||
@ -74,6 +75,7 @@ class SettingController extends Controller
|
||||
$space->save();
|
||||
}
|
||||
}
|
||||
DynamicConfig::rewrite();
|
||||
|
||||
// set flash message
|
||||
Yii::$app->getSession()->setFlash('data-saved', Yii::t('AdminModule.controllers_SettingController', 'Saved'));
|
||||
@ -222,6 +224,8 @@ class SettingController extends Controller
|
||||
Setting::Set('type', $form->type, 'cache');
|
||||
Setting::Set('expireTime', $form->expireTime, 'cache');
|
||||
|
||||
\humhub\libs\DynamicConfig::rewrite();
|
||||
|
||||
// set flash message
|
||||
Yii::$app->getSession()->setFlash('data-saved', Yii::t('AdminModule.controllers_SettingController', 'Saved and flushed cache'));
|
||||
|
||||
@ -306,6 +310,8 @@ class SettingController extends Controller
|
||||
$form->systemEmailAddress = Setting::Set('systemEmailAddress', $form->systemEmailAddress, 'mailing');
|
||||
$form->systemEmailName = Setting::Set('systemEmailName', $form->systemEmailName, 'mailing');
|
||||
|
||||
DynamicConfig::rewrite();
|
||||
|
||||
// set flash message
|
||||
Yii::$app->getSession()->setFlash('data-saved', Yii::t('AdminModule.controllers_SettingController', 'Saved'));
|
||||
|
||||
@ -351,6 +357,8 @@ class SettingController extends Controller
|
||||
// read and save colors from current theme
|
||||
\humhub\components\Theme::setColorVariables($form->theme);
|
||||
|
||||
DynamicConfig::rewrite();
|
||||
|
||||
Yii::$app->getSession()->setFlash('data-saved', Yii::t('AdminModule.controllers_SettingController', 'Saved'));
|
||||
Yii::$app->response->redirect(Url::toRoute('/admin/setting/design'));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user