diff options
Diffstat (limited to 'cli/export-zip-for-user.php')
| -rwxr-xr-x | cli/export-zip-for-user.php | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/cli/export-zip-for-user.php b/cli/export-zip-for-user.php index 67421ea29..15ab94e5f 100755 --- a/cli/export-zip-for-user.php +++ b/cli/export-zip-for-user.php @@ -13,19 +13,35 @@ if (!validateOptions($argv, $params) || empty($options['user'])) { fail('Usage: ' . basename(__FILE__) . " --user username ( --max-feed-entries 100 ) > /path/to/file.zip"); } +if (!extension_loaded('zip')) { + fail('FreshRSS error: Lacking php-zip extension!'); +} + $username = cliInitUser($options['user']); fwrite(STDERR, 'FreshRSS exporting ZIP for user “' . $username . "”…\n"); -$importController = new FreshRSS_importExport_Controller(); - -$ok = false; +$export_service = new FreshRSS_Export_Service($username); $number_entries = empty($options['max-feed-entries']) ? 100 : intval($options['max-feed-entries']); -try { - $ok = $importController->exportFile($username, true, true, true, true, $number_entries); -} catch (FreshRSS_ZipMissing_Exception $zme) { - fail('FreshRSS error: Lacking php-zip extension!'); -} +$exported_files = []; + +// First, we generate the OPML file +list($filename, $content) = $export_service->generateOpml(); +$exported_files[$filename] = $content; + +// Then, labelled and starred entries +list($filename, $content) = $export_service->generateStarredEntries('ST'); +$exported_files[$filename] = $content; + +// And a list of entries based on the complete list of feeds +$feeds_exported_files = $export_service->generateAllFeedEntries($number_entries); +$exported_files = array_merge($exported_files, $feeds_exported_files); + +// Finally, we compress all these files into a single Zip archive and we output +// the content +list($filename, $content) = $export_service->zip($exported_files); +echo $content; + invalidateHttpCache($username); -done($ok); +done(); |
