summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2006-08-21 07:43:38 +0100
committerAndrew Dolgov <[email protected]>2006-08-21 07:43:38 +0100
commit9cd7c995e70be458e0843caacd492b59099f121d (patch)
treea933158b41ad274bd73b99d235adc22259c5fbe8
parent144a5ef8bcbaf2c92d51819d390fd6e8614fcf7f (diff)
implement support for daily digests
-rw-r--r--backend.php8
-rw-r--r--config.php-dist9
-rw-r--r--functions.php48
-rw-r--r--update_daemon.php2
-rw-r--r--update_feeds.php2
5 files changed, 63 insertions, 6 deletions
diff --git a/backend.php b/backend.php
index 23f46282e..130be4a1f 100644
--- a/backend.php
+++ b/backend.php
@@ -3948,8 +3948,14 @@
if ($op == "digestTest") {
header("Content-Type: text/plain");
+ print_r(prepare_headlines_digest($link, $_SESSION["uid"]));
+ $print_exec_time = false;
+
+ }
- echo prepare_headlines_digest($link, $_SESSION["uid"]);
+ if ($op == "digestSend") {
+ header("Content-Type: text/plain");
+ send_headlines_digests($link);
$print_exec_time = false;
}
diff --git a/config.php-dist b/config.php-dist
index cd1450724..9f2f23854 100644
--- a/config.php-dist
+++ b/config.php-dist
@@ -75,8 +75,8 @@
define('MAIL_RESET_PASS', true);
// Send mail to user on password reset
- define('MAIL_FROM', 'TT-RSS Daemon <[email protected]>');
- // Pretty obvious, I suppose.
+ define('MAIL_FROM', 'TT-RSS Daemon <[email protected]>');
+ // Pretty obvious, I suppose. Used for email digests & password notifications.
define('ENABLE_FEED_BROWSER', true);
// Enable or disable local feed browser
@@ -134,9 +134,12 @@
define('USE_CURL_FOR_ICONS', false);
// Fetch favicons using CURL, useful if your PHP has disabled remote fopen()
- define('DIGEST_HOSTNAME', 'madoka.spb.ru');
+ define('DIGEST_HOSTNAME', 'some.ttrss.host.dom');
// Hostname for email digest signature
+ define('DIGEST_EMAIL_LIMIT', 10);
+ // The maximum amount of emails sent in one digest batch
+
define('CONFIG_VERSION', 5);
// Expected config version. Please update this option in config.php
// if necessary (after migrating all new options from this file).
diff --git a/functions.php b/functions.php
index 1fa9aa299..2dbe127b6 100644
--- a/functions.php
+++ b/functions.php
@@ -2378,12 +2378,53 @@
return $res;
}
+ function send_headlines_digests($link, $limit = 100) {
+
+ $user_limit = DIGEST_EMAIL_LIMIT;
+ $days = DIGEST_DAYS_BACK;
+
+ print "Sending digests, batch of max $user_limit users, days = $days, headline limit = $limit\n\n";
+
+ if (DB_TYPE == "pgsql") {
+ $interval_query = "last_digest_sent < NOW() - INTERVAL '$days days'";
+ } else if (DB_TYPE == "mysql") {
+ $interval_query = "last_digest_sent < DATE_SUB(NOW(), INTERVAL $days DAY)";
+ }
+
+ $result = db_query($link, "SELECT id,email FROM ttrss_users
+ WHERE email != '' AND (last_digest_sent IS NULL OR $interval_query)");
+
+ while ($line = db_fetch_assoc($result)) {
+ if (get_pref($link, 'DIGEST_ENABLE', $line['id'], false)) {
+ print "Sending digest for UID:" . $line['id'] . " - " . $line["email"] . " ... ";
+
+ $tuple = prepare_headlines_digest($link, $line["id"], $days, $limit);
+ $digest = $tuple[0];
+ $headlines_count = $tuple[1];
+
+ if ($headlines_count > 0) {
+ $rc = mail($line["login"] . " <" . $line["email"] . ">",
+ "[tt-rss] New headlines for last 24 hours", $digest,
+ "From: " . MAIL_FROM);
+ print "RC=$rc\n";
+ db_query($link, "UPDATE ttrss_users SET last_digest_sent = NOW()
+ WHERE id = " . $line["id"]);
+ } else {
+ print "No headlines\n";
+ }
+ }
+ }
+
+// $digest = prepare_headlines_digest($link, $user_id, $days, $limit);
+
+ }
+
function prepare_headlines_digest($link, $user_id, $days = 1, $limit = 100) {
$tmp = "New headlines for last 24 hours, as of " . date("Y/m/d H:m") . "\n";
$tmp .= "=======================================================\n\n";
if (DB_TYPE == "pgsql") {
- $interval_query = "ttrss_entries.date_entered < NOW() - INTERVAL '$days days'";
+ $interval_query = "ttrss_entries.date_entered > NOW() - INTERVAL '$days days'";
} else if (DB_TYPE == "mysql") {
$interval_query = "ttrss_entries.date_entered > DATE_SUB(NOW(), INTERVAL $days DAY)";
}
@@ -2397,6 +2438,7 @@
ttrss_user_entries,ttrss_entries,ttrss_feeds
WHERE
ref_id = ttrss_entries.id AND feed_id = ttrss_feeds.id
+ AND hidden = false
AND $interval_query
AND ttrss_user_entries.owner_uid = $user_id
AND unread = true ORDER BY ttrss_feeds.title, date_entered DESC
@@ -2404,6 +2446,8 @@
$cur_feed_title = "";
+ $headlines_count = db_num_rows($result);
+
while ($line = db_fetch_assoc($result)) {
$updated = smart_date_time(strtotime($line["last_updated"]));
$feed_title = $line["feed_title"];
@@ -2425,7 +2469,7 @@
"To unsubscribe, visit your configuration options or contact instance owner.\n";
- return $tmp;
+ return array($tmp, $headlines_count);
}
function check_for_update($link) {
diff --git a/update_daemon.php b/update_daemon.php
index 007afb5bb..b15d43966 100644
--- a/update_daemon.php
+++ b/update_daemon.php
@@ -148,6 +148,8 @@
}
}
+ send_headlines_digests($link);
+
print "Sleeping for " . DAEMON_SLEEP_INTERVAL . " seconds...\n";
sleep(DAEMON_SLEEP_INTERVAL);
diff --git a/update_feeds.php b/update_feeds.php
index 5d8ea2da8..279f4e1df 100644
--- a/update_feeds.php
+++ b/update_feeds.php
@@ -34,6 +34,8 @@
update_all_feeds($link, false, $user_id, true);
}
+ send_headlines_digests($link);
+
db_close($link);
?>