Index: branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/temp_handler.php =================================================================== diff -u -r5868 -r6011 --- branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 5868) +++ branches/unlabeled/unlabeled-1.25.2/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 6011) @@ -155,11 +155,11 @@ if (is_null($master)) { $master = $this->Tables; } - + if ($master['Prefix'] == $prefix) { return $master; } - + if (isset($master['SubTables'])) { foreach ($master['SubTables'] as $sub_table) { $found = $this->SearchTable($prefix, $sub_table); @@ -168,17 +168,17 @@ } } } - + return false; } - + function AddTables($prefix, &$tables) { if (!$this->Application->prefixRegistred($prefix)) { // allows to skip subitem processing if subitem module not enabled/installed return ; } - + $tmp = Array( 'TableName' => $this->Application->getUnitOption($prefix,'TableName'), 'IdField' => $this->Application->getUnitOption($prefix,'IDField'), @@ -458,8 +458,10 @@ $live_foreign_key = $this->Conn->GetCol($query); if (isset($temp_id)) { + // because DoCopyTempToOriginal resets negative IDs to 0 in temp table (one by one) before copying to live + $temp_key = $temp_id < 0 ? 0 : $temp_id; $query = 'SELECT '.$parent_key_field.' FROM '.$this->GetTempName($master['TableName']).' - WHERE '.$master['IdField'].' IN ('.join(',', $temp_id).')'; + WHERE '.$master['IdField'].' IN ('.join(',', $temp_key).')'; $temp_foreign_key = $this->Conn->GetCol($query); } else { @@ -488,7 +490,7 @@ if (isset($master['Constrain'])) $query .= ' WHERE '.$master['Constrain']; $current_ids = $this->Conn->GetCol($query); } - + $table_sig = $master['TableName'].(isset($master['Constrain']) ? $master['Constrain'] : ''); if ($current_ids) { @@ -533,7 +535,7 @@ $this->saveID($master['Prefix'], '', $insert_id); $this->RaiseEvent( 'OnAfterCopyToLive', $master['Prefix'], '', Array($insert_id), null, array('temp_id' => $id) ); - $this->UpdateForeignKeys($master, $insert_id, $id_to_copy); + $this->UpdateForeignKeys($master, $insert_id, $id); //delete already copied record from master temp table $query = 'DELETE FROM '.$this->GetTempName($master['TableName']).' @@ -588,7 +590,7 @@ } }*/ $this->DropTempTable($master['TableName']); - + if (!isset($this->savedIDs[ $master['Prefix'] ])) { $this->savedIDs[ $master['Prefix'] ] = Array(); }