10 changed files with 125 additions and 54 deletions
			
			
		| @ -0,0 +1,71 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Created by Error202 | ||||
|  * Date: 13.09.2018 | ||||
|  */ | ||||
| 
 | ||||
| namespace console\controllers; | ||||
| 
 | ||||
| use core\entities\Settings; | ||||
| use core\forms\SettingsForm; | ||||
| use core\services\SettingsService; | ||||
| use yii\console\Controller; | ||||
| 
 | ||||
| class SettingsController extends Controller | ||||
| { | ||||
|     private $_settings_service; | ||||
| 
 | ||||
|     public function __construct(string $id, $module, SettingsService $settings_service, array $config = []) | ||||
|     { | ||||
|         parent::__construct($id, $module, $config); | ||||
|         $this->_settings_service = $settings_service; | ||||
|     } | ||||
| 
 | ||||
|     public function actionSet($language, $section, $key, $value) | ||||
|     { | ||||
|         $setting = $this->findModel($section, $key); | ||||
|         if ($setting) { | ||||
|             $translate = $setting->findTranslation($language); | ||||
| 
 | ||||
|             if (!$translate) { | ||||
|                 $translate = new $setting->virtualClassName(); | ||||
|                 $translate->section = $section; | ||||
|                 $translate->key = $key; | ||||
|                 $translate->language = $language; | ||||
|             } | ||||
| 
 | ||||
|             $translate->value = $value; | ||||
|             $translate->save(); | ||||
|         } else { | ||||
|             $settingForm = new SettingsForm(); | ||||
|             $settingForm->type = 'string'; | ||||
|             $settingForm->section = $section; | ||||
|             $settingForm->key = $key; | ||||
|             $settingForm->active = 1; | ||||
|             $setting = $this->_settings_service->create($settingForm); | ||||
| 
 | ||||
|             $translate = $setting->findTranslation($language); | ||||
| 
 | ||||
|             if (!$translate) { | ||||
|                 $translate = new $setting->virtualClassName(); | ||||
|                 $translate->section = $section; | ||||
|                 $translate->key = $key; | ||||
|                 $translate->language = $language; | ||||
|             } | ||||
| 
 | ||||
|             $translate->value = $value; | ||||
|             $translate->save(); | ||||
|         } | ||||
|         $this->stdout('Settings updated!' . PHP_EOL); | ||||
|     } | ||||
| 
 | ||||
|     protected function findModel($section, $key) | ||||
|     { | ||||
|         if (($model = Settings::find()->andWhere(['section' => $section])->andWhere(['key' => $key])->one()) !== null) { | ||||
|             return $model; | ||||
|         } else { | ||||
|             //throw new NotFoundException('The requested setting does not exist.'); | ||||
|             return null; | ||||
|         } | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue