protected function _insertIntoIndex(XenForo_Search_Indexer $indexer, array $data, array $parentData = null) { $message = $data['message']; $message = trim(XenForo_Helper_String::stripQuotes($message, 0)); $tagTexts = Tinhte_XenTag_Integration::parseHashtags($message); if (!empty($tagTexts)) { $extraMetadata = array(); $extraMetadata[Tinhte_XenTag_Constants::SEARCH_METADATA_TAGS] = Tinhte_XenTag_Helper::getSafeTagsTextArrayForSearch($tagTexts); $indexer = new Tinhte_XenTag_XenForo_Search_Indexer($indexer, $extraMetadata); } $result = parent::_insertIntoIndex($indexer, $data, $parentData); }
protected function _setInternal($table, $field, $newValue, $forceSet = false) { if ($table === 'xf_post' && $field === 'message' && Tinhte_XenTag_Option::get('useHashtag')) { $tagTexts = Tinhte_XenTag_Integration::parseHashtags($newValue, true); if ($this->_tagger === null) { /** @var XenForo_Model_Tag $tagModel */ $tagModel = $this->getModelFromCache('XenForo_Model_Tag'); $this->_tagger = $tagModel->getTagger('post'); if ($this->isUpdate()) { $this->_tagger->setPermissionsFromContext($this->getDiscussionData(), $this->_Tinhte_XenTag_getForumInfo()); $this->_tagger->setContent($this->get('post_id'), false); } else { $this->_tagger->setPermissionsFromContext($this->_Tinhte_XenTag_getForumInfo()); } } $this->_tagger->setTags($tagTexts); $errors = $this->_tagger->getErrors(); if (!empty($errors)) { $this->mergeErrors($errors); } } parent::_setInternal($table, $field, $newValue, $forceSet); }
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; }