From 4412b877d02c16c033a28fd2b9d9fafa9fd16214 Mon Sep 17 00:00:00 2001
From: Andrew Dolgov <fox@madoka.volgo-balt.ru>
Date: Mon, 24 Dec 2012 14:13:03 +0400
Subject: [PATCH] implement HOOK_FEED_PARSED, add example plugin (refs #424)

---
 classes/pluginhost.php                |  1 +
 include/rssfuncs.php                  |  5 ++++-
 plugins/example_feed/example_feed.php | 22 ++++++++++++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 plugins/example_feed/example_feed.php

diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index 25569302b..e87f3a7e3 100644
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -11,6 +11,7 @@ class PluginHost {
 	const HOOK_PREFS_TAB = 3;
 	const HOOK_PREFS_SECTION = 4;
 	const HOOK_PREFS_TABS = 5;
+	const HOOK_FEED_PARSED = 6;
 
 	function __construct($link) {
 		$this->link = $link;
diff --git a/include/rssfuncs.php b/include/rssfuncs.php
index a28cb2063..817490a84 100644
--- a/include/rssfuncs.php
+++ b/include/rssfuncs.php
@@ -261,6 +261,9 @@
 
 		if (!$rss->error()) {
 
+			global $pluginhost;
+			$pluginhost->run_hooks($pluginhost::HOOK_FEED_PARSED, "hook_feed_parsed", $rss);
+
 			if ($debug_enabled) {
 				_debug("update_rss_feed: processing feed data...");
 			}
@@ -521,7 +524,6 @@
 				}
 
 				// TODO: less memory-hungry implementation
-				global $pluginhost;
 
 				if ($debug_enabled) {
 					_debug("update_rss_feed: applying plugin filters..");
@@ -534,6 +536,7 @@
 					"tags" => $entry_tags,
 					"author" => $entry_author);
 
+				global $pluginhost;
 				foreach ($pluginhost->get_hooks($pluginhost::HOOK_ARTICLE_FILTER) as $plugin) {
 					$article = $plugin->hook_article_filter($article);
 				}
diff --git a/plugins/example_feed/example_feed.php b/plugins/example_feed/example_feed.php
new file mode 100644
index 000000000..26f392bd7
--- /dev/null
+++ b/plugins/example_feed/example_feed.php
@@ -0,0 +1,22 @@
+<?php
+class Example_Feed extends Plugin {
+
+	// Demonstrates how to query data from the parsed feed object (SimplePie)
+	// don't enable unless debugging feed through f D hotkey or manually.
+
+	private $link;
+	private $host;
+
+	function __construct($host) {
+		$this->link = $host->get_link();
+		$this->host = $host;
+
+		$host->add_hook($host::HOOK_FEED_PARSED, $this);
+	}
+
+	function hook_feed_parsed($feed) {
+		_debug("I'm a little feed short and stout, here's my title: " . $feed->get_title());
+		_debug("... here's my link element: " . $feed->get_link());
+	}
+}
+?>
-- 
GitLab