Index: branches/5.0.x/core/kernel/utility/temp_handler.php =================================================================== diff -u -N -r13202 -r13603 --- branches/5.0.x/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 13202) +++ branches/5.0.x/core/kernel/utility/temp_handler.php (.../temp_handler.php) (revision 13603) @@ -1,6 +1,6 @@ clone mapping for dual ForeignKey updating $this->AlreadyProcessed[$master['TableName']][$id] = $object->GetId(); } - if ($object->mode == 't') { - $object->setTempID(); - } + if ($mode == 'create') { $this->RaiseEvent('OnAfterClone', $master['Prefix'], $special, Array($object->GetId()), $foreign_key, array('original_id' => $id) ); $this->saveID($master['Prefix'], $special, $object->GetID()); Index: branches/5.0.x/core/units/helpers/brackets_helper.php =================================================================== diff -u -N -r12734 -r13603 --- branches/5.0.x/core/units/helpers/brackets_helper.php (.../brackets_helper.php) (revision 12734) +++ branches/5.0.x/core/units/helpers/brackets_helper.php (.../brackets_helper.php) (revision 13603) @@ -1,6 +1,6 @@ SetFieldsFromHash($values); $object->SetDBField($linked_info['ForeignKey'], $linked_info['ParentId']); - if( $object->Create() ) - { - $object->setTempID(); + if ($object->Create()) { $event->status = erSUCCESS; } } Index: branches/5.0.x/core/units/helpers/controls/edit_picker_helper.php =================================================================== diff -u -N -r12734 -r13603 --- branches/5.0.x/core/units/helpers/controls/edit_picker_helper.php (.../edit_picker_helper.php) (revision 12734) +++ branches/5.0.x/core/units/helpers/controls/edit_picker_helper.php (.../edit_picker_helper.php) (revision 13603) @@ -1,6 +1,6 @@ SetDBField($foreign_key, $main_id); $object->SetDBField($sub_prefix_field, $add_id); $object->Create(); - - if ($object->IsTempTable()) { - $object->setTempID(); - } } } } Index: branches/5.0.x/core/kernel/db/dbitem.php =================================================================== diff -u -N -r13598 -r13603 --- branches/5.0.x/core/kernel/db/dbitem.php (.../dbitem.php) (revision 13598) +++ branches/5.0.x/core/kernel/db/dbitem.php (.../dbitem.php) (revision 13603) @@ -1,6 +1,6 @@ mode != 't') { $this->Application->resetCounters($this->TableName); } + + if ($this->IsTempTable() && ($this->Application->GetTopmostPrefix($this->Prefix) != $this->Prefix)) { + // temp table + subitem = set negative id + $this->setTempID(); + } + $this->raiseEvent('OnAfterItemCreate'); $this->Loaded = true; @@ -1288,15 +1294,7 @@ $cdata->SetDBField($ml_formatter->LangFieldName('cust_'.$custom_id, $force_primary), $this->GetDBField('cust_'.$custom_name)); } - if ($cdata->isLoaded()) { - $ret = $cdata->Update(); - } - else { - $ret = $cdata->Create(); - if ($cdata->mode == 't') $cdata->setTempID(); - } - - return $ret; + return $cdata->isLoaded() ? $cdata->Update() : $cdata->Create(); } /** Index: branches/5.0.x/core/kernel/db/db_event_handler.php =================================================================== diff -u -N -r13543 -r13603 --- branches/5.0.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 13543) +++ branches/5.0.x/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 13603) @@ -1,6 +1,6 @@ customProcessing($event,'before'); //look at kDBItem' Create for ForceCreateId description, it's rarely used and is NOT set by default - if( $object->Create($event->getEventParam('ForceCreateId')) ) - { - if( $object->IsTempTable() ) $object->setTempID(); + if ( $object->Create($event->getEventParam('ForceCreateId')) ) { $this->customProcessing($event,'after'); $event->status=erSUCCESS; $event->redirect_params = Array('opener'=>'u'); } - else - { + else { $event->status = erFAIL; $event->redirect = false; $this->Application->SetVar($event->Prefix_Special.'_SaveEvent','OnCreate'); @@ -2165,9 +2162,6 @@ if ($is_new) { $object->Create(); - if (!$is_main && $object->IsTempTable()) { - $object->setTempID(); - } } else { $object->Update(); Index: branches/5.0.x/core/units/selectors/selectors_event_handler.php =================================================================== diff -u -N -r12734 -r13603 --- branches/5.0.x/core/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 12734) +++ branches/5.0.x/core/units/selectors/selectors_event_handler.php (.../selectors_event_handler.php) (revision 13603) @@ -1,6 +1,6 @@ Load($parent_id); $object->SetFieldsFromHash($field_values); $object->Create(); - if( $object->IsTempTable() ) $object->setTempID(); + $this->Application->SetVar($event->getPrefixSpecial().'_id', $object->GetID() ); } - else - { + else { $object->Load($id); $object->SetFieldsFromHash($field_values); $object->Update();