/**
  * Просмотр статьи с комментами
  */
 public function actionView_article()
 {
     if (isset($_GET['idArticle']) || isset($_POST['idArticle'])) {
         $idArticle = isset($_GET['idArticle']) ? $_GET['idArticle'] : $_POST['idArticle'];
         $criteria = new CDbCriteria();
         // Комментарии к статье
         $criteria->with = array('idUser0');
         $criteria->condition = 'idArticle = :idArticle AND deleted = 0 AND public = 1';
         $criteria->params = array(':idArticle' => $idArticle);
         $comments = Comments::model()->findAll($criteria);
         $commentsDataProvider = new CArrayDataProvider($comments, array('keyField' => 'idComment', 'pagination' => array('pageSize' => 50)));
         // Статья
         $criteria->with = array('idCategory0', 'idMenu0', 'idUser0', 'commentsCount', 'tagstoarticles');
         $criteria->condition = 't.idArticle = :idArticle AND moderationAppruv = 1 AND public = 1 AND deleted = 0';
         if (Yii::app()->request->isAjaxRequest) {
             if (isset($_POST['type'])) {
                 if ('appruve' == $_POST['type']) {
                     $criteria->condition = 't.idArticle = :idArticle AND moderationAppruv = 0 AND deleted = 0';
                 }
             }
         }
         $criteria->params = array(':idArticle' => $idArticle);
         $model = Articles::model()->find($criteria);
         // Теги
         $model['tagArray'] = AuxiliaryFunctions::getTagsList($model->tagstoarticles);
         // Счетчик просмотров статьи
         if ($model->idUser != Yii::app()->user->id && 'Admins' != Yii::app()->session->get("typeAuthorize")) {
             $model->saveCounters(array('numberOfViews' => 1));
         }
         if (isset($_GET['idMenu'])) {
             // Категории раздела
             $this->_listCategory = Categorys::getAllCategories($_GET['idMenu'], true, true);
         }
         $bookmarks = Bookmarks::model()->find(array('select' => 'idBookmarks', 'condition' => 'idUser = :idUser AND idArticle = :idArticle AND idMenu = :idMenu AND idCategory = :idCategory', 'params' => array(':idUser' => Yii::app()->user->id, ':idArticle' => $model->idArticle, ':idMenu' => $model->idMenu, ':idCategory' => $model->idCategory)));
         if (Yii::app()->request->isAjaxRequest) {
             $articlePopup = $this->renderPartial('view_article', array('model' => $model, 'commentsDataProvider' => $commentsDataProvider, 'modelComment' => new Comments(), 'idBookmarks' => null === $bookmarks ? null : $bookmarks->idBookmarks), true);
             echo CJSON::encode(array('popup' => $articlePopup));
             exit;
         }
         $this->breadcrumbs = AuxiliaryFunctions::fillingBreadcrumbs($idArticle, 'article');
         $this->render('view_article', array('model' => $model, 'commentsDataProvider' => $commentsDataProvider, 'modelComment' => new Comments(), 'idBookmarks' => null === $bookmarks ? null : $bookmarks->idBookmarks));
     }
 }
 public function actionSave_article()
 {
     $idArticle = null;
     // Проверки на доступ к странице
     if (Yii::app()->user->isGuest) {
         $this->redirect($this->createAbsoluteUrl('default/index'));
     }
     if (isset($_POST['cancel'])) {
         $this->redirect($this->createAbsoluteUrl('default/list_articles', $_GET));
     }
     if (isset($_POST['delete'])) {
         $this->actionDelete_article();
         $this->redirect($this->createAbsoluteUrl('default/list_articles', $_GET));
     }
     // Автокомплитер тегов
     if (isset($_GET['q'])) {
         $lastTag = end(explode(",", $_GET['q']));
         $criteria = new CDbCriteria();
         $criteria->condition = 'textTag LIKE :tag';
         $criteria->params = array(':tag' => '%' . trim(htmlspecialchars($lastTag)) . '%');
         if (isset($_GET['limit']) && is_numeric($_GET['limit'])) {
             $criteria->limit = $_GET['limit'];
         }
         $tags = Tags::model()->findAll($criteria);
         if ($tags) {
             $resStr = '';
             foreach ($tags as $tag) {
                 $resStr .= $tag->textTag . "\n";
             }
             echo $resStr;
         }
         exit;
     }
     // Редактирование или добавление новой
     if (isset($_GET['idArticle'])) {
         $idArticle = $_GET['idArticle'];
         $model = Articles::model()->findByPk($_GET['idArticle']);
         $model['tagArray'] = AuxiliaryFunctions::getTagsList($model->tagstoarticles, false);
     } else {
         $model = new Articles('create');
     }
     // Нажата кнопка "Редактировать" или "Добавить"
     if (isset($_POST['Articles'])) {
         $oldFile = null;
         $oldFile = $model->photo;
         $fileName = null;
         // Генерим имя фото
         if ('' != $_FILES['Articles']['name']['image']) {
             $fileName = AuxiliaryFunctions::getUniquNamePhoto($_FILES['Articles']['name']['image']);
             $_POST['Articles']['photo'] = $fileName;
             $oldFile = $model->photo;
         }
         $model->attributes = $_POST['Articles'];
         if (empty($model->idUser)) {
             $model->idUser = Users::getIdUserForAdmin();
         }
         if ($model->validate()) {
             if ($model->save()) {
                 $idArticle = $model->idArticle;
                 if ($fileName) {
                     AuxiliaryFunctions::savePhoto($model, $fileName, $oldFile);
                 }
                 // Теги для статьи
                 if (isset($_POST['textTag'])) {
                     $tagsArray = explode(",", $_POST['textTag']);
                     $idArray = array();
                     foreach ($tagsArray as $item) {
                         $tagId = null;
                         if (!empty($item)) {
                             $item = trim(htmlspecialchars($item));
                         } else {
                             continue;
                         }
                         $tagResult = Tags::model()->findByAttributes(array('textTag' => $item));
                         if (null === $tagResult) {
                             $newTag = new Tags();
                             $newTag->textTag = $item;
                             if ($newTag->save()) {
                                 $tagId = $newTag->idTag;
                             }
                         } else {
                             $tagId = $tagResult->idTag;
                         }
                         $idArray[] = $tagId;
                     }
                     if ($idArray) {
                         foreach ($idArray as $item) {
                             $item = (int) $item;
                             $idArticle = (int) $idArticle;
                             if (!TagsToArticles::model()->exists('idArticle = :idArticle AND idTag = :idTag', array(':idArticle' => $idArticle, ':idTag' => $item))) {
                                 $newTags2Art = new TagsToArticles();
                                 $newTags2Art->idArticle = $idArticle;
                                 $newTags2Art->idTag = (int) $item;
                                 $newTags2Art->save();
                             }
                         }
                     }
                 }
                 $this->redirect($this->createAbsoluteUrl('default/list_articles', $_GET));
             }
         }
     }
     $menus = Mainmenu::model()->getDropDownMenu();
     $idMenu = !empty($model->idMenu) ? $model->idMenu : key($menus);
     $category1 = array('' => 'Без категории');
     $category2 = Categorys::getAllCategories($idMenu);
     $category = $category1 + $category2;
     $tags = new Tags();
     $this->render('//articles/save_article', array('model' => $model, 'menus' => $menus, 'category' => $category, 'tags' => $tags));
 }