diff options
author | Andrew Dolgov <[email protected]> | 2012-11-26 14:33:18 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2012-11-26 14:33:18 +0400 |
commit | cc85704f3cc798e9df7813ab9e2de955d7152ada (patch) | |
tree | ae3c76d63fd8bdb78e082c4be292b9090b55c272 /classes | |
parent | bf2611195f4f2f3e8f8f6c23dd27b024ce3d93d1 (diff) |
implement experimental article on-import data filters
Diffstat (limited to 'classes')
-rw-r--r-- | classes/filter.php | 14 | ||||
-rw-r--r-- | classes/filter/redditimgur.php | 47 |
2 files changed, 61 insertions, 0 deletions
diff --git a/classes/filter.php b/classes/filter.php new file mode 100644 index 000000000..8d6bf6f26 --- /dev/null +++ b/classes/filter.php @@ -0,0 +1,14 @@ +<?php +class Filter { + protected $link; + + function __construct($link) { + $this->link = $link; + } + + function filter_article($article) { + return $article; + } + +} +?> diff --git a/classes/filter/redditimgur.php b/classes/filter/redditimgur.php new file mode 100644 index 000000000..6b41015e7 --- /dev/null +++ b/classes/filter/redditimgur.php @@ -0,0 +1,47 @@ +<?php +class Filter_RedditImgur { + + function filter_article($article) { + + if (strpos($article["link"], "reddit.com/r/") !== FALSE) { + if (strpos($article["content"], "i.imgur.com") !== 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("/i.imgur.com\/.*?.jpg/", $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; + } +} +?> |