summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2005-11-21 08:11:21 +0100
committerAndrew Dolgov <[email protected]>2005-11-21 08:11:21 +0100
commita277007718774e04a1760a152b4b506d76b9635e (patch)
tree9e455f7da645afcbfb1eceb4d668e17fc68234f7
parent4585ff0eabea94882cfec5383a6c3d38cd512dd4 (diff)
command globalUpdateFeeds to update feeds of all users at once
-rw-r--r--backend.php34
-rw-r--r--db-prefs.php10
-rw-r--r--error.php2
-rw-r--r--functions.php27
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 "<error error-code=\"6\"/>";
}
exit;
}
+ if (!$op) {
+ print "<error error-code=\"7\"/>";
+ 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") {
+
+ $result = db_query($link, "SELECT id FROM ttrss_users");
+
+ while ($line = db_fetch_assoc($result)) {
+ $user_id = $line["id"];
+// print "<!-- updating feeds of uid $user_id -->";
+ update_all_feeds($link, false, $user_id);
+ }
- print "<rpc-reply>";
- getLabelCounters($link);
- getFeedCounters($link);
- getTagCounters($link);
- getGlobalCounters($link);
- print "</rpc-reply>";
+ print "<rpc-reply>
+ <message msg=\"All feeds updated\"/>
+ </rpc-reply>";
}
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.";
+
?>
<html>
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;
}