diff --git a/lib/plugins/plugin.inc.php b/lib/plugins/plugin.inc.php index b35b71b..5696d5b 100644 --- a/lib/plugins/plugin.inc.php +++ b/lib/plugins/plugin.inc.php @@ -334,6 +334,11 @@ class KTPlugin { $sql = "SELECT id FROM plugin_helper WHERE namespace = '{$sNamespace}' AND classtype = '{$type}'"; $res = DBUtil::getOneResult($sql); + // if record exists - ignore it. + if(!empty($res)){ + return true; + } + $aValues = array(); $aValues['namespace'] = $sNamespace; $aValues['plugin'] = (!empty($this->sNamespace)) ? $this->sNamespace : $sNamespace; @@ -343,16 +348,6 @@ class KTPlugin { $aValues['viewtype'] = $view; $aValues['classtype'] = $type; - // if record exists - update it. - if(!empty($res)){ - $id = $res['id']; - $updateRes = DBUtil::autoUpdate('plugin_helper', $aValues, $id); - if(PEAR::isError($updateRes)){ - return $updateRes; - } - return true; - } - // Insert into DB $res = DBUtil::autoInsert('plugin_helper', $aValues); if(PEAR::isError($res)){ @@ -426,6 +421,7 @@ class KTPlugin { if(!$res){ return false; } + return true; // Get actions, portlets, etc, create arrays as part of plugin $query = "SELECT * FROM plugin_helper h WHERE plugin = '{$this->sNamespace}'"; diff --git a/lib/plugins/pluginregistry.inc.php b/lib/plugins/pluginregistry.inc.php index e459d73..3e867ad 100644 --- a/lib/plugins/pluginregistry.inc.php +++ b/lib/plugins/pluginregistry.inc.php @@ -60,8 +60,15 @@ class KTPluginRegistry { $sFilename = (!empty($sFilename)) ? KTPlugin::_fixFilename($sFilename) : ''; $this->_aPluginDetails[$sNamespace] = array($sClassName, $sNamespace, $sFilename); - $object = $sClassName.'|'.$sNamespace.'|'.$sFilename; - KTPlugin::registerPluginHelper($sNamespace, $sClassName, $sFilename, $object, 'general', 'plugin'); + /* + Check whether the system is registering or not. If true, register the plugin in plugin_helper. + If false, skip. + This check has been put in place to prevent the plugin being registered on every page load. + */ + if(isset($_SESSION['plugins_registerplugins']) && $_SESSION['plugins_registerplugins']){ + $object = $sClassName.'|'.$sNamespace.'|'.$sFilename; + KTPlugin::registerPluginHelper($sNamespace, $sClassName, $sFilename, $object, 'general', 'plugin'); + } } function &getPlugin($sNamespace) { diff --git a/lib/plugins/pluginutil.inc.php b/lib/plugins/pluginutil.inc.php index 2701be0..e8b67d9 100644 --- a/lib/plugins/pluginutil.inc.php +++ b/lib/plugins/pluginutil.inc.php @@ -161,7 +161,6 @@ class KTPluginUtil { if($sType != 'dashboard'){ $sType = 'general'; } - $GLOBALS['_KT_PLUGIN'] = array(); $aPlugins = array(); $aPluginHelpers = array(); @@ -573,13 +572,15 @@ class KTPluginUtil { /* Sort the plugins by priority */ asort($plugins); + /* + Add a check to indicate that plugin registration is occuring. + This check has been put in place to prevent the plugin being registered on every page load. + */ + $_SESSION['plugins_registerplugins'] = true; foreach($plugins as $sFile => $priority) { require_once($sFile); } - - - - + $_SESSION['plugins_registerplugins'] = false; $oRegistry =& KTPluginRegistry::getSingleton(); $aRegistryList = $oRegistry->getPlugins();