diff options
| author | 2014-03-18 22:42:47 +0100 | |
|---|---|---|
| committer | 2014-03-18 22:42:47 +0100 | |
| commit | d1c5db7461ecb69c529149536718baf9b73a1f2c (patch) | |
| tree | c880b6d1b7eebb6481d3525b2e0ed80b959b452e /app/Controllers/importExportController.php | |
| parent | e685b541487b814cbab87ea2b6a6a4d12cd72f06 (diff) | |
New version to export articles + opml
It does not work yet! A lot of work has still to be done.
Next versions should fix TODOs
- OPML export works fine but can be improved
- a framework has been created for articles export
Diffstat (limited to 'app/Controllers/importExportController.php')
| -rw-r--r-- | app/Controllers/importExportController.php | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php index 7ed142b33..458814676 100644 --- a/app/Controllers/importExportController.php +++ b/app/Controllers/importExportController.php @@ -57,12 +57,40 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { } public function exportAction() { - Minz_View::_title ('freshrss_feeds.opml'); + if (Minz_Request::isPost()) { + $this->view->_useLayout (false); - $this->view->_useLayout (false); - header('Content-Type: application/xml; charset=utf-8'); - header('Content-disposition: attachment; filename=freshrss_feeds.opml'); + $export_opml = Minz_Request::param('export_opml', false); + $export_starred = Minz_Request::param('export_starred', false); + $export_all = Minz_Request::param('export_all', false); + // code from https://stackoverflow.com/questions/1061710/php-zip-files-on-the-fly + $file = tempnam("tmp", "zip"); + $zip = new ZipArchive(); + $zip->open($file, ZipArchive::OVERWRITE); + + // Stuff with content + if ($export_opml) { + $zip->addFromString('feeds.opml', $this->generate_opml()); + } + if ($export_starred) { + $zip->addFromString('starred.json', $this->generate_articles('starred')); + } + if ($export_all) { + $zip->addFromString('all.json', $this->generate_articles('all')); + } + + // Close and send to users + $zip->close(); + header('Content-Type: application/zip'); + header('Content-Length: ' . filesize($file)); + header('Content-Disposition: attachment; filename="freshrss_export.zip"'); + readfile($file); + unlink($file); + } + } + + private function generate_opml() { $feedDAO = new FreshRSS_FeedDAO (); $catDAO = new FreshRSS_CategoryDAO (); @@ -73,5 +101,17 @@ class FreshRSS_importExport_Controller extends Minz_ActionController { } $this->view->categories = $list; + + // TODO: add a parameter to renderHelper in order to get a variable + ob_start(); + $this->view->renderHelper('export/opml'); + return ob_get_clean(); + } + + private function generate_articles($type) { + // TODO: same here + we should get articles according to $type + ob_start(); + $this->view->renderHelper('export/articles'); + return ob_get_clean(); } } |
