Fix issue #84 : affichage erreur si fichier OPML invalide

pull/136/head
Marien Fressinaud 12 years ago
parent c88f57c036
commit c96225df6d
  1. 33
      app/controllers/configureController.php
  2. 1
      app/i18n/en.php
  3. 1
      app/i18n/fr.php
  4. 6
      app/models/Exception/FeedException.php
  5. 2
      lib/lib_rss.php

@ -218,14 +218,31 @@ class configureController extends ActionController {
} 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);
Request::forward (array ('c' => 'feed', 'a' => 'massiveImport'));
try {
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);
Request::forward (array ('c' => 'feed', 'a' => 'massiveImport'));
} catch (OpmlException $e) {
Log::record ($e->getMessage (), Log::ERROR);
$notif = array (
'type' => 'bad',
'content' => Translate::t ('bad_opml_file')
);
Session::_param ('notification', $notif);
Request::forward (array (
'c' => 'configure',
'a' => 'importExport'
), true);
}
}
}

@ -58,6 +58,7 @@ return array (
'rss_feed_management' => 'RSS feeds management',
'configuration_updated' => 'Configuration has been updated',
'general_and_reading_management'=> 'General and reading management',
'bad_opml_file' => 'Your OPML file is invalid',
'shortcuts_updated' => 'Shortcuts have been updated',
'shortcuts_management' => 'Shortcuts management',
'feeds_marked_read' => 'Feeds have been marked as read',

@ -58,6 +58,7 @@ return array (
'rss_feed_management' => 'Gestion des flux RSS',
'configuration_updated' => 'La configuration a été mise à jour',
'general_and_reading_management'=> 'Gestion générale et affichage',
'bad_opml_file' => 'Votre fichier OPML n\'est pas valide',
'shortcuts_updated' => 'Les raccourcis ont été mis à jour',
'shortcuts_management' => 'Gestion des raccourcis',
'feeds_marked_read' => 'Les flux ont été marqués comme lu',

@ -11,3 +11,9 @@ class BadUrlException extends FeedException {
parent::__construct ('`' . $url . '` is not a valid URL');
}
}
class OpmlException extends FeedException {
public function __construct ($name_file) {
parent::__construct ('OPML file is invalid');
}
}

@ -65,7 +65,7 @@ function opml_import ($xml) {
$opml = @simplexml_load_string ($xml);
if (!$opml) {
return array (array (), array ());
throw new OpmlException ();
}
$categories = array ();

Loading…
Cancel
Save