/** * Extracts data to be indexed from the tag * * @param eZTagsObject $tag * @param array $tagIDs * @param array $keywords * @param bool $indexParentTags * @param bool $includeSynonyms */ private function processTag(eZTagsObject $tag, array &$tagIDs, array &$keywords, $indexParentTags = false, $includeSynonyms = false) { if (!$this->indexSynonyms && $tag->isSynonym()) { $tag = $tag->getMainTag(); } //get keyword in content's locale $keyword = $tag->getKeyword($this->ContentObjectAttribute->attribute('language_code')); if (!$keyword) { //fall back to main language /** @var eZContentLanguage $mainLanguage */ $mainLanguage = eZContentLanguage::fetch($tag->attribute('main_language_id')); if ($mainLanguage instanceof eZContentLanguage) { $keyword = $tag->getKeyword($mainLanguage->attribute('locale')); } } if ($keyword) { $tagIDs[] = (int) $tag->attribute('id'); $keywords[] = $keyword; } if ($indexParentTags) { $parentTags = $tag->getPath(true); foreach ($parentTags as $parentTag) { if ($parentTag instanceof eZTagsObject) { $this->processTag($parentTag, $tagIDs, $keywords); } } } if ($this->indexSynonyms && $includeSynonyms) { foreach ($tag->getSynonyms() as $synonym) { if ($synonym instanceof eZTagsObject) { $this->processTag($synonym, $tagIDs, $keywords); } } } }