Index: branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php =================================================================== diff -u -N -r14677 -r14872 --- branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php (.../shipping_costs_event_handler.php) (revision 14677) +++ branches/5.2.x/units/shipping_costs/shipping_costs_event_handler.php (.../shipping_costs_event_handler.php) (revision 14872) @@ -1,6 +1,6 @@ getObject( Array('skip_autoload' => true) ); + $object =& $event->getObject(Array ('skip_autoload' => true)); + /* @var $object kDBItem */ + $zones_object =& $this->Application->recallObject('z'); - $sql = 'SELECT ZoneID FROM '.$zones_object->TableName.' WHERE ShippingTypeID='.$this->Application->GetVar('s_id'); + $sql = 'SELECT ZoneID + FROM ' . $zones_object->TableName . ' + WHERE ShippingTypeID = ' . $this->Application->GetVar('s_id'); $res = $this->Conn->GetCol($sql); - $sql = 'DELETE FROM '.$object->TableName.' WHERE ZoneID IN ('.implode(',', $res).')'; + + $sql = 'DELETE FROM ' . $object->TableName . ' + WHERE ZoneID IN (' . implode(',', $res) . ')'; $this->Conn->Query($sql); - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - if($items_info) - { - foreach($items_info as $id => $field_values) - { - $object->SetFieldsFromHash($field_values); - $this->customProcessing($event,'before'); + // creates multiple db records from single request (OnCreate event only creates 1 record) + $items_info = $this->Application->GetVar($event->getPrefixSpecial(true)); - if( $object->Create() ) { - $this->customProcessing($event,'after'); - $event->status = kEvent::erSUCCESS; - } - else { - $event->status = kEvent::erFAIL; - $event->redirect = false; - $this->Application->SetVar($event->getPrefixSpecial().'_SaveEvent','OnCreate'); - $object->setID(0); - } + if ( !$items_info ) { + return; + } + + foreach ($items_info as $field_values) { + $object->SetFieldsFromHash($field_values); + $this->customProcessing($event, 'before'); + + if ( $object->Create() ) { + $this->customProcessing($event, 'after'); + $event->status = kEvent::erSUCCESS; } + else { + $event->status = kEvent::erFAIL; + $event->redirect = false; + $this->Application->SetVar($event->getPrefixSpecial() . '_SaveEvent', 'OnCreate'); + $object->setID(0); + } } } @@ -179,21 +187,22 @@ */ protected function customProcessing(&$event, $type) { - if( $type == 'before' && $this->Application->GetVar('sc') ) - { + if ( $type == 'before' && $this->Application->GetVar('sc') ) { $shipping_obj =& $this->Application->recallObject('s'); - $cost =& $event->getObject(); + /* @var $shipping_obj kDBItem */ + + $object =& $event->getObject(); + /* @var $object kDBItem */ + $zero_if_empty = $shipping_obj->GetDBField('ZeroIfEmpty'); - if($cost->GetDBField('Flat') == '') - { + if ( $object->GetDBField('Flat') == '' ) { $flat = $zero_if_empty ? 0 : null; - $cost->SetDBField('Flat', $flat); + $object->SetDBField('Flat', $flat); } - if($cost->GetDBField('PerUnit') == '') - { + if ( $object->GetDBField('PerUnit') == '' ) { $per_unit = $zero_if_empty ? 0 : null; - $cost->SetDBField('PerUnit', $per_unit); + $object->SetDBField('PerUnit', $per_unit); } } }