Index: branches/5.2.x/core/kernel/db/cat_dbitem.php =================================================================== diff -u -N -r15137 -r15454 --- branches/5.2.x/core/kernel/db/cat_dbitem.php (.../cat_dbitem.php) (revision 15137) +++ branches/5.2.x/core/kernel/db/cat_dbitem.php (.../cat_dbitem.php) (revision 15454) @@ -1,6 +1,6 @@ useFilenames ) { $this->checkFilename(); $this->generateFilename(); } - $ret = parent::Update($id, $system_update); + $ret = parent::Update($id, $update_fields, $system_update); if ( $ret ) { $filename = $this->useFilenames ? (string)$this->GetDBField('Filename') : ''; Index: branches/5.2.x/core/units/images/image_event_handler.php =================================================================== diff -u -N -r15145 -r15454 --- branches/5.2.x/core/units/images/image_event_handler.php (.../image_event_handler.php) (revision 15145) +++ branches/5.2.x/core/units/images/image_event_handler.php (.../image_event_handler.php) (revision 15454) @@ -1,6 +1,6 @@ Name, Array ('OnAfterClone', 'OnBeforeCopyToLive', 'OnAfterCopyToTemp')) ) { - $object->Update(null, true); + $object->Update(null, null, true); } } 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() ) { Index: branches/5.2.x/core/units/users/users_item.php =================================================================== diff -u -N -r15137 -r15454 --- branches/5.2.x/core/units/users/users_item.php (.../users_item.php) (revision 15137) +++ branches/5.2.x/core/units/users/users_item.php (.../users_item.php) (revision 15454) @@ -1,6 +1,6 @@