pluginhost: allow loading user plugins from plugins.local

This commit is contained in:
Andrew Dolgov 2015-06-05 17:54:52 +03:00
parent c3dfc1bdb5
commit 7c0a2ab202
4 changed files with 26 additions and 3 deletions

1
.gitignore vendored
View file

@ -3,6 +3,7 @@
*.DS_Store
#*
.idea/*
plugins.local/*
config.php
feed-icons/*
cache/*/*

View file

@ -129,7 +129,15 @@ class PluginHost {
}
}
function load_all($kind, $owner_uid = false) {
$plugins = array_map("basename", glob("plugins/*"));
$plugins = array_map("basename", array_filter(glob("plugins/*"), "is_dir"));
if (is_dir("plugins.local")) {
$plugins = array_merge($plugins, array_map("basename",
array_filter(glob("plugins.local/*"), "is_dir")));
}
asort($plugins);
$this->load(join(",", $plugins), $kind, $owner_uid);
}
@ -142,9 +150,15 @@ class PluginHost {
$class = trim($class);
$class_file = strtolower(basename($class));
if (!is_dir(dirname(__FILE__)."/../plugins/$class_file")) continue;
if (!is_dir(__DIR__."/../plugins/$class_file") &&
!is_dir(__DIR__."/../plugins.local/$class_file")) continue;
$file = dirname(__FILE__)."/../plugins/$class_file/init.php";
// try system plugin directory first
$file = __DIR__ . "/../plugins/$class_file/init.php";
if (!file_exists($file)) {
$file = __DIR__ . "/../plugins.local/$class_file/init.php";
}
if (!isset($this->plugins[$class])) {
if (file_exists($file)) require_once $file;

View file

@ -2471,4 +2471,12 @@
array("code" => $code, "message" => $message)));
}
function abs_to_rel_path($dir) {
$tmp = str_replace(dirname(__DIR__), "", $dir);
if (strlen($tmp) > 0 && substr($tmp, 0, 1) == "/") $tmp = substr($tmp, 1);
return $tmp;
}
?>

0
plugins.local/index.html Normal file
View file