/** * 批量添加话题 * * @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); }
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); }