From e830c90314cffd722b7f7854200997b3c0facfac Mon Sep 17 00:00:00 2001 From: Anne-Catherine <57360138+accognet@users.noreply.github.com> Date: Mon, 5 Feb 2024 14:07:51 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B06619=20-=20Attachment=20:=20Make=20conta?= =?UTF-8?q?ct=5Fid=20an=20AttributeExternalKey=20instead=20of=20AttributeE?= =?UTF-8?q?xternalField=20(#532)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datamodel.itop-attachments.xml | 20 ++++++++++++------- .../module.itop-attachments.php | 17 +++++++++++++--- 2 files changed, 27 insertions(+), 10 deletions(-) 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."); + } } } }