From 9f58dc63288ac58bb9adedb69aff3277677bbb0d Mon Sep 17 00:00:00 2001 From: Jakub Vrana Date: Mon, 28 Mar 2011 01:51:18 +0200 Subject: [PATCH] Allow more extends with plugin autoloader --- plugins/plugin.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/plugin.php b/plugins/plugin.php index 8b0a0264..4535c1a4 100644 --- a/plugins/plugin.php +++ b/plugins/plugin.php @@ -8,6 +8,13 @@ class AdminerPlugin extends Adminer { var $plugins; + function _findRootClass($class) { + do { + $return = $class; + } while ($class = get_parent_class($class)); + return $return; + } + /** Register plugins * @param array object instances or null to register all classes starting by 'Adminer' */ @@ -15,7 +22,7 @@ class AdminerPlugin extends Adminer { if (!isset($plugins)) { $plugins = array(); foreach (get_declared_classes() as $class) { - if (preg_match('~^Adminer(?!Plugin|$)~i', $class) && $class != get_class($this)) { // can use interface since PHP 5 + if (preg_match('~^Adminer.~i', $class) && strcasecmp($this->_findRootClass($class), 'Adminer')) { // can use interface since PHP 5 $plugins[$class] = new $class; } }