public function actionIndex($alias = '')
 {
     //$this->processPageRequest('page');
     // Список видов камней
     $seriesList = Series::model()->published()->findAll();
     // Определяем, выбран или нет вид камня
     $series = null;
     if (!empty($alias)) {
         // Если выбран вид камня
         $series = Series::model()->published()->with(array('slides' => array('scopes' => 'published', 'order' => 'slides.sort ASC')))->find('t.alias = :alias', array(':alias' => $alias));
         if (!$series) {
             throw new CHttpException(404);
         }
         $page = $series;
     } else {
         // Загружаем страницу "Каталог камня"
         Yii::import("application.modules.page.models.Page");
         $page = Page::model()->with(array('slides' => array('scopes' => 'published', 'order' => 'slides.sort ASC')))->findByPath("catalog");
     }
     // Список товаров
     $criteria = new CDbCriteria();
     $criteria->with = array('images' => array('scopes' => 'published', 'order' => 'images.sort ASC'));
     $criteria->order = 't.series_id ASC, t.title ASC';
     $model = new Stone('user_search');
     $model->unsetAttributes();
     if (isset($_GET['Stone'])) {
         $model->attributes = $_GET['Stone'];
         if ($model->title != '') {
             $criteria->condition = "(t.title LIKE :title OR t.title_rus LIKE :title)";
             $criteria->params = array(':title' => $model->title . '%');
             //$criteria->addSearchCondition('t.title', $model->title . '%', false, 'OR');
             //$criteria->addSearchCondition('t.title_rus', $model->title . '%', false);
         }
         $criteria->addSearchCondition('t.color_id', $model->color_id);
     }
     // Если выбран вид камня
     if (!empty($series)) {
         $model = $model->series($series->id);
     }
     $dataProvider = new CActiveDataProvider($model->published(), array('criteria' => $criteria, 'pagination' => array('pageVar' => 'page')));
     if (Yii::app()->request->isAjaxRequest) {
         // Обновление списка для бесконечной загрузки элементов
         if (isset($_GET['showMore'])) {
             $this->renderPartial('_list_ajax', array('dataProvider' => $dataProvider, 'pageNumber' => (int) Yii::app()->request->getParam('page', 1)));
         } else {
             $this->renderPartial('_list', array('dataProvider' => $dataProvider), false, true);
         }
         Yii::app()->end();
     } else {
         // Вывод каталога
         $this->render('index', array('page' => $page, 'model' => $model, 'dataProvider' => $dataProvider, 'seriesList' => $seriesList, 'sizerVariants' => $sizerVariants));
     }
 }
 public function actionIndex($type = '', $series = '')
 {
     $type = trim($type);
     $type = $type == '' ? 'stone' : $type;
     $productType = ProductType::model()->published()->findByAlias($type);
     if (!$productType) {
         throw new CHttpException(404);
     }
     $page = $productType;
     //$this->processPageRequest('page');
     $series = trim($series);
     $filter = array();
     $seoFilter = array('series_id' => null, 'color_id' => null, 'country_id' => null);
     $seoFlag = false;
     // Список видов камней
     $seriesList = Series::model()->published()->findAll(array('order' => 't.sort ASC'));
     // Определяем, выбран или нет вид камня
     $currentSeries = null;
     $currentColor = null;
     $currentCountry = null;
     if (!empty($series)) {
         // Если выбран вид камня
         $currentSeries = Series::model()->published()->with(array('slides' => array('scopes' => 'published', 'order' => 'slides.sort ASC'), 'images' => array('scopes' => 'published', 'order' => 'images.sort ASC')))->find('t.alias = :alias', array(':alias' => $series));
         if (!$currentSeries) {
             throw new CHttpException(404);
         }
         $filter['series_id'] = $currentSeries->id;
         $seoFilter['series_id'] = $currentSeries->id;
         $seoFlag = true;
         // Если выбран цвет или страна
         if (isset($_GET['colorCountry'])) {
             $code = trim($_GET['colorCountry']);
             $currentDictData = DictionaryData::model()->active()->with('group')->findByCode($code);
             if ($currentDictData !== null) {
                 if ($currentDictData->group->code == 'colors') {
                     $currentColor = $currentDictData;
                     $seoFilter['color_id'] = $currentColor->id;
                 } elseif ($currentDictData->group->code == 'country') {
                     $currentCountry = $currentDictData;
                     $seoFilter['country_id'] = $currentCountry->id;
                 }
             }
         }
         // Если выбран только цвет
         if (isset($_GET['color'])) {
             $code = trim($_GET['color']);
             $currentColor = DictionaryData::model()->active()->findByCode($code);
             if ($currentColor !== null) {
                 $seoFilter['color_id'] = $currentColor->id;
             }
         }
         // Если выбрана только страна
         if (isset($_GET['country'])) {
             $code = trim($_GET['country']);
             $currentCountry = DictionaryData::model()->active()->findByCode($code);
             if ($currentCountry !== null) {
                 $seoFilter['country_id'] = $currentCountry->id;
             }
         }
     }
     if ($seoFlag) {
         $seoPage = StoneSeoPage::model()->published()->type($productType->id)->findByAttributes($seoFilter);
         $page = $seoPage !== null ? $seoPage : $page;
     }
     // Список товаров
     $model = new Stone('user_search');
     $model->unsetAttributes();
     $model->type_id = $productType->id;
     // Если выбран вид камня
     if (!empty($currentSeries)) {
         $model->series_id = $currentSeries->id;
     }
     // Если выбран цвет камня
     if (!empty($currentColor)) {
         $model->color_id = $currentColor->id;
         $filter['color_id'] = $currentColor->id;
     }
     // Если выбрана страна
     if (!empty($currentCountry)) {
         $model->country_id = $currentCountry->id;
         $filter['country_id'] = $currentCountry->id;
     }
     if (isset($_GET['Stone'])) {
         $model->attributes = $_GET['Stone'];
         if ($model->title != '') {
             $filter['title'] = $model->title;
         }
         if (!empty($model->color_id)) {
             $filter['color_id'] = $model->color_id;
         }
         if (!empty($model->country_id)) {
             $filter['country_id'] = $model->country_id;
         }
     }
     // Поиск товаров
     $dataProvider = $model->user_search();
     // Сохраняем ссылку для возврата
     Yii::app()->user->setState('stoneCatalogReturnUrl', Yii::app()->request->requestUri);
     //var_dump(Yii::app()->user->getState('stoneCatalogReturnUrl'));
     // Сохраняем данные фильтра в сессии
     //$filter['page'] = (int) Yii::app()->request->getParam('page', 1);
     Yii::app()->user->setState('stoneCatalogFilter', $filter);
     if (Yii::app()->request->isAjaxRequest) {
         // Обновление списка для бесконечной загрузки элементов
         if (isset($_GET['showMore'])) {
             $this->renderPartial('_list_ajax', array('dataProvider' => $dataProvider, 'pageNumber' => (int) Yii::app()->request->getParam('page', 1)));
         } else {
             $this->renderPartial('_list', array('dataProvider' => $dataProvider, 'productType' => $productType), false, true);
         }
         Yii::app()->end();
     } else {
         // Вывод каталога
         $this->render('index', array('page' => $page, 'model' => $model, 'dataProvider' => $dataProvider, 'seriesList' => $seriesList, 'series' => $currentSeries, 'productType' => $productType));
     }
 }