/**
  * 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;
 }
Ejemplo n.º 2
0
 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();
     }
 }