From b8e5867806fda4d6ff12a0e61e3261e38d293207 Mon Sep 17 00:00:00 2001 From: Arthur Suzuki <arthur.suzuki@biblibre.com> Date: Wed, 4 May 2022 15:32:29 +0200 Subject: [PATCH] hotline#155481 : fix ISBN regex to handle different formats --- VERSIONS_HOTLINE/155481 | 1 + library/Class/Cosmogramme/Integration/Record/DublinCore.php | 4 ++-- .../Cosmogramme/Integration/PhaseNoticeDublinCoreTest.php | 5 ++++- .../Class/Cosmogramme/Integration/dublinCoreResults_all.xml | 2 ++ 4 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 VERSIONS_HOTLINE/155481 diff --git a/VERSIONS_HOTLINE/155481 b/VERSIONS_HOTLINE/155481 new file mode 100644 index 00000000000..071aaebcdcf --- /dev/null +++ b/VERSIONS_HOTLINE/155481 @@ -0,0 +1 @@ + - correctif #155841 : Cosmogramme : Lors d'un import via un flux OAI en DublinCore, les ISSN et ISBN sont correctement detectés quel que soit leur format (avec ou sans tirets). \ No newline at end of file diff --git a/library/Class/Cosmogramme/Integration/Record/DublinCore.php b/library/Class/Cosmogramme/Integration/Record/DublinCore.php index 39f8a499cc3..7faea0a8c15 100644 --- a/library/Class/Cosmogramme/Integration/Record/DublinCore.php +++ b/library/Class/Cosmogramme/Integration/Record/DublinCore.php @@ -81,11 +81,11 @@ class Class_Cosmogramme_Integration_Record_DublinCore extends notice_unimarc { Class_Indexation_PseudoNotice_UnimarcVisitor $unimarc_visitor) { $matches=[]; - if (preg_match('/URN:ISBN[^\d]+((97(8|9))?\d{9}(\d|X))/',$url,$matches)) { + if (preg_match('/URN:ISBN :([0-9\-X]+)/',$url,$matches)) { $unimarc_visitor->visitIsbn($matches[1]); return $unimarc_visitor; } - if (preg_match('/ISSN[^\d]+([0-9]{4}-[0-9]{4})/',$url,$matches)){ + if (preg_match('/URN:ISSN :([0-9\-]+)/',$url,$matches)){ $unimarc_visitor->visitIssn($matches[1]); return $unimarc_visitor; } diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseNoticeDublinCoreTest.php b/tests/library/Class/Cosmogramme/Integration/PhaseNoticeDublinCoreTest.php index 47e32e5968a..b80ffc09fa0 100644 --- a/tests/library/Class/Cosmogramme/Integration/PhaseNoticeDublinCoreTest.php +++ b/tests/library/Class/Cosmogramme/Integration/PhaseNoticeDublinCoreTest.php @@ -190,7 +190,10 @@ class PhaseNoticeDublinCoreTest extends AbstractPhaseNoticeDublinCoreTestCase { /** @test */ public function firstRecordISBNShouldBe9782955314357() { $isbn = Class_Notice::find(1)->get_subfield('010','a'); - $this->assertContains('9782955314357',$isbn); + $this->assertEquals(['9782955314357', + '978295531435X', + '978-2-955314-35-7'], + $isbn); } diff --git a/tests/library/Class/Cosmogramme/Integration/dublinCoreResults_all.xml b/tests/library/Class/Cosmogramme/Integration/dublinCoreResults_all.xml index 5208a832c27..b9e59798ae7 100644 --- a/tests/library/Class/Cosmogramme/Integration/dublinCoreResults_all.xml +++ b/tests/library/Class/Cosmogramme/Integration/dublinCoreResults_all.xml @@ -2,6 +2,8 @@ <record><header><identifier>oai:bnf.fr:gallica/ark:/12148/btv1b55006135m</identifier><datestamp>2012-09-21</datestamp><setSpec>gallica:typedoc:cartes:atlas</setSpec></header><metadata><oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> <dc:identifier>http://gallica.bnf.fr/ark:/12148/btv1b55006135m</dc:identifier> <dc:identifier>URN:ISBN :9782955314357</dc:identifier> +<dc:identifier>URN:ISBN :978295531435X</dc:identifier> +<dc:identifier>URN:ISBN :978-2-955314-35-7</dc:identifier> <dc:identifier>URN:ISSN :1234-6789</dc:identifier> <dc:identifier>Ceci n'est pas une URL</dc:identifier> <dc:identifier>https://biblio.nantes.archi.fr/cgi-bin/koha/opac-detail.pl?biblionumber=46829</dc:identifier> -- GitLab