From 00bac232e0976a2ca09e7c4e73956cd802176480 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 28 Apr 2013 16:34:25 +0200 Subject: Importation des flux ok + ajout de commentaires (issue #28) --- app/controllers/configureController.php | 7 ++++++- app/controllers/feedController.php | 10 +++++++++- lib/lib_rss.php | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/controllers/configureController.php b/app/controllers/configureController.php index d6d210099..2f56da177 100755 --- a/app/controllers/configureController.php +++ b/app/controllers/configureController.php @@ -199,7 +199,7 @@ class configureController extends ActionController { $this->view->req = Request::param ('q'); if ($this->view->req == 'export') { - View::_title ('feeds.opml'); + View::_title ('freshrss_feeds.opml'); $this->view->_useLayout (false); header('Content-Type: text/xml; charset=utf-8'); @@ -217,8 +217,11 @@ class configureController extends ActionController { $this->view->categories = $list; } elseif ($this->view->req == 'import' && Request::isPost ()) { if ($_FILES['file']['error'] == 0) { + // on parse le fichier OPML pour récupérer les catégories et les flux associés list ($categories, $feeds) = opml_import (file_get_contents ($_FILES['file']['tmp_name'])); + // On redirige vers le controller feed qui va se charger d'insérer les flux en BDD + // les flux sont mis au préalable dans des variables de Request Request::_param ('q', 'null'); Request::_param ('categories', $categories); Request::_param ('feeds', $feeds); @@ -228,6 +231,8 @@ class configureController extends ActionController { $feedDAO = new FeedDAO (); $this->view->feeds = $feedDAO->listFeeds (); + + // au niveau de la vue, permet de ne pas voir un flux sélectionné dans la liste $this->view->flux = false; View::prependTitle (Translate::t ('import_export_opml') . ' - '); diff --git a/app/controllers/feedController.php b/app/controllers/feedController.php index ea68952a0..ebbf3259f 100755 --- a/app/controllers/feedController.php +++ b/app/controllers/feedController.php @@ -217,18 +217,23 @@ class feedController extends ActionController { $categories = Request::param ('categories', array ()); $feeds = Request::param ('feeds', array ()); + // on ajoute les catégories en masse dans une fonction à part $this->addCategories ($categories); + // on calcule la date des articles les plus anciens qu'on accepte $nb_month_old = $this->view->conf->oldEntries (); $date_min = time () - (60 * 60 * 24 * 30 * $nb_month_old); + // la variable $error permet de savoir si une erreur est survenue + // Le but est de ne pas arrêter l'import même en cas d'erreur + // L'utilisateur sera mis au courant s'il y a eu des erreurs, mais + // ne connaîtra pas les détails. Ceux-ci seront toutefois logguées $error = false; $i = 0; foreach ($feeds as $feed) { try { $feed->load (); - // Enregistrement du flux $values = array ( 'id' => $feed->id (), 'url' => $feed->url (), @@ -239,6 +244,7 @@ class feedController extends ActionController { 'lastUpdate' => 0 ); + // ajout du flux que s'il n'est pas déjà en BDD if (!$feedDAO->searchByUrl ($values['url'])) { if (!$feedDAO->addFeed ($values)) { $error = true; @@ -255,12 +261,14 @@ class feedController extends ActionController { } else { $res = Translate::t ('feeds_imported'); } + $notif = array ( 'type' => 'good', 'content' => $res ); Session::_param ('notification', $notif); + // et on redirige vers la page import/export Request::forward (array ( 'c' => 'configure', 'a' => 'importExport' diff --git a/lib/lib_rss.php b/lib/lib_rss.php index e004b7498..c574cd3fd 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -83,6 +83,12 @@ function opml_import ($xml) { } if ($title) { + // Permet d'éviter les soucis au niveau des id : + // ceux-ci sont générés en fonction de la date, + // un flux pourrait être dans une catégorie X avec l'id Y + // alors qu'il existe déjà la catégorie X mais avec l'id Z + // Y ne sera pas ajouté et le flux non plus vu que l'id + // de sa catégorie n'exisera pas $catDAO = new CategoryDAO (); $cat = $catDAO->searchByName ($title); if ($cat === false) { -- cgit v1.2.3