Exemplo n.º 1
0
 /**
  * tags数据列表
  */
 public function actionPost($name)
 {
     $tagName = CHtml::encode(strip_tags(urldecode($name)));
     $tagModel = new Post2tags();
     $post2TagsCriteria = new CDbCriteria();
     if ($tagName) {
         $post2TagsCriteria->addCondition("tag_name = :tagName");
         $post2TagsCriteria->params[':tagName'] = $tagName;
     }
     $post2TagsCriteria->order = 't.id DESC';
     $post2TagsCriteria->with = array('post');
     $post2TagsCount = $tagModel->count($post2TagsCriteria);
     $post2TagsPages = new CPagination($post2TagsCount);
     $post2TagsPages->pageSize = 30;
     $pageParams = XUtils::buildCondition($_GET, array('name'));
     $post2TagsPages->params = is_array($pageParams) ? $pageParams : array();
     $post2TagsCriteria->limit = $post2TagsPages->pageSize;
     $post2TagsCriteria->offset = $post2TagsPages->currentPage * $post2TagsPages->pageSize;
     $data['bagecmsDataList'] = $tagModel->findAll($post2TagsCriteria);
     $data['bagecmsPagebar'] = $post2TagsPages;
     $data['tagName'] = $tagName;
     $this->_seoTitle = 'Tag-' . $tagName;
     $this->render('post2tags', $data);
 }
Exemplo n.º 2
0
 /**
  * tags 更新操作 parent:tags
  *
  * @param $tags
  * @param $titleId
  * @param $model
  * @param $jumpUri
  */
 protected function _tagsUpdate($tags = '', $title_id = 0, $catalog_id = 0, $redirect)
 {
     $tagsRelation = new Post2tags();
     $tagsRelationArray = $tagsRelation->findAll('title_id=:title_id', array('title_id' => $title_id));
     $tagsArray = array();
     foreach ((array) $tagsRelationArray as $row) {
         $tagsArray[] = $row['tag_name'];
     }
     $titleTags = implode(',', $tagsArray);
     $explodeTags = array_unique(explode(',', str_replace(array(' ', ','), ',', $tags)));
     $tagCount = 0;
     foreach ((array) $explodeTags as $value) {
         $tagCount++;
         if ($tagCount >= 10) {
             unset($explodeTags);
             break;
         }
         $TagsArrayNew[] = $value;
         if (!in_array($value, $tagsArray)) {
             $dao = new PostTags();
             $get_data = $dao->find('tag_name=:tag_name', array('tag_name' => $value));
             if (empty($get_data)) {
                 $dao->catalog_id = $catalog_id;
                 $dao->data_count = 1;
                 $dao->tag_name = $value;
                 $dao->create_time = time();
                 $id = $dao->save();
             } else {
                 $get_data->data_count = $get_data->data_count + 1;
                 $get_data->save();
             }
             //写入关联
             self::_tagsRelation($value, $title_id);
         }
     }
     foreach ($tagsArray as $tagName) {
         if (!in_array($tagName, $TagsArrayNew)) {
             $getTagsCount = Post2tags::model()->count('title_id!=:title_id AND tag_name=:tag_name', array('title_id' => $title_id, 'tag_name' => $tagName));
             if ($getTagsCount) {
                 Yii::app()->db->createCommand("UPDATE {{news_tags}} SET data_count=data_count+1 WHERE tag_name='{$tagName}'")->execute();
             } else {
                 PostTags::model()->deleteAll('tag_name=:tag_name', array('tag_name' => $tagName));
             }
             Post2tags::model()->deleteAll('tag_name=:tag_name AND title_id=:title_id', array('tag_name' => $tagName, 'title_id' => $title_id));
         }
     }
 }