diff --git a/datamodels/2.x/itop-attachments/datamodel.itop-attachments.xml b/datamodels/2.x/itop-attachments/datamodel.itop-attachments.xml index a6ec7c8a3..50271092f 100755 --- a/datamodels/2.x/itop-attachments/datamodel.itop-attachments.xml +++ b/datamodels/2.x/itop-attachments/datamodel.itop-attachments.xml @@ -93,12 +93,12 @@ User false - - user_id - contactid - - - + + contact_id + true + DEL_MANUAL + Person + false @@ -110,8 +110,14 @@ public function DBInsertNoReload() { $this->SetCurrentDateIfNull('creation_date'); - $this->SetIfNull('user_id', CMDBChange::GetCurrentUserId()); + $iUserId = CMDBChange::GetCurrentUserId(); + if(utils::IsNotNullOrEmptyString($iUserId)){ + $this->SetIfNull('user_id', $iUserId); + // Get Contact from user + $oUser = MetaModel::GetObject('User', $iUserId); + $this->SetIfNull('contact_id', $oUser->Get('contactid')); + } return parent::DBInsertNoReload(); } ]]> diff --git a/datamodels/2.x/itop-attachments/module.itop-attachments.php b/datamodels/2.x/itop-attachments/module.itop-attachments.php index 4cc527850..d7edb0aaf 100644 --- a/datamodels/2.x/itop-attachments/module.itop-attachments.php +++ b/datamodels/2.x/itop-attachments/module.itop-attachments.php @@ -194,14 +194,25 @@ SQL; $oContainer = MetaModel::GetObject($oAttachment->Get('item_class'), $oAttachment->Get('item_id'), false /* must be found */, true /* allow all data */); - if ($oContainer) - { + if ($oContainer) { $oAttachment->SetItem($oContainer, true /*updateonchange*/); $iUpdated++; } } - SetupLog::Info("Initializing attachment/item_org_id - $iUpdated records have been adjusted"); + + if (MetaModel::GetAttributeDef('Attachment', 'contact_id') instanceof AttributeExternalKey) { + SetupLog::Info("Upgrading itop-attachment from '$sPreviousVersion' to '$sCurrentVersion'. Starting with 3.2.0, contact_id will be added into the DB..."); + $sUserTableName = MetaModel::DBGetTable('User'); + $sUserFieldContactId = MetaModel::GetAttributeDef('User', 'contactid')->Get('sql'); + $sAttachmentFieldUserId = MetaModel::GetAttributeDef('Attachment', 'user_id')->Get('sql'); + $sAttachmentFieldContactId = MetaModel::GetAttributeDef('Attachment', 'contact_id')->Get('sql'); + $sAddContactId = "UPDATE `$sTableName` att, `$sUserTableName` us SET att.`$sAttachmentFieldContactId` = us.`$sUserFieldContactId` WHERE att.`$sAttachmentFieldUserId` = us.id AND att.`$sAttachmentFieldContactId` = 0"; + + CMDBSource::Query($sAddContactId); + $iNbProcessed = CMDBSource::AffectedRows(); + SetupLog::Info("| | ".$iNbProcessed." attachment processed."); + } } } }