return;
}
- $plugins = new Plugins($link);
-
$purge_intervals = array(
0 => __("Use default"),
-1 => __("Never purge"),
$next_unread_feed, $offset, $vgr_last_feed = false,\r
$override_order = false, $include_children = false) {\r
\r
- global $plugins;\r
-\r
$disable_cache = false;\r
\r
$reply = array();\r
\r
$headlines_count = db_num_rows($result);\r
\r
- $plugins->hook('headlines_before', $reply);\r
-\r
if (get_pref($this->link, 'COMBINED_DISPLAY_MODE')) {\r
$button_plugins = array();\r
foreach (explode(",", ARTICLE_BUTTON_PLUGINS) as $p) {\r
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PS", $timing_info);\r
\r
while ($line = db_fetch_assoc($result)) {\r
-\r
- if (get_pref($this->link, 'COMBINED_DISPLAY_MODE')) {\r
- $plugins->hook('cdm_article_before', $line);\r
- } else {\r
- $plugins->hook('headlines_row', $line);\r
- }\r
-\r
$class = ($lnum % 2) ? "even" : "odd";\r
\r
$id = $line["id"];\r
\r
$reply['content'] .= "</div>";\r
\r
- $plugins->hook('cdm_article_after', $reply['content']);\r
-\r
}\r
\r
++$lnum;\r
}\r
\r
- $plugins->hook('headlines_after', $reply);\r
-\r
if ($_REQUEST["debug"]) $timing_info = print_checkpoint("PE", $timing_info);\r
\r
} else {\r
+++ /dev/null
-<?php
-class Plugin {
- protected $link;
- protected $handler;
-
- function __construct($link, $handler) {
- $this->link = $link;
- $this->handler = $handler;
- $this->initialize();
- }
-
- function initialize() {
-
-
- }
-
- function add_listener($hook) {
- $this->handler->add_listener($hook, $this);
- }
-}
-?>
+++ /dev/null
-<?
- class Plugin_Example extends Plugin {
- function initialize() {
- $this->add_listener('article_before');
- }
-
- function article_before(&$line) {
- $line["title"] = "EXAMPLE/REPLACED:" . $line["title"];
- }
- }
-?>
+++ /dev/null
-<?php
-class Plugins {
- protected $link;
- protected $plugins;
- protected $listeners;
-
- function __construct($link) {
- $this->link = $link;
- $this->listeners = array();
- $this->load_plugins();
- }
-
- function load_plugins() {
- if (defined('_ENABLE_PLUGINS')) {
- $plugins = explode(",", _ENABLE_PLUGINS);
-
- foreach ($plugins as $p) {
- $plugin_class = "plugin_$p";
- if (class_exists($plugin_class)) {
- $plugin = new $plugin_class($this->link, $this);
- }
- }
- }
- }
-
- function add_listener($hook_name, $plugin) {
- if (!is_array($this->listeners[$hook_name]))
- $this->listeners[$hook_name] = array();
-
- array_push($this->listeners[$hook_name], $plugin);
- }
-
- function hook($hook_name, &$params) {
- if (is_array($this->listeners[$hook_name])) {
- foreach ($this->listeners[$hook_name] as $p) {
- if (method_exists($p, $hook_name)) {
- $p->$hook_name($params);
- }
- }
- }
- }
-
-}
-?>
}
function format_article($link, $id, $mark_as_read = true, $zoom_mode = false, $owner_uid = false) {
- global $plugins;
-
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
$rv = array();
$line = db_fetch_assoc($result);
- $plugins->hook('article_before', $line);
-
if ($line["icon_url"]) {
$feed_icon = "<img src=\"" . $line["icon_url"] . "\">";
} else {
$rv['content'] .= "</body></html>";
}
- $plugins->hook('article_after', $rv);
-
return $rv;
}
function update_rss_feed($link, $feed, $ignore_daemon = false, $no_cache = false,
$override_url = false) {
- global $plugins;
-
require_once "lib/simplepie/simplepie.inc";
require_once "lib/magpierss/rss_fetch.inc";
require_once 'lib/magpierss/rss_utils.inc';
}
foreach ($iterator as $item) {
- $hook_params = array("item" => &$item, "feed" => $feed);
-
- $plugins->hook('rss_update_item', $hook_params);
-
if ($_REQUEST['xdebug'] == 2) {
print_r($item);
}
init_connection($link);
- $plugins = new Plugins($link);
-
if (in_array("-feeds", $op)) {
// Update all feeds needing a update.
update_daemon_common($link);
if (!init_connection($link)) return;
- $plugins = new Plugins($link);
-
// We disable stamp file, since it is of no use in a multiprocess update.
// not really, tho for the time being -fox
if (!make_stampfile('update_daemon.stamp')) {