You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.1 KiB

<?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;
}
}
}