diff --git a/framework/src/Maveriks/WebApplication.php b/framework/src/Maveriks/WebApplication.php index 76ce55e3e..8128618af 100644 --- a/framework/src/Maveriks/WebApplication.php +++ b/framework/src/Maveriks/WebApplication.php @@ -315,19 +315,6 @@ class WebApplication $this->rest->setOverridingFormats('JsonFormat', 'UploadFormat'); - $isPluginRequest = strpos($uri, '/plugin-') !== false ? true : false; - - if ($isPluginRequest) { - $tmp = explode('/', $uri); - array_shift($tmp); - $tmp = array_shift($tmp); - $tmp = explode('-', $tmp); - $pluginName = $tmp[1]; - $uri = str_replace('/plugin-'.$pluginName, '', $uri); - } - - // Override $_SERVER['REQUEST_URI'] to Restler handles the modified url - // scan all api directory to find api classes $classesList = Util\Common::rglob($apiDir . "/*"); @@ -356,24 +343,36 @@ class WebApplication } } - //if (! $isPluginRequest) { // if it is not a request for a plugin endpoint + // + // Register API Plugins classes + $isPluginRequest = strpos($uri, '/plugin-') !== false ? true : false; + + if ($isPluginRequest) { + $tmp = explode('/', $uri); + array_shift($tmp); + $tmp = array_shift($tmp); + $tmp = explode('-', $tmp); + $pluginName = $tmp[1]; + $uri = str_replace('plugin-'.$pluginName, strtolower($pluginName), $uri); + } + // hook to get rest api classes from plugins if (class_exists('PMPluginRegistry') && file_exists(PATH_DATA_SITE . 'plugin.singleton')) { $pluginRegistry = \PMPluginRegistry::loadSingleton(PATH_DATA_SITE . 'plugin.singleton'); $plugins = $pluginRegistry->getRegisteredRestServices(); if (! empty($plugins)) { - $pluginSourceDir = PATH_PLUGINS . $pluginName . DIRECTORY_SEPARATOR . 'src'; + foreach ($plugins as $pluginName => $plugin) { + $pluginSourceDir = PATH_PLUGINS . $pluginName . DIRECTORY_SEPARATOR . 'src'; - $loader = \Maveriks\Util\ClassLoader::getInstance(); - $loader->add($pluginSourceDir); - - if (is_array($plugins) && array_key_exists($pluginName, $plugins)) { - foreach ($plugins[$pluginName] as $class) { + $loader = \Maveriks\Util\ClassLoader::getInstance(); + $loader->add($pluginSourceDir); + + foreach ($plugin as $class) { if (class_exists($class['namespace'])) { - $this->rest->addAPIClass($class['namespace']); - } - } + $this->rest->addAPIClass($class['namespace'], strtolower($pluginName)); + } + } } } } @@ -597,3 +596,4 @@ class WebApplication @unlink(PATH_DATA . 'sites' . DS . $workspace . DS . 'api-config.php'); } } + diff --git a/workflow/engine/classes/class.actionsByEmail.php b/workflow/engine/classes/class.actionsByEmail.php index 9f376a006..18cd1e53b 100644 --- a/workflow/engine/classes/class.actionsByEmail.php +++ b/workflow/engine/classes/class.actionsByEmail.php @@ -193,7 +193,7 @@ class actionsByEmailClass extends PMPlugin G::LoadClass("Users"); $user = new Users(); - $userDetails = $user->loadDetails($data->USR_UID); + $userDetails = $user->loadDetails($data->PREVIOUS_USR_UID); $emailFrom = $userDetails["USR_EMAIL"]; G::LoadClass('wsBase'); diff --git a/workflow/engine/classes/class.applications.php b/workflow/engine/classes/class.applications.php index 2e4353620..90f4a1d82 100755 --- a/workflow/engine/classes/class.applications.php +++ b/workflow/engine/classes/class.applications.php @@ -62,6 +62,8 @@ class Applications $oAppCache->confCasesList = $confCasesList; } + $delimiter = DBAdapter::getStringDelimiter(); + // get the action based list switch ($action) { case "draft": @@ -185,14 +187,25 @@ class Applications $CriteriaCount->addAsColumn( 'USR_USERNAME', 'CU.USR_USERNAME' ); //Current delegation - if ($action == "to_reassign") { - $Criteria->addAsColumn("APPCVCR_APP_TAS_TITLE", "APP_CACHE_VIEW.APP_TAS_TITLE"); - $CriteriaCount->addAsColumn("APPCVCR_APP_TAS_TITLE", "APP_CACHE_VIEW.APP_TAS_TITLE"); - } else { - $Criteria->addAsColumn("APPCVCR_APP_TAS_TITLE", "APPCVCR.APP_TAS_TITLE"); - $CriteriaCount->addAsColumn("APPCVCR_APP_TAS_TITLE", "APPCVCR.APP_TAS_TITLE"); + $appdelcrTableName = AppCacheViewPeer::TABLE_NAME; + $appdelcrAppTasTitle = "APPDELCR.APP_TAS_TITLE"; + $appdelcrAppTasTitleCount = $appdelcrAppTasTitle; + + switch ($action) { + case "sent": + $appdelcrTableName = AppDelegationPeer::TABLE_NAME; + $appdelcrAppTasTitle = "(SELECT CON_VALUE FROM CONTENT WHERE CON_ID = APPDELCR.TAS_UID AND CON_LANG = " . $delimiter . SYS_LANG . $delimiter . " AND CON_CATEGORY = " . $delimiter . "TAS_TITLE" . $delimiter . ")"; + $appdelcrAppTasTitleCount = "APPDELCR.TAS_UID"; + break; + case "to_reassign": + $appdelcrAppTasTitle = "APP_CACHE_VIEW.APP_TAS_TITLE"; + $appdelcrAppTasTitleCount = $appdelcrAppTasTitle; + break; } + $Criteria->addAsColumn("APPDELCR_APP_TAS_TITLE", $appdelcrAppTasTitle); + $CriteriaCount->addAsColumn("APPDELCR_APP_TAS_TITLE", $appdelcrAppTasTitleCount); + $Criteria->addAsColumn("USRCR_USR_UID", "USRCR.USR_UID"); $Criteria->addAsColumn("USRCR_USR_FIRSTNAME", "USRCR.USR_FIRSTNAME"); $Criteria->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME"); @@ -203,20 +216,20 @@ class Applications $CriteriaCount->addAsColumn("USRCR_USR_LASTNAME", "USRCR.USR_LASTNAME"); $CriteriaCount->addAsColumn("USRCR_USR_USERNAME", "USRCR.USR_USERNAME"); - $Criteria->addAlias("APPCVCR", AppCacheViewPeer::TABLE_NAME); + $Criteria->addAlias("APPDELCR", $appdelcrTableName); $Criteria->addAlias("USRCR", UsersPeer::TABLE_NAME); - $CriteriaCount->addAlias("APPCVCR", AppCacheViewPeer::TABLE_NAME); + $CriteriaCount->addAlias("APPDELCR", $appdelcrTableName); $CriteriaCount->addAlias("USRCR", UsersPeer::TABLE_NAME); $arrayCondition = array(); - $arrayCondition[] = array(AppCacheViewPeer::APP_UID, "APPCVCR.APP_UID"); - $arrayCondition[] = array("APPCVCR.DEL_LAST_INDEX", 1); + $arrayCondition[] = array(AppCacheViewPeer::APP_UID, "APPDELCR.APP_UID"); + $arrayCondition[] = array("APPDELCR.DEL_LAST_INDEX", 1); $Criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $CriteriaCount->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $arrayCondition = array(); - $arrayCondition[] = array("APPCVCR.USR_UID", "USRCR.USR_UID"); + $arrayCondition[] = array("APPDELCR.USR_UID", "USRCR.USR_UID"); $Criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); $CriteriaCount->addJoinMC($arrayCondition, Criteria::LEFT_JOIN); @@ -467,7 +480,7 @@ class Applications $sort = "USRCR_" . $conf->userNameFormatGetFirstFieldByUsersTable(); break; case "APP_CACHE_VIEW.APP_TAS_TITLE": - $sort = "APPCVCR_APP_TAS_TITLE"; + $sort = "APPDELCR_APP_TAS_TITLE"; break; } } @@ -568,7 +581,7 @@ class Applications //Current delegation (*) || $action == "search" || $action == "to_revise" if (($action == "sent" || $action == "simple_search" || $action == "to_reassign") && ($status != "TO_DO")) { //Current task - $aRow["APP_TAS_TITLE"] = $aRow["APPCVCR_APP_TAS_TITLE"]; + $aRow["APP_TAS_TITLE"] = $aRow["APPDELCR_APP_TAS_TITLE"]; //Current user //if ($action != "to_reassign" ) { diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 1085bab39..5e3f478f7 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -1013,6 +1013,9 @@ class Derivation $sTargetField = str_replace( '$', '', $sTargetField ); $sTargetField = str_replace( '=', '', $sTargetField ); $aNewFields[$sTargetField] = isset( $appFields['APP_DATA'][$sOriginField] ) ? $appFields['APP_DATA'][$sOriginField] : ''; + if(isset($aParentCase['APP_DATA'][$sTargetField.'_label'])){ + $aNewFields[$sTargetField.'_label'] = isset( $appFields['APP_DATA'][$sOriginField.'_label'] ) ? $appFields['APP_DATA'][$sOriginField.'_label'] : ''; + } } $aParentCase['APP_DATA'] = array_merge( $aParentCase['APP_DATA'], $aNewFields ); $oCase->updateCase( $aSA['APP_PARENT'], $aParentCase ); diff --git a/workflow/engine/classes/class.pluginRegistry.php b/workflow/engine/classes/class.pluginRegistry.php index 27248d4fa..e6f77843f 100755 --- a/workflow/engine/classes/class.pluginRegistry.php +++ b/workflow/engine/classes/class.pluginRegistry.php @@ -1408,16 +1408,16 @@ class PMPluginRegistry // Ensure that is registering only existent classes. if (class_exists($ns)) { - $this->_restServices[strtolower($sNamespace)][] = array( + $this->_restServices[$sNamespace][] = array( "filepath" => $classFile, "namespace" => $ns ); - - \Maveriks\WebApplication::purgeRestApiCache(basename(PATH_DATA_SITE)); } } } + \Maveriks\WebApplication::purgeRestApiCache(basename(PATH_DATA_SITE)); + return true; } @@ -1429,6 +1429,7 @@ class PMPluginRegistry public function unregisterRestService ($sNamespace) { unset($this->_restServices[$sNamespace]); + \Maveriks\WebApplication::purgeRestApiCache(basename(PATH_DATA_SITE)); } public function getRegisteredRestServices() diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php index 724088f89..c59e55cc1 100755 --- a/workflow/engine/classes/model/AppDelegation.php +++ b/workflow/engine/classes/model/AppDelegation.php @@ -177,6 +177,7 @@ class AppDelegation extends BaseAppDelegation $data->APP_UID = $sAppUid; $data->DEL_INDEX = $delIndex; $data->USR_UID = $sUsrUid; + $data->PREVIOUS_USR_UID = $delPreviusUsrUid; $oPluginRegistry = &PMPluginRegistry::getSingleton(); $oPluginRegistry->executeTriggers(PM_CREATE_NEW_DELEGATION, $data); diff --git a/workflow/engine/controllers/designer.php b/workflow/engine/controllers/designer.php index af0e342b8..82dada39f 100644 --- a/workflow/engine/controllers/designer.php +++ b/workflow/engine/controllers/designer.php @@ -68,6 +68,7 @@ class Designer extends Controller $this->setVar('prj_readonly', $proReadOnly); $this->setVar('credentials', base64_encode(json_encode($clientToken))); $this->setVar('isDebugMode', $debug); + $this->setVar('distribution', file_exists(PATH_CLASSES . "class.pmLicenseManager.php")); if ($debug) { if (! file_exists(PATH_HTML . "lib-dev/pmUI/build.cache")) { diff --git a/workflow/engine/methods/processes/processes_Ajax.php b/workflow/engine/methods/processes/processes_Ajax.php index 484d8fbe2..17a4ab221 100755 --- a/workflow/engine/methods/processes/processes_Ajax.php +++ b/workflow/engine/methods/processes/processes_Ajax.php @@ -789,6 +789,13 @@ try { echo 'saved: ' . $sDirectory; } break; + case 'getSessid': + if(isset($_SESSION['USER_LOGGED'])){ + echo Bootstrap::json_encode(1); + }else{ + echo Bootstrap::json_encode(0); + } + break; case 'events': $oProcessMap->eventsList($oData->pro_uid, $oData->type); break; diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessPermissions.php b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessPermissions.php index e263553c5..0089e1f81 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessPermissions.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessPermissions.php @@ -232,18 +232,21 @@ class ProcessPermissions $sObjectUID = ''; break; case 'DYNAFORM': + $data['DYNAFORMS'] = $data['DYNAFORMS'] == 0 ? '': $data['DYNAFORMS']; if ($data['DYNAFORMS'] != '') { $this->validateDynUid($data['DYNAFORMS']); } $sObjectUID = $data['DYNAFORMS']; break; case 'INPUT': + $data['INPUTS'] = $data['INPUTS'] == 0 ? '': $data['INPUTS']; if ($data['INPUTS'] != '') { $this->validateInpUid($data['INPUTS']); } $sObjectUID = $data['INPUTS']; break; case 'OUTPUT': + $data['OUTPUTS'] = $data['OUTPUTS'] == 0 ? '': $data['OUTPUTS']; if ($data['OUTPUTS'] != '') { $this->validateOutUid($data['OUTPUTS']); } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Step/Trigger.php b/workflow/engine/src/ProcessMaker/BusinessModel/Step/Trigger.php index cc63a642c..e939a6633 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Step/Trigger.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Step/Trigger.php @@ -411,6 +411,8 @@ class Trigger } $range = range($iniPos, $finPos); + $stepChangeIds = array(); + $stepChangePos = array(); foreach ($aStepTriggers as $dataStep) { if (($dataStep['st_type'] == $typeCompare) && (in_array($dataStep['st_position'], $range)) && ($dataStep['tri_uid'] != $triUid)) { $stepChangeIds[] = $dataStep['tri_uid']; diff --git a/workflow/engine/templates/admin/calendarEdit.js b/workflow/engine/templates/admin/calendarEdit.js index 3c2321c41..2ff625e5a 100644 --- a/workflow/engine/templates/admin/calendarEdit.js +++ b/workflow/engine/templates/admin/calendarEdit.js @@ -750,7 +750,27 @@ Ext.onReady( function() { xtype : 'textfield' , width : 200 , fieldLabel : _('ID_NAME') , - name : 'name' + name : 'name' , + msgTarget: 'side', + enableKeyEvents: true, + listeners: { + focus : function(textfield){ + var element = document.getElementById('dynaformCalendarName'); + element.setAttribute('maxlength','100'); + element.onpaste = function (e){ + var textValue = undefined; + if(window.clipboardData && window.clipboardData.getData) { + textValue = window.clipboardData.getData('Text'); + }else if(e.clipboardData && e.clipboardData.getData) { + textValue = e.clipboardData.getData('text/plain'); + } + if(textValue.length>99){ + Ext.MessageBox.alert(_('ID_WARNING'), _("ID_PPP_MAXIMUM_LENGTH")+":100", function(){ return true;}); + } + return true; + } + } + } }, { id : 'dynaformCalendarDescription' , diff --git a/workflow/engine/templates/designer/index.html b/workflow/engine/templates/designer/index.html index d47f23a3d..0df4bfed4 100644 --- a/workflow/engine/templates/designer/index.html +++ b/workflow/engine/templates/designer/index.html @@ -23,6 +23,7 @@ var consolidated = "{$consolidated}"; var prj_readonly = "{$prj_readonly}"; var credentials = "{$credentials}"; + var distribution = "{$distribution}"; @@ -70,6 +71,7 @@ var consolidated = "{$consolidated}"; var prj_readonly = "{$prj_readonly}"; var credentials = "{$credentials}"; + var distribution = "{$distribution}"; diff --git a/workflow/engine/templates/processes/main.js b/workflow/engine/templates/processes/main.js index 81afbfe15..ecd208b4d 100755 --- a/workflow/engine/templates/processes/main.js +++ b/workflow/engine/templates/processes/main.js @@ -224,7 +224,6 @@ Ext.onReady(function(){ }; } else { newTypeProcess = { - xtype: 'tbsplit', text: _('ID_NEW'), iconCls: 'button_menu_ext ss_sprite ss_add', handler: function (){ diff --git a/workflow/engine/templates/services/login_getStarted.html b/workflow/engine/templates/services/login_getStarted.html index a65fbcaef..9272c1418 100755 --- a/workflow/engine/templates/services/login_getStarted.html +++ b/workflow/engine/templates/services/login_getStarted.html @@ -22,6 +22,18 @@