Index: branches/5.2.x/core/kernel/db/db_event_handler.php =================================================================== diff -u -r16824 -r16827 --- branches/5.2.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 16824) +++ branches/5.2.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 16827) @@ -1,6 +1,6 @@ Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1) ) { $event->status = kEvent::erFAIL; + return; } - /** @var kTempTablesHandler $temp_handler */ - $temp_handler = $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => $event)); - - $temp_handler->DeleteItems($event->Prefix, $event->Special, Array ($this->getPassedID($event))); + $this->deleteByIds($event, array($this->getPassedID($event))); } /** - * Deletes all records from table + * Deletes all records from the table. * - * @param kEvent $event + * @param kEvent $event Event. + * * @return void - * @access protected */ protected function OnDeleteAll(kEvent $event) { $sql = 'SELECT ' . $this->Application->getUnitOption($event->Prefix, 'IDField') . ' FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName'); $ids = $this->Conn->GetCol($sql); - if ( $ids ) { - /** @var kTempTablesHandler $temp_handler */ - $temp_handler = $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => $event)); - - $temp_handler->DeleteItems($event->Prefix, $event->Special, $ids); - } + $this->deleteByIds($event, $ids); } /** @@ -1839,34 +1832,54 @@ /** * Deletes all selected items. - * Automatically recurse into sub-items using temp handler, and deletes sub-items - * by calling its Delete method if sub-item has AutoDelete set to true in its config file * - * @param kEvent $event + * Automatically recurses into subitems using a temp handler and deletes subitems + * by calling its Delete method if subitem has AutoDelete set to true in its config file. + * + * @param kEvent $event Event. + * * @return void - * @access protected */ protected function OnMassDelete(kEvent $event) { if ( $this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1) ) { $event->status = kEvent::erFAIL; - return ; + + return; } - /** @var kTempTablesHandler $temp_handler */ - $temp_handler = $this->Application->recallObject($event->getPrefixSpecial() . '_TempHandler', 'kTempTablesHandler', Array ('parent_event' => $event)); - $ids = $this->StoreSelectedIDs($event); + $this->clearSelectedIDs($event); + $this->deleteByIds($event, $ids); + } + + /** + * Deletes records by given IDs + * + * @param kEvent $event Event. + * @param array $ids Record IDs. + * + * @return void + */ + protected function deleteByIds(kEvent $event, array $ids) + { $event->setEventParam('ids', $ids); $this->customProcessing($event, 'before'); $ids = $event->getEventParam('ids'); - if ( $ids ) { - $temp_handler->DeleteItems($event->Prefix, $event->Special, $ids); + if ( !$ids ) { + return; } - $this->clearSelectedIDs($event); + /** @var kTempTablesHandler $temp_handler */ + $temp_handler = $this->Application->recallObject( + $event->getPrefixSpecial() . '_TempHandler', + 'kTempTablesHandler', + array('parent_event' => $event) + ); + + $temp_handler->DeleteItems($event->Prefix, $event->Special, $ids); } /**