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)
{