Esempio n. 1
0
 /**
  * 批量添加话题
  *
  * @param array $dmArray
  */
 public function addTags($dmArray)
 {
     if (!is_array($dmArray) || !$dmArray) {
         return false;
     }
     $_tagsInfo = $this->_getTagDs()->getTagsByNames(array_keys($dmArray));
     $tagsKeys = $tagsInfo = array();
     foreach ($_tagsInfo as $k => $tag) {
         $tagsKeys[] = strtolower($k);
         $k = strtolower($k);
         $tagsInfo[$k] = $tag;
     }
     $dmArrays = array();
     foreach ($dmArray as $k => $dm) {
         $k = strtolower($k);
         $dmArrays[$k] = $dm;
     }
     $tagRecords = $updateTagDms = $relationDms = $attentionTags = array();
     foreach ($dmArrays as $k => $dm) {
         $k = strtolower(trim($k));
         if (!$k || !$dm instanceof PwTagDm) {
             continue;
         }
         $time = Pw::getTime();
         $dm->setCreatedTime($time);
         $dm->setName($k);
         if (in_array($k, $tagsKeys)) {
             $dm->tag_id = $tagsInfo[$k]['parent_tag_id'] ? $tagsInfo[$k]['parent_tag_id'] : $tagsInfo[$k]['tag_id'];
             $dm->setContentTagId($tagsInfo[$k]['tag_id']);
             $dm->setIfhot($tagsInfo[$k]['ifhot']);
             $updateTagDm = new PwTagDm($dm->tag_id);
             $updateTagDm->addContentCount(1);
             $updateTagDms[] = $updateTagDm;
         } else {
             $dm->setContentCount(1);
             $result = $this->_getTagDs()->addTag($dm);
             if ($result instanceof PwError) {
                 return $result;
             }
             $dm->tag_id = $result;
             $dm->setContentTagId($dm->tag_id);
         }
         if ($dm->getIfhot()) {
             $tagRecords[] = array('tag_id' => $dm->tag_id, 'update_time' => $time);
         }
         $relationDms[] = $dm;
         //	$this->addAttention($dm->getCreateUid(),$dm->tag_id);
     }
     $this->_getTagDs()->batchAddRelation($relationDms);
     $this->_getTagDs()->batchAddTagRecord($tagRecords);
     $updateTagDms && $this->_getTagDs()->batchUpdate($updateTagDms);
     return $dm->tag_id;
 }
 public function run($ids)
 {
     $ds = Wekit::load('tag.PwTag');
     $tags = $ds->fetchByTypeIdAndParamIds(PwTag::TYPE_THREAD_TOPIC, $ids);
     $tagIds = array_keys($tags);
     if (!$tagIds) {
         return false;
     }
     $ds->batchDeleteRelation(PwTag::TYPE_THREAD_TOPIC, $ids);
     Wind::import('SRV:tag.dm.PwTagDm');
     $dm = new PwTagDm();
     $dm->addContentCount(-1);
     $ds->updateTags($tagIds, $dm);
 }
Esempio n. 3
0
 private function _mergeTags($fromTagId, $toTagId)
 {
     $fromTag = $this->_getTagDs()->getTag($fromTagId);
     if ($fromTag['parent_tag_id']) {
         return false;
     }
     //from
     $dm = new PwTagDm($fromTagId);
     $dm->setParent($toTagId)->setContentCount(0)->setAttentionCount(0);
     $this->_getTagDs()->updateTag($dm);
     //to
     $dm = new PwTagDm($toTagId);
     $dm->addContentCount($fromTag['content_count'])->addAttentionCount($fromTag['attention_count']);
     $this->_getTagDs()->updateTag($dm);
     //update content relation
     $this->_getTagDs()->updateTagRelationByTagId($fromTagId, $toTagId);
     //update update log
     $this->_getTagDs()->updateTagRecordByTagId($fromTagId, $toTagId);
 }