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'.
This commit is contained in:
parent
af13f3009c
commit
bec5ba93e2
|
@ -54,6 +54,7 @@ class PluginHost {
|
||||||
const HOOK_ENCLOSURE_ENTRY = 33;
|
const HOOK_ENCLOSURE_ENTRY = 33;
|
||||||
const HOOK_FORMAT_ARTICLE = 34;
|
const HOOK_FORMAT_ARTICLE = 34;
|
||||||
const HOOK_FORMAT_ARTICLE_CDM = 35;
|
const HOOK_FORMAT_ARTICLE_CDM = 35;
|
||||||
|
const HOOK_FEED_BASIC_INFO = 36;
|
||||||
|
|
||||||
const KIND_ALL = 1;
|
const KIND_ALL = 1;
|
||||||
const KIND_SYSTEM = 2;
|
const KIND_SYSTEM = 2;
|
||||||
|
|
|
@ -205,9 +205,11 @@ class RSSUtils {
|
||||||
|
|
||||||
$feed = db_escape_string($feed);
|
$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'");
|
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,
|
$auth_pass_encrypted = sql_bool_to_bool(db_fetch_result($result,
|
||||||
0, "auth_pass_encrypted"));
|
0, "auth_pass_encrypted"));
|
||||||
|
|
||||||
|
@ -221,17 +223,35 @@ class RSSUtils {
|
||||||
|
|
||||||
$fetch_url = db_fetch_result($result, 0, "feed_url");
|
$fetch_url = db_fetch_result($result, 0, "feed_url");
|
||||||
|
|
||||||
$feed_data = fetch_file_contents($fetch_url, false,
|
$feed_data = '';
|
||||||
$auth_login, $auth_pass, false,
|
|
||||||
FEED_FETCH_TIMEOUT,
|
|
||||||
0);
|
|
||||||
|
|
||||||
global $fetch_curl_used;
|
$pluginhost = new PluginHost();
|
||||||
|
$user_plugins = get_pref("_ENABLED_PLUGINS", $owner_uid);
|
||||||
|
|
||||||
if (!$fetch_curl_used) {
|
$pluginhost->load(PLUGINS, PluginHost::KIND_ALL);
|
||||||
$tmp = @gzdecode($feed_data);
|
$pluginhost->load($user_plugins, PluginHost::KIND_USER, $owner_uid);
|
||||||
|
$pluginhost->load_data();
|
||||||
|
|
||||||
if ($tmp) $feed_data = $tmp;
|
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 (!$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);
|
$feed_data = trim($feed_data);
|
||||||
|
|
Loading…
Reference in New Issue