From 0a4c7bee7c2f1631ed27381525caed9b95f008e7 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT <hdlaurent@afi-sa.net> Date: Wed, 16 Aug 2023 12:14:04 +0000 Subject: [PATCH] hotline#174979 : Cyberlibris : adding Poster support --- VERSIONS_HOTLINE/174979 | 1 + library/Class/Album.php | 9 +++++++-- .../DublinCoreParser/ForRessourceNumerique.php | 9 +++++++-- .../Cyberlibris/Service/Parser.php | 16 ++++++++++------ .../Cyberlibris/tests/CyberlibrisTest.php | 1 + 5 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 VERSIONS_HOTLINE/174979 diff --git a/VERSIONS_HOTLINE/174979 b/VERSIONS_HOTLINE/174979 new file mode 100644 index 00000000000..64c39c1775c --- /dev/null +++ b/VERSIONS_HOTLINE/174979 @@ -0,0 +1 @@ + - correctif #174979 : Cyberlibris : Prise en compte des vignettes de notices Cyberlibris lors du moissonage \ No newline at end of file diff --git a/library/Class/Album.php b/library/Class/Album.php index f77de423786..2a0822719e2 100644 --- a/library/Class/Album.php +++ b/library/Class/Album.php @@ -1426,10 +1426,15 @@ class Class_Album extends Storm_Model_Abstract { if (!isset($unimarc_value['x']) || !isset($unimarc_value['a']) || $field !== $unimarc_value['x'] - || '' == trim($unimarc_value['a'])) + || (is_string($unimarc_value['a']) + && '' == trim($unimarc_value['a']))) continue; - $values[] = $unimarc_value['a']; + if (is_string($unimarc_value['a'])) + $values[] = $unimarc_value['a']; + + if (is_array($unimarc_value['a'])) + $values = array_merge($values,$unimarc_value['a']); } return $values; diff --git a/library/Class/WebService/OAI/DublinCoreParser/ForRessourceNumerique.php b/library/Class/WebService/OAI/DublinCoreParser/ForRessourceNumerique.php index e41a87947e0..1de1338ceb7 100644 --- a/library/Class/WebService/OAI/DublinCoreParser/ForRessourceNumerique.php +++ b/library/Class/WebService/OAI/DublinCoreParser/ForRessourceNumerique.php @@ -94,8 +94,13 @@ class Class_WebService_OAI_DublinCoreParser_ForRessourceNumerique foreach($this->_record['matiere'] as $matiere) $resource->addMatiere($matiere); - if ($relation = $this->_record['relation']) - $resource->setExternalUri($relation[0]); + foreach (($this->_record['relation'] ?? []) as $relation) + $resource->getExternalUri() + ? $resource->addPoster($relation) + : $resource->setExternalUri($relation); + + foreach (($this->_record['posters'] ?? []) as $poster) + $resource->addPoster($poster); return parent::endRecord($data); } diff --git a/library/digital_resources/Cyberlibris/Service/Parser.php b/library/digital_resources/Cyberlibris/Service/Parser.php index 9fe98884618..e3d139fc802 100644 --- a/library/digital_resources/Cyberlibris/Service/Parser.php +++ b/library/digital_resources/Cyberlibris/Service/Parser.php @@ -23,18 +23,22 @@ class Cyberlibris_Service_Parser extends Class_WebService_OAI_DublinCoreParser_ForRessourceNumerique { public function enddc_identifier($data) { - if (!preg_match('|/book/([^/?]+)|i', $data, $matches)) - return; + if (preg_match('|/book/([^/?]+)|i', $data, $matches)){ + $this->_record['id_oai'] = $matches[1]; + $this->_record['relation'][] = $data; + } + + if (preg_match('|^([0-9]+)$|i', $data, $matches)) + $this->_record['ean'] = $matches[1]; - $this->_record['id_oai'] = $matches[1]; - $this->_record['relation'][] = $data; + if (preg_match('|^(https://static2.cyberlibris.com/.*.jpg)$|i', trim($data), $matches)) + $this->_record['posters'][] = $matches[1]; } public function end_identifier($data) { if (!preg_match('|oai:cyberlibris.fr:([^/?]+)|i', $data, $matches)) return; - $this->_record['ean'] = $matches[1]; } -} \ No newline at end of file +} diff --git a/library/digital_resources/Cyberlibris/tests/CyberlibrisTest.php b/library/digital_resources/Cyberlibris/tests/CyberlibrisTest.php index 7b11db80093..7870069d727 100644 --- a/library/digital_resources/Cyberlibris/tests/CyberlibrisTest.php +++ b/library/digital_resources/Cyberlibris/tests/CyberlibrisTest.php @@ -331,6 +331,7 @@ de la création d'entreprise avec, pour chacune d'elles, les pièges et écueils ['first_editor', 'Maxima'], ['main_author_name', 'Sens, René'], ['external_uri', 'https://www.bibliovox.com/book/10045152'], + ['poster', 'https://static2.cyberlibris.com/books_upload/136pix/2840013444.jpg'], ]; } -- GitLab