Index: branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/temp_handler.php =================================================================== diff -u -r5438 -r5616 --- branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 5438) +++ branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 5616) @@ -452,7 +452,7 @@ // because items from Sub Tables get deteleted in CopySubTablesToLive !BY ForeignKey! if ($master['TableName'] == $this->MasterTable) { $this->RaiseEvent( 'OnBeforeDeleteFromLive', $master['Prefix'], '', $current_ids ); - + $query = 'DELETE FROM '.$master['TableName'].' WHERE '.$master['IdField'].' IN ('.join(',', $current_ids).')'; $this->Conn->Query($query); } @@ -574,23 +574,17 @@ $foreign_key_field = is_array($sub_table['ForeignKey']) ? getArrayValue($sub_table, 'ForeignKey', $master['Prefix']) : $sub_table['ForeignKey']; if (!$foreign_key_field) continue; $foreign_keys = $this->GetForeignKeys($master, $sub_table, $current_ids); - // Do not delete live sub-items with 0 id - // otherwise home category permissions got deleted when creating new category - $zero_id = array_search(0, $foreign_keys); - if ($zero_id !== false) { - array_splice($foreign_keys, $zero_id, 1); - } if (count($foreign_keys) > 0) { $query = 'SELECT '.$sub_table['IdField'].' FROM '.$sub_table['TableName'].' WHERE '.$foreign_key_field.' IN ('.join(',', $foreign_keys).')'; if (isset($sub_table['Constrain'])) $query .= ' AND '.$sub_table['Constrain']; - $this->RaiseEvent( 'OnBeforeDeleteFromLive', $sub_table['Prefix'], '', $this->Conn->GetCol($query) ); - - $query = 'DELETE FROM '.$sub_table['TableName'].' - WHERE '.$foreign_key_field.' IN ('.join(',', $foreign_keys).')'; - if (isset($sub_table['Constrain'])) $query .= ' AND '.$sub_table['Constrain']; - $this->Conn->Query($query); + if ( $this->RaiseEvent( 'OnBeforeDeleteFromLive', $sub_table['Prefix'], '', $this->Conn->GetCol($query), $foreign_keys ) ){ + $query = 'DELETE FROM '.$sub_table['TableName'].' + WHERE '.$foreign_key_field.' IN ('.join(',', $foreign_keys).')'; + if (isset($sub_table['Constrain'])) $query .= ' AND '.$sub_table['Constrain']; + $this->Conn->Query($query); + } } } //sub_table passed here becomes master in the method, and recursively updated and copy its sub tables @@ -618,6 +612,7 @@ } $this->Application->HandleEvent($event); } + return $event->status == erSUCCESS; } function DropTempTable($table)