diff --git a/VERSIONS_HOTLINE/174979 b/VERSIONS_HOTLINE/174979 new file mode 100644 index 0000000000000000000000000000000000000000..64c39c1775c959f7d67b761df44ad099b6a0fb2a --- /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 f77de4237865fc5e63e36ccac49572b58e6394e1..2a0822719e2d13da75b8cf55eab70e3932a315eb 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 e41a87947e066007430ae4a24db6a4ded4cc6236..1de1338ceb78458cf20401c3f753aee7b6ed5de3 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 9fe9888461823e669535e5aec89a95e728f96d1e..e3d139fc802d580b4820f9ba6caad8be348e2600 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 7b11db800936e113b5b3b4d97b927f14bafc548c..7870069d7272214bf31fc374226746337557acb0 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'], ]; }