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 @@