/** * Delete stored object attribute * * @param eZContentObjectAttribute $contentObjectAttribute * @param eZContentObjectVersion $version */ public function deleteStoredObjectAttribute($contentObjectAttribute, $version = null) { $contentObjectAttributeID = $contentObjectAttribute->attribute('id'); eZTagsAttributeLinkObject::removeByAttribute($contentObjectAttributeID, $version); }
} if ($http->hasPostVariable('NoButton')) { return $Module->redirectToView('id', array($tagID)); } if ($http->hasPostVariable('YesButton')) { $db = eZDB::instance(); $db->begin(); $parentTag = $tag->getParent(); if ($parentTag instanceof eZTagsObject) { $parentTag->updateModified(); } $mainTagID = $tag->attribute('main_tag_id'); $tag->registerSearchObjects(); if ($http->hasPostVariable('TransferObjectsToMainTag')) { foreach ($tag->getTagAttributeLinks() as $tagAttributeLink) { $link = eZTagsAttributeLinkObject::fetchByObjectAttributeAndKeywordID($tagAttributeLink->attribute('objectattribute_id'), $tagAttributeLink->attribute('objectattribute_version'), $tagAttributeLink->attribute('object_id'), $mainTagID); if (!$link instanceof eZTagsAttributeLinkObject) { $tagAttributeLink->setAttribute('keyword_id', $mainTagID); $tagAttributeLink->store(); } else { $tagAttributeLink->remove(); } } } else { foreach ($tag->getTagAttributeLinks() as $tagAttributeLink) { $tagAttributeLink->remove(); } } $tag->remove(); $db->commit(); return $Module->redirectToView('id', array($mainTagID));
/** * Links the content object attribute and tag * * @static * * @param eZContentObjectAttribute $attribute * @param eZTagsObject $tagObject * @param string $keyword * @param string $locale */ private static function linkTag(eZContentObjectAttribute $attribute, eZTagsObject $tagObject, $keyword, $locale, $priority) { $languageID = eZContentLanguage::idByLocale($locale); if ($languageID === false) { return; } if ($locale == $attribute->attribute('language_code')) { if (!$tagObject->hasTranslation($locale)) { $tagKeywordObject = new eZTagsKeyword(array('keyword_id' => $tagObject->attribute('id'), 'language_id' => $languageID, 'keyword' => $keyword, 'locale' => $locale, 'status' => eZTagsKeyword::STATUS_PUBLISHED)); $tagKeywordObject->store(); $tagObject->updateLanguageMask(); } } $linkObject = new eZTagsAttributeLinkObject(array('keyword_id' => $tagObject->attribute('id'), 'objectattribute_id' => $attribute->attribute('id'), 'objectattribute_version' => $attribute->attribute('version'), 'object_id' => $attribute->attribute('contentobject_id'), 'priority' => $priority)); $linkObject->store(); }
/** * Returns all links to objects for this tag * * @return array */ function getTagAttributeLinks() { return eZTagsAttributeLinkObject::fetchByTagID($this->attribute('id')); }
/** * Transfers all objects related to this tag, to another tag * * @param eZTagsObject|int $destination */ public function transferObjectsToAnotherTag($destination) { if (!$destination instanceof self) { $destination = self::fetchWithMainTranslation((int) $destination); if (!$destination instanceof self) { return; } } foreach ($this->getTagAttributeLinks() as $tagAttributeLink) { $link = eZTagsAttributeLinkObject::fetchByObjectAttributeAndKeywordID($tagAttributeLink->attribute('objectattribute_id'), $tagAttributeLink->attribute('objectattribute_version'), $tagAttributeLink->attribute('object_id'), $destination->attribute('id')); if (!$link instanceof eZTagsAttributeLinkObject) { $tagAttributeLink->setAttribute('keyword_id', $destination->attribute('id')); $tagAttributeLink->store(); } else { $tagAttributeLink->remove(); } } }