Example #1
0
 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();
 }