From a277007718774e04a1760a152b4b506d76b9635e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 21 Nov 2005 08:11:21 +0100 Subject: [PATCH] command globalUpdateFeeds to update feeds of all users at once --- backend.php | 34 +++++++++++++++++++++------------- db-prefs.php | 10 ++++++++-- error.php | 2 ++ functions.php | 27 ++++++++++++++------------- 4 files changed, 45 insertions(+), 28 deletions(-) diff --git a/backend.php b/backend.php index 1da333648..6a0a02ece 100644 --- a/backend.php +++ b/backend.php @@ -3,20 +3,23 @@ $op = $_REQUEST["op"]; - if (($op == "rpc" || $op == "updateAllFeeds" || - $op == "forceUpdateAllFeeds") && !$_REQUEST["noxml"]) { + if ((!$op || $op == "rpc" || $op == "globalUpdateFeeds") && !$_REQUEST["noxml"]) { header("Content-Type: application/xml"); } - if (!$_SESSION["uid"]) { + if (!$_SESSION["uid"] && $op != "globalUpdateFeeds") { - if (($op == "rpc" || $op == "updateAllFeeds" || - $op == "forceUpdateAllFeeds")) { + if ($op == "rpc") { print ""; } exit; } + if (!$op) { + print ""; + exit; + } + define(SCHEMA_VERSION, 2); require_once "config.php"; @@ -1594,15 +1597,20 @@ } - if ($op == "updateAllFeeds") { - update_all_feeds($link, true); + // update feeds of all users, may be used anonymously + if ($op == "globalUpdateFeeds") { - print ""; - getLabelCounters($link); - getFeedCounters($link); - getTagCounters($link); - getGlobalCounters($link); - print ""; + $result = db_query($link, "SELECT id FROM ttrss_users"); + + while ($line = db_fetch_assoc($result)) { + $user_id = $line["id"]; +// print ""; + update_all_feeds($link, false, $user_id); + } + + print " + + "; } diff --git a/db-prefs.php b/db-prefs.php index 16278c540..c81149e6f 100644 --- a/db-prefs.php +++ b/db-prefs.php @@ -4,10 +4,16 @@ require_once "config.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); + if (!$user_id) { + $user_id = $_SESSION["uid"]; + } else { + $user_id = sprintf("%d", $user_id); + } + $result = db_query($link, "SELECT value,ttrss_prefs_types.type_name as type_name FROM @@ -15,7 +21,7 @@ WHERE ttrss_user_prefs.pref_name = '$pref_name' 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"); if (db_num_rows($result) > 0) { diff --git a/error.php b/error.php index 1569d309e..6a7b52972 100644 --- a/error.php +++ b/error.php @@ -23,6 +23,8 @@ header("Location: login.php"); } + $ERRORS[7] = "No operation to perform."; + ?> diff --git a/functions.php b/functions.php index b047221ef..35460efbd 100644 --- a/functions.php +++ b/functions.php @@ -82,11 +82,16 @@ (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 (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"]) { return; } @@ -94,8 +99,6 @@ db_query($link, "BEGIN"); - $user_id = $_SESSION["uid"]; - $result = db_query($link, "SELECT feed_url,id, substring(last_updated,1,19) as last_updated, update_interval FROM ttrss_feeds WHERE owner_uid = '$user_id'"); @@ -104,7 +107,7 @@ $upd_intl = $line["update_interval"]; 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"] || @@ -114,8 +117,6 @@ } } - purge_old_posts($link); - db_query($link, "COMMIT"); } @@ -176,10 +177,6 @@ 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 FROM ttrss_feeds WHERE id = '$feed'"); @@ -189,6 +186,10 @@ $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) { $feed_title = db_escape_string($rss->channel["title"]); db_query($link, "UPDATE ttrss_feeds SET @@ -343,7 +344,7 @@ // check for user post link to main table // 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'"; } else { $dupcheck_qpart = ""; @@ -364,7 +365,7 @@ $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)) { $post_needs_update = true; }