diff options
author | Andrew Dolgov <[email protected]> | 2019-05-01 08:12:47 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2019-05-01 08:12:47 +0300 |
commit | fda475bd930891cab422597ded679c1cc8ff7215 (patch) | |
tree | 9d1c3fe851f6a4aafd82a66d1ff1900b141433c9 /plugins/af_readability/init.php | |
parent | ccc0315ef0a115fb9111823b351bbcbdf3182f66 (diff) |
af_readability: fix HOOK_GET_FULL_TEXT not being installed because plugin init() is called before load_data()
Diffstat (limited to 'plugins/af_readability/init.php')
-rwxr-xr-x | plugins/af_readability/init.php | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/plugins/af_readability/init.php b/plugins/af_readability/init.php index cc54edfae..8bb368389 100755 --- a/plugins/af_readability/init.php +++ b/plugins/af_readability/init.php @@ -38,12 +38,9 @@ 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); + // Note: we have to install the hook even if disabled because init() is being run before plugin data has loaded + // so we can't check for our storage-set options here + $host->add_hook($host::HOOK_GET_FULL_TEXT, $this); $host->add_filter_action($this, "action_inline", __("Inline content")); } @@ -176,7 +173,7 @@ class Af_Readability extends Plugin { if ($tmp && mb_strlen($tmp) < 1024 * 500) { $tmpdoc = new DOMDocument("1.0", "UTF-8"); - if (!$tmpdoc->loadHTML($tmp)) + if (!@$tmpdoc->loadHTML($tmp)) return false; // this is the worst hack yet :( @@ -244,10 +241,22 @@ class Af_Readability extends Plugin { } - function hook_get_full_text($link) { - $extracted_content = $this->extract_content($link); + function hook_get_full_text($link) + { + $enable_share_anything = $this->host->get($this, "enable_share_anything"); + + if ($enable_share_anything) { + $extracted_content = $this->extract_content($link); - return trim(strip_tags(sanitize($extracted_content))); + # let's see if there's anything of value in there + $content_test = trim(strip_tags(sanitize($extracted_content))); + + if ($content_test) { + return $extracted_content; + } + } + + return false; } function api_version() { |