function update() { // Cree un objet pour accueillir le contenu du RSS : un document XML $doc = new DOMDocument(); //Telecharge le fichier XML dans $rss $doc->load($this->url); // Recupère la liste (DOMNodeList) de tous les elements de l'arbre 'title' $nodeList = $doc->getElementsByTagName('title'); // Met à jour le titre dans l'objet $this->titre = $nodeList->item(0)->textContent; // Recupère la liste de toutes les dates $nodeList = $doc->getElementsByTagName('pubDate'); //Met à jour la date dans l'objet $this->date = $nodeList->item(0)->textContent; //recupère la liste des url $nodeList = $doc->getElementsByTagName('link'); //met à jour la date dans l'objet $this->url = $nodeList->item(0)->textContent; //met à jour l'image de l'objet $nodeList = $doc->getElementsByTagName('enclosure'); $this->enclosure = $nodeList->item(0)->textContent; $nomLocalImage = 1; // Recupère tous les items du flux RSS foreach ($doc->getElementsByTagName('item') as $node) { $nouvelle = new Nouvelle(); // Met à jour la nouvelle avec l'information téléchargée $nouvelle->update($node); // Télécharge l'image $nouvelle->downloadImage($node, $nomLocalImage); // on ajoute la nouvelle courante a la liste $this->nouvelles[] = $nouvelle; } }
function update() { require_once 'Nouvelle.class.php'; require_once 'DAO.class.php'; // Cree un objet pour accueillir le contenu du RSS : un document XML $doc = new DOMDocument(); //Telecharge le fichier XML dans $rss $doc->load($this->url); // Recupère la liste (DOMNodeList) de tous les elements de l'arbre 'title' $nodeList = $doc->getElementsByTagName('title'); // Met à jour le titre dans l'objet $this->titre = $nodeList->item(0)->textContent; // Recupère la liste (DOMNodeList) de tous les elements de l'arbre 'title' $nodeList = $doc->getElementsByTagName('pubDate'); // Met à jour la date dans l'objet $this->date = $nodeList->item(0)->textContent; $docNodeList = $doc->getElementsByTagName('item'); $dao = new DAO(); $dao->createRSS($this->url); $id = $dao->returnIdFromURL($this->url); $table = array(); $nomLocalImage = 1; foreach ($docNodeList as $nouvelle) { $tempNouvelle = new Nouvelle(); $tempNouvelle->update($nouvelle); $tempNouvelle->downloadImage($nouvelle, $nomLocalImage); $dao->createNouvelle($tempNouvelle, $id); $nomLocalImage++; $table[] = $tempNouvelle; } $this->nouvelles = $table; }
function update() { global $dao; // On corrige les erreurs de typo dans les RSS (merci les developpeurs de RSS...) $filename = 'xml_files/tmp.xml'; $str = implode("", file($this->url)); if (!file_exists($filename)) { file_put_contents($filename, $str); } $fp = fopen($filename, 'w'); $newStr = str_replace('&', '&', $str); fwrite($fp, $newStr, strlen($newStr)); // Cree un objet pour accueillir le contenu du RSS : un document XML $doc = new DOMDocument(); // Telecharge le fichier XML $doc->load($filename); // Recupère les éléments principaux du flux $nodeTitle = $doc->getElementsByTagName('title'); $nodePubDate = $doc->getElementsByTagName('pubDate'); // On les met à jour $this->titre = $nodeTitle->item(0)->textContent; $this->date = $nodePubDate->item(0)->textContent; // Mise à jour du RSS dans la BDD (et récupération de l'id assigné au flux) $this->id = $dao->updateRSS($this)['id']; // Fetch et reverse les items trouvés $items = array(); foreach ($doc->getElementsByTagName('item') as $item) { $items[] = $item; } $items = array_reverse($items); // Parcours les items, crée une nouvelle, la met à jour, et tente de l'insérer dans la BDD foreach ($items as $node) { $nouvelle = new Nouvelle(); // Met à jour la nouvelle avec l'information téléchargée $nouvelle->update($node); // Tente de la créer dans la BDD, ne sera pas fait si elle existe déjà $dao->createNouvelle($nouvelle, $this->id); } // On récupère les nouvelles depuis la bdd $this->nouvelles = $dao->getNouvellesFromRSS($this->url); }