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 include_once( "lib/ezdb/classes/ezdb.php" );
00037 include_once( "kernel/classes/ezpersistentobject.php" );
00038 include_once( "kernel/classes/ezcontentclassgroup.php" );
00039
00040 class eZContentClassClassGroup extends eZPersistentObject
00041 {
00042 function eZContentClassClassGroup( $row )
00043 {
00044 $this->eZPersistentObject( $row );
00045 }
00046
00047 function definition()
00048 {
00049 return array( "fields" => array( "contentclass_id" => array( 'name' => "ContentClassID",
00050 'datatype' => 'integer',
00051 'default' => 0,
00052 'required' => true,
00053 'foreign_class' => 'eZContentClass',
00054 'foreign_attribute' => 'id',
00055 'multiplicity' => '1..*' ),
00056 "contentclass_version" => array( 'name' => "ContentClassVersion",
00057 'datatype' => 'integer',
00058 'default' => 0,
00059 'required' => true ),
00060 "group_id" => array( 'name' => "GroupID",
00061 'datatype' => 'integer',
00062 'default' => 0,
00063 'required' => true ),
00064 "group_name" => array( 'name' => "GroupName",
00065 'datatype' => 'string',
00066 'default' => '',
00067 'required' => true ) ),
00068 "keys" => array( "contentclass_id", "contentclass_version", "group_id" ),
00069
00070 "class_name" => "eZContentClassClassGroup",
00071 "sort" => array( "contentclass_id" => "asc" ),
00072 "name" => "ezcontentclass_classgroup" );
00073 }
00074
00075 function create( $contentclass_id, $contentclass_version, $group_id, $group_name )
00076 {
00077 if( $contentclass_version == null )
00078 {
00079 $contentclass_version = 0;
00080 }
00081 $row = array("contentclass_id" => $contentclass_id,
00082 "contentclass_version" => $contentclass_version,
00083 "group_id" => $group_id,
00084 "group_name" => $group_name);
00085 return new eZContentClassClassGroup( $row );
00086 }
00087
00088 function update( $contentclass_version, $group_id, $group_name )
00089 {
00090 if( $contentclass_version == null )
00091 {
00092 $row = array( 'group_id' => $group_id );
00093 }
00094 else
00095 {
00096 $row = array( 'contentclass_version' => $contentclass_version,
00097 'group_id' => $group_id );
00098 }
00099
00100 eZPersistentObject::updateObjectList( array( 'definition' => eZContentClassClassGroup::definition(),
00101 'update_fields' => array( 'group_name' => $group_name ),
00102 'conditions' => $row ) );
00103 }
00104
00105
00106
00107
00108
00109 function remove( $contentclass_id, $contentclass_version, $group_id )
00110 {
00111 if ( $contentclass_version == null )
00112 {
00113 eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
00114 array("contentclass_id" => $contentclass_id,
00115 "group_id" => $group_id ) );
00116 }
00117 else
00118 {
00119 eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
00120 array("contentclass_id" => $contentclass_id,
00121 "contentclass_version" =>$contentclass_version,
00122 "group_id" => $group_id ) );
00123 }
00124 }
00125
00126
00127
00128
00129
00130 function removeGroupMembers( $group_id )
00131 {
00132 eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
00133 array( "group_id" => $group_id ) );
00134 }
00135
00136
00137
00138
00139
00140 function removeClassMembers( $contentclass_id, $contentclass_version )
00141 {
00142 eZPersistentObject::removeObject( eZContentClassClassGroup::definition(),
00143 array( "contentclass_id" =>$contentclass_id,
00144 "contentclass_version" =>$contentclass_version ) );
00145 }
00146
00147 function fetch( $contentclass_id, $contentclass_version, $group_id, $asObject = true )
00148 {
00149 return eZPersistentObject::fetchObject( eZContentClassClassGroup::definition(),
00150 null,
00151 array("contentclass_id" => $contentclass_id,
00152 "contentclass_version" =>$contentclass_version,
00153 "group_id" => $group_id ),
00154 $asObject );
00155 }
00156
00157 function fetchClassList( $contentclass_version, $group_id, $asObject = true, $orderByArray = array( 'name' ) )
00158 {
00159 $versionCond = '';
00160 $orderByClause = '';
00161 $group_id =(int) $group_id;
00162 $classNameSqlFilter = eZContentClassName::sqlEmptyFilter();
00163
00164 if ( $contentclass_version !== null )
00165 {
00166 $contentclass_version =(int) $contentclass_version;
00167 $versionCond = "AND class_group.contentclass_version='$contentclass_version'
00168 AND contentclass.version='$contentclass_version'\n";
00169 }
00170
00171 if ( $orderByArray )
00172 {
00173 foreach( array_keys( $orderByArray ) as $key )
00174 {
00175 if ( strcasecmp( $orderByArray[$key], 'name' ) === 0 )
00176 {
00177 $classNameSqlFilter = eZContentClassName::sqlAppendFilter( 'contentclass' );
00178 $orderByArray[$key] = $classNameSqlFilter['orderBy'];
00179 }
00180 }
00181
00182 $orderByClause = 'ORDER BY ' . implode( ', ', $orderByArray );
00183 }
00184
00185 $db =& eZDB::instance();
00186 $sql = "SELECT contentclass.* $classNameSqlFilter[nameField]
00187 FROM ezcontentclass contentclass, ezcontentclass_classgroup class_group $classNameSqlFilter[from]
00188 WHERE contentclass.id=class_group.contentclass_id
00189 $versionCond
00190 AND class_group.group_id='$group_id' $classNameSqlFilter[where]
00191 $orderByClause";
00192 $rows = $db->arrayQuery( $sql );
00193 return eZPersistentObject::handleRows( $rows, "eZContentClass", $asObject );
00194 }
00195
00196 function fetchClassListByGroups( $contentclassVersion, $groupIDList, $asObject = true )
00197 {
00198 if ( is_array( $groupIDList ) )
00199 {
00200 $groupIDList = array( $groupIDList );
00201 }
00202 $classGroupList = eZPersistentObject::fetchObjectList( eZContentClassClassGroup::definition(),
00203 array(),
00204 array( "group_id" => $groupIDList,
00205 "contentclass_version" => $contentclassVersion ),
00206 null,
00207 null,
00208 false,
00209 false,
00210 array( array( 'operation' => "distinct contentclass_id" ) ) );
00211 $classList = array();
00212 if ( $asObject )
00213 {
00214 foreach ( $classGroupList as $classGroup )
00215 {
00216 $classList[] = eZContentClass::fetch( $classGroup['contentclass_id'] );
00217 }
00218 }
00219 else
00220 {
00221 foreach ( $classGroupList as $classGroup )
00222 {
00223 $classList[] = $classGroup['contentclass_id'];
00224 }
00225 }
00226 return $classList;
00227 }
00228
00229 function fetchGroupList( $contentclass_id, $contentclass_version, $asObject = true )
00230 {
00231 return eZPersistentObject::fetchObjectList( eZContentClassClassGroup::definition(),
00232 null,
00233 array( "contentclass_id" => $contentclass_id,
00234 "contentclass_version" => $contentclass_version ),
00235 null,
00236 null,
00237 $asObject );
00238 }
00239
00240 function &classInGroup( $contentclassID, $contentclassVersion, $groupID )
00241 {
00242 $rows = eZPersistentObject::fetchObjectList( eZContentClassClassGroup::definition(),
00243 null,
00244 array( 'group_id' => $groupID,
00245 "contentclass_id" => $contentclassID,
00246 "contentclass_version" => $contentclassVersion ),
00247 null,
00248 null,
00249 false );
00250 $retValue = count( $rows ) > 0;
00251 return $retValue;
00252 }
00253
00254
00255 var $ContentClassID;
00256 var $ContentClassVersion;
00257 var $GroupID;
00258 var $GroupName;
00259 }
00260
00261 ?>