diff options
author | Andrew Dolgov <[email protected]> | 2018-06-21 08:12:11 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2018-06-21 08:12:11 +0300 |
commit | 6d95e535248d91278816e88250cdeb278f6e38c2 (patch) | |
tree | 92d620639cb6574c94288c8ced11227153a71f9a /plugins | |
parent | acf155cf8f5a685292955fffca618af6619fcfe0 (diff) |
af_readability: check if sanitized content has anything before replacing
original excerpt
af_readability, af_redditimgur: check php version before using Readability
Diffstat (limited to 'plugins')
-rwxr-xr-x | plugins/af_readability/init.php | 13 | ||||
-rwxr-xr-x | plugins/af_redditimgur/init.php | 68 |
2 files changed, 18 insertions, 63 deletions
diff --git a/plugins/af_readability/init.php b/plugins/af_readability/init.php index 48d9c2e37..d1b165809 100755 --- a/plugins/af_readability/init.php +++ b/plugins/af_readability/init.php @@ -29,6 +29,10 @@ class Af_Readability extends Plugin { { $this->host = $host; + if (version_compare(PHP_VERSION, '5.6.0', '<')) { + return; + } + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); $host->add_hook($host::HOOK_PREFS_TAB, $this); $host->add_hook($host::HOOK_PREFS_EDIT_FEED, $this); @@ -42,6 +46,10 @@ class Af_Readability extends Plugin { print "<div dojoType=\"dijit.layout.AccordionPane\" title=\"".__('Readability settings (af_readability)')."\">"; + if (version_compare(PHP_VERSION, '5.6.0', '<')) { + print_error("This plugin requires PHP version 5.6."); + } + print_notice("Enable the plugin for specific feeds in the feed editor."); print "<form dojoType=\"dijit.form.Form\">"; @@ -201,7 +209,10 @@ class Af_Readability extends Plugin { $extracted_content = $this->extract_content($article["link"]); - if ($extracted_content) { + # let's see if there's anything of value in there + $content_test = trim(strip_tags(sanitize($extracted_content))); + + if ($content_test) { $article["content"] = $extracted_content; } diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php index 735db1d64..4c9f68909 100755 --- a/plugins/af_redditimgur/init.php +++ b/plugins/af_redditimgur/init.php @@ -32,6 +32,10 @@ class Af_RedditImgur extends Plugin { $enable_readability = $this->host->get($this, "enable_readability"); $enable_content_dupcheck = $this->host->get($this, "enable_content_dupcheck"); + if (version_compare(PHP_VERSION, '5.6.0', '<')) { + print_error("Readability requires PHP version 5.6."); + } + print "<form dojoType=\"dijit.form.Form\">"; print "<script type=\"dojo/method\" event=\"onSubmit\" args=\"evt\"> @@ -52,9 +56,6 @@ class Af_RedditImgur extends Plugin { print_hidden("method", "save"); print_hidden("plugin", "af_redditimgur"); - print "<p>" . __("Uses Readability (full-text-rss) implementation by <a target='_blank' href='https://bitbucket.org/fivefilters/'>FiveFilters.org</a>"); - print "<p/>"; - print_checkbox("enable_readability", $enable_readability); print " <label for=\"enable_readability\">" . __("Extract missing content using Readability") . "</label>"; @@ -287,64 +288,6 @@ class Af_RedditImgur extends Plugin { $found = true; } - // linked albums & pages - - /*if (!$found && preg_match("/^https?:\/\/(m\.)?imgur.com\/([^\.\/]+$)/", $entry->getAttribute("href"), $matches) || - preg_match("/^https?:\/\/(m\.)?imgur.com\/(a|album|gallery)\/[^\.]+$/", $entry->getAttribute("href"), $matches)) { - - _debug("Handling as an imgur page/album/gallery", $debug); - - $album_content = fetch_file_contents($entry->getAttribute("href"), - false, false, false, false, 10); - - if ($album_content) { - $adoc = new DOMDocument(); - - if (@$adoc->loadHTML($album_content)) { - $axpath = new DOMXPath($adoc); - - $aentries = $axpath->query("(//div[@class='post-image']/img[@src] | //a[@class='zoom']/img[@src] | //div[@class='video-elements']/source)"); - $urls = []; - - foreach ($aentries as $aentry) { - - $url = $aentry->getAttribute("src"); - - if (!in_array($url, $urls)) { - - if ($aentry->tagName == "img") { - - $img = $doc->createElement('img'); - $img->setAttribute("src", $url); - $entry->parentNode->insertBefore($doc->createElement('br'), $entry); - - $br = $doc->createElement('br'); - - $entry->parentNode->insertBefore($img, $entry); - $entry->parentNode->insertBefore($br, $entry); - } else if ($aentry->tagName == "source") { - - if (strpos($url, "imgur.com") !== FALSE) - $poster_url = str_replace(".mp4", "h.jpg", $url); - else - $poster_url = ""; - - $this->handle_as_video($doc, $entry, $url, $poster_url); - - } - - array_push($urls, $url); - - $found = true; - } - - } - - if ($debug) print_r($urls); - } - } - } */ - // wtf is this even if (!$found && preg_match("/^https?:\/\/gyazo\.com\/([^\.\/]+$)/", $entry->getAttribute("href"), $matches)) { $img_id = $matches[1]; @@ -558,7 +501,8 @@ class Af_RedditImgur extends Plugin { mb_strlen(strip_tags($article["content"])) <= 150) { // do not try to embed posts linking back to other reddit posts - if ($url && strpos($url, "reddit.com") === FALSE) { + // readability.php requires PHP 5.6 + if ($url && strpos($url, "reddit.com") === FALSE && version_compare(PHP_VERSION, '5.6.0', '>=')) { /* link may lead to a huge video file or whatever, we need to check content type before trying to parse it which p much requires curl */ |