]> git.joonet.de Git - adminer.git/commitdiff
Allow more extends with plugin autoloader
authorJakub Vrana <jakub@vrana.cz>
Sun, 27 Mar 2011 23:51:18 +0000 (01:51 +0200)
committerJakub Vrana <jakub@vrana.cz>
Sun, 27 Mar 2011 23:51:18 +0000 (01:51 +0200)
plugins/plugin.php

index 8b0a02641521e78afbbc7e0512dc5d9f0213aa21..4535c1a448e0be5e91f0b8a6ffe4cc329e39296a 100644 (file)
@@ -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;
                                }
                        }