Index: branches/5.2.x/core/kernel/db/db_event_handler.php =================================================================== diff -u -N -r14646 -r14657 --- branches/5.2.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 14646) +++ branches/5.2.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 14657) @@ -1,6 +1,6 @@ Application->getUnitOption($event->Prefix,'StatusField'); - if (!$status_fields) { + $status_fields = $this->Application->getUnitOption($event->Prefix, 'StatusField'); + if ( !$status_fields ) { return true; } $status_field = array_shift($status_fields); - if ($status_field == 'Status' || $status_field == 'Enabled') { + + if ( $status_field == 'Status' || $status_field == 'Enabled' ) { $object =& $event->getObject(); - if (!$object->isLoaded()) { + /* @var $object kDBItem */ + + if ( !$object->isLoaded() ) { return true; } return $object->GetDBField($status_field) == STATUS_ACTIVE; } + return true; } @@ -594,6 +598,12 @@ $object =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); /* @var $object kTempTablesHandler */ + $parent_event = $event->getEventParam('parent_event'); + + if ( is_object($parent_event) ) { + $object->setParentEvent($parent_event); + } + $object->BuildTables( $event->Prefix, $this->getSelectedIDs($event) ); } @@ -1459,10 +1469,10 @@ return; } - $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); - /* @var $temp kTempTablesHandler */ + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); + /* @var $temp_handler kTempTablesHandler */ - $temp->DeleteItems($event->Prefix, $event->Special, Array($this->getPassedID($event))); + $temp_handler->DeleteItems($event->Prefix, $event->Special, Array ($this->getPassedID($event))); } /** @@ -1477,7 +1487,7 @@ $ids = $this->Conn->GetCol($sql); if ($ids) { - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ $temp_handler->DeleteItems($event->Prefix, $event->Special, $ids); @@ -1528,7 +1538,7 @@ if ( $items_info ) { $delete_ids = Array (); - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ foreach ($items_info as $id => $field_values) { @@ -1563,7 +1573,7 @@ return ; } - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ $ids = $this->StoreSelectedIDs($event); @@ -1615,10 +1625,10 @@ $changes_var_name = $this->Prefix . '_changes_' . $this->Application->GetTopmostWid($this->Prefix); $this->Application->RemoveVar($changes_var_name); - $temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler'); - /* @var $temp kTempTablesHandler */ + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); + /* @var $temp_handler kTempTablesHandler */ - $temp->PrepareEdit(); + $temp_handler->PrepareEdit(); $event->SetRedirectParam('m_lang', $this->Application->GetDefaultLanguageId()); $event->SetRedirectParam($event->getPrefixSpecial() . '_id', array_shift($ids)); @@ -1642,7 +1652,7 @@ } $skip_master = false; - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ $changes_var_name = $this->Prefix . '_changes_' . $this->Application->GetTopmostWid($this->Prefix); @@ -1780,7 +1790,7 @@ */ protected function OnCancelEdit(&$event) { - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ $temp_handler->CancelEdit(); @@ -1942,7 +1952,7 @@ $object =& $event->getObject( Array ('skip_autoload' => true) ); /* @var $object kDBItem */ - $temp_handler =& $this->Application->recallObject($event->Prefix . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->Prefix . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ $temp_handler->PrepareEdit(); @@ -2079,7 +2089,7 @@ return ; } - $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler'); + $temp_handler =& $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => &$event)); /* @var $temp_handler kTempTablesHandler */ $ids = $this->StoreSelectedIDs($event); @@ -2234,8 +2244,10 @@ * Occurs before validation attempt * * @param kEvent $event + * @return void + * @access protected */ - function OnBeforeItemValidate(&$event) + protected function OnBeforeItemValidate(kEvent &$event) { } Index: branches/5.2.x/core/kernel/utility/temp_handler.php =================================================================== diff -u -N -r14628 -r14657 --- branches/5.2.x/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 14628) +++ branches/5.2.x/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 14657) @@ -1,6 +1,6 @@ parentEvent =& $event; + } + function SetTables($tables) { - // set tablename as key for tables array - $ret = Array(); + // set table name as key for tables array $this->Tables = $tables; $this->MasterTable = $tables['TableName']; } @@ -170,7 +189,7 @@ $this->AddTables($prefix, $tables); } } - + $this->SetTables($tables); } @@ -232,7 +251,7 @@ $sub_items = $this->Application->getUnitOption($prefix, 'SubItems', Array ()); /* @var $sub_items Array */ - + if ( is_array($sub_items) ) { foreach ($sub_items as $prefix) { $this->AddTables($prefix, $tmp); @@ -255,7 +274,7 @@ $special .= '-item'; } - $object =& $this->Application->recallObject($prefix.'.'.$special, $prefix, Array('skip_autoload' => true)); + $object =& $this->Application->recallObject($prefix.'.'.$special, $prefix, Array('skip_autoload' => true, 'parent_event' => &$this->parentEvent)); /* @var $object kCatDBItem */ $object->PopulateMultiLangFields(); @@ -357,7 +376,7 @@ //recalling by different name, because we may get kDBList, if we recall just by prefix $recall_prefix = $prefix_special.($special ? '' : '.').'-item'; - $object =& $this->Application->recallObject($recall_prefix, $prefix, Array('skip_autoload' => true)); + $object =& $this->Application->recallObject($recall_prefix, $prefix, Array('skip_autoload' => true, 'parent_event' => &$this->parentEvent)); /* @var $object kDBItem */ foreach ($ids as $id) @@ -596,7 +615,7 @@ if ( isset($master['Constrain']) ) { $query .= ' AND ' . $master['Constrain']; } - + $this->Conn->Query($query); }