function deleteStoredObjectAttribute($contentObjectAttribute, $version = null) { $contentObjectAttributeID = $contentObjectAttribute->attribute("id"); $db = eZDB::instance(); /* First we remove the link between the keyword and the object * attribute to be removed */ if ($version == null) { eZPersistentObject::removeObject(eZURLObjectLink::definition(), array('contentobject_attribute_id' => $contentObjectAttributeID)); } else { eZPersistentObject::removeObject(eZURLObjectLink::definition(), array('contentobject_attribute_id' => $contentObjectAttributeID, 'contentobject_attribute_version' => $version)); } /* Here we figure out which which URLs are not in use at all */ if ($db->databaseName() == 'oracle') { $res = $db->arrayQuery("SELECT DISTINCT id\n FROM ezurl, ezurl_object_link\n WHERE ezurl.id = ezurl_object_link.url_id(+)\n AND url_id IS NULL"); } else { $res = $db->arrayQuery(" SELECT DISTINCT id\n FROM ezurl LEFT JOIN ezurl_object_link ON (ezurl.id = ezurl_object_link.url_id)\n WHERE url_id IS NULL"); } /* And if there are some, we delete them */ if (count($res)) { $unusedUrlIDs = array(); foreach ($res as $record) { $unusedUrlIDs[] = $record['id']; } $unusedUrlIDString = implode(', ', $unusedUrlIDs); $db->query("DELETE FROM ezurl WHERE id IN ({$unusedUrlIDString})"); } }
static function handleList( $parameters = array(), $asCount = false ) { $parameters = array_merge( array( 'as_object' => true, 'is_valid' => null, 'offset' => false, 'limit' => false, 'only_published' => false ), $parameters ); $asObject = $parameters['as_object']; $isValid = $parameters['is_valid']; $offset = $parameters['offset']; $limit = $parameters['limit']; $onlyPublished = $parameters['only_published']; $limitArray = null; if ( !$asCount and $offset !== false and $limit !== false ) $limitArray = array( 'offset' => $offset, 'length' => $limit ); $conditions = array(); if( $isValid === false ) $isValid = 0; if ( $isValid !== null ) { $conditions['is_valid'] = $isValid; } if ( count( $conditions ) == 0 ) $conditions = null; if ( $onlyPublished ) // Only fetch published urls { $conditionQuery = ""; if ( $isValid !== null ) { $isValid = (int) $isValid; $conditionQuery = " AND ezurl.is_valid=$isValid "; } $db = eZDB::instance(); $cObjAttrVersionColumn = eZPersistentObject::getShortAttributeName( $db, eZURLObjectLink::definition(), 'contentobject_attribute_version' ); if ( $asCount ) { $urls = $db->arrayQuery( "SELECT count( DISTINCT ezurl.id ) AS count FROM ezurl, ezurl_object_link, ezcontentobject_attribute, ezcontentobject_version WHERE ezurl.id = ezurl_object_link.url_id AND ezurl_object_link.contentobject_attribute_id = ezcontentobject_attribute.id AND ezurl_object_link.$cObjAttrVersionColumn = ezcontentobject_attribute.version AND ezcontentobject_attribute.contentobject_id = ezcontentobject_version.contentobject_id AND ezcontentobject_attribute.version = ezcontentobject_version.version AND ezcontentobject_version.status = " . eZContentObjectVersion::STATUS_PUBLISHED . " $conditionQuery" ); return $urls[0]['count']; } else { $query = "SELECT DISTINCT ezurl.* FROM ezurl, ezurl_object_link, ezcontentobject_attribute, ezcontentobject_version WHERE ezurl.id = ezurl_object_link.url_id AND ezurl_object_link.contentobject_attribute_id = ezcontentobject_attribute.id AND ezurl_object_link.$cObjAttrVersionColumn = ezcontentobject_attribute.version AND ezcontentobject_attribute.contentobject_id = ezcontentobject_version.contentobject_id AND ezcontentobject_attribute.version = ezcontentobject_version.version AND ezcontentobject_version.status = " . eZContentObjectVersion::STATUS_PUBLISHED . " $conditionQuery"; if ( !$offset && !$limit ) { $urlArray = $db->arrayQuery( $query ); } else { $urlArray = $db->arrayQuery( $query, array( 'offset' => $offset, 'limit' => $limit ) ); } if ( $asObject ) { $urls = array(); foreach ( $urlArray as $url ) { $urls[] = new eZURL( $url ); } return $urls; } else $urls = $urlArray; return $urls; } } else { if ( $asCount ) { $urls = eZPersistentObject::fetchObjectList( eZURL::definition(), array(), $conditions, false, null, false, false, array( array( 'operation' => 'count( id )', 'name' => 'count' ) ) ); return $urls[0]['count']; } else { return eZPersistentObject::fetchObjectList( eZURL::definition(), null, $conditions, null, $limitArray, $asObject ); } } }
static function clearCacheForObjectLink($urlID) { $urlObjectLinkList = eZPersistentObject::fetchObjectList(eZURLObjectLink::definition(), null, array('url_id' => $urlID), null, null, true); foreach ($urlObjectLinkList as $urlObjectLink) { $objectAttributeID = $urlObjectLink->attribute('contentobject_attribute_id'); $objectAttributeVersion = $urlObjectLink->attribute('contentobject_attribute_version'); $objectAttribute = eZContentObjectAttribute::fetch($objectAttributeID, $objectAttributeVersion); if ($objectAttribute) { $objectID = $objectAttribute->attribute('contentobject_id'); $objectVersion = $objectAttribute->attribute('version'); eZContentCacheManager::clearContentCacheIfNeeded($objectID, $objectVersion); } } }