/**
  * Обновление размера страницы
  *
  * @return void
  */
 protected function _updatePageSize()
 {
     // ID текущей модели
     $modelID = strtolower($this->_modelName);
     // Делаем так, ибо при попытке править Yii::app()->session['modSettings'] - получаем ошибку
     $sessionSettings = Yii::app()->user->getState('modSettings', null);
     $currentPageSize = $this->dataProvider->getPagination()->pageSize;
     if (!isset($sessionSettings[$modelID])) {
         $sessionSettings[$modelID] = array();
     }
     // Если для данного модуля не установлен pageSize - устанавливаем его
     if (!isset($sessionSettings[$modelID]['pageSize'])) {
         $newSets = new Settings();
         $newSets->module_id = $modelID;
         $newSets->param_name = 'pageSize';
         $newSets->param_value = $currentPageSize;
         $newSets->type = Settings::TYPE_USER;
         $newSets->save();
     } else {
         $oldSets = Settings::model()->findByAttributes(array('user_id' => Yii::app()->user->getId(), 'module_id' => $modelID, 'param_name' => 'pageSize', 'type' => Settings::TYPE_USER));
         $oldSets->param_value = $currentPageSize;
         $oldSets->update();
     }
     $sessionSettings[$modelID]['pageSize'] = $currentPageSize;
     // Перезаписываем сессию
     Yii::app()->user->setState('modSettings', $sessionSettings);
 }
 /**
  * Экшен начальной настройки проекта:
  *
  * @return nothing
  **/
 public function actionSitesettings()
 {
     $model = new InstallForm('siteSettings');
     if (isset($this->session['InstallForm']['siteSettings'])) {
         $model->setAttributes($this->session['InstallForm']['siteSettings']);
         if ($model->validate() && $this->session['InstallForm']['siteSettingsStep'] === true) {
             $this->session['InstallForm'] = array_merge($this->session['InstallForm'], ['siteSettings' => $model->attributes, 'siteSettingsStep' => false]);
             $this->_markFinished('sitesettings');
             $this->_setSession();
             $this->redirect(['/install/default/finish']);
         }
     }
     if (Yii::app()->getRequest()->getIsPostRequest() && isset($_POST['InstallForm'])) {
         $model->setAttributes($_POST['InstallForm']);
         if ($model->validate()) {
             $transaction = Yii::app()->db->beginTransaction();
             try {
                 Settings::model()->deleteAll();
                 $user = User::model()->admin()->findAll();
                 foreach (['siteDescription', 'siteName', 'siteKeyWords', 'email', 'theme', 'backendTheme'] as $param) {
                     $settings = new Settings();
                     $model->email = $model->siteEmail;
                     $settings->setAttributes(['module_id' => 'yupe', 'param_name' => $param, 'param_value' => $model->{$param}, 'user_id' => $user[0]->id]);
                     if ($settings->save()) {
                         continue;
                     } else {
                         throw new CDbException(print_r($settings->getErrors(), true));
                     }
                 }
                 $transaction->commit();
                 Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::SUCCESS_MESSAGE, Yii::t('InstallModule.install', 'Site settings saved successfully!'));
                 // попробуем создать каталог assets
                 $assetsPath = dirname(Yii::app()->getRequest()->getScriptFile()) . '/' . CAssetManager::DEFAULT_BASEPATH;
                 if (!is_dir($assetsPath)) {
                     @mkdir($assetsPath);
                 }
                 $this->session['InstallForm'] = array_merge($this->session['InstallForm'], ['siteSettings' => $model->attributes, 'siteSettingsStep' => true]);
                 $this->_setSession();
                 $this->redirect(['/install/default/sitesettings']);
             } catch (CDbException $e) {
                 $transaction->rollback();
                 Yii::app()->getUser()->setFlash(yupe\widgets\YFlashMessages::ERROR_MESSAGE, $e->__toString());
                 Yii::log($e->__toString(), CLogger::LEVEL_ERROR);
                 $this->redirect(['/install/default/sitesettings/']);
             }
         }
     } else {
         $model->siteEmail = $model->emailName;
     }
     $this->render('_view', ['data' => ['model' => $model, 'themes' => $this->yupe->getThemes(), 'backendThemes' => $this->yupe->getThemes(true)]]);
 }
Beispiel #3
0
 /**
  * Сохраняет настройки модуля
  * @param string $module_id Идентификатор модуля
  * @param mixed $params Массив параметров и значений которые следует сохранить (param_name => param_value)
  * 
  */
 public static function saveModuleSettings($moduleId, $paramValues)
 {
     foreach ($paramValues as $name => $value) {
         // Получаем настройку
         $setting = Settings::model()->find('module_id = :module_id and param_name = :param_name', array(':module_id' => $moduleId, ':param_name' => $name));
         // Если новая запись
         if ($setting == null) {
             $setting = new Settings();
             $setting->module_id = $moduleId;
             $setting->param_name = $name;
         } else {
             if ($setting->param_value == $value) {
                 continue;
             }
         }
         // Присваиваем новое значение
         $setting->param_value = $value;
         // Добавляем для параметра его правила валидации
         $setting->rulesFromModule = Yii::app()->getModule($moduleId)->getRulesForParam($name);
         //Сохраняем
         if (!$setting->save()) {
             return false;
         }
     }
     return true;
 }
 /**
  * Обновление размера страницы
  *
  * @return void
  */
 protected function _updatePageSize()
 {
     $modelName = strtolower($this->_modelName);
     // Делаем так, ибо при попытке править Yii::app()->session['modSettings'] - получаем ошибку
     $sessionSettings = Yii::app()->getUser()->getState(\YWebUser::STATE_MOD_SETTINGS, null);
     $currentPageSize = $this->dataProvider->getPagination()->getPageSize();
     // Если переменная не найдена нужно проверить наличие данных в БД
     if (!isset($sessionSettings[$modelName]['pageSize'])) {
         $sessionSettings[$modelName] = [];
         $setting = Settings::model()->findAllByAttributes(['user_id' => Yii::app()->getUser()->getId(), 'module_id' => $modelName, 'param_name' => 'pageSize', 'type' => Settings::TYPE_USER]);
         // Если не найдена запись, создаем
         if (null === $setting) {
             $setting = new Settings();
             $setting->setAttributes(['module_id' => $modelName, 'param_name' => 'pageSize', 'param_value' => $currentPageSize, 'type' => Settings::TYPE_USER]);
             $setting->save();
         }
     } elseif ($currentPageSize !== $sessionSettings[$modelName]['pageSize']) {
         // Обновим запись в базе
         $setting = Settings::model()->findByAttributes(['user_id' => Yii::app()->getUser()->getId(), 'module_id' => $modelName, 'param_name' => 'pageSize', 'type' => Settings::TYPE_USER]);
         // Если не найдена запись, создаем
         if (null === $setting) {
             $setting = new Settings();
             $setting->setAttributes(['module_id' => $modelName, 'param_name' => 'pageSize', 'param_value' => $currentPageSize, 'type' => Settings::TYPE_USER]);
             $setting->save();
         } else {
             $setting->param_value = $currentPageSize;
             $setting->update(['param_value']);
         }
     }
     $sessionSettings[$modelName]['pageSize'] = $currentPageSize;
     // Перезаписываем сессию
     Yii::app()->getUser()->setState(\YWebUser::STATE_MOD_SETTINGS, $sessionSettings);
 }