/** * Almost identical with the one in extended class, just injects * call for uniqness validation method * * @param unknown_type $http * @param unknown_type $base * @param unknown_type $contentObjectAttribute * @return unknown */ function validateObjectAttributeHTTPInput($http, $base, $contentObjectAttribute) { if ($http->hasPostVariable($base . "_ezurl_url_" . $contentObjectAttribute->attribute("id")) and $http->hasPostVariable($base . "_ezurl_text_" . $contentObjectAttribute->attribute("id"))) { $url = $http->PostVariable($base . "_ezurl_url_" . $contentObjectAttribute->attribute("id")); $text = $http->PostVariable($base . "_ezurl_text_" . $contentObjectAttribute->attribute("id")); if ($contentObjectAttribute->validateIsRequired()) { if ($url == "" or $text == "") { $contentObjectAttribute->setValidationError(ezpI18n::tr('kernel/classes/datatypes', 'Input required.')); return eZInputValidator::STATE_INVALID; } } return self::validateUniqueURLHTTPInput($url, $contentObjectAttribute); // Remove all url-object links to this attribute. eZURLObjectLink::removeURLlinkList($contentObjectAttribute->attribute("id"), $contentObjectAttribute->attribute('version')); } return eZInputValidator::STATE_ACCEPTED; }
function deleteStoredObjectAttribute($contentObjectAttribute, $version = null) { $contentObjectAttributeID = $contentObjectAttribute->attribute('id'); $urls = array(); if ($version == null) { $urls = eZURLObjectLink::fetchLinkList($contentObjectAttributeID, false, false); eZURLObjectLink::removeURLlinkList($contentObjectAttributeID, false); } else { $urls = eZURLObjectLink::fetchLinkList($contentObjectAttributeID, $version, false); eZURLObjectLink::removeURLlinkList($contentObjectAttributeID, $version); } $urls = array_unique($urls); $db = eZDB::instance(); $db->begin(); foreach ($urls as $urlID) { if (!eZURLObjectLink::hasObjectLinkList($urlID)) { eZURL::removeByID($urlID); } } $db->commit(); }
function postStore($objectAttribute) { // Update url-object link $urlValue = $objectAttribute->content(); if (trim($urlValue) != '') { $urlID = eZURL::registerURL($urlValue); $objectAttributeID = $objectAttribute->attribute('id'); $objectAttributeVersion = $objectAttribute->attribute('version'); $db = eZDB::instance(); $db->begin(); $objectLinkList = eZURLObjectLink::fetchLinkObjectList($objectAttributeID, $objectAttributeVersion); // In order not to have duplicated links, delete existing ones that have been created during the version creation process // and create a clean one (we can't update url_id since there's no primary key). This fixes EZP-20988 if (!empty($objectLinkList)) { eZURLObjectLink::removeURLlinkList($objectAttributeID, $objectAttributeVersion); } $linkObjectLink = eZURLObjectLink::create($urlID, $objectAttributeID, $objectAttributeVersion); $linkObjectLink->store(); $db->commit(); } }