private $link;
private $hooks = array();
private $plugins = array();
+ private $handlers = array();
+ private $commands = array();
const HOOK_ARTICLE_BUTTON = 1;
const HOOK_ARTICLE_FILTER = 2;
const HOOK_PREFS_TAB = 3;
const HOOK_PREFS_SECTION = 4;
+ const HOOK_PREFS_TABS = 5;
+ const HOOK_FEED_PARSED = 6;
+ const HOOK_UPDATE_TASK = 7;
function __construct($link) {
$this->link = $link;
}
function get_hooks($type) {
- return $this->hooks[$type];
+ if (isset($this->hooks[$type])) {
+ return $this->hooks[$type];
+ } else {
+ return array();
+ }
}
function load($classlist) {
foreach ($plugins as $class) {
$class = trim($class);
- $class_file = str_replace("_", "/", strtolower(basename($class)));
+ $class_file = strtolower(basename($class));
$file = dirname(__FILE__)."/../plugins/$class_file/$class_file.php";
if (file_exists($file)) require_once $file;
}
}
+ function add_handler($handler, $method, $sender) {
+ $handler = str_replace("-", "_", strtolower($handler));
+ $method = strtolower($method);
+
+ if (!is_array($this->handlers[$handler])) {
+ $this->handlers[$handler] = array();
+ }
+
+ $this->handlers[$handler][$method] = $sender;
+ }
+
+ function del_handler($handler, $method) {
+ $handler = str_replace("-", "_", strtolower($handler));
+ $method = strtolower($method);
+
+ unset($this->handlers[$handler][$method]);
+ }
+
+ function lookup_handler($handler, $method) {
+ $handler = str_replace("-", "_", strtolower($handler));
+ $method = strtolower($method);
+
+ if (is_array($this->handlers[$handler])) {
+ if (isset($this->handlers[$handler]["*"])) {
+ return $this->handlers[$handler]["*"];
+ } else {
+ return $this->handlers[$handler][$method];
+ }
+ }
+
+ return false;
+ }
+
+ function add_command($command, $description, $sender) {
+ $command = "-" . str_replace("-", "_", strtolower($command));
+
+ $this->commands[$command] = array("description" => $description,
+ "class" => $sender);
+ }
+
+ function del_command($command) {
+ $command = "-" . strtolower($command);
+
+ unset($this->commands[$command]);
+ }
+
+ function lookup_command($command) {
+ $command = "-" . strtolower($command);
+
+ if (is_array($this->commands[$command])) {
+ return $this->commands[$command]["class"];
+ } else {
+ return false;
+ }
+
+ return false;
+ }
+
+ function get_commands() {
+ return $this->commands;
+ }
+
+ function run_commands($args) {
+ foreach ($this->get_commands() as $command => $data) {
+ if (in_array($command, $args)) {
+ $command = str_replace("-", "", $command);
+ $data["class"]->$command($args);
+ }
+ }
+ }
+
}
?>