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.
		
		
		
		
		
			
		
			
				
					
					
						
							71 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							71 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; | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |