Disabled script: ", $res); $res = preg_replace('/<\/script.*?>/i', "
", $res); /* $res = preg_replace('/(Disabled html object - flash or other embedded content)
", $res); */ return $res; } function send_headlines_digests($link, $limit = 100) { if (!DIGEST_ENABLE) return false; $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 . "\n". "Content-Type: text/plain; charset=\"utf-8\"\n". "Content-Transfer-Encoding: 8bit\n"); 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'"; } else if (DB_TYPE == "mysql") { $interval_query = "ttrss_entries.date_entered > DATE_SUB(NOW(), INTERVAL $days DAY)"; } $result = db_query($link, "SELECT ttrss_entries.title, ttrss_feeds.title AS feed_title, date_entered, link, SUBSTRING(last_updated,1,19) AS last_updated FROM ttrss_user_entries,ttrss_entries,ttrss_feeds WHERE ref_id = ttrss_entries.id AND feed_id = ttrss_feeds.id AND include_in_digest = true AND $interval_query AND ttrss_user_entries.owner_uid = $user_id AND unread = true ORDER BY ttrss_feeds.title, date_entered DESC LIMIT $limit"); $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"]; if ($cur_feed_title != $feed_title) { $cur_feed_title = $feed_title; $tmp .= "$feed_title\n\n"; } $tmp .= " * " . trim($line["title"]) . " - $updated\n"; $tmp .= " " . trim($line["link"]) . "\n"; $tmp .= "\n"; } $tmp .= "--- \n"; $tmp .= "You have been sent this email because you have enabled daily digests in Tiny Tiny RSS at " . DIGEST_HOSTNAME . "\n". "To unsubscribe, visit your configuration options or contact instance owner.\n"; return array($tmp, $headlines_count); } function check_for_update($link) { $releases_feed = "http://tt-rss.spb.ru/releases.rss"; if (!CHECK_FOR_NEW_VERSION || $_SESSION["access_level"] < 10) { return; } error_reporting(0); $rss = fetch_rss($releases_feed); error_reporting (DEFAULT_ERROR_LEVEL); if ($rss) { $items = $rss->items; if (!$items || !is_array($items)) $items = $rss->entries; if (!$items || !is_array($items)) $items = $rss; if (!is_array($items) || count($items) == 0) { return; } $latest_item = $items[0]; $latest_version = trim(preg_replace("/(Milestone)|(completed)/", "", $latest_item["title"])); $release_url = sanitize_rss($latest_item["link"]); $content = sanitize_rss($latest_item["description"]); if (version_compare(VERSION, $latest_version) == -1) { return ""; } } } function markArticlesById($link, $ids, $cmode) { $tmp_ids = array(); foreach ($ids as $id) { array_push($tmp_ids, "ref_id = '$id'"); } $ids_qpart = join(" OR ", $tmp_ids); if ($cmode == 0) { db_query($link, "UPDATE ttrss_user_entries SET marked = false,last_read = NOW() WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); } else if ($cmode == 1) { db_query($link, "UPDATE ttrss_user_entries SET marked = true WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); } else { db_query($link, "UPDATE ttrss_user_entries SET marked = NOT marked,last_read = NOW() WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); } } function catchupArticlesById($link, $ids, $cmode) { $tmp_ids = array(); foreach ($ids as $id) { array_push($tmp_ids, "ref_id = '$id'"); } $ids_qpart = join(" OR ", $tmp_ids); if ($cmode == 0) { db_query($link, "UPDATE ttrss_user_entries SET unread = false,last_read = NOW() WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); } else if ($cmode == 1) { db_query($link, "UPDATE ttrss_user_entries SET unread = true WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); } else { db_query($link, "UPDATE ttrss_user_entries SET unread = NOT unread,last_read = NOW() WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); } } function escape_for_form($s) { return htmlspecialchars(db_unescape_string($s)); } function make_guid_from_title($title) { return preg_replace("/[ \"\',.:;]/", "-", mb_strtolower(strip_tags($title))); } function print_headline_subtoolbar($link, $feed_site_url, $feed_title, $bottom = false, $rtl_content = false, $feed_id = 0, $is_cat = false, $search = false, $match_on = false, $search_mode = false) { if (!$bottom) { $class = "headlinesSubToolbar"; $tid = "headlineActionsTop"; } else { $class = "headlinesSubToolbar"; $tid = "headlineActionsBottom"; } print "Select: All, Unread, None Toggle: Unread, Starred Mark as read: Page, Feed"; print " | "; if ($search && $feed_id > 0 && get_pref($link, 'ENABLE_LABELS') && GLOBAL_ENABLE_LABELS) { print "Convert this search to label | "; } } else { print "Select: All, Unread, None Toggle: Unread, Starred"; print " | "; } print ""; if ($feed_site_url) { if (!$bottom) { $target = "target=\"_blank\""; } print "$feed_title"; } else { print $feed_title; } if ($search) { $search_q = "&q=$search&m=$match_on&smode=$search_mode"; } if (!$bottom) { print " "; } print " | "; print "