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.");
+ }
}
}
}