command globalUpdateFeeds to update feeds of all users at once

This commit is contained in:
Andrew Dolgov 2005-11-21 08:11:21 +01:00
parent 4585ff0eab
commit a277007718
4 changed files with 45 additions and 28 deletions

View File

@ -3,20 +3,23 @@
$op = $_REQUEST["op"]; $op = $_REQUEST["op"];
if (($op == "rpc" || $op == "updateAllFeeds" || if ((!$op || $op == "rpc" || $op == "globalUpdateFeeds") && !$_REQUEST["noxml"]) {
$op == "forceUpdateAllFeeds") && !$_REQUEST["noxml"]) {
header("Content-Type: application/xml"); header("Content-Type: application/xml");
} }
if (!$_SESSION["uid"]) { if (!$_SESSION["uid"] && $op != "globalUpdateFeeds") {
if (($op == "rpc" || $op == "updateAllFeeds" || if ($op == "rpc") {
$op == "forceUpdateAllFeeds")) {
print "<error error-code=\"6\"/>"; print "<error error-code=\"6\"/>";
} }
exit; exit;
} }
if (!$op) {
print "<error error-code=\"7\"/>";
exit;
}
define(SCHEMA_VERSION, 2); define(SCHEMA_VERSION, 2);
require_once "config.php"; require_once "config.php";
@ -1594,15 +1597,20 @@
} }
if ($op == "updateAllFeeds") { // update feeds of all users, may be used anonymously
update_all_feeds($link, true); if ($op == "globalUpdateFeeds") {
print "<rpc-reply>"; $result = db_query($link, "SELECT id FROM ttrss_users");
getLabelCounters($link);
getFeedCounters($link); while ($line = db_fetch_assoc($result)) {
getTagCounters($link); $user_id = $line["id"];
getGlobalCounters($link); // print "<!-- updating feeds of uid $user_id -->";
print "</rpc-reply>"; update_all_feeds($link, false, $user_id);
}
print "<rpc-reply>
<message msg=\"All feeds updated\"/>
</rpc-reply>";
} }

View File

@ -4,10 +4,16 @@
require_once "config.php"; require_once "config.php";
require_once "db.php"; require_once "db.php";
function get_pref($link, $pref_name) { function get_pref($link, $pref_name, $user_id = false) {
$pref_name = db_escape_string($pref_name); $pref_name = db_escape_string($pref_name);
if (!$user_id) {
$user_id = $_SESSION["uid"];
} else {
$user_id = sprintf("%d", $user_id);
}
$result = db_query($link, "SELECT $result = db_query($link, "SELECT
value,ttrss_prefs_types.type_name as type_name value,ttrss_prefs_types.type_name as type_name
FROM FROM
@ -15,7 +21,7 @@
WHERE WHERE
ttrss_user_prefs.pref_name = '$pref_name' AND ttrss_user_prefs.pref_name = '$pref_name' AND
ttrss_prefs_types.id = type_id AND ttrss_prefs_types.id = type_id AND
owner_uid = ".$_SESSION["uid"]." AND owner_uid = '$user_id' AND
ttrss_user_prefs.pref_name = ttrss_prefs.pref_name"); ttrss_user_prefs.pref_name = ttrss_prefs.pref_name");
if (db_num_rows($result) > 0) { if (db_num_rows($result) > 0) {

View File

@ -23,6 +23,8 @@
header("Location: login.php"); header("Location: login.php");
} }
$ERRORS[7] = "No operation to perform.";
?> ?>
<html> <html>

View File

@ -82,11 +82,16 @@
(SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0");
} }
function update_all_feeds($link, $fetch) { function update_all_feeds($link, $fetch, $user_id = false) {
if (WEB_DEMO_MODE) return; if (WEB_DEMO_MODE) return;
if (get_pref($link, 'DAEMON_REFRESH_ONLY')) { if (!$user_id) {
$user_id = $_SESSION["uid"];
purge_old_posts($link);
}
if (get_pref($link, 'DAEMON_REFRESH_ONLY', $user_id)) {
if (!$_GET["daemon"]) { if (!$_GET["daemon"]) {
return; return;
} }
@ -94,8 +99,6 @@
db_query($link, "BEGIN"); db_query($link, "BEGIN");
$user_id = $_SESSION["uid"];
$result = db_query($link, "SELECT feed_url,id, $result = db_query($link, "SELECT feed_url,id,
substring(last_updated,1,19) as last_updated, substring(last_updated,1,19) as last_updated,
update_interval FROM ttrss_feeds WHERE owner_uid = '$user_id'"); update_interval FROM ttrss_feeds WHERE owner_uid = '$user_id'");
@ -104,7 +107,7 @@
$upd_intl = $line["update_interval"]; $upd_intl = $line["update_interval"];
if (!$upd_intl || $upd_intl == 0) { if (!$upd_intl || $upd_intl == 0) {
$upd_intl = get_pref($link, 'DEFAULT_UPDATE_INTERVAL'); $upd_intl = get_pref($link, 'DEFAULT_UPDATE_INTERVAL', $user_id);
} }
if ($fetch || (!$line["last_updated"] || if ($fetch || (!$line["last_updated"] ||
@ -114,8 +117,6 @@
} }
} }
purge_old_posts($link);
db_query($link, "COMMIT"); db_query($link, "COMMIT");
} }
@ -176,10 +177,6 @@
if ($rss) { if ($rss) {
if (get_pref($link, 'ENABLE_FEED_ICONS')) {
check_feed_favicon($feed_url, $feed, $link);
}
$result = db_query($link, "SELECT title,icon_url,site_url,owner_uid $result = db_query($link, "SELECT title,icon_url,site_url,owner_uid
FROM ttrss_feeds WHERE id = '$feed'"); FROM ttrss_feeds WHERE id = '$feed'");
@ -189,6 +186,10 @@
$owner_uid = db_fetch_result($result, 0, "owner_uid"); $owner_uid = db_fetch_result($result, 0, "owner_uid");
if (get_pref($link, 'ENABLE_FEED_ICONS', $owner_uid)) {
check_feed_favicon($feed_url, $feed, $link);
}
if (!$registered_title) { if (!$registered_title) {
$feed_title = db_escape_string($rss->channel["title"]); $feed_title = db_escape_string($rss->channel["title"]);
db_query($link, "UPDATE ttrss_feeds SET db_query($link, "UPDATE ttrss_feeds SET
@ -343,7 +344,7 @@
// check for user post link to main table // check for user post link to main table
// do we allow duplicate posts with same GUID in different feeds? // do we allow duplicate posts with same GUID in different feeds?
if (get_pref($link, "ALLOW_DUPLICATE_POSTS")) { if (get_pref($link, "ALLOW_DUPLICATE_POSTS", $owner_uid)) {
$dupcheck_qpart = "AND feed_id = '$feed'"; $dupcheck_qpart = "AND feed_id = '$feed'";
} else { } else {
$dupcheck_qpart = ""; $dupcheck_qpart = "";
@ -364,7 +365,7 @@
$post_needs_update = false; $post_needs_update = false;
if (get_pref($link, "UPDATE_POST_ON_CHECKSUM_CHANGE") && if (get_pref($link, "UPDATE_POST_ON_CHECKSUM_CHANGE", $owner_uid) &&
($content_hash != $orig_content_hash)) { ($content_hash != $orig_content_hash)) {
$post_needs_update = true; $post_needs_update = true;
} }