diff options
author | Andrew Dolgov <[email protected]> | 2012-12-30 13:36:40 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2012-12-30 13:36:40 +0400 |
commit | e938b1de117cfde17a5773fe0c6fc92185c873fe (patch) | |
tree | 4afe7134ba505ba9209833cf193603beb32706cb /plugins/af_redditimgur/init.php | |
parent | 0e44c2a0d422617a59e3926cf3ae22872aac041a (diff) |
rename plugin main class files
Diffstat (limited to 'plugins/af_redditimgur/init.php')
-rw-r--r-- | plugins/af_redditimgur/init.php | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php new file mode 100644 index 000000000..a258f3c08 --- /dev/null +++ b/plugins/af_redditimgur/init.php @@ -0,0 +1,60 @@ +<?php +class Af_RedditImgur extends Plugin { + + private $link; + private $host; + + function about() { + return array(1.0, + "Inline image links in Reddit RSS feeds", + "fox"); + } + + function init($host) { + $this->link = $host->get_link(); + $this->host = $host; + + $host->add_hook($host::HOOK_ARTICLE_FILTER, $this); + } + + function hook_article_filter($article) { + + if (strpos($article["link"], "reddit.com/r/") !== FALSE) { + $doc = new DOMDocument(); + @$doc->loadHTML($article["content"]); + + if ($doc) { + $xpath = new DOMXPath($doc); + $entries = $xpath->query('(//a[@href]|//img[@src])'); + + foreach ($entries as $entry) { + if ($entry->hasAttribute("href")) { + if (preg_match("/\.(jpg|jpeg|gif|png)$/i", $entry->getAttribute("href"))) { + + $img = $doc->createElement('img'); + $img->setAttribute("src", $entry->getAttribute("href")); + + $entry->parentNode->replaceChild($img, $entry); + } + } + + // remove tiny thumbnails + if ($entry->hasAttribute("src")) { + if ($entry->parentNode && $entry->parentNode->parentNode) { + $entry->parentNode->parentNode->removeChild($entry->parentNode); + } + } + } + + $node = $doc->getElementsByTagName('body')->item(0); + + if ($node) { + $article["content"] = $doc->saveXML($node, LIBXML_NOEMPTYTAG); + } + } + } + + return $article; + } +} +?> |