From cc7550fbf47d939efd5b241baeb08e73032af316 Mon Sep 17 00:00:00 2001 From: Cyril Vazquez <cyril.vazquez@maarch.org> Date: Thu, 8 Jun 2023 15:29:57 +0200 Subject: [PATCH] fix/22668 Transformation for ArchivalProfile ArchiveUnitProfile and ArchivalAgreement --- .../xslt/restitution_v02totransfer_v20.xsl | 9 +++-- bundle/seda2/Connectors/Seda02Restitution.php | 34 +++++++++++-------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/bundle/archivesPubliques/Resources/xslt/restitution_v02totransfer_v20.xsl b/bundle/archivesPubliques/Resources/xslt/restitution_v02totransfer_v20.xsl index 8c683ccc..263c66c0 100644 --- a/bundle/archivesPubliques/Resources/xslt/restitution_v02totransfer_v20.xsl +++ b/bundle/archivesPubliques/Resources/xslt/restitution_v02totransfer_v20.xsl @@ -60,7 +60,7 @@ <xsl:apply-templates select="//seda:ArchiveRestitution/seda:Archive"/> </DescriptiveMetadata> <ManagementMetadata> - <xsl:if test="seda:Archive/seda:ArchivalProfile"> + <!--xsl:if test="seda:Archive/seda:ArchivalProfile"> <ArchivalProfile> <xsl:attribute name="schemeAgencyName"> <xsl:value-of @@ -72,7 +72,7 @@ </xsl:attribute> <xsl:value-of select="seda:Archive/seda:ArchivalProfile"/> </ArchivalProfile> - </xsl:if> + </xsl:if--> </ManagementMetadata> </DataObjectPackage> <ArchivalAgency> @@ -141,6 +141,11 @@ <xsl:text>Id</xsl:text> <xsl:value-of select="seda:ArchivalAgencyArchiveIdentifier"/> </xsl:attribute> + <xsl:if test="seda:ArchivalProfile"> + <ArchiveUnitProfile> + <xsl:value-of select="seda:ArchivalProfile"/> + </ArchiveUnitProfile> + </xsl:if> <xsl:if test="seda:AccessRestriction | seda:Appraisal"> <Management> <xsl:apply-templates select="seda:Appraisal | seda:AccessRestriction"/> diff --git a/bundle/seda2/Connectors/Seda02Restitution.php b/bundle/seda2/Connectors/Seda02Restitution.php index 3e48eb61..377d3de0 100644 --- a/bundle/seda2/Connectors/Seda02Restitution.php +++ b/bundle/seda2/Connectors/Seda02Restitution.php @@ -77,6 +77,13 @@ class Seda02Restitution extends \bundle\medona\Connectors\Zip // Load CSV to get conversion between agency identifiers $descriptionRefController = \laabs::newController('recordsManagement/descriptionRef'); + // Set ArchivalAgreement + $archivalAgreements = $xml2->xpath->query('/seda2:ArchiveTransfer/seda2:ArchivalAgreement'); + if ($archivalAgreements->length > 0) { + $archivalAgreement = $archivalAgreements->item(0); + $archivalAgreement->nodeValue = $this->translate($params['translationFilesDir'].'/archivalAgreement', $archivalAgreement->nodeValue); + } + // Set ArchivalAgency $archivalAgencyIdentifier = $xml2->xpath->query('/seda2:ArchiveTransfer/seda2:ArchivalAgency/seda2:Identifier')->item(0); $archivalAgencyIdentifier->nodeValue = $this->translate($params['translationFilesDir'].'/archivalAgency', $archivalAgencyIdentifier->nodeValue); @@ -85,6 +92,13 @@ class Seda02Restitution extends \bundle\medona\Connectors\Zip $transferringAgencyIdentifier = $xml2->xpath->query('/seda2:ArchiveTransfer/seda2:TransferringAgency/seda2:Identifier')->item(0); $transferringAgencyIdentifier->nodeValue = $this->translate($params['translationFilesDir'].'/transferringAgency', $transferringAgencyIdentifier->nodeValue); + // Set ManagementMetadata ArchivalProfile + $archivalProfiles = $xml2->xpath->query('/seda2:ArchiveTransfer/seda2:DataObjectPackage/seda2:ManagementMetadata/seda2:ArchivalProfile'); + if ($archivalProfiles->length > 0) { + $archivalprofile = $archivalProfiles->item(0); + $archivalProfile->nodeValue = $this->translate($params['translationFilesDir'].'/archivalProfile', $archivalProfile->nodeValue); + } + $archiveUnits = $xml2->xpath->query('/seda2:ArchiveTransfer/seda2:DataObjectPackage/seda2:DescriptiveMetadata/seda2:ArchiveUnit'); $files = []; $root = dirname($messagePath); @@ -103,23 +117,15 @@ class Seda02Restitution extends \bundle\medona\Connectors\Zip } // Convert profiles - $archivalProfileIdentifiers = $xml2->xpath->query('.//seda2:Content/seda2:archivalProfile/seda2:Identifier', $archiveUnit); - foreach ($archivalProfileIdentifiers as $archivalProfileIdentifier) { - if (!isset($archivalProfiles[$archivalProfileIdentifier->nodeValue])) { - $archivalProfiles[$archivalProfileIdentifier->nodeValue] = $this->translate($params['translationFilesDir'].'/archivalProfile', $archivalProfileIdentifier->nodeValue); + $archiveUnitProfiles = $xml2->xpath->query('./seda2:ArchiveUnitProfile', $archiveUnit); + if ($archiveUnitProfiles->length > 0) { + $archiveUnitProfile = $archiveUnitProfiles->item(0); + if (!isset($archivalProfiles[$archiveUnitProfile->nodeValue])) { + $archivalProfiles[$archiveUnitProfile->nodeValue] = $this->translate($params['translationFilesDir'].'/archivalProfile', $archiveUnitProfile->nodeValue); } - $archivalProfileIdentifier->nodeValue = $archivalProfiles[$archivalProfileIdentifier->nodeValue]; + $archiveUnitProfile->nodeValue = $archivalProfiles[$archiveUnitProfile->nodeValue]; } - // Convert archival Agreement - $archivalAgreementIdentifiers = $xml2->xpath->query('.//seda2:Content/seda2:archivalAgreement/seda2:Identifier', $archiveUnit); - foreach ($archivalAgreementIdentifiers as $archivalAgreementIdentifier) { - if (!isset($archivalAgreements[$archivalAgreementIdentifier->nodeValue])) { - $archivalAgreements[$archivalAgreementIdentifier->nodeValue] = $this->translate($params['translationFilesDir'].'/archivalAgreement', $archivalAgreementIdentifier->nodeValue); - } - $archivalAgreementIdentifier->nodeValue = $archivalAgreements[$archivalAgreementIdentifier->nodeValue]; - } - // Get binary data objects filename, MessageDigest and Size $archiveUnitId = $archiveUnit->getAttribute('id'); $dirname = substr($archiveUnitId, 2); -- GitLab