diff options
author | wn_ <[email protected]> | 2017-09-24 19:37:49 -0500 |
---|---|---|
committer | wn_ <[email protected]> | 2017-09-24 19:37:49 -0500 |
commit | bec5ba93e23bfe08bc8a95cdc25667cd97b6d128 (patch) | |
tree | 913f56f8112b986d0048b84f4c709c54e022c7e0 /classes/rssutils.php | |
parent | af13f3009c59c3db338b719b09335a472383d11c (diff) |
Add 'HOOK_FEED_BASIC_INFO' to enable plugins to provide basic feed info.
It's expected the plugin will return content parsable by FeedParser, which
will act as an interface to the basic feed info. In the case of a plugin
that also uses 'HOOK_FETCH_FEED', both might return the same content.
The hook signature was made somewhat similar to 'HOOK_FETCH_FEED'.
Diffstat (limited to 'classes/rssutils.php')
-rw-r--r-- | classes/rssutils.php | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/classes/rssutils.php b/classes/rssutils.php index 460709f05..a656de273 100644 --- a/classes/rssutils.php +++ b/classes/rssutils.php @@ -205,9 +205,11 @@ class RSSUtils { $feed = db_escape_string($feed); - $result = db_query("SELECT feed_url,auth_pass,auth_login,auth_pass_encrypted + $result = db_query("SELECT owner_uid,feed_url,auth_pass,auth_login,auth_pass_encrypted FROM ttrss_feeds WHERE id = '$feed'"); + $owner_uid = db_fetch_result($result, 0, "owner_uid"); + $auth_pass_encrypted = sql_bool_to_bool(db_fetch_result($result, 0, "auth_pass_encrypted")); @@ -221,17 +223,35 @@ class RSSUtils { $fetch_url = db_fetch_result($result, 0, "feed_url"); - $feed_data = fetch_file_contents($fetch_url, false, - $auth_login, $auth_pass, false, - FEED_FETCH_TIMEOUT, - 0); + $feed_data = ''; + + $pluginhost = new PluginHost(); + $user_plugins = get_pref("_ENABLED_PLUGINS", $owner_uid); - global $fetch_curl_used; + $pluginhost->load(PLUGINS, PluginHost::KIND_ALL); + $pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid); + $pluginhost->load_data(); - if (!$fetch_curl_used) { - $tmp = @gzdecode($feed_data); + foreach ($pluginhost->get_hooks(PluginHost::HOOK_FEED_BASIC_INFO) as $plugin) { + $feed_data = $plugin->hook_feed_basic_info($fetch_url, $owner_uid, $feed, $auth_login, $auth_pass); + if ($feed_data) { + break; + } + } - if ($tmp) $feed_data = $tmp; + if (!$feed_data) { + $feed_data = fetch_file_contents($fetch_url, false, + $auth_login, $auth_pass, false, + FEED_FETCH_TIMEOUT, + 0); + + global $fetch_curl_used; + + if (!$fetch_curl_used) { + $tmp = @gzdecode($feed_data); + + if ($tmp) $feed_data = $tmp; + } } $feed_data = trim($feed_data); @@ -1520,4 +1540,4 @@ class RSSUtils { -}
\ No newline at end of file +} |