summaryrefslogtreecommitdiff
path: root/classes/rssutils.php
diff options
context:
space:
mode:
authorwn_ <[email protected]>2017-09-24 19:37:49 -0500
committerwn_ <[email protected]>2017-09-24 19:37:49 -0500
commitbec5ba93e23bfe08bc8a95cdc25667cd97b6d128 (patch)
tree913f56f8112b986d0048b84f4c709c54e022c7e0 /classes/rssutils.php
parentaf13f3009c59c3db338b719b09335a472383d11c (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.php40
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
+}