Ejemplo n.º 1
0
     $error['content'] = '<p>The OPML file could not be imported.</p>';
     $tpl->assign('error', $error, RainTPL::RAINTPL_IGNORE_SANITIZE);
     $tpl->draw('settings');
     exit;
 }
 if ($_FILES['import']['size'] > 1048576) {
     $error = array();
     $error['type'] = 'error';
     $error['title'] = 'OPML import error';
     $error['content'] = '<p>The OPML file is too large.</p>';
     $tpl->assign('error', $error, RainTPL::RAINTPL_IGNORE_SANITIZE);
     $tpl->draw('settings');
     exit;
 }
 require_once 'inc/opml.php';
 $feeds_opml = opml_import(file_get_contents($_FILES['import']['tmp_name']));
 if ($feeds_opml === false) {
     $error = array();
     $error['type'] = 'error';
     $error['title'] = 'OPML import error';
     $error['content'] = '<p>An error occurred during the OPML import. Maybe you did not upload a valid OPML file ?</p>';
     $tpl->assign('error', $error, RainTPL::RAINTPL_IGNORE_SANITIZE);
     $tpl->draw('settings');
     exit;
 }
 $errors_refresh = add_feeds($feeds_opml, (bool) $_POST['import_tags_opml']);
 if (empty($errors_refresh)) {
     header('location: settings.php');
     exit;
 } else {
     // Some feeds errorred
Ejemplo n.º 2
0
 public function importExportAction()
 {
     require_once LIB_PATH . '/lib_opml.php';
     $catDAO = new FreshRSS_CategoryDAO();
     $this->view->categories = $catDAO->listCategories();
     $this->view->req = Minz_Request::param('q');
     if ($this->view->req == 'export') {
         Minz_View::_title('freshrss_feeds.opml');
         $this->view->_useLayout(false);
         header('Content-Type: application/xml; charset=utf-8');
         header('Content-disposition: attachment; filename=freshrss_feeds.opml');
         $feedDAO = new FreshRSS_FeedDAO();
         $catDAO = new FreshRSS_CategoryDAO();
         $list = array();
         foreach ($catDAO->listCategories() as $key => $cat) {
             $list[$key]['name'] = $cat->name();
             $list[$key]['feeds'] = $feedDAO->listByCategory($cat->id());
         }
         $this->view->categories = $list;
     } elseif ($this->view->req == 'import' && Minz_Request::isPost()) {
         if ($_FILES['file']['error'] == 0) {
             invalidateHttpCache();
             // on parse le fichier OPML pour récupérer les catégories et les flux associés
             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
                 Minz_Request::_param('q', 'null');
                 Minz_Request::_param('categories', $categories);
                 Minz_Request::_param('feeds', $feeds);
                 Minz_Request::forward(array('c' => 'feed', 'a' => 'massiveImport'));
             } catch (FreshRSS_Opml_Exception $e) {
                 Minz_Log::record($e->getMessage(), Minz_Log::WARNING);
                 $notif = array('type' => 'bad', 'content' => Minz_Translate::t('bad_opml_file'));
                 Minz_Session::_param('notification', $notif);
                 Minz_Request::forward(array('c' => 'configure', 'a' => 'importExport'), true);
             }
         }
     }
     $feedDAO = new FreshRSS_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;
     Minz_View::prependTitle(Minz_Translate::t('import_export_opml') . ' · ');
 }