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 include_once( "lib/ezdb/classes/ezdb.php" );
00038 include_once( "kernel/classes/ezpersistentobject.php" );
00039 include_once( "kernel/classes/ezworkflowtype.php" );
00040
00041 class eZWorkflowEvent extends eZPersistentObject
00042 {
00043 function eZWorkflowEvent( $row )
00044 {
00045 $this->eZPersistentObject( $row );
00046 $this->Content = null;
00047 }
00048
00049 function definition()
00050 {
00051 return array( "fields" => array( "id" => array( 'name' => 'ID',
00052 'datatype' => 'integer',
00053 'default' => 0,
00054 'required' => true ),
00055 "version" => array( 'name' => "Version",
00056 'datatype' => 'integer',
00057 'default' => 0,
00058 'required' => true ),
00059 "workflow_id" => array( 'name' => "WorkflowID",
00060 'datatype' => 'integer',
00061 'default' => 0,
00062 'required' => true,
00063 'foreign_class' => 'eZWorkflow',
00064 'foreign_attribute' => 'id',
00065 'multiplicity' => '1..*' ),
00066 "workflow_type_string" => array( 'name' => "TypeString",
00067 'datatype' => 'string',
00068 'default' => '',
00069 'required' => true,
00070 'max_length' => 50 ),
00071 "description" => array( 'name' => "Description",
00072 'datatype' => 'string',
00073 'default' => '',
00074 'required' => true,
00075 'max_length' => 50 ),
00076 "data_int1" => array( 'name' => "DataInt1",
00077 'datatype' => 'integer',
00078 'default' => 0,
00079 'required' => true ),
00080 "data_int2" => array( 'name' => "DataInt2",
00081 'datatype' => 'integer',
00082 'default' => 0,
00083 'required' => true ),
00084 "data_int3" => array( 'name' => "DataInt3",
00085 'datatype' => 'integer',
00086 'default' => 0,
00087 'required' => true ),
00088 "data_int4" => array( 'name' => "DataInt4",
00089 'datatype' => 'integer',
00090 'default' => 0,
00091 'required' => true ),
00092 "data_text1" => array( 'name' => "DataText1",
00093 'datatype' => 'text',
00094 'default' => '',
00095 'required' => true,
00096 'max_length' => 50 ),
00097 "data_text2" => array( 'name' => "DataText2",
00098 'datatype' => 'text',
00099 'default' => '',
00100 'required' => true,
00101 'max_length' => 50 ),
00102 "data_text3" => array( 'name' => "DataText3",
00103 'datatype' => 'text',
00104 'default' => '',
00105 'required' => true,
00106 'max_length' => 50 ),
00107 "data_text4" => array( 'name' => "DataText4",
00108 'datatype' => 'text',
00109 'default' => '',
00110 'required' => true,
00111 'max_length' => 50 ),
00112 "placement" => array( 'name' => "Placement",
00113 'datatype' => 'integer',
00114 'default' => 0,
00115 'required' => true ) ),
00116 "keys" => array( "id", "version" ),
00117 "function_attributes" => array( 'content' => 'content',
00118 'workflow_type' => 'eventType' ),
00119 "increment_key" => "id",
00120 "sort" => array( "placement" => "asc" ),
00121 "class_name" => "eZWorkflowEvent",
00122 "name" => "ezworkflow_event" );
00123 }
00124
00125 function create( $workflow_id, $type_string )
00126 {
00127 $row = array(
00128 "id" => null,
00129 "version" => 1,
00130 "workflow_id" => $workflow_id,
00131 "workflow_type_string" => $type_string,
00132 "description" => "",
00133 "placement" => eZPersistentObject::newObjectOrder( eZWorkflowEvent::definition(),
00134 "placement",
00135 array( "version" => 1,
00136 "workflow_id" => $workflow_id ) ) );
00137 return new eZWorkflowEvent( $row );
00138 }
00139
00140 function fetch( $id, $asObject = true, $version = 0, $field_filters = null )
00141 {
00142 return eZPersistentObject::fetchObject( eZWorkflowEvent::definition(),
00143 $field_filters,
00144 array( "id" => $id,
00145 "version" => $version ),
00146 $asObject );
00147 }
00148
00149 function &fetchList( $asObject = true )
00150 {
00151 $objectList = eZPersistentObject::fetchObjectList( eZWorkflowEvent::definition(),
00152 null, null, null, null,
00153 $asObject );
00154 return $objectList;
00155 }
00156
00157 function fetchFilteredList( $cond, $asObject = true )
00158 {
00159 return eZPersistentObject::fetchObjectList( eZWorkflowEvent::definition(),
00160 null, $cond, null, null,
00161 $asObject );
00162 }
00163
00164
00165
00166
00167
00168 function move( $down, $params = null )
00169 {
00170 if ( is_array( $params ) )
00171 {
00172 $pos = $params["placement"];
00173 $wid = $params["workflow_id"];
00174 $version = $params["version"];
00175 }
00176 else
00177 {
00178 $pos = $this->Placement;
00179 $wid = $this->WorkflowID;
00180 $version = $this->Version;
00181 }
00182 eZPersistentObject::reorderObject( eZWorkflowEvent::definition(),
00183 array( "placement" => $pos ),
00184 array( "workflow_id" => $wid,
00185 "version" => $version ),
00186 $down );
00187 }
00188
00189 function attributes()
00190 {
00191 $eventType =& $this->eventType();
00192 return array_merge( eZPersistentObject::attributes(), $eventType->typeFunctionalAttributes() );
00193 }
00194
00195 function hasAttribute( $attr )
00196 {
00197 $eventType =& $this->eventType();
00198 return eZPersistentObject::hasAttribute( $attr ) or
00199 in_array( $attr, $eventType->typeFunctionalAttributes() );
00200 }
00201
00202 function &attribute( $attr )
00203 {
00204 $eventType =& $this->eventType();
00205 if ( is_object( $eventType ) and in_array( $attr, $eventType->typeFunctionalAttributes( ) ) )
00206 {
00207 $attributeDecoder =& $eventType->attributeDecoder( $this, $attr );
00208 return $attributeDecoder;
00209 }
00210 else
00211 return eZPersistentObject::attribute( $attr );
00212 }
00213
00214 function &eventType()
00215 {
00216 if ( ! isset ( $this->EventType ) )
00217 {
00218 $this->EventType =& eZWorkflowType::createType( $this->TypeString );
00219 }
00220 return $this->EventType;
00221 }
00222
00223
00224
00225
00226 function &content()
00227 {
00228 if ( $this->Content === null )
00229 {
00230 $eventType =& $this->eventType();
00231 $this->Content =& $eventType->workflowEventContent( $this );
00232 }
00233
00234 return $this->Content;
00235 }
00236
00237
00238
00239
00240 function setContent( $content )
00241 {
00242 $this->Content =& $content;
00243 }
00244
00245
00246
00247
00248
00249 function customHTTPAction( &$http, $action )
00250 {
00251 $eventType =& $this->eventType();
00252 $eventType->customWorkflowEventHTTPAction( $http, $action, $this );
00253 }
00254
00255
00256
00257
00258
00259 function store()
00260 {
00261 $db =& eZDB::instance();
00262 $db->begin();
00263 $stored = eZPersistentObject::store();
00264
00265 $eventType =& $this->eventType();
00266 $eventType->storeEventData( $this, $this->attribute( 'version' ) );
00267 $db->commit();
00268
00269 return $stored;
00270 }
00271
00272
00273
00274
00275
00276 function storeDefined( $fieldFilters = null )
00277 {
00278 $db = eZDB::instance();
00279 $db->begin();
00280 $stored = eZPersistentObject::store( $fieldFilters );
00281
00282 $eventType = $this->eventType();
00283 $eventType->storeDefinedEventData( $this );
00284 $db->commit();
00285
00286 return $stored;
00287 }
00288
00289
00290 var $ID;
00291 var $Version;
00292 var $WorkflowID;
00293 var $TypeString;
00294 var $Description;
00295 var $Placement;
00296 var $DataInt1;
00297 var $DataInt2;
00298 var $DataInt3;
00299 var $DataInt4;
00300 var $DataText1;
00301 var $DataText2;
00302 var $DataText3;
00303 var $DataText4;
00304 var $Content;
00305 }
00306
00307 ?>