From b903c015a305b71f08060b89b7ec332cec0ce46c Mon Sep 17 00:00:00 2001 From: Ronald Quenta Date: Wed, 23 Aug 2017 16:14:48 -0400 Subject: [PATCH] HOR-3776 --- workflow/engine/bin/cron_single.php | 1 + workflow/engine/classes/class.pmScript.php | 13 -------- .../ProcessMaker/Plugins/PluginRegistry.php | 2 ++ .../src/ProcessMaker/Plugins/Traits/Init.php | 33 +++++++++++++++++++ workflow/public_html/sysGeneric.php | 2 ++ 5 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 workflow/engine/src/ProcessMaker/Plugins/Traits/Init.php diff --git a/workflow/engine/bin/cron_single.php b/workflow/engine/bin/cron_single.php index 29cccc25b..5b90f449b 100644 --- a/workflow/engine/bin/cron_single.php +++ b/workflow/engine/bin/cron_single.php @@ -284,6 +284,7 @@ function processWorkspace() { try { $oPluginRegistry = PluginRegistry::loadSingleton(); + $oPluginRegistry->init(); global $sObject; global $sLastExecution; diff --git a/workflow/engine/classes/class.pmScript.php b/workflow/engine/classes/class.pmScript.php index 5d40faa7e..6e786a1aa 100644 --- a/workflow/engine/classes/class.pmScript.php +++ b/workflow/engine/classes/class.pmScript.php @@ -57,19 +57,6 @@ if (defined('SYS_SYS') && (!defined('PATH_DATA_SITE') || !defined('PATH_WORKSPAC Bootstrap::setConstantsRelatedWs(SYS_SYS); } -//call plugin -if (class_exists( 'folderData' )) { - //$folderData = new folderData($sProUid, $proFields['PRO_TITLE'], $sAppUid, $Fields['APP_TITLE'], $sUsrUid); - $oPluginRegistry = PluginRegistry::loadSingleton(); - $aAvailablePmFunctions = $oPluginRegistry->getPmFunctions(); - foreach ($aAvailablePmFunctions as $key => $class) { - $filePlugin = PATH_PLUGINS . $class . PATH_SEP . 'classes' . PATH_SEP . 'class.pmFunctions.php'; - if (file_exists( $filePlugin )) { - include_once ($filePlugin); - } - } -} -//end plugin //Add External Triggers $dir = G::ExpandPath( "classes" ) . 'triggers'; $filesArray = array (); diff --git a/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php b/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php index c6fc39dd2..5a1a3f7f7 100644 --- a/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php +++ b/workflow/engine/src/ProcessMaker/Plugins/PluginRegistry.php @@ -31,6 +31,7 @@ use ProcessMaker\Plugins\Interfaces\TaskExtendedProperty; use ProcessMaker\Plugins\Interfaces\ToolbarDetail; use ProcessMaker\Plugins\Interfaces\TriggerDetail; use ProcessMaker\Plugins\Traits\Attributes; +use ProcessMaker\Plugins\Traits\Init; use ProcessMaker\Plugins\Traits\PluginStructure; use Publisher; use stdClass; @@ -43,6 +44,7 @@ class PluginRegistry { use PluginStructure; use Attributes; + use Init; const NAME_CACHE = SYS_SYS . __CLASS__; /** diff --git a/workflow/engine/src/ProcessMaker/Plugins/Traits/Init.php b/workflow/engine/src/ProcessMaker/Plugins/Traits/Init.php new file mode 100644 index 000000000..94e8e4593 --- /dev/null +++ b/workflow/engine/src/ProcessMaker/Plugins/Traits/Init.php @@ -0,0 +1,33 @@ +initFunction(); + } + + /** + * Initialization of plugin pmFunctions + */ + private function initFunction() + { + $pmFunctions = $this->getPmFunctions(); + foreach ($pmFunctions as $namespace) { + $filePmFunctions = PATH_PLUGINS . $namespace . PATH_SEP . 'classes' . PATH_SEP . 'class.pmFunctions.php'; + if (file_exists($filePmFunctions) && $this->isEnable($namespace)) { + include_once($filePmFunctions); + } + } + } + +} diff --git a/workflow/public_html/sysGeneric.php b/workflow/public_html/sysGeneric.php index 36bbd3778..292ef0a28 100644 --- a/workflow/public_html/sysGeneric.php +++ b/workflow/public_html/sysGeneric.php @@ -1023,6 +1023,8 @@ if (! defined( 'EXECUTE_BY_CRON' )) { } $_SESSION['phpLastFileFound'] = $_SERVER['REQUEST_URI']; + // Initialization functions plugins + $oPluginRegistry->init(); /** * New feature for Gulliver framework to support Controllers & HttpProxyController classes handling *