diff --git a/library/Class/Import/Typo3.php b/library/Class/Import/Typo3.php index 39bd8a8fd3b9b23abca6ed66e2a1e3148aa075a8..b7a6ae4ca2438c3f8cf6409178acdcfd06d8477c 100644 --- a/library/Class/Import/Typo3.php +++ b/library/Class/Import/Typo3.php @@ -20,7 +20,12 @@ */ class Class_Import_Typo3 { const DEFAULT_CAT_ID = 30000; - +// const BOKEH_IMG_URL="http://www.mediathequeouestprovence.fr"; + const BOKEH_IMG_URL="http://web.afi-sa.net/miop-test.net/userfiles/image/uploads/"; +// const BOKEH_ATTACHMENT_URL="http://www.mediathequeouestprovence.fr/fileadmin/fichiers/fichiers_joints/"; + const BOKEH_ATTACHMENT_URL="http://web.afi-sa.net/miop-test.net/userfiles/file/"; +// const BOKEH_FILEADMIN_URL= "http://www.mediathequeouestprovence.fr/fileadmin/"; + const BOKEH_FILEADMIN_URL= "http://web.afi-sa.net/miop_test.net/userfiles/image/"; protected $user_mapper, $unknown_koha_urls = []; @@ -174,13 +179,29 @@ class Class_Import_Typo3 { $body = $this->wrapWithHtml($body); $body = $this->translateLinksToAnchor($body); $body = $this->fixImageLinks($body); + $body = $this->fixAttachmentsLinks($body); + $body = $this->fixFileAdminLinks($body); return str_replace(["\r\n", "\n\r","\n","\r"],"<br />",$body); } protected function fixImageLinks($body) { - $regs= '/(< *(a|img)[^>]*(href|src) *= *["\'])(uploads\/[^"\']*)/i'; - return preg_replace($regs, '$1'.'http://www.mediathequeouestprovence.fr/$4', $body); + return $this->replaceUserfilesLinkPath($body, 'uploads\/',self::BOKEH_IMG_URL); + } + + + protected function fixAttachmentsLinks($body) { + return $this->replaceUserfilesLinkPath($body, 'fileadmin\/fichiers\/fichiers_joints\/',self::BOKEH_ATTACHMENT_URL); + } + + + protected function fixFileAdminLinks($body) { + return $this->replaceUserfilesLinkPath($body,'fileadmin\/user_upload\/',self::BOKEH_FILEADMIN_URL); + } + + protected function replaceUserfilesLinkPath($body,$source, $dest) { + $regs= '/(< *(a|img)[^>]*(href|src) *= *["\'])(http:\/\/[^"\']*\/)?'.$source.'([^"\']*)/i'; + return preg_replace($regs, '$1'.$dest.'$5', $body); } diff --git a/tests/library/Class/Import/Typo3Fixture.php b/tests/library/Class/Import/Typo3Fixture.php index adac1beb15d179eb98ff496fc9f83039f5777902..43faaa4b21cf2bf292e5384444a5d31d6e61faa8 100644 --- a/tests/library/Class/Import/Typo3Fixture.php +++ b/tests/library/Class/Import/Typo3Fixture.php @@ -159,7 +159,10 @@ class MockTypo3DB { <div id="Public-Content-J-Coeur"><p>à partir de 4 ans</p></div></div> <div id="Resume-Conteneur-J-Coeur"><div id="Resume-Libelle-J-Coeur"><p>Résumé : </p></div> <div id="Resume-Content-J-Coeur"><p>Le bateau pirate <i>Bel Espoir</i> quitte l\'île de la Jamaïque pour sillonner la mer des Caraïbes. Les soixante marins embarqués doivent affronter les éléments. A l\'horizon la voilure du<i> Josépha</i>, un galion espagnol chargé d\'or, est en vue. Le capitaine Rogers et son équipage sont prêts à en découdre afin de s\'emparer du trésor. Mais un navire de guerre apparaît soudain...</p></div></div> +<link fileadmin/fichiers/fichiers_joints/reglement_interieur/REGLEMENT-INTERIEUR-ANNEXE-LISEUSES.pdf _blank download>liseuses</link> <div id="Avis-Conteneur-J-Coeur"><div id="Avis-Libelle-J-Coeur"><p>Notre avis : </p></div> +<link http://www.mediathequeouestprovence.fr/fileadmin/user_upload/jeunesse/formulaire_inscription_atelier_internet_espace_J.pdf _blank external-link-new-window> +<link http://www.mediathequeouestprovence.fr/fileadmin/fichiers/fichiers_joints/formulaires/memento_communique_sans_danger.pdf _blank external-link-new-window>mémento</link> <div id="Avis-Content-J-Coeur"><p>Cet ouvrage nous décrit l\'histoire et la vie des pirates. De la préparation du voyage, à la vie à bord, aux escales, à l\'abordage des navires ennemis, en passant par le partage du butin et enfin à la condamnation des pilleurs. Les volets et les tirettes permettent à ce livre animé d\'être autant ludique qu\'informatif, pour le bonheur des plus jeunes lecteurs. Monte à bord moussaillon, bienvenue dans la cabine du capitaine Rogers et cap sur les Antilles !</p></div></div> <link http://www.mediathequeouestprovence.fr/rem/aerodrome.html _blank external-link-new-window>diaporama des cartes postales anciennes de Miramas</link>.</td></tr><tr><td colspan="2" rowspan="1"><link 2157 _blank external-link-new-window><img style="padding-right: 10px; padding-bottom: 10px; float: left;" src="uploads/RTEmagicC_5_37.jpg.jpg" height="76" width="133" alt="" /></link> <div id="OPAC-Conteneur-J-Coeur"><div id="OPAC-Link-J-Coeur"><p><link http://koha.mediathequeouestprovence.fr/cgi-bin/koha/opac-detail.pl?biblionumber=262978 _blank - "Voir la disponibilité dans notre catalogue">Pour emprunter ou réserver le document </link></p></div></div> diff --git a/tests/library/Class/Import/Typo3Test.php b/tests/library/Class/Import/Typo3Test.php index 30a8a15916e1ef290c97b9bea42aacbba4c801e4..82665c69b92d5e09fcadf9e76e0ef3fd4ab80302 100644 --- a/tests/library/Class/Import/Typo3Test.php +++ b/tests/library/Class/Import/Typo3Test.php @@ -197,6 +197,7 @@ class Import_Typo3ArticleTest extends Import_Typo3TestCase { $this->migration->import_user(); $this->migration->import_categories(); $this->migration->importArticles(); + $this->bateau_pirate = Class_Article::findFirstBy(['titre' => 'A bord du bateau pirate']); } @@ -229,9 +230,27 @@ class Import_Typo3ArticleTest extends Import_Typo3TestCase { /** @test */ public function articleABordDuBateauPirateShouldConvertImageWithUploads() { - $this->assertContains('<img style="padding-right: 10px; padding-bottom: 10px; float: left;" src="http://www.mediathequeouestprovence.fr/uploads/RTEmagicC_5_37.jpg.jpg" height="76" width="133" alt="" />',$this->bateau_pirate->getContenu()); + $this->assertContains('<img style="padding-right: 10px; padding-bottom: 10px; float: left;" src="'.Class_Import_Typo3::BOKEH_IMG_URL.'RTEmagicC_5_37.jpg.jpg" height="76" width="133" alt="" />',$this->bateau_pirate->getContenu()); + } + + /** @test */ + public function articleABordDuBateauPirateShouldConvertFileWithAttachments() { + $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_ATTACHMENT_URL.'reglement_interieur/REGLEMENT-INTERIEUR-ANNEXE-LISEUSES.pdf">',$this->bateau_pirate->getContenu()); } + + /** @test */ + public function articleABordDuBateauPirateShouldConvertFileWithAttachmentsWithHttpLink() { + $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_ATTACHMENT_URL.'formulaires/memento_communique_sans_danger.pdf">',$this->bateau_pirate->getContenu()); + } + + /** @test */ + public function articleABordDuBateauPirateShouldConvertUserUploadWithFileAdmin() { + $this->assertContains('<a href="'.Class_Import_Typo3::BOKEH_FILEADMIN_URL.'jeunesse/formulaire_inscription_atelier_internet_espace_J.pdf">',$this->bateau_pirate->getContenu()); + } + + + /** @test */ public function bodyArticleForArchitectureShouldReplacedLFByBR() { $this->assertEquals('<strong><span style="font-style: normal"><span style="font-weight: normal">Afin de suivre l\'actualité et la diversité de la production éditoriale, les commandes de documents sont mensuelles. </span></span></strong><br /> La collection, dans son ensemble, s\'adresse à un large public, désireux de mieux comprendre cet "art de bâtir" qui l\'environne et façonne de plus en plus son rapport à l\'espace, tant public que privé.<br />',