public function actionIndex($param = null) { if (isset($_POST['ReviewAuthor'])) { $this->addNewReview($_POST); } //Общий список отзывов $root = ReviewRubrics::getRoot(new ReviewRubrics()); $model['groups'] = $root->descendants(1)->findAll($root->id); $this->setSEO(Yii::app()->request->requestUri, 'Отзывы'); if (empty($param)) { $model['elements'] = ReviewElements::model()->findAll('`status` = 1 ORDER BY review_data DESC'); } else { //Число - это элемент if (is_numeric($param)) { $model['elements'] = ReviewElements::model()->findAll('`status` = 1 AND id = ' . (int) $param); if (empty($model['elements'])) { throw new CHttpException(404, 'The page can not be found.'); } } else { //Ссылка - это раздел $model['elements'] = ReviewElements::model()->findAll('`status` = 1 AND parent_id in (SELECT id FROM {{review_rubrics}} WHERE url LIKE "' . trim($param) . '")'); } } $this->render('index', array('model' => $model, 'param' => $param)); }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'update' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $this->breadcrumbs = array('Отзывы' => array('/review/review'), 'Редактировать запись'); $model = $this->loadModel($id); $root = ReviewRubrics::getRoot(new ReviewRubrics()); $catalog = $root->descendants()->findAll($root->id); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); // set attributes from get if (isset($_GET['ReviewElements'])) { $model->attributes = $_GET['ReviewElements']; } if (isset($_POST['ReviewElements'])) { $model->attributes = $_POST['ReviewElements']; if ($model->save()) { $url = isset($_POST['go_to_list']) ? $this->listUrl('index') : $this->itemUrl('update', $model->id); $this->redirect($url); } } $this->render('update', array('model' => $model, 'root' => $root, 'catalog' => $catalog)); }
/** * Manages all models. */ public function actionIndex($id = null) { $this->breadcrumbs = array('Вопрос-ответ' => array('/review/reviewrubrics/index')); set_time_limit(0); //получаем URL $base_patch = SITE_NAME_FULL . '/review'; if (!empty($id)) { $model = ReviewRubrics::model()->findByPk((int) $id); if ($model) { $i = (int) $id; $array = array(); do { $model = ReviewRubrics::model()->findByPk((int) $i); if (isset($model->id)) { $array[] = $model->id; } $i = (int) $model->parent_id; } while ($i != 0); $array = array_reverse($array); unset($array[0]); foreach ($array as $value) { $base_patch .= '/' . ReviewRubrics::model()->findByPk((int) $value)->url; } } } if (!empty($id)) { $model = ReviewRubrics::model()->findByPk((int) $id); $root = ReviewRubrics::getRoot($model); $category = ReviewRubrics::model()->findByPk((int) $id); //Получаем нужный узел $descendants = $category->descendants(1)->findAll(); $param[] = 'left_key > ' . $model->left_key . ' AND right_key < ' . $model->right_key; } else { $model = new ReviewRubrics(); $category = ReviewRubrics::getRoot($model); $category = ReviewRubrics::model()->findByPk($category->id); $descendants = $category->descendants(1)->findAll(); $root = ""; $param[] = 'level=2'; } $model = new ReviewRubrics(); $param = implode(" AND ", $param); $data = array('criteria' => array('condition' => $param)); if ($settingsModel = SiteModuleSettings::model()->find('site_module_id = 7')) { $data['Pagination'] = array('PageSize' => (int) $settingsModel->elements_page_admin > 0 ? $settingsModel->elements_page_admin : 100); } $data['sort'] = array('defaultOrder' => 'left_key ASC'); $provider = new CActiveDataProvider('ReviewRubrics', $data); $provider->criteria = $model->search($param); $this->render('list', array('model' => $model, 'provider' => $provider, 'root' => $root, 'categories' => $descendants, 'base_patch' => $base_patch)); }