summaryrefslogtreecommitdiff
path: root/functions.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2011-04-01 13:39:58 +0400
committerAndrew Dolgov <[email protected]>2011-04-01 13:55:39 +0400
commit5ab9791f34d395104b4857b0979ae9aa5c138878 (patch)
tree4a6d51e55bc2f4034d6409a3e59899e4a9ab471f /functions.php
parente2bcd11bb1f5427af08f97fe04afc63d73efce7e (diff)
implement pubsubhubbub subscriber (update schema)
Diffstat (limited to 'functions.php')
-rw-r--r--functions.php72
1 files changed, 63 insertions, 9 deletions
diff --git a/functions.php b/functions.php
index 1e843dd14..5adf46cdf 100644
--- a/functions.php
+++ b/functions.php
@@ -99,7 +99,6 @@
//define('MAGPIE_USER_AGENT_EXT', ' (Tiny Tiny RSS/' . VERSION . ')');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
- define('MAGPIE_CACHE_AGE', 60*15); // 15 minutes
define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . VERSION . ' (http://tt-rss.org/)');
define('MAGPIE_USER_AGENT', SELF_USER_AGENT);
@@ -111,6 +110,7 @@
require_once 'lib/magpierss/rss_utils.inc';
require_once 'lib/htmlpurifier/library/HTMLPurifier.auto.php';
require_once 'lib/pubsubhubbub/publisher.php';
+ require_once 'lib/pubsubhubbub/subscriber.php';
$config = HTMLPurifier_Config::createDefault();
@@ -471,7 +471,7 @@
}
}
- function update_rss_feed($link, $feed, $ignore_daemon = false) {
+ function update_rss_feed($link, $feed, $ignore_daemon = false, $no_cache = false) {
global $memcache;
@@ -483,14 +483,14 @@
WHERE f2.feed_url = f1.feed_url AND f2.id = '$feed'");
while ($line = db_fetch_assoc($result)) {
- update_rss_feed_real($link, $line["id"], $ignore_daemon);
+ update_rss_feed_real($link, $line["id"], $ignore_daemon, $no_cache);
}
} else {
- update_rss_feed_real($link, $feed, $ignore_daemon);
+ update_rss_feed_real($link, $feed, $ignore_daemon, $no_cache);
}
}
- function update_rss_feed_real($link, $feed, $ignore_daemon = false) {
+ function update_rss_feed_real($link, $feed, $ignore_daemon = false, $no_cache = false) {
global $memcache;
@@ -518,7 +518,8 @@
$result = db_query($link, "SELECT id,update_interval,auth_login,
feed_url,auth_pass,cache_images,update_method,last_updated,
- mark_unread_on_update, owner_uid, update_on_checksum_change
+ mark_unread_on_update, owner_uid, update_on_checksum_change,
+ pubsub_state
FROM ttrss_feeds WHERE id = '$feed'");
}
@@ -537,6 +538,7 @@
0, "mark_unread_on_update"));
$update_on_checksum_change = sql_bool_to_bool(db_fetch_result($result,
0, "update_on_checksum_change"));
+ $pubsub_state = db_fetch_result($result, 0, "pubsub_state");
db_query($link, "UPDATE ttrss_feeds SET last_update_started = NOW()
WHERE id = '$feed'");
@@ -601,7 +603,11 @@
if ($update_method == 3) {
$rss = fetch_twitter_rss($link, $fetch_url, $owner_uid);
- } else if ($update_method == 1) {
+ } else if ($update_method == 1) {
+
+ define('MAGPIE_CACHE_AGE', get_feed_update_interval($link, $feed) * 60);
+ define('MAGPIE_CACHE_ON', !$no_cache);
+
$rss = @fetch_rss($fetch_url);
} else {
if (!is_dir(SIMPLEPIE_CACHE_DIR)) {
@@ -628,7 +634,9 @@
get_feed_update_interval($link, $feed)*60);
}
- if (is_dir(SIMPLEPIE_CACHE_DIR)) {
+ $rss->enable_cache(!$no_cache);
+
+ if (!$no_cache) {
$rss->set_cache_location(SIMPLEPIE_CACHE_DIR);
$rss->set_cache_duration(get_feed_update_interval($link, $feed) * 60);
}
@@ -728,7 +736,7 @@
$filters = load_filters($link, $feed, $owner_uid);
- if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
+ if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug'] == 2) {
print_r($filters);
}
@@ -758,6 +766,50 @@
return; // no articles
}
+ if (PUBSUBHUBBUB_HUB && $pubsub_state != 2) {
+
+ $feed_hub_url = false;
+ if ($use_simplepie) {
+ $links = $rss->get_links('hub');
+
+ foreach ($links as $l) {
+ $feed_hub_url = $l;
+ break;
+ }
+
+ } else {
+ $atom = $rss->channel['atom'];
+
+ if ($atom) {
+ if ($atom['link@rel'] == 'hub') {
+ $feed_hub_url = $atom['link@href'];
+ }
+
+ if (!$feed_hub_url && $atom['link#'] > 1) {
+ for ($i = 2; $i <= $atom['link#']; $i++) {
+ if ($atom["link#$i@rel"] == 'hub') {
+ $feed_hub_url = $atom["link#$i@href"];
+ }
+ }
+ }
+ } else {
+ $feed_hub_url = $rss->channel['link_hub'];
+ }
+ }
+
+ if ($feed_hub_url) {
+ $callback_url = get_self_url_prefix() .
+ "/backend.php?op=pubsub&id=$feed";
+
+ $s = new Subscriber($feed_hub_url, $callback_url);
+
+ $s->subscribe($fetch_url);
+
+ db_query($link, "UPDATE ttrss_feeds SET pubsub_state = 1
+ WHERE id = '$feed'");
+ }
+ }
+
if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) {
_debug("update_rss_feed: processing articles...");
}
@@ -7073,6 +7125,8 @@
$content = $tmhOAuth->response['response'];
+ define('MAGPIE_CACHE_ON', false);
+
$rss = new MagpieRSS($content, MAGPIE_OUTPUT_ENCODING,
MAGPIE_INPUT_ENCODING, MAGPIE_DETECT_ENCODING );