From a2affcc22473251b71933350dde0cc07b10159cd Mon Sep 17 00:00:00 2001 From: Romain Quetiez Date: Thu, 29 Mar 2012 13:34:46 +0000 Subject: [PATCH] #540 Data synchro: the option "write if empty" was not implemented SVN:trunk[1934] --- synchro/synchrodatasource.class.inc.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/synchro/synchrodatasource.class.inc.php b/synchro/synchrodatasource.class.inc.php index 6cf6561f5..54de59c7a 100644 --- a/synchro/synchrodatasource.class.inc.php +++ b/synchro/synchrodatasource.class.inc.php @@ -1739,8 +1739,21 @@ class SynchroReplica extends DBObject implements iDisplay $value = $this->GetValueFromExtData($sAttCode, $oSyncAtt, $oStatLog); if (!is_null($value)) { - $oDestObj->Set($sAttCode, $value); - $aValueTrace[] = "$sAttCode: $value"; + if ($oSyncAtt->Get('update_policy') == 'write_if_empty') + { + $oAttDef = MetaModel::GetAttributeDef(get_class($oDestObj), $sAttCode); + if ($oAttDef->IsNull($oDestObj->Get($sAttCode))) + { + // The value is still "empty" in the target object, we are allowed to write the new value + $oDestObj->Set($sAttCode, $value); + $aValueTrace[] = "$sAttCode: $value"; + } + } + else + { + $oDestObj->Set($sAttCode, $value); + $aValueTrace[] = "$sAttCode: $value"; + } } } // Really modified ?