protected function saveInternal() { if (!$this->beforeSave(false)) { return false; } /** @var \core\setting\models\Setting $settingClass */ $settingClass = Kiwi::getSettingClass(); foreach ($this->getAttributes() as $key => $value) { if (static::$_configFromFile[$key]['type'] == 'checkbox' && is_array($value)) { $value = Json::encode($value); } if (isset(static::$_configFromFile[$key]['value']) && static::$_configFromFile[$key]['value'] == $value) { $settingClass::deleteAll(['path' => $key]); } else { /** @var \core\setting\models\Setting $setting */ $setting = $settingClass::findOne(['path' => $key]); $setting = $setting ?: Kiwi::getSetting(['path' => $key]); $setting->value = $value; if (!$setting->save()) { $this->addError($key, Json::encode($setting->getErrors())); } } } $this->afterSave(false, $this->attributes()); return !$this->hasErrors(); }