]> git.wh0rd.org - tt-rss.git/commitdiff
add af_unburn
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Sat, 12 Jan 2013 18:47:10 +0000 (22:47 +0400)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Sat, 12 Jan 2013 18:47:10 +0000 (22:47 +0400)
plugins/af_unburn/init.php [new file with mode: 0644]

diff --git a/plugins/af_unburn/init.php b/plugins/af_unburn/init.php
new file mode 100644 (file)
index 0000000..593f1ab
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+class Af_Unburn extends Plugin {
+
+       private $link;
+       private $host;
+
+       function about() {
+               return array(1.0,
+                       "Resolve feedburner URLs (requires CURL)",
+                       "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) {
+               $owner_uid = $article["owner_uid"];
+
+               if (!function_exists("curl_init"))
+                       return $article;
+
+               if (strpos($article["link"], "feedproxy.google.com") !== FALSE &&
+                       strpos($article["guid"], "unburn,$owner_uid:") === FALSE) {
+
+                       $ch = curl_init($article["link"]);
+                       curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
+                       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+                       curl_setopt($ch, CURLOPT_HEADER, true);
+                       curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
+
+                       $contents = @curl_exec($ch);
+
+                       $real_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
+
+                       if ($real_url) {
+                               $article["guid"] = "unburn,$owner_uid:" . $article["guid"];
+                               $article["link"] = $real_url;
+                       }
+               }
+
+               return $article;
+       }
+}
+?>