1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-13 17:15:55 +00:00

more work on user-selectable plugins; properly process system and user plugins

This commit is contained in:
Andrew Dolgov
2012-12-25 10:02:08 +04:00
parent de612e7a38
commit d2a421e3cb
23 changed files with 92 additions and 60 deletions

View File

@@ -14,6 +14,10 @@ class PluginHost {
const HOOK_FEED_PARSED = 6;
const HOOK_UPDATE_TASK = 7;
const KIND_ALL = 1;
const KIND_SYSTEM = 2;
const KIND_USER = 3;
function __construct($link) {
$this->link = $link;
}
@@ -65,12 +69,12 @@ class PluginHost {
return array();
}
}
function load_all() {
function load_all($kind) {
$plugins = array_map("basename", glob("plugins/*"));
$this->load(join(",", $plugins));
$this->load(join(",", $plugins), $kind);
}
function load($classlist) {
function load($classlist, $kind) {
$plugins = explode(",", $classlist);
foreach ($plugins as $class) {
@@ -84,14 +88,31 @@ class PluginHost {
if (class_exists($class) && is_subclass_of($class, "Plugin")) {
$plugin = new $class($this);
$this->register_plugin($class, $plugin);
switch ($kind) {
case $this::KIND_SYSTEM:
if ($this->is_system($plugin)) {
$plugin->init($this);
$this->register_plugin($class, $plugin);
}
break;
case $this::KIND_USER:
if (!$this->is_system($plugin)) {
$plugin->init($this);
$this->register_plugin($class, $plugin);
}
break;
case $this::KIND_ALL:
$plugin->init($this);
$this->register_plugin($class, $plugin);
break;
}
}
}
}
}
function is_system($plugin) {
$about = $plugin->_about();
$about = $plugin->about();
return @$about[3];
}
@@ -134,22 +155,17 @@ class PluginHost {
return false;
}
// only system plugins are allowed to modify commands
function add_command($command, $description, $sender) {
$command = "-" . str_replace("-", "_", strtolower($command));
if ($this->is_system($sender)) {
$this->commands[$command] = array("description" => $description,
"class" => $sender);
}
$this->commands[$command] = array("description" => $description,
"class" => $sender);
}
function del_command($command) {
$command = "-" . strtolower($command);
if ($this->is_system($sender)) {
unset($this->commands[$command]);
}
unset($this->commands[$command]);
}
function lookup_command($command) {