From 6955b2e02d4893fd88009a8162d45b6c8b3514c6 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 17 Apr 2019 08:32:35 +0300 Subject: [PATCH] plugins: add HOOK_GET_FULL_TEXT which may be used to provide full text extraction to core code and other plugins, instead of trying to invoke af_readability specifically --- classes/article.php | 11 ++++++++++- classes/pluginhost.php | 1 + plugins/af_readability/init.php | 13 +++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/classes/article.php b/classes/article.php index 974f9114f..983fcd193 100755 --- a/classes/article.php +++ b/classes/article.php @@ -100,7 +100,7 @@ class Article extends Handler_Protected { $pluginhost->load_all(PluginHost::KIND_ALL, $owner_uid); $pluginhost->load_data(); - $af_readability = $pluginhost->get_plugin("Af_Readability"); + /*$af_readability = $pluginhost->get_plugin("Af_Readability"); if ($af_readability) { $enable_share_anything = $pluginhost->get($af_readability, "enable_share_anything"); @@ -110,6 +110,15 @@ class Article extends Handler_Protected { if ($extracted_content) $content = $extracted_content; } + }*/ + + foreach ($pluginhost->get_hooks(PluginHost::HOOK_GET_FULL_TEXT) as $p) { + $extracted_content = $p->hook_get_full_text($url); + + if ($extracted_content) { + $content = $extracted_content; + break; + } } } diff --git a/classes/pluginhost.php b/classes/pluginhost.php index f0dc0286c..a3c12ecae 100755 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -58,6 +58,7 @@ class PluginHost { const HOOK_UNSUBSCRIBE_FEED = 38; const HOOK_SEND_MAIL = 39; const HOOK_FILTER_TRIGGERED = 40; + const HOOK_GET_FULL_TEXT = 41; const KIND_ALL = 1; const KIND_SYSTEM = 2; diff --git a/plugins/af_readability/init.php b/plugins/af_readability/init.php index 32c54a2c7..b5e474f8d 100755 --- a/plugins/af_readability/init.php +++ b/plugins/af_readability/init.php @@ -38,6 +38,13 @@ class Af_Readability extends Plugin { $host->add_hook($host::HOOK_PREFS_EDIT_FEED, $this); $host->add_hook($host::HOOK_PREFS_SAVE_FEED, $this); + $enable_share_anything = $this->host->get($this, "enable_share_anything"); + + // provide full text services to external code + // TODO: option that controls this needs a better caption + if ($enable_share_anything) + $host->add_hook($host::HOOK_GET_FULL_TEXT, $this); + $host->add_filter_action($this, "action_inline", __("Inline content")); } @@ -237,6 +244,12 @@ class Af_Readability extends Plugin { } + function hook_get_full_text($link) { + $extracted_content = $this->extract_content($link); + + return trim(strip_tags(sanitize($extracted_content))); + } + function api_version() { return 2; }