diff --git a/VERSIONS_HOTLINE/185604 b/VERSIONS_HOTLINE/185604 new file mode 100644 index 0000000000000000000000000000000000000000..3565e18eab0baef99a8072054e3940c8431a87a2 --- /dev/null +++ b/VERSIONS_HOTLINE/185604 @@ -0,0 +1 @@ + - correctif #185604 : Cosmogramme : Les périodiques Koha sont correctement importés y compris avec le format MarcXML qui posait problème dans le cas où étaient activés l'identification des articles de périodiques Koha \ No newline at end of file diff --git a/cosmogramme/php/classes/classe_notice_integration.php b/cosmogramme/php/classes/classe_notice_integration.php index f570c1b8160120f8b5dc7f12b3a15673e5fec3ea..83c9f346a9b0d37b04ce2b00c0ebd829df6667b5 100644 --- a/cosmogramme/php/classes/classe_notice_integration.php +++ b/cosmogramme/php/classes/classe_notice_integration.php @@ -183,24 +183,25 @@ class notice_integration { } - public function traiteNotice($data) { + public function traiteNotice($data, $analyser=null) { $this->_raw_data = $data; $id_bib = $this->id_bib; - if(!$this->analyseur) + $analyser ??= $this->analyseur; + if(!$analyser) return false; $this->statut = static::RECORD_REJECT; $this->erreur = ''; unset($this->notice); - if(!$this->analyseur->ouvrirNotice($data, $this->id_profil, $this->sigb, $this->type_doc_force)) { - $this->erreur=$this->analyseur->getLastError(); + if(!$analyser->ouvrirNotice($data, $this->id_profil, $this->sigb, $this->type_doc_force)) { + $this->erreur=$analyser->getLastError(); return 0; } - $this->notice = $this->analyseur->getNoticeIntegration(); + $this->notice = $analyser->getNoticeIntegration(); if($this->notice['type_doc'] == Class_TypeDoc::SERIAL_ARTICLE) { $this->ecrireArticlePeriodique(); @@ -439,12 +440,7 @@ class notice_integration { if ($this->notice['tome_alpha']) return $this; - $serial_integration = new static(); - $serial_integration->setParamsIntegration($this->id_int_bib, - $this->type_operation, - $this->id_profil, - $this->type_doc_force); - + $serial_integration = clone $this; $champ_numero = $number_map[$this->id_article_periodique]; foreach($this->notice['exemplaires'] as $item) $serial_integration->_traitePeriodiquesKohaItem($this->notice, @@ -519,7 +515,7 @@ class notice_integration { $this->notice_sgbd->add_field('995', ' ', $table_champs); $this->notice_sgbd->update(); - $this->traiteNotice($this->notice_sgbd->getFullRecord()); + $this->traiteNotice($this->notice_sgbd->getFullRecord(), new notice_unimarc); $this->flag_koha = false; } diff --git a/cosmogramme/tests/php/classes/KohaPeriodiquesTest.php b/cosmogramme/tests/php/classes/KohaPeriodiquesTest.php index 53e6ffbfd1c299a78ea1e31e250189d7f84ed7d2..42de6f91ec9fe2a81211fe9e73a996409c4839ad 100644 --- a/cosmogramme/tests/php/classes/KohaPeriodiquesTest.php +++ b/cosmogramme/tests/php/classes/KohaPeriodiquesTest.php @@ -351,6 +351,47 @@ class KohaPeriodiquesGeoAdoTest extends KohaPeriodiquesTestCase { +class KohaPeriodiquesMarcXmlTest extends KohaPeriodiquesTestCase { + + public function getProfilDonnees() { + $profil = Class_IntProfilDonnees::forKoha() + ->setIdProfil(113) + ->setFormat(Class_IntProfilDonnees::FORMAT_UNIMARC_XML) + ->setTypeDocRecognition(Class_TypeDoc::PERIODIQUE, '', 'REV') + ->setTypeDocField('r'); + return $profil->getRawAttributes(); + } + + + public function setUp() { + parent::setUp(); + $this->loadNotice('unimarc_periodik_marcxml'); + } + + + /** @test */ + public function subfield200AShouldBeGeoAdo() { + $this->assertEquals('Beauvais', + $this->notice_integration->get_subfield('200', 'a')[0]); + } + + + /** @test */ + public function numberOfNoticesShouldBeFour() { + $this->assertEquals(4, count(Class_Notice::findAll())); + } + + + /** @test */ + public function thirdNoticeNumberShouldBeSerial() { + $this->assertEquals(Class_TypeDoc::PERIODIQUE, + Class_Notice::find(3)->getTypeDoc()); + } +} + + + + class KohaPeriodiquesImagesDocTest extends KohaPeriodiquesTestCase { public function setUp() { diff --git a/cosmogramme/tests/php/classes/unimarc_periodik_marcxml.txt b/cosmogramme/tests/php/classes/unimarc_periodik_marcxml.txt new file mode 100644 index 0000000000000000000000000000000000000000..eed5394e7f2b47477c440b0547e4715a3ea077c9 --- /dev/null +++ b/cosmogramme/tests/php/classes/unimarc_periodik_marcxml.txt @@ -0,0 +1,94 @@ +<record> + <leader>00363nas a2200145 4500</leader> + <controlfield tag="001">32106</controlfield> + <controlfield tag="005">20130809095848.0</controlfield> + <controlfield tag="009">0307863</controlfield> + <datafield tag="090" ind1=" " ind2=" "> + <subfield code="a">32106</subfield> + </datafield> + <datafield tag="091" ind1=" " ind2=" "> + <subfield code="a">2</subfield> + <subfield code="b">20130302</subfield> + <subfield code="c">0</subfield> + </datafield> + <datafield tag="099" ind1=" " ind2=" "> + <subfield code="t">REV</subfield> + </datafield> + <datafield tag="100" ind1=" " ind2=" "> + <subfield code="a">20130212 frey50 </subfield> + </datafield> + <datafield tag="200" ind1=" " ind2=" "> + <subfield code="a">Beauvais</subfield> + <subfield code="i">janv 1996 à déc 1997</subfield> + </datafield> + <datafield tag="461" ind1=" " ind2=" "> + <subfield code="t">Beauvais</subfield> + </datafield> + <datafield tag="801" ind1=" " ind2="0"> + <subfield code="a">FR</subfield> + <subfield code="b">Conversion OPSYS / Bm de Beauvais / Dynix</subfield> + </datafield> + <datafield tag="995" ind1=" " ind2=" "> + <subfield code="2">0</subfield> + <subfield code="5">2003-12-09</subfield> + <subfield code="9">59861</subfield> + <subfield code="b">B</subfield> + <subfield code="c">B</subfield> + <subfield code="e">ADULTE</subfield> + <subfield code="f">1235262</subfield> + <subfield code="i">0.00</subfield> + <subfield code="k">944.2 BEA</subfield> + <subfield code="o">0</subfield> + <subfield code="r">REV</subfield> + <subfield code="v">0</subfield> + <subfield code="w">0</subfield> + <subfield code="z">2011-05-10</subfield> + </datafield> + <datafield tag="995" ind1=" " ind2=" "> + <subfield code="2">0</subfield> + <subfield code="5">2003-12-09</subfield> + <subfield code="9">59862</subfield> + <subfield code="b">B</subfield> + <subfield code="c">B</subfield> + <subfield code="e">ADULTE</subfield> + <subfield code="f">1235196</subfield> + <subfield code="i">0.00</subfield> + <subfield code="k">944.2 BEA</subfield> + <subfield code="o">0</subfield> + <subfield code="r">REV</subfield> + <subfield code="v">1</subfield> + <subfield code="w">0</subfield> + <subfield code="z">2011-05-10</subfield> + </datafield> + <datafield tag="995" ind1=" " ind2=" "> + <subfield code="2">0</subfield> + <subfield code="5">2003-12-09</subfield> + <subfield code="9">59863</subfield> + <subfield code="b">B</subfield> + <subfield code="c">B</subfield> + <subfield code="e">ADULTE</subfield> + <subfield code="f">1192948</subfield> + <subfield code="i">0.00</subfield> + <subfield code="k">944.2 BEA</subfield> + <subfield code="o">0</subfield> + <subfield code="r">REV</subfield> + <subfield code="v">2</subfield> + <subfield code="w">0</subfield> + <subfield code="z">2011-05-10</subfield> + </datafield> + <datafield tag="995" ind1=" " ind2=" "> + <subfield code="2">0</subfield> + <subfield code="5">2003-12-09</subfield> + <subfield code="9">59864</subfield> + <subfield code="b">B</subfield> + <subfield code="c">B</subfield> + <subfield code="e">ADULTE</subfield> + <subfield code="f">1192840</subfield> + <subfield code="i">0.00</subfield> + <subfield code="k">944.2 BEA</subfield> + <subfield code="o">0</subfield> + <subfield code="r">REV</subfield> + <subfield code="w">0</subfield> + <subfield code="z">2011-05-10</subfield> + </datafield> +</record>