X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=functions.php;h=7fc5aa7ea41d2fe0b1051e15fbdfb79bdd7a93d3;hb=c90a028cdc9548a4ef1f6359b53b2c9d96c3a7a8;hp=31d6486506581a29cf218d4273a80f3c8f5b16cb;hpb=1f0113280236928da3c1d57da7781dc8ec977772;p=tt-rss.git
diff --git a/functions.php b/functions.php
index 31d64865..7fc5aa7e 100644
--- a/functions.php
+++ b/functions.php
@@ -1,10 +1,8 @@
set_useragent(SIMPLEPIE_USERAGENT . MAGPIE_USER_AGENT_EXT);
-# $rss->set_timeout(10);
- $rss->set_feed_url($fetch_url);
- $rss->set_output_encoding('UTF-8');
-
- if (SIMPLEPIE_CACHE_IMAGES && $cache_images) {
- if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
- _debug("enabling image cache");
- }
+ $obj_id = md5("FDATA:$use_simplepie:$fetch_url");
- $rss->set_image_handler('./image.php', 'i');
- }
+ if ($memcache && $obj = $memcache->get($obj_id)) {
if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
- _debug("feed update interval (sec): " .
- get_feed_update_interval($link, $feed)*60);
+ _debug("update_rss_feed: data found in memcache.");
}
- if (is_dir(SIMPLEPIE_CACHE_DIR)) {
- $rss->set_cache_location(SIMPLEPIE_CACHE_DIR);
- $rss->set_cache_duration(get_feed_update_interval($link, $feed) * 60);
+ $rss = $obj;
+
+ } else {
+
+ if (!$use_simplepie) {
+ $rss = fetch_rss($fetch_url);
+ } else {
+ if (!is_dir(SIMPLEPIE_CACHE_DIR)) {
+ mkdir(SIMPLEPIE_CACHE_DIR);
+ }
+
+ $rss = new SimplePie();
+ $rss->set_useragent(SIMPLEPIE_USERAGENT . MAGPIE_USER_AGENT_EXT);
+ # $rss->set_timeout(10);
+ $rss->set_feed_url($fetch_url);
+ $rss->set_output_encoding('UTF-8');
+
+ if (SIMPLEPIE_CACHE_IMAGES && $cache_images) {
+ if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
+ _debug("enabling image cache");
+ }
+
+ $rss->set_image_handler('./image.php', 'i');
+ }
+
+ if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
+ _debug("feed update interval (sec): " .
+ get_feed_update_interval($link, $feed)*60);
+ }
+
+ if (is_dir(SIMPLEPIE_CACHE_DIR)) {
+ $rss->set_cache_location(SIMPLEPIE_CACHE_DIR);
+ $rss->set_cache_duration(get_feed_update_interval($link, $feed) * 60);
+ }
+
+ $rss->init();
}
- $rss->init();
+ if ($memcache && $rss) $memcache->add($obj_id, $rss, 0, 300);
}
// print_r($rss);
@@ -791,10 +820,11 @@
$rss_1_date = $item['dc']['date'];
$atom_date = $item['issued'];
if (!$atom_date) $atom_date = $item['updated'];
-
+
if ($atom_date != "") $entry_timestamp = parse_w3cdtf($atom_date);
if ($rss_1_date != "") $entry_timestamp = parse_w3cdtf($rss_1_date);
if ($rss_2_date != "") $entry_timestamp = strtotime($rss_2_date);
+
}
if ($entry_timestamp == "" || $entry_timestamp == -1 || !$entry_timestamp) {
@@ -1146,7 +1176,7 @@
// error_reporting(0);
$article_filters = get_article_filters($filters, $entry_title,
- $entry_content, $entry_link, $entry_timestamp);
+ $entry_content, $entry_link, $entry_timestamp, $entry_author);
if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
_debug("update_rss_feed: article filters: ");
@@ -1336,15 +1366,15 @@
# check for manual tags
- $tag_filter = find_article_filter($article_filters, "tag");
-
- if ($tag_filter) {
+ foreach ($article_filters as $f) {
+ if ($f[0] == "tag") {
- $manual_tags = trim_array(split(",", $tag_filter[1]));
+ $manual_tags = trim_array(split(",", $f[1]));
- foreach ($manual_tags as $tag) {
- if (tag_is_valid($tag)) {
- array_push($entry_tags, $tag);
+ foreach ($manual_tags as $tag) {
+ if (tag_is_valid($tag)) {
+ array_push($entry_tags, $tag);
+ }
}
}
}
@@ -1470,7 +1500,7 @@
print "";
}
- function get_article_filters($filters, $title, $content, $link, $timestamp) {
+ function get_article_filters($filters, $title, $content, $link, $timestamp, $author) {
$matches = array();
if ($filters["title"]) {
@@ -1555,6 +1585,18 @@
}
}
+ if ($filters["author"]) {
+ foreach ($filters["author"] as $filter) {
+ $reg_exp = $filter["reg_exp"];
+ $inverse = $filter["inverse"];
+ if ((!$inverse && preg_match("/$reg_exp/i", $author)) ||
+ ($inverse && !preg_match("/$reg_exp/i", $author))) {
+
+ array_push($matches, array($filter["action"], $filter["action_param"]));
+ }
+ }
+ }
+
return $matches;
}
@@ -1622,8 +1664,8 @@
$link_title = "Updated: $last_updated";
}
- $feed = "$feed_title";
+ $feed = "$feed_title";
/* if ($feed_id < -10) {
$bg_color = "#00ccff";
@@ -2012,7 +2054,7 @@
function get_user_theme($link) {
- if (get_schema_version($link) >= 63) {
+ if (get_schema_version($link) >= 63 && $_SESSION["uid"]) {
$theme_name = get_pref($link, "_THEME_ID");
if (is_dir("themes/$theme_name")) {
return $theme_name;
@@ -2027,7 +2069,7 @@
function get_user_theme_path($link) {
- if (get_schema_version($link) >= 63) {
+ if (get_schema_version($link) >= 63 && $_SESSION["uid"]) {
$theme_name = get_pref($link, "_THEME_ID");
if ($theme_name && is_dir("themes/$theme_name")) {
@@ -2200,7 +2242,10 @@
function make_lockfile($filename) {
$fp = fopen(LOCK_DIRECTORY . "/$filename", "w");
- if (flock($fp, LOCK_EX | LOCK_NB)) {
+ if (flock($fp, LOCK_EX | LOCK_NB)) {
+ if (function_exists('posix_getpid')) {
+ fwrite($fp, posix_getpid() . "\n");
+ }
return $fp;
} else {
return false;
@@ -2395,20 +2440,16 @@
$cat_qpart = "cat_id IS NULL";
}
- $tmp_result = db_query($link, "SELECT id,feed_url FROM ttrss_feeds
+ $tmp_result = db_query($link, "SELECT id FROM ttrss_feeds
WHERE $cat_qpart AND owner_uid = " . $_SESSION["uid"]);
while ($tmp_line = db_fetch_assoc($tmp_result)) {
- $feed_url = $tmp_line["feed_url"];
$feed_id = $tmp_line["id"];
- update_rss_feed($link, $feed_url, $feed_id, $force_update);
+ update_rss_feed($link, $feed_id, $force_update);
}
} else {
- $tmp_result = db_query($link, "SELECT feed_url FROM ttrss_feeds
- WHERE id = '$feed'");
- $feed_url = db_fetch_result($tmp_result, 0, "feed_url");
- update_rss_feed($link, $feed_url, $feed, $force_update);
+ update_rss_feed($link, $feed, $force_update);
}
}
@@ -2928,7 +2969,7 @@
$feed_id = db_fetch_result($result, 0, "id");
if ($feed_id) {
- update_rss_feed($link, $url, $feed_id, true);
+ update_rss_feed($link, $feed_id, true);
}
return 1;
@@ -3626,7 +3667,11 @@
$rfc822_date = date('r', strtotime($line["updated"]));
- print "