add --opml-export to update.php

This commit is contained in:
Andrew Dolgov 2020-05-13 12:07:31 +03:00
parent 5e77d0062b
commit 7a2e9bef77
2 changed files with 53 additions and 27 deletions

View File

@ -125,12 +125,13 @@ class Opml extends Handler_Protected {
return $out; return $out;
} }
function opml_export($name, $owner_uid, $hide_private_feeds = false, $include_settings = true) { function opml_export($filename, $owner_uid, $hide_private_feeds = false, $include_settings = true, $file_output = false) {
if (!$owner_uid) return; if (!$owner_uid) return;
if (!$file_output)
if (!isset($_REQUEST["debug"])) { if (!isset($_REQUEST["debug"])) {
header("Content-type: application/xml+opml"); header("Content-type: application/xml+opml");
header("Content-Disposition: attachment; filename=" . $name ); header("Content-Disposition: attachment; filename=$filename");
} else { } else {
header("Content-type: text/xml"); header("Content-type: text/xml");
} }
@ -288,6 +289,9 @@ class Opml extends Handler_Protected {
'return str_repeat("\t", intval(strlen($matches[0])/2));'), 'return str_repeat("\t", intval(strlen($matches[0])/2));'),
$res); */ $res); */
if ($file_output)
return file_put_contents($filename, $res) > 0;
else
print $res; print $res;
} }

View File

@ -85,6 +85,7 @@
"debug-feed:", "debug-feed:",
"force-refetch", "force-refetch",
"force-rehash", "force-rehash",
"opml-export:",
"help"); "help");
foreach (PluginHost::getInstance()->get_commands() as $command => $data) { foreach (PluginHost::getInstance()->get_commands() as $command => $data) {
@ -139,12 +140,13 @@
print " --debug-feed N - perform debug update of feed N\n"; print " --debug-feed N - perform debug update of feed N\n";
print " --force-refetch - debug update: force refetch feed data\n"; print " --force-refetch - debug update: force refetch feed data\n";
print " --force-rehash - debug update: force rehash articles\n"; print " --force-rehash - debug update: force rehash articles\n";
print " --opml-export \"USER FILE\" - export feeds of selected user to OPML\n";
print " --help - show this help\n"; print " --help - show this help\n";
print "Plugin options:\n"; print "Plugin options:\n";
foreach (PluginHost::getInstance()->get_commands() as $command => $data) { foreach (PluginHost::getInstance()->get_commands() as $command => $data) {
$args = $data['arghelp']; $args = $data['arghelp'];
printf(" --%-19s - %s\n", "$command $args", $data["description"]); printf(" --%-26s - %s\n", "$command $args", $data["description"]);
} }
return; return;
@ -483,6 +485,26 @@
Digest::send_headlines_digests(); Digest::send_headlines_digests();
} }
if (isset($options["opml-export"])) {
list ($user, $filename) = explode(" ", $options["opml-export"], 2);
Debug::log("Exporting feeds of user $user to $filename as OPML...");
$sth = $pdo->prepare("SELECT id FROM ttrss_users WHERE login = ?");
$sth->execute([$user]);
if ($res = $sth->fetch()) {
$opml = new OPML("");
$rc = $opml->opml_export($filename, $res["id"], false, true, true);
Debug::log($rc ? "Success." : "Failed.");
} else {
Debug::log("User not found: $user");
}
}
PluginHost::getInstance()->run_commands($options); PluginHost::getInstance()->run_commands($options);
if (file_exists(LOCK_DIRECTORY . "/$lock_filename")) if (file_exists(LOCK_DIRECTORY . "/$lock_filename"))