public function Tinhte_XenTag_actionSave(XenForo_DataWriter_Discussion_Thread $dw) { /* @var $tagModel Tinhte_XenTag_Model_Tag */ $tagModel = $this->getModelFromCache('Tinhte_XenTag_Model_Tag'); $forum = $dw->getExtraData(XenForo_DataWriter_Discussion_Thread::DATA_FORUM); $thread = $dw->getMergedData(); if (!empty($forum) and $tagModel->canTagThread($thread, $forum)) { $tags = $tagModel->processInput($this->_input); if ($tags !== false) { $dw->Tinhte_XenTag_setTags($tags); } } // sondh@2012-08-11 // just to be safe... unset($GLOBALS[Tinhte_XenTag_Constants::GLOBALS_CONTROLLERPUBLIC_THREAD_SAVE]); }
public function Tinhte_XenTag_actionAddThread(XenForo_DataWriter_Discussion_Thread $dw) { /* @var $tagModel Tinhte_XenTag_Model_Tag */ $tagModel = $this->getModelFromCache('Tinhte_XenTag_Model_Tag'); $forum = $dw->Tinhte_XenTag_getForumData(); if ($tagModel->canTagThread(false, $forum)) { // only save tags if this user has the permission $tags = $tagModel->processInput($this->_input); if ($tags !== false) { $dw->Tinhte_XenTag_setTags($tags); } } $postDw = $dw->getFirstMessageDw(); $postDw->setExtraData(Tinhte_XenTag_XenForo_DataWriter_DiscussionMessage_Post::DATA_SKIP_UPDATE_THREAD_TAGS, true); $dw->setExtraData(Tinhte_XenTag_XenForo_DataWriter_Discussion_Thread_Base::DATA_UPDATE_TAGS_FROM_POST, true); // sondh@2012-08-11 // just to be safe... unset($GLOBALS[Tinhte_XenTag_Constants::GLOBALS_CONTROLLERPUBLIC_FORUM_ADD_THREAD]); }
public static function updateThreadDwFromPostDw(XenForo_DataWriter_Discussion_Thread $threadDw, XenForo_DataWriter_DiscussionMessage_Post $postDw) { if (!Tinhte_XenTag_Option::get('tagThreadWithHashtags')) { return false; } $message = $postDw->get('message'); $tagTexts = Tinhte_XenTag_Integration::parseHashtags($message); $threadTags = $threadDw->Tinhte_XenTag_getTags(); $threadTagTexts = Tinhte_XenTag_Helper::getTextsFromTagsOrTexts($threadTags); $threadSafes = Tinhte_XenTag_Helper::getSafeTagsTextArrayForSearch($threadTagTexts); $isChanged = false; foreach ($tagTexts as $tagText) { $safe = Tinhte_XenTag_Helper::getSafeTagTextForSearch($tagText); if (!in_array($safe, $threadSafes)) { $threadTags[] = $tagText; $threadSafes[] = $safe; $isChanged = true; } } if ($isChanged) { $threadDw->Tinhte_XenTag_setTags($threadTags); return true; } return false; }