From c979a43d36c78841c5afcfd10d57eeffe009b759 Mon Sep 17 00:00:00 2001 From: dev-ronald Date: Mon, 24 Jul 2017 16:29:18 -0400 Subject: [PATCH] fix in login and pluginregistry --- framework/src/Maveriks/WebApplication.php | 7 ++-- gulliver/system/class.headPublisher.php | 4 +-- .../engine/classes/model/PluginsRegistry.php | 34 ++++++++++++++++++- workflow/engine/skinEngine/skinEngine.php | 2 +- .../Plugins/Adapters/PluginAdapter.php | 10 ++++-- .../ProcessMaker/Plugins/PluginsRegistry.php | 2 +- 6 files changed, 48 insertions(+), 11 deletions(-) diff --git a/framework/src/Maveriks/WebApplication.php b/framework/src/Maveriks/WebApplication.php index 8625042a5..5912d84fa 100644 --- a/framework/src/Maveriks/WebApplication.php +++ b/framework/src/Maveriks/WebApplication.php @@ -358,7 +358,7 @@ class WebApplication } // hook to get rest api classes from plugins - if (class_exists('PMPluginRegistry') && file_exists(PATH_DATA_SITE . 'plugin.singleton')) { + if (class_exists('PMPluginRegistry')) { $pluginRegistry = \PMPluginRegistry::loadSingleton(PATH_DATA_SITE . 'plugin.singleton'); $plugins = $pluginRegistry->getRegisteredRestServices(); @@ -370,8 +370,9 @@ class WebApplication $loader->add($pluginSourceDir); foreach ($plugin as $class) { - if (class_exists($class['namespace'])) { - $this->rest->addAPIClass($class['namespace'], strtolower($pluginName)); + $className = is_object($class) ? $class->namespace: $class['namespace']; + if (class_exists($className)) { + $this->rest->addAPIClass($className, strtolower($pluginName)); } } } diff --git a/gulliver/system/class.headPublisher.php b/gulliver/system/class.headPublisher.php index 96a097069..af11a0e73 100644 --- a/gulliver/system/class.headPublisher.php +++ b/gulliver/system/class.headPublisher.php @@ -386,7 +386,7 @@ class headPublisher */ // Load external/plugin css // NOTE is necesary to move this to decorator server - if (class_exists('PMPluginRegistry') && PATH_DATA != PATH_C) { + if (class_exists('PMPluginRegistry') && defined('SYS_SYS')) { $oPluginRegistry = & PMPluginRegistry::getSingleton(); $registeredCss = $oPluginRegistry->getRegisteredCss(); foreach ($registeredCss as $cssFile) { @@ -550,7 +550,7 @@ class headPublisher $this->extJsScript[] = '/extjs/' . $cacheName; //hook for registered javascripts from plugins - if (class_exists('PMPluginRegistry') && PATH_DATA != PATH_C) { + if (class_exists('PMPluginRegistry') && defined('SYS_SYS')) { $oPluginRegistry = & PMPluginRegistry::getSingleton(); $pluginJavascripts = $oPluginRegistry->getRegisteredJavascriptBy($filename); } else { diff --git a/workflow/engine/classes/model/PluginsRegistry.php b/workflow/engine/classes/model/PluginsRegistry.php index 6db797ac1..78347aed1 100644 --- a/workflow/engine/classes/model/PluginsRegistry.php +++ b/workflow/engine/classes/model/PluginsRegistry.php @@ -108,7 +108,7 @@ class PluginsRegistry extends BasePluginsRegistry public static function update($aData) { - $oConnection = Propel::getConnection(UsersPropertiesPeer::DATABASE_NAME); + $oConnection = Propel::getConnection(PluginsRegistryPeer::DATABASE_NAME); try { $oPluginsRegistry = PluginsRegistryPeer::retrieveByPK($aData['PR_UID']); if ($oPluginsRegistry) { @@ -135,4 +135,36 @@ class PluginsRegistry extends BasePluginsRegistry throw ($oError); } } + + public static function enable($pr_uid) + { + $oConnection = Propel::getConnection(PluginsRegistryPeer::DATABASE_NAME); + try { + $oPluginsRegistry = PluginsRegistryPeer::retrieveByPK($pr_uid); + if ($oPluginsRegistry) { + $aData['PLUGIN_ENABLE'] = true; + $oPluginsRegistry->fromArray($aData, BasePeer::TYPE_FIELDNAME); + if ($oPluginsRegistry->validate()) { + $oConnection->begin(); + $iResult = $oPluginsRegistry->save(); + $oConnection->commit(); + return $iResult; + } else { + $sMessage = ''; + $aValidationFailures = $oPluginsRegistry->getValidationFailures(); + /** @var ValidationFailed $oValidationFailure */ + foreach ($aValidationFailures as $oValidationFailure) { + $sMessage .= $oValidationFailure->getMessage() . '
'; + } + throw (new Exception('The registry cannot be updated!
' . $sMessage)); + } + } else { + throw (new Exception('This row doesn\'t exist!')); + } + } catch (Exception $oError) { + $oConnection->rollback(); + throw ($oError); + } + } + } diff --git a/workflow/engine/skinEngine/skinEngine.php b/workflow/engine/skinEngine/skinEngine.php index 99de33590..20fe756f3 100644 --- a/workflow/engine/skinEngine/skinEngine.php +++ b/workflow/engine/skinEngine/skinEngine.php @@ -790,7 +790,7 @@ class SkinEngine $sWspaceSelect = trim($aFotoSelect['WORKSPACE_LOGO_NAME']); } } - if (class_exists('PMPluginRegistry')) { + if (class_exists('PMPluginRegistry') && defined("SYS_SYS")) { $oPluginRegistry = &PMPluginRegistry::getSingleton(); if ( isset($sFotoSelect) && $sFotoSelect!='' && !(strcmp($sWspaceSelect, SYS_SYS)) ){ $sCompanyLogo = $oPluginRegistry->getCompanyLogo($sFotoSelect); diff --git a/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php b/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php index 250cc313f..093005c73 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php +++ b/workflow/engine/src/ProcessMaker/Plugins/Adapters/PluginAdapter.php @@ -40,11 +40,11 @@ class PluginAdapter { $this->pluginRegistry = \G::json_decode(\G::json_encode($pluginsSingleton->iterateVisible())); foreach ($this->pluginRegistry->_aPluginDetails as $nameSpace => $value) { - $this->savePluginOld($nameSpace, $this->pluginRegistry); + $this->savePluginMigrate($nameSpace, $this->pluginRegistry); } } - public function savePluginOld($sNamespace, $pluginRegistry) + public function savePluginMigrate($sNamespace, $pluginRegistry) { $structurePlugin = $this->getOldPluginStructure($sNamespace, $pluginRegistry); $plugin = $this->diffFieldTable($structurePlugin); @@ -126,6 +126,10 @@ class PluginAdapter $plugin->pluginName == $nameSpace ) { $structurePlugins[$propertyName][] = $plugin; + } elseif (is_array($plugin) && $key == $nameSpace) { + $structurePlugins[$propertyName][$key] = $plugin; + } elseif (is_bool($plugin) && $key == $nameSpace) { + $structurePlugins[$propertyName][$key] = $plugin; } elseif (is_string($plugin) && $plugin == $nameSpace) { $structurePlugins[$propertyName][] = $plugin; } @@ -240,7 +244,7 @@ class PluginAdapter property_exists($oPlugins, $nameAttribute) && $plugin->_aPluginDetails[$namePlugin]->enabled ) { - $oPlugins->{$nameAttribute} = array_merge($oPlugins->{$nameAttribute}, $detail); + $oPlugins->{$nameAttribute} = array_merge($oPlugins->{$nameAttribute}, (array)$detail); } } } diff --git a/workflow/engine/src/ProcessMaker/Plugins/PluginsRegistry.php b/workflow/engine/src/ProcessMaker/Plugins/PluginsRegistry.php index 185fe6cac..82eba0e43 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/PluginsRegistry.php +++ b/workflow/engine/src/ProcessMaker/Plugins/PluginsRegistry.php @@ -144,7 +144,7 @@ class PluginsRegistry extends Plugins * get the plugin details, by filename * * @param string $sFilename - * @return null + * @return null|PluginDetail */ public function getPluginDetails($sFilename) {