mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-15 20:07:13 -04:00
Importation des flux ok + ajout de commentaires (issue #28)
This commit is contained in:
@@ -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') . ' - ');
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user