From 040f274f3f80d9e9dafb30d1d4b0f904d2facc98 Mon Sep 17 00:00:00 2001 From: point Date: Tue, 14 Nov 2023 09:29:48 +0100 Subject: [PATCH] =?UTF-8?q?:construction:=20ajout=20partie=20image=20de=20?= =?UTF-8?q?Parser.php=20=C3=A0=20tester?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fluxRSS/model/Parser.php | 45 +++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/fluxRSS/model/Parser.php b/fluxRSS/model/Parser.php index 3d82bc7..6e61732 100644 --- a/fluxRSS/model/Parser.php +++ b/fluxRSS/model/Parser.php @@ -5,6 +5,7 @@ namespace model; use DAL\ArticleGateway; use DAL\FluxGateway; use DOMDocument; +use Exception; use metier\Article; use metier\Flux; @@ -17,31 +18,37 @@ class Parser $this->fluxGateway = $fluxGateway; $this->articleGateway = $articleGateway; } - public function parseArticles(Flux $flux){ + public function parseArticles(Flux $flux): array + { $dom = new DOMDocument(); $tabArticle = array(); - $dom->load($flux->getFlux()); - $items = $dom->getElementsByTagName('item'); - - foreach ($items as $item) { - $title = $item->getElementsByTagName('title')[0]->nodeValue; - - $date = $item->getElementsByTagName('pubDate')[0]->nodeValue; - - $guid = $item->getElementsByTagName('guid')[0]->nodeValue; - - $link = $item->getElementsByTagName('link')[0]->nodeValue; - - $description = $item->getElementsByTagName('description')[0]->nodeValue; - - //manque ajout de l'image - - $tabArticle[] = new Article((int)Null, $title, $date, $description, $guid, $link, $description, $flux->getId()); + if ($dom->load($flux->getFlux())){ + $items = $dom->getElementsByTagName('item'); + + foreach ($items as $item) { + $title = $item->getElementsByTagName('title')[0]->nodeValue; + $date = $item->getElementsByTagName('pubDate')[0]->nodeValue; + $guid = $item->getElementsByTagName('guid')[0]->nodeValue; + $link = $item->getElementsByTagName('link')[0]->nodeValue; + $description = $item->getElementsByTagName('description')[0]->nodeValue; + + $media = $item->getElementsByTagName('media:content'); + $mediaUrl = null; + if ($media->length > 0){ + $mediaUrl = $media->item(0)->getAttribute('url'); + } + + $tabArticle[] = new Article((int)null, $title, $date, $description, $guid, $link, $mediaUrl, $flux->getId()); + } + return $tabArticle; + } else { + // En cas d'erreur lors du chargement du flux RSS, lever une exception + throw new Exception("Erreur lors du chargement du flux RSS"); } - return $tabArticle; } + public function parseAll($fluxes){ foreach ($fluxes as $flux){ $tabArticles[] =$this->parseArticles($flux);