diff --git a/VERSIONS_HOTLINE/143623 b/VERSIONS_HOTLINE/143623 new file mode 100644 index 0000000000000000000000000000000000000000..7aab4d336984fa53f98c22bf8d22b1f08e56691b --- /dev/null +++ b/VERSIONS_HOTLINE/143623 @@ -0,0 +1 @@ + - correctif #143623 : Cosmogramme : Les facettes auteurs sont maintenant mises à jour pendant les intégrations. \ No newline at end of file diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php index 710a18b3190f34fbdba5f86debb6ac866da699f1..f80066767da39c6e11532c7ae8ea685d7542a11f 100644 --- a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php +++ b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php @@ -1112,6 +1112,15 @@ class NoticeIntegrationUpdateExistingNoticeTest extends NoticeIntegrationTestCa class NoticeIntegrationMachecoulTest extends NoticeIntegrationTestCase { public function setUp() { parent::setUp(); + + $this->onLoaderOfModel(Class_CodifAuteur::class) + ->whenCalled('findByCodeAlpha') + ->with('LEDUxSTEPHANIE') + ->willDo(fn() => Class_CodifAuteur::findFirstBy([])) + + ->whenCalled('findByCodeAlpha') + ->answers(null); + $this->loadNotice('unimarc_ledu_stephanie'); $this->datas = $this->notice_integration->noticeToDBEnreg($this->notice_data); $this->notice_sgbd->ouvrirNotice($this->datas['unimarc'], 0); @@ -1550,4 +1559,4 @@ class NoticeIntegrationItemsUpdateDateTest extends NoticeIntegrationTestCase { public function itemsShouldHaveShelfKeyUpdateDateSetTo20220620() { $this->assertEquals(8, Class_Exemplaire::countBy(['shelf_key_update_date' => '2022-06-20 16:53:17'])); } -} \ No newline at end of file +} diff --git a/library/Class/CodifAuteur.php b/library/Class/CodifAuteur.php index a0c95c4227fae5a89a5f397267ff5bc0e2bc6d30..8576c4ba5ef30d0d438c4492a0037dda49263da1 100644 --- a/library/Class/CodifAuteur.php +++ b/library/Class/CodifAuteur.php @@ -61,22 +61,32 @@ class CodifAuteurLoader extends Storm_Model_Loader { } - public function findOrCreate($code_alpha, $auteur) { + public function findOrCreate(string $code_alpha, + string $auteur) : Class_CodifAuteur { $existing = Class_CodifAuteur::findByCodeAlpha($code_alpha); - if(!$existing) { - $nom_prenom = (-1 < $pos = strscan($auteur, "|", 0)) - ? trim(substr($auteur, ($pos+1)) . ' ' . substr($auteur, 0, $pos)) - : $auteur; - - $existing = Class_CodifAuteur::newInstance(['libelle' => $nom_prenom, + if (!$existing) { + $existing = Class_CodifAuteur::newInstance(['libelle' => $this->_getLibelle($auteur), 'formes' => $code_alpha]); $existing->save(); + return $existing; } + + $label = $this->_getLibelle($auteur); + if ($existing->getLibelle() !== $label) + $existing->setLibelle($label)->save(); + return $existing; } + protected function _getLibelle(string $label) : string { + return (-1 < $pos = strscan($label, "|", 0)) + ? trim(substr($label, ($pos + 1)) . ' ' . substr($label, 0, $pos)) + : $label; + } + + public function findByCodeAlpha($code_alpha) { if (isset($this->_by_alpha_cache[$code_alpha])) return $this->_by_alpha_cache[$code_alpha]; diff --git a/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php b/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php index bd85f9ccbb9c551e42330c0edd7366dda0be8ecf..194bcdd4326c9aadfc284dd46429a2a50b9bf07e 100644 --- a/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php +++ b/tests/library/Class/Cosmogramme/Integration/PhaseNoticeTest.php @@ -707,3 +707,47 @@ class PhaseNoticeIdentifiersTest extends PhaseNoticeTestCase { $this->assertNull(Class_Notice_Identifiers::findFirstBy(['identifier' => 'i098I7uu/ISRT9.I'])); } } + + + + +/* hotline: https://forge.afi-sa.net/issues/143623 */ +class PhaseNoticeAuthorRenamedTest extends PhaseNoticeTestCase { + + protected function _prepareFixtures() { + parent::_prepareFixtures(); + + $this->fixture(Class_CodifAuteur::class, + ['id' => 11, + 'libelle' => 'WILDE oscar', + 'formes' => 'WILDExOSCAR', + 'mots_renvois' => '', + 'date_creation' => '2014-01-01']); + + $this->fixture(Class_Notice::class, + ['id' => 654321, + 'facettes' => 'A11', + 'exemplaires' => [$this->fixture(Class_Exemplaire::class, + ['id' => 123456, + ])]]); + + Class_Cosmogramme_Integration::find(999) + ->setFichier('dvorak.mrc') + ->setTypeOperation(Class_Cosmogramme_Integration::TYPE_OPERATION_INCREMENT) + ->save(); + + $this->onLoaderOfModel(Class_CodifAuteur::class) + ->whenCalled('findByCodeAlpha') + ->with('WILDExOSCAR') + ->answers(Class_CodifAuteur::find(11)) + + ->whenCalled('findByCodeAlpha') + ->answers(null); + } + + + /** @test */ + public function codifAuthorId11ShouldExistWithUpdatedLibelleOscarWilde() { + $this->assertEquals('Oscar Wilde', Class_CodifAuteur::find(11)->getLibelle()); + } +} diff --git a/tests/library/Class/Cosmogramme/Integration/dvorak.mrc b/tests/library/Class/Cosmogramme/Integration/dvorak.mrc index ebd217439a9e07bf4f1d996565ba3efdd81caf87..dd792f46d2c2f494b85702c90521fdeec2cb9802 100644 --- a/tests/library/Class/Cosmogramme/Integration/dvorak.mrc +++ b/tests/library/Class/Cosmogramme/Integration/dvorak.mrc @@ -1 +1 @@ -02977njm0 2200337 450 00100070000000500170000703500170002403600140004107100300005507300170008509000110010209100190011309900340013210000410016610100080020712700100021520000710022521000250029621500210032132300240034232708040036633010320117034500480220260600250225068600080227570000460228370200350232970200410236480100600240599501740246510389720210131050004.0 aMUL_11135678 a000240835 aHMC901824bHarmonia Mundi a794881736324 a103897 a2b20210131c0 tCDx1c2017-07-03d2017-07-03 a20040712d2004----u--y0frey5003----ba acze a019001 aLiederfA. DvorakgBernarda Fink, soprano et Roger Vignoles, piano cHarmonia Mundid2004 a1 d.c.e1 livret aEnregistré en 2003 aO notre amour --aLa Nuit envahit bien les coeurs --aJe chancelle à présent --aJe voudrais croire --aUn Doux sommeil --aSeul, si seul, assis dans la forêt --aJe voudrais mourir --aO mon âme --aLa Guirlande --aLa Rose --aLe Coucou --aL' Alouette --aL' Abandonnée --aLes Fraises --aO quel beau rêve --aSouvent mon coeur devient pensif --aObstacles --aRéflexion --aLes Tilleuls --aLa Brodeuse --aLe Printemps --aAu bord du ruisseau --aBonne nuit --aUne Jeune fille fauchait --aAh n'est pas là --aOhé j'ai un cheval --aMon chant est plein d'amour --aEcoutez comme chante mon triangle --aEt la forêt autour de moi reste silencieuse --aLorsque ma vieille mère --aLe Violon est accordé --aPlus agréables sont aux tziganes --aDonnez à un faucon une cage en or -- aAvec quelques belles parutions récentes, Harmona Mundi propose ce qui peut être considéré comme un événement majeur pour tous les amoureux de la musique Tchèque en nous offrant cette copieuse compilation de Lieder d’AntonÃn Dvořák. Comme souvent, c’est l’Amour qui pousse pour la première fois le compositeur - alors âgé de vingt quatre ans - à créer diverses mélodies dédiées à Josefina Cermáková, l’aînée de deux sÅ“urs à qui il donnait quelques leçons pour gagner sa vie. Qui mieux que la divine mezzo-soprano Bernarda Fink pouvait retranscrire ces pages ? Après de brillantes études en Argentine, son pays de naissance, l’artiste s’installe en Europe et plus particulièrement à Prague. Ses origines slaves l’y poussent certainement. Sa voix chaude et sensuelle distille un vibrato parfait, puis se renforce grâce à une diction précise du tchèque. Pour les amoureux du Lied, ce disque est incontournable et restera inévitablement dans les grandes découvertes discographiques. aGAMb0794881736324cdisque compactd24,17 E aLieder acc. de piano a151 1932212aDvořákbAntonÃnf1841-19044230 1aFinkbBernardaf1955-....4721 1aVignolesbRogerf1945-....45454kpf 0aFRbBibliothèque municipale de Mulhousec040712gAFNOR aBIBLIOTHEQUE MUNICIPALE ST-PRYVE ST-MESMINfL-0113177*81gL-h011317kRO WILm201411040Adultes50opqeram1[ALP][Librairie ALPHABET][ORLEANS][45000][14, Rue de la R01093cam0 2200325 450 0010009000000050017000090100038000260200017000640330051000810350025001320730018001571000041001751010008002161020007002241050018002311060006002491810019002551810024002741820010002981820020003082000038003282140048003662150033004146860015004477000062004628010038005249900006005629960018005689950181005861/85644920210324173053.0 a978-2-7324-8630-7bbr.d20,90 EUR aFRb01847488 ahttp://catalogue.bnf.fr/ark:/12148/cb45509260m aFRBNF455092600000007 0a9782732486307 a20180524d2018 m y0frey50 ba0 afre aFR a||||z 00|a| ar 0601ai bxxxe 602ctxt2rdacontent 0601an 602cn2rdamedia1 aQaanaaqbtexte impriméfMo Malø 0aPariscÉditions de La MartinièredDL 2018 a1 vol. (491 p.)cill.d23 cm a8032Cadre 1317749185oISNI0000000468059690aMaløbMof1968-....4070 0aFRbFR-751131015c20180524gAFNOR a1 fROMgTHRpADU aBIBLIOTHEQUE MUNICIPALE ST-PRYVE ST-MESMINfL-0113187*81gL-h011318kRO WILm201411040Enfants51 joueuropqeram1[ALP][Librairie ALPHABET][ORLEANS][45000][14, Rue de la R \ No newline at end of file +03006njm0 2200349 450 00100070000000500170000703500170002403600140004107100300005507300170008509000110010209100190011309900340013210000410016610100080020712700100021520000710022521000250029621500210032132300240034232708040036633010320117034500480220260600250225068600080227570000460228370200350232970200410236470200170240580100600242299501740248210389720210131050004.0 aMUL_11135678 a000240835 aHMC901824bHarmonia Mundi a794881736324 a103897 a2b20210131c0 tCDx1c2017-07-03d2017-07-03 a20040712d2004----u--y0frey5003----ba acze a019001 aLiederfA. DvorakgBernarda Fink, soprano et Roger Vignoles, piano cHarmonia Mundid2004 a1 d.c.e1 livret aEnregistré en 2003 aO notre amour --aLa Nuit envahit bien les coeurs --aJe chancelle à présent --aJe voudrais croire --aUn Doux sommeil --aSeul, si seul, assis dans la forêt --aJe voudrais mourir --aO mon âme --aLa Guirlande --aLa Rose --aLe Coucou --aL' Alouette --aL' Abandonnée --aLes Fraises --aO quel beau rêve --aSouvent mon coeur devient pensif --aObstacles --aRéflexion --aLes Tilleuls --aLa Brodeuse --aLe Printemps --aAu bord du ruisseau --aBonne nuit --aUne Jeune fille fauchait --aAh n'est pas là --aOhé j'ai un cheval --aMon chant est plein d'amour --aEcoutez comme chante mon triangle --aEt la forêt autour de moi reste silencieuse --aLorsque ma vieille mère --aLe Violon est accordé --aPlus agréables sont aux tziganes --aDonnez à un faucon une cage en or -- aAvec quelques belles parutions récentes, Harmona Mundi propose ce qui peut être considéré comme un événement majeur pour tous les amoureux de la musique Tchèque en nous offrant cette copieuse compilation de Lieder d’AntonÃn Dvořák. Comme souvent, c’est l’Amour qui pousse pour la première fois le compositeur - alors âgé de vingt quatre ans - à créer diverses mélodies dédiées à Josefina Cermáková, l’aînée de deux sÅ“urs à qui il donnait quelques leçons pour gagner sa vie. Qui mieux que la divine mezzo-soprano Bernarda Fink pouvait retranscrire ces pages ? Après de brillantes études en Argentine, son pays de naissance, l’artiste s’installe en Europe et plus particulièrement à Prague. Ses origines slaves l’y poussent certainement. Sa voix chaude et sensuelle distille un vibrato parfait, puis se renforce grâce à une diction précise du tchèque. Pour les amoureux du Lied, ce disque est incontournable et restera inévitablement dans les grandes découvertes discographiques. aGAMb0794881736324cdisque compactd24,17 E aLieder acc. de piano a151 1932212aDvořákbAntonÃnf1841-19044230 1aFinkbBernardaf1955-....4721 1aVignolesbRogerf1945-....45454kpf 1aWildebOscar 0aFRbBibliothèque municipale de Mulhousec040712gAFNOR aBIBLIOTHEQUE MUNICIPALE ST-PRYVE ST-MESMINfL-0113177*81gL-h011317kRO WILm201411040Adultes50opqeram1[ALP][Librairie ALPHABET][ORLEANS][45000][14, Rue de la R01093cam0 2200325 450 0010009000000050017000090100038000260200017000640330051000810350025001320730018001571000041001751010008002161020007002241050018002311060006002491810019002551810024002741820010002981820020003082000038003282140048003662150033004146860015004477000062004628010038005249900006005629960018005689950181005861/85644920210324173053.0 a978-2-7324-8630-7bbr.d20,90 EUR aFRb01847488 ahttp://catalogue.bnf.fr/ark:/12148/cb45509260m aFRBNF455092600000007 0a9782732486307 a20180524d2018 m y0frey50 ba0 afre aFR a||||z 00|a| ar 0601ai bxxxe 602ctxt2rdacontent 0601an 602cn2rdamedia1 aQaanaaqbtexte impriméfMo Malø 0aPariscÉditions de La MartinièredDL 2018 a1 vol. (491 p.)cill.d23 cm a8032Cadre 1317749185oISNI0000000468059690aMaløbMof1968-....4070 0aFRbFR-751131015c20180524gAFNOR a1 fROMgTHRpADU aBIBLIOTHEQUE MUNICIPALE ST-PRYVE ST-MESMINfL-0113187*81gL-h011318kRO WILm201411040Enfants51 joueuropqeram1[ALP][Librairie ALPHABET][ORLEANS][45000][14, Rue de la R \ No newline at end of file