示例#1
0
 /**
  * Обновление размера страницы
  *
  * @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);
 }