fluxGateway = $fluxGateway; $this->articleGateway = $articleGateway; } public function parseArticles(Flux $flux): array { $dom = new DOMDocument(); $tabArticle = array(); 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 !== null) ? (string)$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"); } } /** * @throws Exception */ public function parseAll($fluxes){ $tabArticles = []; foreach ($fluxes as $flux){ $fluxx = new Flux($flux[0],$flux[1]); $tabArticles[] = $this->parseArticles($fluxx); } return $tabArticles; } /** * @throws Exception */ public function addAllArticles() { $tabFluxes = []; $this->articleGateway->removeAllArticleForParser(); $allItemFlux = $this->fluxGateway->findAllFlux(); foreach ($allItemFlux as $ItemFlux){ $tabFluxes[] = $ItemFlux[1]; } $allTabArticles = $this->parseAll($allItemFlux); foreach ($allTabArticles as $tabArticle) { foreach ($tabArticle as $item) { $this->articleGateway->addArticle($item); } } } }