From 98a31d10ef589a85155181576f5d3587d09fbf59 Mon Sep 17 00:00:00 2001 From: megan_w Date: Fri, 23 May 2008 08:55:08 +0000 Subject: [PATCH] Merged in from trunk... KTS-3335 "KTPluginRegistry MUST respect the plugins order when registering plugins" Fixed. Plugins are now registered in the order they're loaded. Put the registration into a transaction. --- lib/plugins/pluginregistry.inc.php | 15 +++++++++++---- lib/plugins/pluginutil.inc.php | 5 ++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/plugins/pluginregistry.inc.php b/lib/plugins/pluginregistry.inc.php index 0b4851d..6c4242f 100644 --- a/lib/plugins/pluginregistry.inc.php +++ b/lib/plugins/pluginregistry.inc.php @@ -85,9 +85,16 @@ class KTPluginRegistry { function &getPlugins() { $aRet = array(); foreach (array_keys($this->_aPluginDetails) as $sPluginName) { - $aRet[] =& $this->getPlugin($sPluginName); + $oPlugin =& $this->getPlugin($sPluginName); + $aRet[(int)$oPlugin->iOrder][] =& $oPlugin; } - return $aRet; + ksort($aRet); + $aRes = array(); + foreach($aRet as $iOrder => $aPlugins) { + foreach(array_keys($aPlugins) as $iPlugin) { + $aRes[] =& $aRet[$iOrder][$iPlugin]; + } + } + return $aRes; } -} - +} \ No newline at end of file diff --git a/lib/plugins/pluginutil.inc.php b/lib/plugins/pluginutil.inc.php index 06d958e..06809c8 100644 --- a/lib/plugins/pluginutil.inc.php +++ b/lib/plugins/pluginutil.inc.php @@ -180,7 +180,9 @@ class KTPluginUtil { // Check that there are plugins and if not, register them if (empty($aPluginHelpers)) { + DBUtil::startTransaction(); KTPluginUtil::registerPlugins(); + DBUtil::commit(); $query = "SELECT h.classname, h.pathname, h.plugin FROM plugin_helper h INNER JOIN plugins p ON (p.namespace = h.plugin) @@ -483,7 +485,8 @@ class KTPluginUtil { } } $oRegistry =& KTPluginRegistry::getSingleton(); - foreach ($oRegistry->getPlugins() as $oPlugin) { + $aRegistryList = $oRegistry->getPlugins(); + foreach ($aRegistryList as $oPlugin) { $res = $oPlugin->register(); if (PEAR::isError($res)) { var_dump($res); -- libgit2 0.21.4