diff options
author | Andreas Gohr <andi@splitbrain.org> | 2015-05-20 09:17:37 +0200 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2015-05-20 09:17:37 +0200 |
commit | dae73d6abd9c0621fc75b85072812ae5c31f6d45 (patch) | |
tree | 9ee5dc386e7be96326f16e40f4d7460ff47d7a85 /inc/pluginutils.php | |
parent | 3bc8c0d72be15e1210feef5c8f4c670d7ab71dc4 (diff) | |
parent | 714ca83d81222f48db9b9db4b216715efe70cdf3 (diff) | |
download | rpg-dae73d6abd9c0621fc75b85072812ae5c31f6d45.tar.gz rpg-dae73d6abd9c0621fc75b85072812ae5c31f6d45.tar.bz2 |
Merge pull request #1156 from splitbrain/refactor_admin_plugin_get
Provide a function to return admin plugin for the page request.
Diffstat (limited to 'inc/pluginutils.php')
-rw-r--r-- | inc/pluginutils.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/inc/pluginutils.php b/inc/pluginutils.php index 4d591869d..60f79869f 100644 --- a/inc/pluginutils.php +++ b/inc/pluginutils.php @@ -103,3 +103,34 @@ function plugin_getcascade() { global $plugin_controller; return $plugin_controller->getCascade(); } + + +/** + * Return the currently operating admin plugin or null + * if not on an admin plugin page + * + * @return Doku_Plugin_Admin + */ +function plugin_getRequestAdminPlugin(){ + static $admin_plugin = false; + global $ACT,$INPUT,$INFO; + + if ($admin_plugin === false) { + if (($ACT == 'admin') && ($page = $INPUT->str('page', '', true)) != '') { + $pluginlist = plugin_list('admin'); + if (in_array($page, $pluginlist)) { + // attempt to load the plugin + /** @var $admin_plugin DokuWiki_Admin_Plugin */ + $admin_plugin = plugin_load('admin', $page); + // verify + if ($admin_plugin && $admin_plugin->forAdminOnly() && !$INFO['isadmin']) { + $admin_plugin = null; + $INPUT->remove('page'); + msg('For admins only',-1); + } + } + } + } + + return $admin_plugin; +} |