Index: branches/5.2.x/core/kernel/db/dbitem.php =================================================================== diff -u -N -r15446 -r15454 --- branches/5.2.x/core/kernel/db/dbitem.php (.../dbitem.php) (revision 15446) +++ branches/5.2.x/core/kernel/db/dbitem.php (.../dbitem.php) (revision 15454) @@ -1,6 +1,6 @@ setID($id); @@ -692,11 +693,15 @@ $sql = ''; - foreach ($this->FieldValues as $field_name => $field_value) { + $set_fields = isset($update_fields) ? $update_fields : array_keys($this->FieldValues); + + foreach ($set_fields as $field_name) { if ( $this->skipField($field_name) ) { continue; } + $field_value = $this->FieldValues[$field_name]; + if ( is_null($field_value) ) { if ( array_key_exists('not_null', $this->Fields[$field_name]) && $this->Fields[$field_name]['not_null'] ) { // "kFormatter::Parse" methods converts empty values to NULL and for @@ -726,7 +731,16 @@ $this->saveCustomFields(); $this->raiseEvent('OnAfterItemUpdate'); - $this->OriginalFieldValues = $this->FieldValues; + + if ( !isset($update_fields) ) { + $this->OriginalFieldValues = $this->FieldValues; + } + else { + foreach ($update_fields as $update_field) { + $this->OriginalFieldValues[$update_field] = $this->FieldValues[$update_field]; + } + } + $this->Loaded = true; if ( !$this->IsTempTable() ) {