From a16d7a5d6481bd6d1d337a114bb37060c51b0052 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 28 Feb 2013 16:47:55 +0400 Subject: [PATCH] af_redditimgur: do not process content multiple times --- plugins/af_redditimgur/init.php | 50 ++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php index a258f3c08..4425fe1c0 100644 --- a/plugins/af_redditimgur/init.php +++ b/plugins/af_redditimgur/init.php @@ -18,40 +18,46 @@ class Af_RedditImgur extends Plugin { } function hook_article_filter($article) { + $owner_uid = $article["owner_uid"]; if (strpos($article["link"], "reddit.com/r/") !== FALSE) { - $doc = new DOMDocument(); - @$doc->loadHTML($article["content"]); + if (strpos($article["plugin_data"], "redditimgur,$owner_uid:") === FALSE) { + $doc = new DOMDocument(); + @$doc->loadHTML($article["content"]); - if ($doc) { - $xpath = new DOMXPath($doc); - $entries = $xpath->query('(//a[@href]|//img[@src])'); + 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"))) { + 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")); + $img = $doc->createElement('img'); + $img->setAttribute("src", $entry->getAttribute("href")); - $entry->parentNode->replaceChild($img, $entry); + $entry->parentNode->replaceChild($img, $entry); + } + } + + // remove tiny thumbnails + if ($entry->hasAttribute("src")) { + if ($entry->parentNode && $entry->parentNode->parentNode) { + $entry->parentNode->parentNode->removeChild($entry->parentNode); + } } } - // 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); + $article["plugin_data"] = "redditimgur,$owner_uid:" . $article["plugin_data"]; } } - - $node = $doc->getElementsByTagName('body')->item(0); - - if ($node) { - $article["content"] = $doc->saveXML($node, LIBXML_NOEMPTYTAG); - } } + } else if (isset($article["stored"]["content"])) { + $article["content"] = $article["stored"]["content"]; } return $article;