aboutsummaryrefslogtreecommitdiff
path: root/cli/export-zip-for-user.php
diff options
context:
space:
mode:
Diffstat (limited to 'cli/export-zip-for-user.php')
-rwxr-xr-xcli/export-zip-for-user.php34
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();