diff options
Diffstat (limited to 'plugins/af_redditimgur')
-rwxr-xr-x | plugins/af_redditimgur/init.php | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php index 3b4094b1b..dd8fbf651 100755 --- a/plugins/af_redditimgur/init.php +++ b/plugins/af_redditimgur/init.php @@ -28,11 +28,24 @@ class Af_RedditImgur extends Plugin { $host->add_hook($host::HOOK_RENDER_ARTICLE, $this); $host->add_hook($host::HOOK_RENDER_ARTICLE_CDM, $this); $host->add_hook($host::HOOK_RENDER_ARTICLE_API, $this); + + $host->add_hook($host::HOOK_PRE_SUBSCRIBE, $this); + } + + function hook_pre_subscribe(&$url, $auth_login, $auth_pass) { + $reddit_to_teddit = $this->host->get($this, "reddit_to_teddit"); + + if ($reddit_to_teddit) { + $url = $this->rewrite_to_reddit($url); + + return true; + } + + return false; } function hook_prefs_tab($args) { if ($args != "prefFeeds") return; - $enable_readability = $this->host->get($this, "enable_readability"); $enable_content_dupcheck = $this->host->get($this, "enable_content_dupcheck"); $reddit_to_teddit = $this->host->get($this, "reddit_to_teddit"); @@ -468,6 +481,7 @@ class Af_RedditImgur extends Plugin { if (@$cdoc->loadHTML($content)) { $cxpath = new DOMXPath($cdoc); + /** @var ?DOMElement $rel_image */ $rel_image = $cxpath->query("//link[@rel='image_src']")->item(0); if ($rel_image) { @@ -514,7 +528,10 @@ class Af_RedditImgur extends Plugin { if (@$cdoc->loadHTML($content)) { $cxpath = new DOMXPath($cdoc); + /** @var ?DOMElement $og_image */ $og_image = $cxpath->query("//meta[@property='og:image']")->item(0); + + /** @var ?DOMElement $og_video */ $og_video = $cxpath->query("//meta[@property='og:video']")->item(0); if ($og_video) { @@ -577,6 +594,7 @@ class Af_RedditImgur extends Plugin { if (@$doc->loadHTML($article["content"])) { $xpath = new DOMXPath($doc); + /** @var ?DOMElement $content_link */ $content_link = $xpath->query("(//a[contains(., '[link]')])")->item(0); if ($this->host->get($this, "enable_content_dupcheck")) { @@ -785,7 +803,8 @@ class Af_RedditImgur extends Plugin { } - private function get_header($url, $header, $useragent = SELF_USER_AGENT) { + /** $useragent defaults to Config::get_user_agent() */ + private function get_header($url, $header, $useragent = false) { $ret = false; if (function_exists("curl_init")) { @@ -795,7 +814,7 @@ class Af_RedditImgur extends Plugin { curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, !ini_get("open_basedir")); - curl_setopt($ch, CURLOPT_USERAGENT, $useragent); + curl_setopt($ch, CURLOPT_USERAGENT, $useragent ? $useragent : Config::get_user_agent()); @curl_exec($ch); $ret = curl_getinfo($ch, $header); @@ -804,11 +823,11 @@ class Af_RedditImgur extends Plugin { return $ret; } - private function get_content_type($url, $useragent = SELF_USER_AGENT) { + private function get_content_type($url, $useragent = false) { return $this->get_header($url, CURLINFO_CONTENT_TYPE, $useragent); } - private function get_location($url, $useragent = SELF_USER_AGENT) { + private function get_location($url, $useragent = false) { return $this->get_header($url, CURLINFO_EFFECTIVE_URL, $useragent); } @@ -868,6 +887,18 @@ class Af_RedditImgur extends Plugin { return $str; } + private function rewrite_to_reddit($str) { + if (strpos($str, "teddit.net") !== false) { + $str = preg_replace("/https?:\/\/teddit.net/", "https://reddit.com", $str); + + if (strpos($str, "/.rss") === false) + $str .= "/.rss"; + } + + return $str; + } + + function hook_render_article_cdm($article) { if ($this->host->get($this, "reddit_to_teddit")) { $need_saving = false; |