diff --git a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php index 75cee3069038261777fca166e9e176aec436c406..455a60cf4bcea554a4fd613f507ebe4dce8d3fc1 100644 --- a/cosmogramme/tests/php/classes/NoticeIntegrationTest.php +++ b/cosmogramme/tests/php/classes/NoticeIntegrationTest.php @@ -1135,6 +1135,48 @@ class NoticeIntegrationUpdateExistingNoticeTest extends NoticeIntegrationTestCa public function zone700aShouldBeGuibbaud() { $this->assertEquals('Guibbaud', $this->notice_sgbd->get_subfield('700', 'a')[0]); } + + + /** @test */ + public function codifAuteurShouldBe_Christian_Guibbaud() { + $this->assertEquals('Christian Guibbaud', Class_CodifAuteur::find(1)->getLibelle()); + } + + + /** @test */ + public function codifAuteurLibelleShouldBe_Jean_P_Francois() { + $this->assertEquals('Jean P. François', Class_CodifAuteur::find(2)->getLibelle()); + } + + + /** @test */ + public function codifAuteurFormesShouldBe_FRANCOISxJEANxP() { + $this->assertEquals('FRANCOISxJEANxP', Class_CodifAuteur::find(2)->getFormes()); + } + + + /** @test */ + public function codifAuteurLibelleShouldBe_Francois_Dosse() { + $this->assertEquals('François Dosse', Class_CodifAuteur::find(3)->getLibelle()); + } + + + /** @test */ + public function codifAuteurFormesShouldBe_DOSSExFRANCOIS() { + $this->assertEquals('DOSSExFRANCOIS', Class_CodifAuteur::find(3)->getFormes()); + } + + + /** @test */ + public function codifAuteurLibelleShouldBe_Jacques_Genereux() { + $this->assertEquals('Jacques Généreux', Class_CodifAuteur::find(4)->getLibelle()); + } + + + /** @test */ + public function codifAuteurFormesShouldBe_GENEREUXxJACQUES() { + $this->assertEquals('GENEREUXxJACQUES', Class_CodifAuteur::find(4)->getFormes()); + } } diff --git a/cosmogramme/tests/php/classes/unimarc_chaperon_rouge.txt b/cosmogramme/tests/php/classes/unimarc_chaperon_rouge.txt index 6d2778db87b7d19c60542ed6baf96d2032fd755a..f69f1893232ad9a3dc656fea8204d997e0271d25 100644 --- a/cosmogramme/tests/php/classes/unimarc_chaperon_rouge.txt +++ b/cosmogramme/tests/php/classes/unimarc_chaperon_rouge.txt @@ -1 +1 @@ -01275cam 2200265 450 001001500000010004000015010003600055100004100091101000800132102000700140105001800147106000600165200005000171210003500221211001300256215004800269225002800317330030600345345001800651410004000669700004100709801003300750902002300783995020300806frOr0292233716 a978-2-7459-2424-7bCart.d13.00 EUR a2-7459-2424-9bCart.d13.00 EUR a20090206d2007 b |0fre|0103||||ba afre aFR aaa 0||y| ar1 a[Le ]Petit Chaperon rougefChristian Guibbaud aToulousecMilan jeunessed2007 1a20070322 a14 p.cillustrations en couleurd21 x 21 cm1 aUne comptine Áa toucher aL'histoire du Petit Chaperon rouge revisitÂee avec des matiÁeres Áa toucher : bonnet du chaperon rouge, panier, fourrure du loup, robe de la grand-mÁere, oreille du loup, et des animations : tirette pour la chevillette, porte-volet, pop-up tÃete de loup, yeux de loup en relief avec des billes, corde. b9782745924247 134401220000tUne comptine Áa toucher 139729000147aGuibbaudbChristian4070 aFRbElectrec20090206gAFNOR aEveil (0 Áa 3 ans)00a06209000009176b292233716cld106fA GUI Pg4h4i4l1306200004o30/04/2014p17/05/2014q28/09/2013r19/10/2013t1316400077w10x55y2z1B1300C31/08/2009D164G15H15NcOaS106T4V106W55Z22530 \ No newline at end of file +01426cam 2200301 450 001001500000010004000015010003600055100004100091101000800132102000700140105001800147106000600165200005000171210003500221211001300256215004800269225002800317330030600345345001800651410004000669700004100709700003900750700003700789700003900826801003300865902002300898995020300921frOr0292233716 a978-2-7459-2424-7bCart.d13.00 EUR a2-7459-2424-9bCart.d13.00 EUR a20090206d2007 b |0fre|0103||||ba afre aFR aaa 0||y| ar1 a[Le ]Petit Chaperon rougefChristian Guibbaud aToulousecMilan jeunessed2007 1a20070322 a14 p.cillustrations en couleurd21 x 21 cm1 aUne comptine Áa toucher aL'histoire du Petit Chaperon rouge revisitÂee avec des matiÁeres Áa toucher : bonnet du chaperon rouge, panier, fourrure du loup, robe de la grand-mÁere, oreille du loup, et des animations : tirette pour la chevillette, porte-volet, pop-up tÃete de loup, yeux de loup en relief avec des billes, corde. b9782745924247 134401220000tUne comptine Áa toucher 139729000147aGuibbaudbChristian4070 139729000148aFrançoisbJean P.4070 139729000149aDossebFrançois4070 139729000150aGénéreuxbJacques4070 aFRbElectrec20090206gAFNOR aEveil (0 Áa 3 ans)00a06209000009176b292233716cld106fA GUI Pg4h4i4l1306200004o30/04/2014p17/05/2014q28/09/2013r19/10/2013t1316400077w10x55y2z1B1300C31/08/2009D164G15H15NcOaS106T4V106W55Z22530 \ No newline at end of file diff --git a/library/Class/CodifAuteur.php b/library/Class/CodifAuteur.php index f842db610c62c411405218bd36a99b1b46c85583..1a77201343912bef385b67179222d54e512dd2f9 100644 --- a/library/Class/CodifAuteur.php +++ b/library/Class/CodifAuteur.php @@ -81,8 +81,10 @@ class CodifAuteurLoader extends Storm_Model_Loader { protected function _getLibelle(string $label) : string { - return (-1 < $pos = strscan($label, Class_Notice_Author::SEP_NAMES, 0)) - ? trim(mb_substr($label, ($pos + 1)) . ' ' . mb_substr($label, 0, $pos)) + $tab = explode(Class_Notice_Author::SEP_NAMES, $label); + + return $tab + ? trim(($tab[1] ?? '') . ' ' . ($tab[0] ?? '')) : $label; } diff --git a/library/Class/NoticeUnimarc/Writer.php b/library/Class/NoticeUnimarc/Writer.php index 7b1bbf428be0a4d9de2001f884ee30c2d99864b9..4fff26d2b870d79f9cbecdc1c2be0f279a1e648c 100644 --- a/library/Class/NoticeUnimarc/Writer.php +++ b/library/Class/NoticeUnimarc/Writer.php @@ -422,108 +422,109 @@ class Class_NoticeUnimarc_Writer extends Class_NoticeUnimarc { public function _initISODecodeTable() { $this->_iso_decode_table = [ - chr(0x88) => '', - chr(0x89) => '', - chr(0x90) => '', - chr(0x97) => '-', - chr(0xc1).chr(0x41) => 'À', - chr(0xc1).chr(0x45) => 'È', - chr(0xc1).chr(0x49) => 'ÃŒ', - chr(0xc1).chr(0x4f) => 'Ã’', - chr(0xc1).chr(0x55) => 'Ù', - chr(0xc1).chr(0x61) => 'à ', - chr(0xc1).chr(0x65) => 'è', - chr(0xc1).chr(0x69) => 'ì', - chr(0xc1).chr(0x6f) => 'ò', - chr(0xc1).chr(0x75) => 'ù', - chr(0xc2).chr(0x41) => 'Ã', - chr(0xc2).chr(0x45) => 'É', - chr(0xc2).chr(0x49) => 'Ã', - chr(0xc2).chr(0x4f) => 'Ó', - chr(0xc2).chr(0x55) => 'Ú', - chr(0xc2).chr(0x59) => 'Ã', - chr(0xc2).chr(0x61) => 'á', - chr(0xc2).chr(0x65) => 'é', - chr(0xc2).chr(0x69) => 'Ã', - chr(0xc2).chr(0x6e) => 'ñ', - chr(0xc2).chr(0x6f) => 'ó', - chr(0xc2).chr(0x75) => 'ú', - chr(0xc2).chr(0x79) => 'ý', - chr(0xc2).chr(0xb0) => 'C', - chr(0xc3).chr(0x41) => 'Â', - chr(0xc3).chr(0x45) => 'Ê', - chr(0xc3).chr(0x49) => 'ÃŽ', - chr(0xc3).chr(0x4f) => 'Ô', - chr(0xc3).chr(0x55) => 'Û', - chr(0xc3).chr(0x61) => 'â', - chr(0xc3).chr(0x63) => 'E', - chr(0xc3).chr(0x64) => 'É', - chr(0xc3).chr(0x65) => 'ê', - chr(0xc3).chr(0x67) => 'E', - chr(0xc3).chr(0x69) => 'î', - chr(0xc3).chr(0x6f) => 'ô', - chr(0xc3).chr(0x75) => 'û', - chr(0xc3).chr(0x8a) => 'E', - chr(0xc3).chr(0xa9) => 'é', - chr(0xc3).chr(0xa8) => 'è', - chr(0xc3).chr(0xa7) => 'ç', - chr(0xc3).chr(0xa0) => 'à ', - chr(0xc3).chr(0xa2) => 'â', - chr(0xc3).chr(0xab) => 'ë', - chr(0xc3).chr(0xaa) => 'ê', - chr(0xc3).chr(0x80) => 'à ', - chr(0xc3).chr(0x82) => 'A', - chr(0xc3).chr(0x87) => 'C', - chr(0xc3).chr(0xb4) => 'ô', - chr(0xc3).chr(0xbb) => 'û', - chr(0xc3).chr(0xaf) => 'ï', - chr(0xc3).chr(0xae) => 'î', - chr(0xc4).chr(0x41) => 'Ã', - chr(0xc4).chr(0x4e) => 'Ñ', - chr(0xc4).chr(0x4f) => 'Õ', - chr(0xc4).chr(0x61) => 'ã', - chr(0xc4).chr(0x6e) => 'ñ', - chr(0xc4).chr(0x6f) => 'õ', - chr(0xc8).chr(0x45) => 'Ë', - chr(0xc8).chr(0x49) => 'Ã', - chr(0xc8).chr(0x61) => 'ä', - chr(0xc8).chr(0x65) => 'ë', - chr(0xc8).chr(0x69) => 'ï', - chr(0xc8).chr(0x6f) => 'ö', - chr(0xc8).chr(0x75) => 'ü', - chr(0xc8).chr(0x79) => 'ÿ', - chr(0xc9).chr(0x41) => 'Ä', - chr(0xc9).chr(0x49) => 'Ã', - chr(0xc9).chr(0x4f) => 'Ö', - chr(0xc9).chr(0x55) => 'Ãœ', - chr(0xc9).chr(0x61) => 'ä', - chr(0xc9).chr(0x65) => 'ë', - chr(0xc9).chr(0x69) => 'ï', - chr(0xc9).chr(0x6f) => 'ö', - chr(0xc9).chr(0x75) => 'ü', - chr(0xc9).chr(0x79) => 'ÿ', - chr(0xca).chr(0x41) => 'Ã…', - chr(0xca).chr(0x61) => 'Ã¥', - chr(0xca).chr(0x30) => '°', - chr(0xca).chr(0x20) => '°', - chr(0xd0).chr(0x43) => 'Ç', - chr(0xd0).chr(0x63) => 'ç', - chr(0xca) => '°', - chr(0xe1) =>'Æ', - chr(0xe9) =>'Ø', - chr(0xec) =>'þ', - chr(0xf1) =>'æ', - chr(0xf3) =>'ð', - chr(0xf8) =>'°', - chr(0xf9) =>'ø', - chr(0xfb) =>'ß', - chr(0x80) =>'€', - chr(0xa6) =>'€', - chr(0xc2).chr(0x92) => '\'', - chr(0x92) => '\'', - 'n'.chr(0xb0) => 'n°', - 'N'.chr(0xb0) => 'N°', - chr(0x9c) =>'Å’' + chr(0x88) => '', + chr(0x89) => '', + chr(0x90) => '', + chr(0x97) => '-', + chr(0xc1) . chr(0x41) => 'À', + chr(0xc1) . chr(0x45) => 'È', + chr(0xc1) . chr(0x49) => 'ÃŒ', + chr(0xc1) . chr(0x4f) => 'Ã’', + chr(0xc1) . chr(0x55) => 'Ù', + chr(0xc1) . chr(0x61) => 'à ', + chr(0xc1) . chr(0x65) => 'è', + chr(0xc1) . chr(0x69) => 'ì', + chr(0xc1) . chr(0x6f) => 'ò', + chr(0xc1) . chr(0x75) => 'ù', + chr(0xc2) . chr(0x41) => 'Ã', + chr(0xc2) . chr(0x45) => 'É', + chr(0xc2) . chr(0x49) => 'Ã', + chr(0xc2) . chr(0x4f) => 'Ó', + chr(0xc2) . chr(0x55) => 'Ú', + chr(0xc2) . chr(0x59) => 'Ã', + chr(0xc2) . chr(0x61) => 'á', + chr(0xc2) . chr(0x65) => 'é', + chr(0xc2) . chr(0x69) => 'Ã', + chr(0xc2) . chr(0x6e) => 'ñ', + chr(0xc2) . chr(0x6f) => 'ó', + chr(0xc2) . chr(0x75) => 'ú', + chr(0xc2) . chr(0x79) => 'ý', + chr(0xc2) . chr(0xb0) => 'C', + chr(0xc3) . chr(0x41) => 'Â', + chr(0xc3) . chr(0x45) => 'Ê', + chr(0xc3) . chr(0x49) => 'ÃŽ', + chr(0xc3) . chr(0x4f) => 'Ô', + chr(0xc3) . chr(0x55) => 'Û', + chr(0xc3) . chr(0x61) => 'â', + chr(0xc3) . chr(0x63) => 'E', + chr(0xc3) . chr(0x64) => 'É', + chr(0xc3) . chr(0x65) => 'ê', + chr(0xc3) . chr(0x67) => 'E', + chr(0xc3) . chr(0x69) => 'î', + chr(0xc3) . chr(0x6f) => 'ô', + chr(0xc3) . chr(0x75) => 'û', + chr(0xc3) . chr(0x8a) => 'E', + chr(0xc3) . chr(0xa9) => 'é', + chr(0xc3) . chr(0xa8) => 'è', + chr(0xc3) . chr(0xa7) => 'ç', + chr(0xc3) . chr(0xa0) => 'à ', + chr(0xc3) . chr(0xa2) => 'â', + chr(0xc3) . chr(0xab) => 'ë', + chr(0xc3) . chr(0xaa) => 'ê', + chr(0xc3) . chr(0x80) => 'à ', + chr(0xc3) . chr(0x82) => 'A', + chr(0xc3) . chr(0x87) => 'C', + chr(0xc3) . chr(0xb4) => 'ô', + chr(0xc3) . chr(0xbb) => 'û', + chr(0xc3) . chr(0xaf) => 'ï', + chr(0xc3) . chr(0xae) => 'î', + chr(0xc4) . chr(0x41) => 'Ã', + chr(0xc4) . chr(0x4e) => 'Ñ', + chr(0xc4) . chr(0x4f) => 'Õ', + chr(0xc4) . chr(0x61) => 'ã', + chr(0xc4) . chr(0x6e) => 'ñ', + chr(0xc4) . chr(0x6f) => 'õ', + chr(0xc8) . chr(0x45) => 'Ë', + chr(0xc8) . chr(0x49) => 'Ã', + chr(0xc8) . chr(0x61) => 'ä', + chr(0xc8) . chr(0x65) => 'ë', + chr(0xc8) . chr(0x69) => 'ï', + chr(0xc8) . chr(0x6f) => 'ö', + chr(0xc8) . chr(0x75) => 'ü', + chr(0xc8) . chr(0x79) => 'ÿ', + chr(0xc9) . chr(0x41) => 'Ä', + chr(0xc9) . chr(0x49) => 'Ã', + chr(0xc9) . chr(0x4f) => 'Ö', + chr(0xc9) . chr(0x55) => 'Ãœ', + chr(0xc9) . chr(0x61) => 'ä', + chr(0xc9) . chr(0x65) => 'ë', + chr(0xc9) . chr(0x69) => 'ï', + chr(0xc9) . chr(0x6f) => 'ö', + chr(0xc9) . chr(0x75) => 'ü', + chr(0xc9) . chr(0x79) => 'ÿ', + chr(0xca) . chr(0x41) => 'Ã…', + chr(0xca) . chr(0x61) => 'Ã¥', + chr(0xca) . chr(0x30) => '°', + chr(0xca) . chr(0x20) => '°', + chr(0xd0) . chr(0x43) => 'Ç', + chr(0xd0) . chr(0x63) => 'ç', + chr(0xe7) => 'ç', + chr(0xca) => '°', + chr(0xe1) => 'Æ', + chr(0xe9) => 'é', + chr(0xec) => 'þ', + chr(0xf1) => 'æ', + chr(0xf3) => 'ð', + chr(0xf8) => '°', + chr(0xf9) => 'ø', + chr(0xfb) => 'ß', + chr(0x80) => '€', + chr(0xa6) => '€', + chr(0xc2) . chr(0x92) => '\'', + chr(0x92) => '\'', + 'n' . chr(0xb0) => 'n°', + 'N' . chr(0xb0) => 'N°', + chr(0x9c) => 'Å’' ]; $this->_iso_decode_table_2709 = array_keys($this->_iso_decode_table);