summaryrefslogtreecommitdiff
path: root/classes
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
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')
-rw-r--r--classes/pluginhost.php3
-rw-r--r--classes/rssutils.php40
2 files changed, 32 insertions, 11 deletions
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index afe4da49e..571c30fb6 100644
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -54,6 +54,7 @@ class PluginHost {
const HOOK_ENCLOSURE_ENTRY = 33;
const HOOK_FORMAT_ARTICLE = 34;
const HOOK_FORMAT_ARTICLE_CDM = 35;
+ const HOOK_FEED_BASIC_INFO = 36;
const KIND_ALL = 1;
const KIND_SYSTEM = 2;
@@ -436,4 +437,4 @@ class PluginHost {
function get_filter_actions() {
return $this->plugin_actions;
}
-} \ No newline at end of file
+}
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
+}