Просмотр исходного кода

Importation des flux ok + ajout de commentaires (issue #28)

Marien Fressinaud 13 лет назад
Родитель
Сommit
00bac232e0
3 измененных файлов с 21 добавлено и 2 удалено
  1. 6 1
      app/controllers/configureController.php
  2. 9 1
      app/controllers/feedController.php
  3. 6 0
      lib/lib_rss.php

+ 6 - 1
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') . ' - ');

+ 9 - 1
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'

+ 6 - 0
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) {