00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 include_once( 'kernel/classes/ezpersistentobject.php' );
00042
00043 class eZURLObjectLink extends eZPersistentObject
00044 {
00045
00046
00047
00048 function eZURLObjectLink( $row )
00049 {
00050 $this->eZPersistentObject( $row );
00051 }
00052
00053 function definition()
00054 {
00055 return array( 'fields' => array( 'url_id' => array( 'name' => 'URLID',
00056 'datatype' => 'integer',
00057 'default' => 0,
00058 'required' => true,
00059 'foreign_class' => 'eZURL',
00060 'foreign_attribute' => 'id',
00061 'multiplicity' => '1..*' ),
00062 'contentobject_attribute_id' => array( 'name' => 'ContentObjectAttributeID',
00063 'datatype' => 'integer',
00064 'default' => 0,
00065 'required' => true,
00066 'foreign_class' => 'eZContentObjectAttribute',
00067 'foreign_attribute' => 'id',
00068 'multiplicity' => '1..*' ),
00069 'contentobject_attribute_version' => array( 'name' => 'ContentObjectAttributeVersion',
00070 'datatype' => 'integer',
00071 'default' => 0,
00072 'short_name' => 'contentobject_attr_version',
00073 'required' => true ) ),
00074 'keys' => array( 'url_id', 'contentobject_attribute_id', 'contentobject_attribute_version' ),
00075 'sort' => array( 'url_id' => 'asc' ),
00076 'class_name' => 'eZURLObjectLink',
00077 'name' => 'ezurl_object_link' );
00078 }
00079
00080
00081
00082
00083 function create( $urlID, $contentObjectAttributeID, $contentObjectAttributeVersion )
00084 {
00085 $row = array(
00086 'url_id' => $urlID,
00087 'contentobject_attribute_id' => $contentObjectAttributeID,
00088 'contentobject_attribute_version' => $contentObjectAttributeVersion );
00089 return new eZURLObjectLink( $row );
00090 }
00091
00092
00093
00094
00095
00096 function fetch( $urlID, $contentObjectAttributeID, $contentObjectAttributeVersion, $asObject = true )
00097 {
00098 return eZPersistentObject::fetchObject( eZURLObjectLink::definition(),
00099 null,
00100 array( 'url_id' => $urlID,
00101 'contentobject_attribute_id' => $contentObjectAttributeID,
00102 'contentobject_attribute_version' => $contentObjectAttributeVersion ),
00103 $asObject );
00104 }
00105
00106
00107
00108
00109
00110 function hasObjectLinkList( $urlID )
00111 {
00112 return ( eZURLObjectLink::fetchObjectVersionCount( $urlID ) > 0 );
00113 }
00114
00115
00116
00117
00118
00119 function &fetchObjectVersionList( $urlID, $parameters = false )
00120 {
00121 $objectVersionList = array();
00122 $urlObjectLinkList = eZPersistentObject::fetchObjectList( eZURLObjectLink::definition(),
00123 null,
00124 array( 'url_id' => $urlID ),
00125 null,
00126 $parameters,
00127 true );
00128 $storedVersionList = array();
00129 foreach ( array_keys( $urlObjectLinkList ) as $key )
00130 {
00131 $urlObjectLink =& $urlObjectLinkList[$key];
00132 $objectAttributeID = $urlObjectLink->attribute( 'contentobject_attribute_id' );
00133 $objectAttributeVersion = $urlObjectLink->attribute( 'contentobject_attribute_version' );
00134 $objectAttribute = eZContentObjectAttribute::fetch( $objectAttributeID, $objectAttributeVersion );
00135 if ( $objectAttribute )
00136 {
00137 $objectID = $objectAttribute->attribute( 'contentobject_id' );
00138 $objectVersion = $objectAttribute->attribute( 'version' );
00139 $object =& eZContentObject::fetch( $objectID );
00140 if ( $object )
00141 {
00142 $versionObject =& $object->version( $objectVersion );
00143 $versionID = $versionObject->attribute( 'id' );
00144 if ( !in_array( $versionID, $storedVersionList ) )
00145 {
00146 $objectVersionList[] =& $versionObject;
00147 $storedVersionList[] = $versionID;
00148 }
00149 }
00150 }
00151 }
00152 return $objectVersionList;
00153 }
00154
00155
00156
00157
00158
00159 function fetchObjectVersionCount( $urlID )
00160 {
00161 $result = eZPersistentObject::fetchObjectList( eZURLObjectLink::definition(),
00162 array(),
00163 array( 'url_id' => $urlID ),
00164 false,
00165 null,
00166 false,
00167 false,
00168 array( array( 'operation' => 'count( * )',
00169 'name' => 'count' ) ) );
00170 return $result[0]['count'];
00171 }
00172
00173
00174
00175
00176
00177
00178 function removeURLlinkList( $contentObjectAttributeID, $contentObjectAttributeVersion )
00179 {
00180 $conditions = array( 'contentobject_attribute_id' => $contentObjectAttributeID );
00181 if ( $contentObjectAttributeVersion !== false )
00182 $conditions['contentobject_attribute_version'] = $contentObjectAttributeVersion;
00183 eZPersistentObject::removeObject( eZURLObjectLink::definition(),
00184 $conditions );
00185 }
00186
00187
00188
00189
00190
00191
00192
00193 function fetchLinkList( $contentObjectAttributeID, $contentObjectAttributeVersion, $asObject = true )
00194 {
00195 $linkList = array();
00196 $conditions = array( 'contentobject_attribute_id' => $contentObjectAttributeID );
00197 if ( $contentObjectAttributeVersion !== false )
00198 $conditions['contentobject_attribute_version'] = $contentObjectAttributeVersion;
00199 $urlObjectLinkList = eZPersistentObject::fetchObjectList( eZURLObjectLink::definition(),
00200 null,
00201 $conditions,
00202 null,
00203 null,
00204 $asObject );
00205 foreach ( array_keys( $urlObjectLinkList ) as $key )
00206 {
00207 $urlObjectLink =& $urlObjectLinkList[$key];
00208 if ( $asObject )
00209 {
00210 $linkID = $urlObjectLink->attribute( 'url_id' );
00211 $link = eZURL::fetch( $linkID );
00212 $linkList[] =& $link;
00213 }
00214 else
00215 {
00216 $linkID = $urlObjectLink['url_id'];
00217 $linkList[] = $linkID;
00218 }
00219 }
00220 return $linkList;
00221 }
00222
00223
00224
00225
00226
00227 function clearCacheForObjectLink( $urlID )
00228 {
00229 include_once( "kernel/classes/ezcontentcachemanager.php" );
00230 $urlObjectLinkList = eZPersistentObject::fetchObjectList( eZURLObjectLink::definition(),
00231 null,
00232 array( 'url_id' => $urlID ),
00233 null,
00234 null,
00235 true );
00236 foreach ( $urlObjectLinkList as $urlObjectLink )
00237 {
00238 $objectAttributeID = $urlObjectLink->attribute( 'contentobject_attribute_id' );
00239 $objectAttributeVersion = $urlObjectLink->attribute( 'contentobject_attribute_version' );
00240 $objectAttribute = eZContentObjectAttribute::fetch( $objectAttributeID, $objectAttributeVersion );
00241 if ( $objectAttribute )
00242 {
00243 $objectID = $objectAttribute->attribute( 'contentobject_id' );
00244 $objectVersion = $objectAttribute->attribute( 'version' );
00245 eZContentCacheManager::clearContentCacheIfNeeded( $objectID, $objectVersion );
00246 }
00247 }
00248 }
00249
00250
00251
00252 var $URLID;
00253 var $ContentObjectAttributeID;
00254 var $ContentObjectAttributeVersion;
00255 }
00256 ?>