';
$index = 1;
- $__ABE__.='
';
+ $__ABE__ .= ' ';
+ $__ABE__ .= ' | ';
break;
case 'LINK':
$__ABE__ .= 'Please complete this form';
diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php
index 73d5fed81..e2da9d154 100644
--- a/workflow/engine/classes/class.case.php
+++ b/workflow/engine/classes/class.case.php
@@ -4528,6 +4528,11 @@ class Cases
/*----------------------------------********---------------------------------*/
$this->getExecuteTriggerProcess($sApplicationUID, 'REASSIGNED');
+
+ //Delete record of the table LIST_UNASSIGNED
+ $unassigned = new ListUnassigned();
+ $unassigned->remove($sApplicationUID, $iDelegation);
+
return true;
}
diff --git a/workflow/engine/classes/class.library.php b/workflow/engine/classes/class.library.php
deleted file mode 100644
index f83935f83..000000000
--- a/workflow/engine/classes/class.library.php
+++ /dev/null
@@ -1,43 +0,0 @@
-createStatement();
-
- //Number of records active
- $criteria = new Criteria("workflow");
-
- //SELECT
- $criteria->addSelectColumn(CaseConsolidatedCorePeer::CON_STATUS);
- //FROM
- //WHERE
- $criteria->add(CaseConsolidatedCorePeer::CON_STATUS, "ACTIVE");
-
- $activeNumRec = CaseConsolidatedCorePeer::doCount($criteria);
-
- //Number of records
- $numRec = 0;
-
- $sql = "SELECT COUNT(APP_CACHE_VIEW.TAS_UID) AS NUMREC
- FROM CASE_CONSOLIDATED
- LEFT JOIN APP_CACHE_VIEW ON (CASE_CONSOLIDATED.TAS_UID = APP_CACHE_VIEW.TAS_UID)
- WHERE APP_CACHE_VIEW.USR_UID = '$userUid' AND
- APP_CACHE_VIEW.DEL_THREAD_STATUS = 'OPEN' AND
- APP_CACHE_VIEW.APP_STATUS = 'TO_DO'";
-
- $rsSql = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
-
- while ($rsSql->next()) {
- $row = $rsSql->getRow();
-
- $numRec = $row["NUMREC"];
- }
-
- $numRec = ($activeNumRec > 0)? $numRec : 0;
-
- return $numRec;
- }
-}
-
diff --git a/workflow/engine/classes/class.plugin.php b/workflow/engine/classes/class.plugin.php
index b5d921d47..e4e5c0d6c 100644
--- a/workflow/engine/classes/class.plugin.php
+++ b/workflow/engine/classes/class.plugin.php
@@ -485,7 +485,8 @@ class PMPlugin
$file = $path . "public_html/" . $extensionPath;
@file_put_contents($file, "", LOCK_EX);
foreach ($item->files as $name) {
- @file_put_contents($file, file_get_contents($item->path . "/" . $name), FILE_APPEND | LOCK_EX);
+ $content = file_get_contents($item->path . "/" . $name) . "\n";
+ @file_put_contents($file, $content, FILE_APPEND | LOCK_EX);
}
$this->registerDesignerSourcePath($extensionPath);
}
diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php
index 125166c24..09413f3bb 100644
--- a/workflow/engine/classes/class.pmDynaform.php
+++ b/workflow/engine/classes/class.pmDynaform.php
@@ -27,6 +27,7 @@ class pmDynaform
private $context = array();
private $dataSources = null;
private $databaseProviders = null;
+ private $propertiesToExclude = array();
public function __construct($fields = array())
{
@@ -37,6 +38,7 @@ class pmDynaform
$this->serverConf = &serverConf::getSingleton();
$this->isRTL = ($this->serverConf->isRtl(SYS_LANG)) ? 'true' : 'false';
$this->fields = $fields;
+ $this->propertiesToExclude = array('dataVariable');
$this->getDynaform();
$this->getDynaforms();
$this->synchronizeSubDynaform();
@@ -196,11 +198,13 @@ class pmDynaform
if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) {
$triggerValue = substr($value, 2);
if (isset($this->fields["APP_DATA"][$triggerValue])) {
- if ($key !== "dataVariable") {
+ if (!in_array($key, $this->propertiesToExclude)) {
$json->{$key} = $this->fields["APP_DATA"][$triggerValue];
}
} else {
- $json->{$key} = "";
+ if (!in_array($key, $this->propertiesToExclude)) {
+ $json->{$key} = "";
+ }
}
}
//set properties from 'formInstance' variable
@@ -1909,6 +1913,12 @@ class pmDynaform
if ($validatorClass !== null) {
$validatorClass->validatePost($post);
}
+ //Clears the data in the appData for grids
+ if (array_key_exists($json->id, $this->fields) && $json->type === 'grid' &&
+ !array_key_exists($json->id, $post)
+ ) {
+ $post[$json->variable] = array(array());
+ }
}
};
$json = G::json_decode($this->record["DYN_CONTENT"]);
diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php
index 8b31758aa..fe96690b2 100644
--- a/workflow/engine/classes/class.pmFunctions.php
+++ b/workflow/engine/classes/class.pmFunctions.php
@@ -527,13 +527,27 @@ function WSLogin ($user, $pass, $endpoint = "")
function WSOpen ($force = false)
{
if (isset( $_SESSION["WS_SESSION_ID"] ) || $force) {
+ $optionsHeaders = array(
+ "cache_wsdl" => WSDL_CACHE_NONE,
+ "soap_version" => SOAP_1_1,
+ "trace" => 1,
+ "stream_context" => stream_context_create(
+ array(
+ 'ssl' => array(
+ 'verify_peer' => 0,
+ 'verify_peer_name' => 0
+ )
+ )
+ )
+ );
+
if (! isset( $_SESSION["WS_END_POINT"] )) {
- $defaultEndpoint = "http://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . "/sys" . SYS_SYS . "/en/classic/services/wsdl2";
+ $defaultEndpoint = $_SERVER["REQUEST_SCHEME"] . "://" . $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . "/sys" . SYS_SYS . "/en/classic/services/wsdl2";
}
$endpoint = isset( $_SESSION["WS_END_POINT"] ) ? $_SESSION["WS_END_POINT"] : $defaultEndpoint;
- $client = new SoapClient( $endpoint );
+ $client = new SoapClient( $endpoint, $optionsHeaders);
return $client;
} else {
diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php
index 6645fdfdd..dde6e8566 100644
--- a/workflow/engine/classes/class.processes.php
+++ b/workflow/engine/classes/class.processes.php
@@ -2507,6 +2507,7 @@ class Processes
$data->processVariables[$key]['VAR_UID'] = $newGuid;
}
}
+ $data->uid["PROCESS_VARIABLES"] = $map;
}
} catch (Exception $e) {
@@ -2610,6 +2611,9 @@ class Processes
public function renewAll(&$oData)
{
$oData->uid = array();
+ if (isset($oData->process["PRO_PARENT"]) && isset($oData->process["PRO_UID"])) {
+ $oData->uid["PROCESS"] = array($oData->process["PRO_PARENT"] => $oData->process["PRO_UID"]);
+ }
$this->renewAllTaskGuid($oData);
$this->renewAllDynaformGuid($oData);
diff --git a/workflow/engine/classes/class.wsTools.php b/workflow/engine/classes/class.wsTools.php
index c2f3c0691..793baea2b 100644
--- a/workflow/engine/classes/class.wsTools.php
+++ b/workflow/engine/classes/class.wsTools.php
@@ -1401,6 +1401,10 @@ class workspaceTools
$arrayRegExpEngineSearch = array("/\)\s*TYPE\s*=\s*(InnoDB)/i", "/\)\s*TYPE\s*=\s*(MyISAM)/i","/SET\s*FOREIGN_KEY_CHECKS\s*=\s*0\s*;/");
$arrayRegExpEngineReplace = array(") ENGINE=\\1 DEFAULT CHARSET=utf8", ") ENGINE=\\1","SET FOREIGN_KEY_CHECKS=0;\nSET unique_checks=0;\nSET AUTOCOMMIT=0;");
+ //replace DEFINER
+ $script = preg_replace('/DEFINER=[^*]*/', '', file_get_contents($filename));
+ file_put_contents($filename, $script);
+
if (!$flag && !is_null($flagFunction)) {
//Replace TYPE by ENGINE
if( $versionBackupEngine == 1) {
diff --git a/workflow/engine/classes/model/AdditionalTables.php b/workflow/engine/classes/model/AdditionalTables.php
index 91f90e755..3e44e519f 100644
--- a/workflow/engine/classes/model/AdditionalTables.php
+++ b/workflow/engine/classes/model/AdditionalTables.php
@@ -778,6 +778,10 @@ class AdditionalTables extends BaseAdditionalTables
// quick fix
// map all empty values as NULL for Database
foreach ($caseData as $dKey => $dValue) {
+ if (is_array($dValue) && count($dValue)) {
+ $j = key($dValue);
+ $dValue = (is_array($dValue[$j])) ? $dValue : $dValue[$j];
+ }
if (!is_array($dValue)) {
foreach ($fieldTypes as $key => $fieldType) {
foreach ($fieldType as $name => $theType) {
@@ -897,6 +901,10 @@ class AdditionalTables extends BaseAdditionalTables
$caseData = unserialize($caseData);
}
foreach ($caseData as $i => $v) {
+ if (is_array($v) && count($v)) {
+ $j = key($v);
+ $v = (is_array($v[$j])) ? $v : $v[$j];
+ }
foreach ($fieldTypes as $key => $fieldType) {
foreach ($fieldType as $name => $type) {
if ( strtoupper ( $i) == $name) {
diff --git a/workflow/engine/classes/model/AppDelegation.php b/workflow/engine/classes/model/AppDelegation.php
index 21c1083fe..6c95d0e57 100644
--- a/workflow/engine/classes/model/AppDelegation.php
+++ b/workflow/engine/classes/model/AppDelegation.php
@@ -447,6 +447,7 @@ class AppDelegation extends BaseAppDelegation
//Get Task properties
$task = TaskPeer::retrieveByPK( $this->getTasUid() );
+ $aData = array();
$aData['TAS_UID'] = $this->getTasUid();
//Added to allow User defined Timing Control at Run time from Derivation screen
if (isset( $sNextTasParam['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] ) && $sNextTasParam['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] == 'true') {
@@ -476,7 +477,7 @@ class AppDelegation extends BaseAppDelegation
//Calendar - Use the dates class to calculate dates
$calendar = new calendar();
- $arrayCalendarData = array();
+ $arrayCalendarData = $calendar->getCalendarData($aCalendarUID);
if ($calendar->pmCalendarUid == "") {
$calendar->getCalendar(null, $this->getProUid(), $this->getTasUid());
@@ -485,11 +486,11 @@ class AppDelegation extends BaseAppDelegation
}
//Due date
- /*$iDueDate = $calendar->calculateDate( $this->getDelDelegateDate(), $aData['TAS_DURATION'], $aData['TAS_TIMEUNIT'] //hours or days, ( we only accept this two types or maybe weeks
- );*/
- $dueDate = $calendar->dashCalculateDate($this->getDelDelegateDate(), $aData["TAS_DURATION"], $aData["TAS_TIMEUNIT"], $arrayCalendarData);
+ $initDate = $this->getDelDelegateDate();
+ $timeZone = \ProcessMaker\Util\DateTime::convertUtcToTimeZone($initDate);
+ $dueDate = $calendar->dashCalculateDate($timeZone, $aData["TAS_DURATION"], $aData["TAS_TIMEUNIT"], $arrayCalendarData);
- //Return
+ $dueDate = \ProcessMaker\Util\DateTime::convertDataToUtc($dueDate);
return $dueDate;
}
diff --git a/workflow/engine/classes/model/ProcessUser.php b/workflow/engine/classes/model/ProcessUser.php
index b3596142e..5f72d9bad 100644
--- a/workflow/engine/classes/model/ProcessUser.php
+++ b/workflow/engine/classes/model/ProcessUser.php
@@ -97,21 +97,21 @@ class ProcessUser extends BaseProcessUser
{
try {
$oCriteria = new Criteria();
- $oCriteria->add( ProcessUserPeer::PRO_UID, $proUid );
- $oCriteria->add( ProcessUserPeer::PU_TYPE, 'SUPERVISOR' );
- $oCriteria->add( ProcessUserPeer::USR_UID, $usrUid );
- $dataset = ProcessUserPeer::doSelectRS( $oCriteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $oCriteria->add(ProcessUserPeer::PRO_UID, $proUid);
+ $oCriteria->add(ProcessUserPeer::PU_TYPE, 'SUPERVISOR');
+ $oCriteria->add(ProcessUserPeer::USR_UID, $usrUid);
+ $dataset = ProcessUserPeer::doSelectRS($oCriteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
//If the user is in Assigned supervisors list
- if($dataset->next()){
+ if ($dataset->next()) {
return true;
} else {
//If the user is in a group in Assigned supervisors list
$oCriteria = new Criteria();
- $oCriteria->add( ProcessUserPeer::PRO_UID, $proUid );
- $oCriteria->add( ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR');
- $dataset = ProcessUserPeer::doSelectRS( $oCriteria );
- $dataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $oCriteria->add(ProcessUserPeer::PRO_UID, $proUid);
+ $oCriteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR');
+ $dataset = ProcessUserPeer::doSelectRS($oCriteria);
+ $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oGroups = new Groups();
$aGroups = $oGroups->getActiveGroupsForAnUser($usrUid);
while ($dataset->next()) {
@@ -119,8 +119,6 @@ class ProcessUser extends BaseProcessUser
$groupUid = $row['USR_UID'];
if (in_array($groupUid, $aGroups)) {
return true;
- } else {
- return false;
}
}
return false;
diff --git a/workflow/engine/classes/model/Task.php b/workflow/engine/classes/model/Task.php
index 0d114daca..28110cc98 100644
--- a/workflow/engine/classes/model/Task.php
+++ b/workflow/engine/classes/model/Task.php
@@ -409,6 +409,7 @@ class Task extends BaseTask
$this->setTasPosx("");
$this->setTasPosy("");
$this->setTasColor("");
+ $this->setTasGroupVariable("");
$this->fromArray($aData,BasePeer::TYPE_FIELDNAME);
if ($this->validate()) {
diff --git a/workflow/engine/js/cases/core/pmDynaform.js b/workflow/engine/js/cases/core/pmDynaform.js
index 57976b621..6b7687e41 100644
--- a/workflow/engine/js/cases/core/pmDynaform.js
+++ b/workflow/engine/js/cases/core/pmDynaform.js
@@ -82,6 +82,7 @@ $(window).load(function () {
data: data,
delIndex: window.delIndex ? window.delIndex : delIndexDefault,
dynaformUid: dyn_uid,
+ isRTL: window.isRTL,
onBeforePrintHandler : function () {
var nodeClone = $(".pmdynaform-container").clone();
nodeClone.addClass("printing-form");
diff --git a/workflow/engine/methods/cases/caseHistory_Ajax.php b/workflow/engine/methods/cases/caseHistory_Ajax.php
index 1638b9601..feded6eff 100644
--- a/workflow/engine/methods/cases/caseHistory_Ajax.php
+++ b/workflow/engine/methods/cases/caseHistory_Ajax.php
@@ -26,32 +26,38 @@ $actionAjax = isset( $_REQUEST['actionAjax'] ) ? $_REQUEST['actionAjax'] : null;
if ($actionAjax == 'historyGridList_JXP') {
- G::LoadClass( 'case' );
- G::LoadClass( "BasePeer" );
+ G::LoadClass('case');
+ G::LoadClass("BasePeer");
global $G_PUBLISH;
- $c = Cases::getTransferHistoryCriteria( $_SESSION['APPLICATION'] );
+ $criteria = Cases::getTransferHistoryCriteria($_SESSION['APPLICATION']);
+ $rs = GulliverBasePeer::doSelectRs($criteria);
+ $totalCount = $rs->getRecordCount();
+
+ $start = $_REQUEST["start"];
+ $limit = $_REQUEST["limit"];
+
+ $criteria->setLimit($limit);
+ $criteria->setOffset($start);
+
+ $rs = GulliverBasePeer::doSelectRs($criteria);
+ $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result = new stdClass();
- $aProcesses = Array ();
-
- $rs = GulliverBasePeer::doSelectRs( $c );
- $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
- $rs->next();
- for ($j = 0; $j < $rs->getRecordCount(); $j ++) {
+ $aProcesses = Array();
+ while ($rs->next()) {
$result = $rs->getRow();
$result["ID_HISTORY"] = $result["PRO_UID"] . '_' . $result["APP_UID"] . '_' . $result["TAS_UID"];
$aProcesses[] = $result;
- $rs->next();
}
$newDir = '/tmp/test/directory';
- G::verifyPath( $newDir );
+ G::verifyPath($newDir);
$r = new stdclass();
$r->data = \ProcessMaker\Util\DateTime::convertUtcToTimeZone($aProcesses);
- $r->totalCount = 2;
+ $r->totalCount = $totalCount;
- echo G::json_encode( $r );
+ echo G::json_encode($r);
}
if ($actionAjax == 'historyGridListChangeLogPanelBody_JXP') {
diff --git a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php
index 5a466f1e0..7bddbc5f3 100644
--- a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php
+++ b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php
@@ -93,6 +93,7 @@ if ($actionAjax == 'messageHistoryGridList_JXP') {
}
}
+ $totalCount = 0;
foreach ($appMessageArray as $index => $value) {
if (($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1 && $respMess != 'BLOCK' ) &&
($appMessageArray[$index]['DEL_INDEX'] == 0 || in_array($appMessageArray[$index]['DEL_INDEX'], $delIndex ))) {
@@ -104,12 +105,6 @@ if ($actionAjax == 'messageHistoryGridList_JXP') {
$appMessageArray[$index]['APP_MSG_BODY'] = str_replace('\"','"',$appMessageArray[$index]['APP_MSG_BODY']);
$appMessageArray[$index]['APP_MSG_BODY'] = str_replace('"','\"',$appMessageArray[$index]['APP_MSG_BODY']);
$aProcesses[] = array_merge($appMessageArray[$index], array('MSGS_HISTORY' => $respMess));
- }
- }
-
- $totalCount = 0;
- foreach ($appMessageCountArray as $index => $value) {
- if ($appMessageCountArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1) {
$totalCount ++;
}
}
@@ -127,9 +122,11 @@ if ($actionAjax == 'messageHistoryGridList_JXP') {
$r->data[0] = array('APP_MSG_TYPE' => '');
}
- $r->data[0]["APP_MSG_TYPE"] = (array_key_exists($r->data[0]["APP_MSG_TYPE"], $arrayToTranslation)) ?
- $arrayToTranslation[$r->data[0]["APP_MSG_TYPE"]] :
- $r->data[0]["APP_MSG_TYPE"];
+ foreach ($r->data as $key => $value) {
+ $r->data[$key]["APP_MSG_TYPE"] = array_key_exists($r->data[$key]["APP_MSG_TYPE"], $arrayToTranslation) ?
+ $arrayToTranslation[$r->data[$key]["APP_MSG_TYPE"]] :
+ $r->data[$key]["APP_MSG_TYPE"];
+ }
}
echo G::json_encode( $r );
diff --git a/workflow/engine/methods/cases/casesConsolidatedListExtJs.php b/workflow/engine/methods/cases/casesConsolidatedListExtJs.php
index 2305e6256..17260c863 100644
--- a/workflow/engine/methods/cases/casesConsolidatedListExtJs.php
+++ b/workflow/engine/methods/cases/casesConsolidatedListExtJs.php
@@ -1,111 +1,68 @@
addSelectColumn(CaseConsolidatedCorePeer::CON_STATUS);
-$oCriteria->add(CaseConsolidatedCorePeer::CON_STATUS, "ACTIVE");
+$oCriteria->add(CaseConsolidatedCorePeer::CON_STATUS, 'ACTIVE');
$activeNumRows = CaseConsolidatedCorePeer::doCount($oCriteria);
-G::LoadClass ("BasePeer");
-G::LoadClass ("configuration");
+G::LoadClass("BasePeer");
+G::LoadClass("configuration");
G::loadClass("pmFunctions");
$headPublisher = &headPublisher::getSingleton();
-
-//cambiar esto por PROPEL //CASE_CONSOLIDATED TASK
$usrUid = $_SESSION["USER_LOGGED"];
-
-$oCriteria = new Criteria("workflow");
-$oCriteria->addSelectColumn("*");
-$oCriteria->addSelectColumn(CaseConsolidatedCorePeer::TAS_UID);
-$oCriteria->addSelectColumn(TaskPeer::TAS_TITLE);
-$oCriteria->addJoin(CaseConsolidatedCorePeer::TAS_UID,TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
-
-$params = array(); //This will be filled with the parameters
-$sql = BasePeer::createSelectSql($oCriteria, $params);
-
-$oDataset = CaseConsolidatedCorePeer::doSelectRS($oCriteria);
-$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
-//$oDataset->next();
-while ($oDataset->next()) {
- $aRow = $oDataset->getRow();
- //$aTaskConsolidated [] = $aRow;
-}
-
-$query = "SELECT *
- FROM CASE_CONSOLIDATED LEFT JOIN CONTENT ON
- (CASE_CONSOLIDATED.TAS_UID = CONTENT.CON_ID) LEFT JOIN TASK ON (CASE_CONSOLIDATED.TAS_UID = TASK.TAS_UID)
- WHERE CONTENT.CON_CATEGORY='TAS_TITLE' AND CONTENT.CON_LANG='en'";
-$aTaskConsolidated = executeQuery($query);
-
$conf = new Configurations();
try {
- $confCasesList = $conf->getConfiguration("casesList", $action);
+ $confCasesList = $conf->getConfiguration("casesList", $action);
$generalConfCasesList = $conf->getConfiguration("ENVIRONMENT_SETTINGS", "");
} catch (Exception $e) {
$confCasesList = array();
$generalConfCasesList = array();
}
-$config = getAdditionalFields($action, $confCasesList);
-
if (isset($generalConfCasesList["casesListRowNumber"]) && !empty($generalConfCasesList["casesListRowNumber"])) {
$pageSize = intval($generalConfCasesList["casesListRowNumber"]);
} else {
+ $config = getAdditionalFields($action, $confCasesList);
$pageSize = intval($config["rowsperpage"]);
}
-$arrayTabItem = array();
-$aAllData = array();
-//$aQTY = array();
-$i = 0;
-
-//SQL
-$cnn = Propel::getConnection("workflow");
-$stmt = $cnn->createStatement();
-
-//foreach ($aTaskConsolidated as $value)
-//{
-$i++;
-
-$sql = "SELECT COUNT(APP_CACHE_VIEW.TAS_UID) AS NUMREC,
- APP_CACHE_VIEW.PRO_UID,
- (SELECT CON.CON_VALUE
- FROM CONTENT AS CON
- WHERE CON.CON_ID = APP_CACHE_VIEW.PRO_UID AND CON.CON_CATEGORY = 'PRO_TITLE' AND CON.CON_LANG = '" . SYS_LANG . "'
- ) AS PROCESS_TITLE,
- APP_CACHE_VIEW.TAS_UID,
- CONTASK.CON_VALUE AS TASK_TITLE,
- CASE_CONSOLIDATED.DYN_UID
- FROM CASE_CONSOLIDATED
- LEFT JOIN CONTENT AS CONTASK ON (CASE_CONSOLIDATED.TAS_UID = CONTASK.CON_ID AND CONTASK.CON_CATEGORY = 'TAS_TITLE' AND CONTASK.CON_LANG = '" . SYS_LANG . "')
- LEFT JOIN APP_CACHE_VIEW ON (CASE_CONSOLIDATED.TAS_UID = APP_CACHE_VIEW.TAS_UID)
- WHERE APP_CACHE_VIEW.USR_UID = '$usrUid' AND
- APP_CACHE_VIEW.DEL_THREAD_STATUS = 'OPEN' AND
- APP_CACHE_VIEW.APP_STATUS = 'TO_DO'
- GROUP BY APP_CACHE_VIEW.TAS_UID";
-
-$rsSql = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
+$criteria = new Criteria();
+$criteria->addAsColumn('NUMREC', 'COUNT(' . ListInboxPeer::TAS_UID . ')');
+$criteria->addSelectColumn(ListInboxPeer::PRO_UID);
+$criteria->addSelectColumn(ProcessPeer::PRO_TITLE);
+$criteria->addSelectColumn(ListInboxPeer::TAS_UID);
+$criteria->addSelectColumn(TaskPeer::TAS_TITLE);
+$criteria->addSelectColumn(CaseConsolidatedCorePeer::DYN_UID);
+$criteria->addJoin(CaseConsolidatedCorePeer::TAS_UID, ListInboxPeer::TAS_UID, Criteria::LEFT_JOIN);
+$criteria->addJoin(ListInboxPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
+$criteria->addJoin(ListInboxPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN);
+$criteria->add(ListInboxPeer::USR_UID, $usrUid, Criteria::EQUAL);
+$criteria->add(ListInboxPeer::APP_STATUS, 'TO_DO', Criteria::EQUAL);
+$criteria->addGroupByColumn(ListInboxPeer::TAS_UID);
+$rsSql = CaseConsolidatedCorePeer::doSelectRS($criteria);
+$rsSql->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($rsSql->next()) {
$row = $rsSql->getRow();
- $processUid = $row["PRO_UID"];
- $proTitle = $row["PROCESS_TITLE"];
- $taskUid = $row["TAS_UID"];
- $taskTitle = $row["TASK_TITLE"];
- $dynaformUid = $row["DYN_UID"];
+ $processUid = $row['PRO_UID'];
+ $proTitle = $row['PRO_TITLE'];
+ $taskUid = $row['TAS_UID'];
+ $taskTitle = $row['TAS_TITLE'];
+ $dynaformUid = $row['DYN_UID'];
- $tabTitle = $taskTitle . " (" . (($activeNumRows > 0)? $row["NUMREC"] : 0) . ")";
+ $tabTitle = $taskTitle . " (" . (($activeNumRows > 0) ? $row["NUMREC"] : 0) . ")";
$grdTitle = htmlentities($proTitle . " / " . $tabTitle, ENT_QUOTES, "UTF-8");
- $tabTitle = htmlentities(substr($proTitle, 0, 25) . ((strlen($proTitle) > 25)? "..." : null) . " / " . $tabTitle, ENT_QUOTES, "UTF-8");
+ $tabTitle = htmlentities(substr($proTitle, 0, 25) . ((strlen($proTitle) > 25) ? "..." : null) . " / " . $tabTitle, ENT_QUOTES, "UTF-8");
$oProcess = new Process();
- $isBpmn = $oProcess->isBpmnProcess($processUid);
- if($isBpmn){
+ $isBpmn = $oProcess->isBpmnProcess($processUid);
+ if ($isBpmn) {
$arrayTabItem[] = "
{
title: \"$tabTitle\",
@@ -116,7 +73,7 @@ while ($rsSql->next()) {
}
}
}";
- }else{
+ } else {
$arrayTabItem[] = "
{
title: \"$tabTitle\",
@@ -188,30 +145,20 @@ if (count($arrayTabItem) > 0) {
echo "" . G::LoadTranslation("ID_NO_RECORDS_FOUND") . "";
}
-
-
function getProcessArray($action, $userUid)
{
$processes = array();
$processes[] = array("", G::LoadTranslation("ID_ALL_PROCESS"));
-
+ $cProcess = new Criteria("workflow");
switch ($action) {
case "simple_search":
case "search":
//In search action, the query to obtain all process is too slow, so we need to query directly to
//process and content tables, and for that reason we need the current language in AppCacheView.
- G::loadClass("configuration");
- $oConf = new Configurations;
- $oConf->loadConfig($x, "APP_CACHE_VIEW_ENGINE", "", "", "", "");
- $appCacheViewEngine = $oConf->aConfig;
- $lang = isset($appCacheViewEngine["LANG"])? $appCacheViewEngine["LANG"] : "en";
-
- $cProcess = new Criteria("workflow");
$cProcess->clearSelectColumns();
$cProcess->addSelectColumn(ProcessPeer::PRO_UID);
$cProcess->addSelectColumn(ProcessPeer::PRO_TITLE);
- $del = DBAdapter::getStringDelimiter();
$cProcess->add(ProcessPeer::PRO_STATUS, "ACTIVE");
$oDataset = ProcessPeer::doSelectRS($cProcess);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
@@ -226,21 +173,19 @@ function getProcessArray($action, $userUid)
break;
case "consolidated":
default:
- $oAppCache = new AppCacheView();
- $cProcess = $oAppCache->getToDoListCriteria($userUid); //fast enough
break;
}
$cProcess->clearSelectColumns();
$cProcess->setDistinct();
- $cProcess->addSelectColumn(AppCacheViewPeer::PRO_UID);
- $cProcess->addSelectColumn(AppCacheViewPeer::APP_PRO_TITLE);
- $oDataset = AppCacheViewPeer::doSelectRS($cProcess);
+ $cProcess->addSelectColumn(ProcessPeer::PRO_UID);
+ $cProcess->addSelectColumn(ProcessPeer::PRO_TITLE);
+ $oDataset = ProcessPeer::doSelectRS($cProcess);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
- $processes[] = array($aRow["PRO_UID"], $aRow["APP_PRO_TITLE"]);
+ $processes[] = array($aRow["PRO_UID"], $aRow["PRO_TITLE"]);
$oDataset->next();
}
diff --git a/workflow/engine/methods/cases/casesList_Ajax.php b/workflow/engine/methods/cases/casesList_Ajax.php
index 5f4fc39c4..2bc115ff6 100644
--- a/workflow/engine/methods/cases/casesList_Ajax.php
+++ b/workflow/engine/methods/cases/casesList_Ajax.php
@@ -54,6 +54,30 @@ if ($actionAjax == "userValues") {
$users = filterUserListArray($users, $query);
//now get users, just for the Search action
switch ($action) {
+ case 'to_reassign':
+ $cUsers = $oAppCache->getToReassignListCriteria(null);
+ $cUsers->addSelectColumn(AppCacheViewPeer::USR_UID);
+
+ if (g::MySQLSintaxis()) {
+ $cUsers->addGroupByColumn(AppCacheViewPeer::USR_UID);
+ }
+
+ if (!is_null($query)) {
+ $filters = $cUsers->getNewCriterion(UsersPeer::USR_FIRSTNAME, '%' . $query . '%', Criteria::LIKE)->addOr(
+ $cUsers->getNewCriterion(UsersPeer::USR_LASTNAME, '%' . $query . '%', Criteria::LIKE)->addOr(
+ $cUsers->getNewCriterion(UsersPeer::USR_USERNAME, '%' . $query . '%', Criteria::LIKE)));
+ $cUsers->addAnd($filters);
+ }
+ $cUsers->setLimit(20);
+ $cUsers->addAscendingOrderByColumn(AppCacheViewPeer::APP_CURRENT_USER);
+ $oDataset = AppCacheViewPeer::doSelectRS($cUsers, Propel::getDbConnection('workflow_ro'));
+ $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $oDataset->next();
+ while ($aRow = $oDataset->getRow()) {
+ $users[] = array("USR_UID" => $aRow['USR_UID'], "USR_FULLNAME" => $aRow['APP_CURRENT_USER']);
+ $oDataset->next();
+ }
+ break;
case 'search_simple':
case 'search':
G::LoadClass("configuration");
diff --git a/workflow/engine/methods/cases/cases_Ajax.php b/workflow/engine/methods/cases/cases_Ajax.php
index a90b02548..2fc375013 100644
--- a/workflow/engine/methods/cases/cases_Ajax.php
+++ b/workflow/engine/methods/cases/cases_Ajax.php
@@ -548,46 +548,49 @@ switch (($_POST['action']) ? $_POST['action'] : $_REQUEST['action']) {
G::RenderPage( 'publish', 'raw' );
break;
case 'uploadDocumentGrid_Ajax':
- G::LoadClass( 'case' );
- G::LoadClass( "BasePeer" );
+ G::LoadClass('case');
+ G::LoadClass("BasePeer");
global $G_PUBLISH;
$arrayToTranslation = array(
- "INPUT" => G::LoadTranslation("ID_INPUT_DB"),
- "OUTPUT" => G::LoadTranslation("ID_OUTPUT_DB"),
+ "INPUT" => G::LoadTranslation("ID_INPUT_DB"),
+ "OUTPUT" => G::LoadTranslation("ID_OUTPUT_DB"),
"ATTACHED" => G::LoadTranslation("ID_ATTACHED_DB")
);
$oCase = new Cases();
- $aProcesses = Array ();
+ $aProcesses = Array();
$G_PUBLISH = new Publisher();
- $c = $oCase->getAllUploadedDocumentsCriteria( $_SESSION['PROCESS'], $_SESSION['APPLICATION'],
- $_SESSION['CURRENT_TASK'], $_SESSION['USER_LOGGED'], $_SESSION['INDEX']);
-
- if ($c->getDbName() == 'dbarray') {
- $rs = ArrayBasePeer::doSelectRs( $c );
+ $criteria = $oCase->getAllUploadedDocumentsCriteria($_SESSION['PROCESS'], $_SESSION['APPLICATION'], $_SESSION['CURRENT_TASK'], $_SESSION['USER_LOGGED'], $_SESSION['INDEX']);
+ if ($criteria->getDbName() == 'dbarray') {
+ $rs = ArrayBasePeer::doSelectRs($criteria);
} else {
- $rs = GulliverBasePeer::doSelectRs( $c );
+ $rs = GulliverBasePeer::doSelectRs($criteria);
}
+ $totalCount = $rs->getRecordCount();
- $rs->setFetchmode( ResultSet::FETCHMODE_ASSOC );
- $rs->next();
+ $start = $_REQUEST["start"];
+ $limit = $_REQUEST["limit"];
- $totalCount = 0;
-
- for ($j = 0; $j < $rs->getRecordCount(); $j ++) {
+ $criteria->setLimit($limit);
+ $criteria->setOffset($start);
+ if ($criteria->getDbName() == 'dbarray') {
+ $rs = ArrayBasePeer::doSelectRs($criteria);
+ } else {
+ $rs = GulliverBasePeer::doSelectRs($criteria);
+ }
+ $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ while ($rs->next()) {
$result = $rs->getRow();
- $result["TYPE"] = (array_key_exists($result["TYPE"], $arrayToTranslation))? $arrayToTranslation[$result["TYPE"]] : $result["TYPE"];
+ $result["TYPE"] = (array_key_exists($result["TYPE"], $arrayToTranslation)) ? $arrayToTranslation[$result["TYPE"]] : $result["TYPE"];
$aProcesses[] = $result;
- $rs->next();
- $totalCount ++;
}
$r = new stdclass();
$r->data = $aProcesses;
$r->totalCount = $totalCount;
- echo Bootstrap::json_encode( $r );
+ echo Bootstrap::json_encode($r);
break;
case 'generateDocumentGrid_Ajax':
diff --git a/workflow/engine/methods/cases/cases_Resume.php b/workflow/engine/methods/cases/cases_Resume.php
index b38f7c178..883dc3a0b 100644
--- a/workflow/engine/methods/cases/cases_Resume.php
+++ b/workflow/engine/methods/cases/cases_Resume.php
@@ -56,12 +56,13 @@ if (isset($_SESSION['ACTION']) && ($_SESSION['ACTION'] == 'jump')) {
$Fields = $oCase->loadCase( $_SESSION['APPLICATION'], $_SESSION['INDEX']);
}
+//Check the participated
$participated = $oCase->userParticipatedInCase( $_GET['APP_UID'], $_SESSION['USER_LOGGED'] );
+//Check if is Supervisor
+$processUser = new ProcessUser();
+$userAccess = $processUser->validateUserAccess($Fields['PRO_UID'], $_SESSION['USER_LOGGED']);
-if ($RBAC->userCanAccess( 'PM_ALLCASES' ) < 0 && $participated == 0) {
- /*if (strtoupper($Fields['APP_STATUS']) != 'COMPLETED') {
- $oCase->thisIsTheCurrentUser($_SESSION['APPLICATION'], $_SESSION['INDEX'], $_SESSION['USER_LOGGED'], 'SHOW_MESSAGE');
- }*/
+if ($RBAC->userCanAccess( 'PM_ALLCASES' ) < 0 && !$participated && !$userAccess) {
$aMessage['MESSAGE'] = G::LoadTranslation( 'ID_NO_PERMISSION_NO_PARTICIPATED' );
$G_PUBLISH = new Publisher();
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
@@ -77,12 +78,10 @@ if (isset( $aRow['APP_TYPE'] )) {
$Fields['STATUS'] = ucfirst( strtolower( G::LoadTranslation( 'ID_CANCELLED' ) ) );
break;
}
-
- //$Fields['STATUS'] = $aRow['APP_TYPE'];
}
$actions = 'false';
-if ($_GET['action'] == 'paused') {
+if (isset($_GET['action']) && $_GET['action'] == 'paused') {
$actions = 'true';
}
diff --git a/workflow/engine/methods/cases/cases_Step.php b/workflow/engine/methods/cases/cases_Step.php
index 7bb4caf2d..bd2160239 100644
--- a/workflow/engine/methods/cases/cases_Step.php
+++ b/workflow/engine/methods/cases/cases_Step.php
@@ -1009,7 +1009,7 @@ try {
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TRANSFER_HIDDEN_FLY'] = "";
if ($aValues['NEXT_TASK']['TAS_TRANSFER_FLY'] == 'true') {
$aFields['TASK'][$sKey]['NEXT_TASK']['TAS_DURATION'] = '';
- $hoursSelected = $daysSelected = '';
+ $hoursSelected = $daysSelected = $minSelected = '';
if ($aFields['TASK'][$sKey]['NEXT_TASK']['TAS_TIMEUNIT'] == 'HOURS') {
$hoursSelected = "selected = 'selected'";
} else {
diff --git a/workflow/engine/methods/setup/language_Ajax.php b/workflow/engine/methods/setup/language_Ajax.php
index 040098840..820c94b1c 100644
--- a/workflow/engine/methods/setup/language_Ajax.php
+++ b/workflow/engine/methods/setup/language_Ajax.php
@@ -26,7 +26,7 @@ try {
G::LoadSystem('inputfilter');
$filter = new InputFilter();
$_POST = $filter->xssFilterHard($_POST);
-
+
G::LoadInclude( 'ajax' );
if (isset( $_POST['form'] )) {
$_POST = $_POST['form'];
@@ -153,7 +153,6 @@ try {
$oDataset->next();
$aRow = $oDataset->getRow();
- $oContent = new Content();
if($locale != "en"){ //Default Lengage 'en'
if($locale != SYS_LANG){ //Current lenguage
//THERE IS NO ANY CASE STARTED FROM THES LANGUAGE
diff --git a/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css
index 9587833c2..87b8593e3 100644
--- a/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/base/css/pmos-xtheme-gray.css
@@ -363,10 +363,9 @@ button.x-btn-text:focus,.x-combo-selected{
/*
-Pone en mayúsuclas el texto que se encuentra en el toolbar de arriba
+toolbar, set 'text-transform: capitalize;' for capitalize (transforms the first character of each word to uppercase)
*/
.x-panel-tbar .x-toolbar-cell{
- text-transform: capitalize;
}
/*TREE*/
@@ -911,7 +910,8 @@ antes funcionaba.
top: 40%;
left: 40%;
font-size: 15px;
- color:black filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);
+ color:black;
+ filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=80)";
opacity: .55;
-moz-opacity: .55;
}
diff --git a/workflow/engine/skinEngine/neoclassic/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/neoclassic/css/pmos-xtheme-gray.css
index 2f2486d85..388e22e4f 100644
--- a/workflow/engine/skinEngine/neoclassic/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/neoclassic/css/pmos-xtheme-gray.css
@@ -523,10 +523,9 @@ button.x-btn-text:focus,
padding-left: 18px !important;
}
/*
-Pone en mayC:suclas el texto que se encuentra en el toolbar de arriba
+toolbar, set 'text-transform: capitalize;' for capitalize (transforms the first character of each word to uppercase)
*/
.x-panel-tbar .x-toolbar-cell {
- text-transform: capitalize;
}
/*TREE*/
#ext-gen38.x-tree-root-ct .x-tree-node-el {
diff --git a/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css
index cad3501a0..ea0c5ab9a 100644
--- a/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/uxmodern/css/pmos-xtheme-gray.css
@@ -388,10 +388,9 @@ button.x-btn-text:focus,.x-combo-selected{
/*
-Pone en mayúsuclas el texto que se encuentra en el toolbar de arriba
+toolbar, set 'text-transform: capitalize;' for capitalize (transforms the first character of each word to uppercase)
*/
.x-panel-tbar .x-toolbar-cell{
- text-transform: capitalize;
}
/*TREE*/
@@ -930,7 +929,8 @@ antes funcionaba.
top: 40%;
left: 40%;
font-size: 15px;
- color:black filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);
+ color:black;
+ filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=80)";
opacity: .55;
-moz-opacity: .55;
}
diff --git a/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css b/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css
index 3fe3a2fee..a3ec295bd 100644
--- a/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css
+++ b/workflow/engine/skinEngine/uxs/css/pmos-xtheme-gray.css
@@ -360,10 +360,9 @@ button.x-btn-text:focus,.x-combo-selected{
/*
-Pone en mayúsuclas el texto que se encuentra en el toolbar de arriba
+toolbar, set 'text-transform: capitalize;' for capitalize (transforms the first character of each word to uppercase)
*/
.x-panel-tbar .x-toolbar-cell{
- text-transform: capitalize;
}
/*TREE*/
@@ -891,7 +890,8 @@ antes funcionaba.
top: 40%;
left: 40%;
font-size: 15px;
- color:black filter:progid:DXImageTransform.Microsoft.Alpha(opacity=80);
+ color:black;
+ filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=80)";
opacity: .55;
-moz-opacity: .55;
}
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
index 4a4b60bde..55081fc76 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php
@@ -12,6 +12,7 @@ use \CasesPeer;
class Cases
{
private $formatFieldNameInUppercase = true;
+ private $messageResponse = [];
/**
* Set the format of the fields name (uppercase, lowercase)
@@ -2878,6 +2879,7 @@ class Cases
*
* return json Return an json with the result of the reassigned cases.
*/
+
public function doPostReassign($data)
{
if (!is_array($data)) {
@@ -2888,112 +2890,125 @@ class Cases
return;
}
}
-
$dataResponse = $data;
-
- //Verify data
- $arrayCasesToReassign = $data['cases'];
-
- $arrayMsg = [];
-
- foreach ($arrayCasesToReassign as $key => $value) {
- $appDelegation = \AppDelegationPeer::retrieveByPK($value['APP_UID'], $value['DEL_INDEX']);
-
- if (is_null($appDelegation)) {
- $arrayMsg[] = [
- 'app_uid' => $value['APP_UID'],
- 'del_index' => $value['DEL_INDEX'],
- 'result' => 0,
- 'status' => 'DELEGATION_NOT_EXISTS'
- ];
- }
- }
-
- if (!empty($arrayMsg)) {
- return ['cases' => $arrayMsg];
- }
-
- $task = new \ProcessMaker\BusinessModel\Task();
- $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
-
- $userUid = $data['usr_uid_target'];
-
- foreach ($arrayCasesToReassign as $value) {
- $appDelegation = \AppDelegationPeer::retrieveByPK($value['APP_UID'], $value['DEL_INDEX']);
-
- //Verify data
- $taskUid = $appDelegation->getTasUid();
-
- $flagBoolean = $task->checkUserOrGroupAssignedTask($taskUid, $userUid);
- $flagps = $supervisor->isUserProcessSupervisor($appDelegation->getProUid(), $userUid);
-
- if (!$flagBoolean && !$flagps) {
- $arrayMsg[] = [
- 'app_uid' => $value['APP_UID'],
- 'del_index' => $value['DEL_INDEX'],
- 'result' => 0,
- 'status' => 'USER_NOT_ASSIGNED_TO_TASK'
- ];
- }
- }
-
- if (!empty($arrayMsg)) {
- return ['cases' => $arrayMsg];
- }
-
- G::LoadClass('case');
- $oCases = new \Cases();
- $appDelegation = new \AppDelegation();
$casesToReassign = $data['cases'];
- $result = 0;
- if (sizeof($casesToReassign)) {
- foreach ($casesToReassign as $key => $val) {
- $usrUid = '';
- if (array_key_exists('USR_UID', $val)) {
- if ($val['USR_UID'] != '') {
- $usrUid = $val['USR_UID'];
+ $oCases = new \Cases();
+ foreach ($casesToReassign as $key => $val) {
+ $appDelegation = \AppDelegationPeer::retrieveByPK($val['APP_UID'], $val['DEL_INDEX']);
+ $existDelegation = $this->validateReassignData($appDelegation, $val, $data, 'DELEGATION_NOT_EXISTS');
+ if ($existDelegation) {
+ $existDelegation = $this->validateReassignData($appDelegation, $val, $data, 'USER_NOT_ASSIGNED_TO_TASK');
+ if ($existDelegation) {
+ $usrUid = '';
+ if (array_key_exists('USR_UID', $val)) {
+ if ($val['USR_UID'] != '') {
+ $usrUid = $val['USR_UID'];
+ }
+ }
+ if ($usrUid == '') {
+ $fields = $appDelegation->toArray(\BasePeer::TYPE_FIELDNAME);
+ $usrUid = $fields['USR_UID'];
+ }
+ //Will be not able reassign a case when is paused
+ $flagPaused = $this->validateReassignData($appDelegation, $val, $data, 'ID_REASSIGNMENT_PAUSED_ERROR');
+ //Current users of OPEN DEL_INDEX thread
+ $flagSameUser = $this->validateReassignData($appDelegation, $val, $data, 'REASSIGNMENT_TO_THE_SAME_USER');
+ //reassign case
+ if ($flagPaused && $flagSameUser) {
+ $reassigned = $oCases->reassignCase($val['APP_UID'], $val['DEL_INDEX'], $usrUid, $data['usr_uid_target']);
+ $result = $reassigned ? 1 : 0;
+ $this->messageResponse = [
+ 'APP_UID' => $val['APP_UID'],
+ 'DEL_INDEX' => $val['DEL_INDEX'],
+ 'RESULT' => $result,
+ 'STATUS' => 'SUCCESS'
+ ];
}
}
+ }
+ $dataResponse['cases'][$key] = $this->messageResponse;
+ }
+ unset($dataResponse['usr_uid_target']);
+ return G::json_encode($dataResponse);
+ }
- if ($usrUid == '') {
- $fields = $appDelegation->load($val['APP_UID'], $val['DEL_INDEX']);
- $usrUid = $fields['USR_UID'];
- }
- //Will be not able reassign a case when is paused
- $flagReassign = true;
- if (\AppDelay::isPaused($val['APP_UID'], $val['DEL_INDEX'])) {
- $dataResponse['cases'][$key]['result'] = 0;
- $dataResponse['cases'][$key]['status'] = \G::LoadTranslation('ID_REASSIGNMENT_PAUSED_ERROR');
- $flagReassign = false;
+ /**
+ * @param $appDelegation
+ * @param $value
+ * @param $data
+ * @param string $type
+ * @return bool
+ */
+ private function validateReassignData($appDelegation, $value, $data, $type = 'DELEGATION_NOT_EXISTS')
+ {
+ $return = true;
+ switch ($type) {
+ case 'DELEGATION_NOT_EXISTS':
+ if (is_null($appDelegation)) {
+ $this->messageResponse = [
+ 'APP_UID' => $value['APP_UID'],
+ 'DEL_INDEX' => $value['DEL_INDEX'],
+ 'RESULT' => 0,
+ 'STATUS' => $type
+ ];
+ $return = false;
}
+ break;
+ case 'USER_NOT_ASSIGNED_TO_TASK':
+ $task = new \ProcessMaker\BusinessModel\Task();
+ $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
+ $taskUid = $appDelegation->getTasUid();
+ $flagBoolean = $task->checkUserOrGroupAssignedTask($taskUid, $data['usr_uid_target']);
+ $flagps = $supervisor->isUserProcessSupervisor($appDelegation->getProUid(), $data['usr_uid_target']);
- //Current users of OPEN DEL_INDEX thread
- $aCurUser = $appDelegation->getCurrentUsers($val['APP_UID'], $val['DEL_INDEX']);
+ if (!$flagBoolean && !$flagps) {
+ $this->messageResponse = [
+ 'APP_UID' => $value['APP_UID'],
+ 'DEL_INDEX' => $value['DEL_INDEX'],
+ 'RESULT' => 0,
+ 'STATUS' => 'USER_NOT_ASSIGNED_TO_TASK'
+ ];
+ $return = false;
+ }
+ break;
+ case 'ID_REASSIGNMENT_PAUSED_ERROR':
+ if (\AppDelay::isPaused($value['APP_UID'], $value['DEL_INDEX'])) {
+ $this->messageResponse = [
+ 'APP_UID' => $value['APP_UID'],
+ 'DEL_INDEX' => $value['DEL_INDEX'],
+ 'RESULT' => 0,
+ 'STATUS' => \G::LoadTranslation('ID_REASSIGNMENT_PAUSED_ERROR')
+ ];
+ $return = false;
+ }
+ break;
+ case 'REASSIGNMENT_TO_THE_SAME_USER':
+ $aCurUser = $appDelegation->getCurrentUsers($value['APP_UID'], $value['DEL_INDEX']);
if (!empty($aCurUser)) {
- foreach ($aCurUser as $keyAux => $value) {
- if ($value === $data['usr_uid_target']) {
- $flagReassign = false;
- $result = 1;
+ foreach ($aCurUser as $keyAux => $val) {
+ if ($val === $data['usr_uid_target']) {
+ $this->messageResponse = [
+ 'APP_UID' => $value['APP_UID'],
+ 'DEL_INDEX' => $value['DEL_INDEX'],
+ 'RESULT' => 1,
+ 'STATUS' => 'SUCCESS'
+ ];
+ $return = false;
}
}
} else {
//DEL_INDEX is CLOSED
- $dataResponse['cases'][$key]['result'] = 0;
- $dataResponse['cases'][$key]['status'] = \G::LoadTranslation('ID_REASSIGNMENT_ERROR');
- $flagReassign = false;
+ $this->messageResponse = [
+ 'APP_UID' => $value['APP_UID'],
+ 'DEL_INDEX' => $value['DEL_INDEX'],
+ 'RESULT' => 0,
+ 'STATUS' => \G::LoadTranslation('ID_REASSIGNMENT_ERROR')
+ ];
+ $return = false;
}
-
- if ($flagReassign) {
- $reassigned = $oCases->reassignCase($val['APP_UID'], $val['DEL_INDEX'], $usrUid, $data['usr_uid_target']);
- $result = $reassigned ? 1 : 0;
- $dataResponse['cases'][$key]['status'] = 'SUCCESS';
- }
- $dataResponse['cases'][$key]['result'] = $result;
- }
+ break;
}
- unset($dataResponse['usr_uid_target']);
-
- return G::json_encode($dataResponse);
+ return $return;
}
/**
@@ -3018,11 +3033,11 @@ class Cases
public function checkUserHasPermissionsOrSupervisor($userUid, $applicationUid, $dynaformUid)
{
+ $arrayApplicationData = $this->getApplicationRecordByPk($applicationUid, [], false);
+ //Check whether the process supervisor
+ $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
+ $userAccess = $supervisor->isUserProcessSupervisor($arrayApplicationData['PRO_UID'], $userUid);
if (!empty($dynaformUid)) {
- $arrayApplicationData = $this->getApplicationRecordByPk($applicationUid, [], false);
- //Check whether the process supervisor
- $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
- $userAccess = $supervisor->isUserProcessSupervisor($arrayApplicationData['PRO_UID'], $userUid);
//Check if have objects assigned (Supervisor)
$cases = new \Cases();
$resultDynaForm = $cases->getAllDynaformsStepsToRevise($applicationUid);
@@ -3065,7 +3080,7 @@ class Cases
} else {
$arrayResult = $this->getStatusInfo($applicationUid, 0, $userUid);
$flagParticipated = false;
- if ($arrayResult) {
+ if ($arrayResult || $userAccess) {
$flagParticipated = true;
}
return $flagParticipated;
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Consolidated.php b/workflow/engine/src/ProcessMaker/BusinessModel/Consolidated.php
index 0941bc724..3b332e3a9 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Consolidated.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Consolidated.php
@@ -6,7 +6,6 @@ use \Smarty;
use \Criteria;
use \ReportTablePeer;
use \ResultSet;
-use \AppCacheViewPeer;
use \CaseConsolidatedCorePeer;
use \ContentPeer;
@@ -31,15 +30,11 @@ class Consolidated
$criteria = new Criteria();
$criteria->addSelectColumn(CaseConsolidatedCorePeer::DYN_UID);
$criteria->addSelectColumn(\ReportTablePeer::REP_TAB_NAME);
+ $criteria->addAsColumn('CON_VALUE', \ReportTablePeer::REP_TAB_TITLE);
$criteria->addSelectColumn(\ReportTablePeer::REP_TAB_UID);
$criteria->addSelectColumn(ContentPeer::CON_VALUE);
$criteria->addSelectColumn(CaseConsolidatedCorePeer::CON_STATUS);
-
$criteria->addJoin( CaseConsolidatedCorePeer::REP_TAB_UID, ReportTablePeer::REP_TAB_UID, Criteria::LEFT_JOIN );
- $criteria->addJoin( CaseConsolidatedCorePeer::REP_TAB_UID, ContentPeer::CON_ID, Criteria::LEFT_JOIN );
- $criteria->add( ContentPeer::CON_CATEGORY, "REP_TAB_TITLE");
- $criteria->add( ContentPeer::CON_LANG, SYS_LANG);
-
$criteria->add( CaseConsolidatedCorePeer::TAS_UID, $tas_uid, Criteria::EQUAL );
$criteria->add( CaseConsolidatedCorePeer::CON_STATUS, 'ACTIVE', Criteria::EQUAL );
@@ -74,7 +69,6 @@ class Consolidated
*/
public function postDerivate ($app_uid, $app_number, $del_index, $usr_uid, $fieldName='', $fieldValue='')
{
- G::LoadClass("library");
G::LoadClass("wsBase");
G::LoadClass("case");
$ws = new \wsBase();
@@ -118,7 +112,7 @@ class Consolidated
$response = array();
- $response["casesNumRec"] = \Library::getCasesNumRec($usr_uid);
+ $response["casesNumRec"] = self::getCasesNumRec($usr_uid);
if (is_array($res)) {
$response ["message"] = "" . G::LoadTranslation("ID_CASE") . " " . $app_number . " " .
@@ -130,6 +124,35 @@ class Consolidated
return $response;
}
+ /**
+ * @param $userUid
+ * @return int
+ */
+ public static function getCasesNumRec($userUid)
+ {
+ $criteria = new Criteria("workflow");
+ $criteria->addSelectColumn(CaseConsolidatedCorePeer::CON_STATUS);
+ $criteria->add(CaseConsolidatedCorePeer::CON_STATUS, "ACTIVE");
+ $activeNumRec = CaseConsolidatedCorePeer::doCount($criteria);
+ $numRec = 0;
+
+ $criteria->clearSelectColumns();
+ $criteria->addAsColumn('NUMREC', 'COUNT(' . \ListInboxPeer::TAS_UID . ')');
+ $criteria->addJoin(CaseConsolidatedCorePeer::TAS_UID, \ListInboxPeer::TAS_UID, \Criteria::LEFT_JOIN);
+ $criteria->add(\ListInboxPeer::USR_UID, $userUid, Criteria::EQUAL);
+ $criteria->add(\ListInboxPeer::APP_STATUS, 'TO_DO', Criteria::EQUAL);
+ $rsSql = CaseConsolidatedCorePeer::doSelectRS($criteria);
+ $rsSql->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+
+ while ($rsSql->next()) {
+ $row = $rsSql->getRow();
+ $numRec = $row["NUMREC"];
+ }
+
+ $numRec = ($activeNumRec > 0) ? $numRec : 0;
+ return $numRec;
+ }
+
/**
* Put Data Generate
@@ -235,11 +258,12 @@ class Consolidated
$response = array();
$searchFields = array();
- //
- $query = "SELECT REP_TAB_UID
- FROM CASE_CONSOLIDATED
- WHERE TAS_UID = '" . $tas_uid . "'";
- $caseConsolidated = executeQuery($query);
+
+ $criteria = new Criteria();
+ $criteria->addSelectColumn(CaseConsolidatedCorePeer::REP_TAB_UID);
+ $criteria->add(CaseConsolidatedCorePeer::TAS_UID, $tas_uid, Criteria::EQUAL);
+ $caseConsolidated = CaseConsolidatedCorePeer::doSelectRS($criteria);
+ $caseConsolidated->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$tableUid = null;
$tableName = null;
@@ -273,12 +297,11 @@ class Consolidated
$oCriteria->addSelectColumn("*");
$oCriteria->addSelectColumn($tableName . ".APP_UID");
- $oCriteria->addJoin($tableName . ".APP_UID", AppCacheViewPeer::APP_UID, Criteria::LEFT_JOIN);
+ $oCriteria->addJoin($tableName . ".APP_UID", \ListInboxPeer::APP_UID, \Criteria::LEFT_JOIN);
- $oCriteria->add(AppCacheViewPeer::DEL_THREAD_STATUS, "OPEN");
- $oCriteria->add(AppCacheViewPeer::TAS_UID, $tas_uid);
- $oCriteria->add(AppCacheViewPeer::USR_UID, $usr_uid);
- $oCriteria->add(AppCacheViewPeer::APP_STATUS, "TO_DO");
+ $oCriteria->add(\ListInboxPeer::TAS_UID, $tas_uid);
+ $oCriteria->add(\ListInboxPeer::USR_UID, $usr_uid);
+ $oCriteria->add(\ListInboxPeer::APP_STATUS, "TO_DO");
if ($search != "") {
$filename = $pro_uid . PATH_SEP . $dyn_uid . ".xml";
@@ -333,10 +356,10 @@ class Consolidated
if ($oTmpCriteria != null) {
$oCriteria->add(
- $oCriteria->getNewCriterion(AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE)->addOr($oTmpCriteria)
+ $oCriteria->getNewCriterion(\ListInboxPeer::APP_NUMBER, $search, Criteria::LIKE)->addOr($oTmpCriteria)
);
} else {
- $oCriteria->add($oCriteria->getNewCriterion(AppCacheViewPeer::APP_NUMBER, $search, Criteria::LIKE));
+ $oCriteria->add($oCriteria->getNewCriterion(\ListInboxPeer::APP_NUMBER, $search, Criteria::LIKE));
}
}
@@ -344,7 +367,7 @@ class Consolidated
$filter = new \InputFilter();
if ($sort != "") {
- $reportTable = new ReportTables();
+ $reportTable = new \ReportTables();
$arrayReportTableVar = $reportTable->getTableVars($tableUid);
$tableName = $filter->validateInput($tableName);
$sort = $filter->validateInput($sort);
@@ -352,7 +375,7 @@ class Consolidated
$sort = strtoupper($sort);
eval('$field = ' . $tableName . 'Peer::' . $sort . ';');
} else {
- eval('$field = AppCacheViewPeer::' . $sort . ';');
+ eval('$field = \ListInboxPeer::' . $sort . ';');
}
if ($dir == "ASC") {
@@ -361,7 +384,7 @@ class Consolidated
$oCriteria->addDescendingOrderByColumn($field);
}
} else {
- $oCriteria->addDescendingOrderByColumn(AppCacheViewPeer::APP_NUMBER);
+ $oCriteria->addDescendingOrderByColumn(\ListInboxPeer::APP_NUMBER);
}
//pagination pagination attributes
@@ -369,7 +392,7 @@ class Consolidated
$oCriteria->setOffset($start);
//end of pagination attributes
- $oDataset = AppCacheViewPeer::doSelectRS($oCriteria);
+ $oDataset = \ListInboxPeer::doSelectRS($oCriteria);
//eval('$oDataset = '.$className.'Peer::doSelectRS($oCriteria);');
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
@@ -404,17 +427,15 @@ class Consolidated
$response["data"][] = $val;
}
- $query = "SELECT COUNT(APP_CACHE_VIEW.TAS_UID) AS QTY
- FROM CASE_CONSOLIDATED
- LEFT JOIN CONTENT ON (CASE_CONSOLIDATED.TAS_UID = CONTENT.CON_ID)
- LEFT JOIN APP_CACHE_VIEW ON (CASE_CONSOLIDATED.TAS_UID = APP_CACHE_VIEW.TAS_UID)
- LEFT JOIN TASK ON (CASE_CONSOLIDATED.TAS_UID = TASK.TAS_UID)
- WHERE CONTENT.CON_CATEGORY = 'TAS_TITLE' AND
- CONTENT.CON_LANG = 'en' AND
- APP_CACHE_VIEW.DEL_THREAD_STATUS = 'OPEN' AND
- USR_UID = '" . $usr_uid . "' AND
- APP_CACHE_VIEW.TAS_UID = '" . $tas_uid . "'";
- $count = executeQuery($query);
+ $criteria = new Criteria();
+ $criteria->addAsColumn('QTY', 'COUNT(' . \ListInboxPeer::TAS_UID . ')');
+ $criteria->addJoin(\CaseConsolidatedCorePeer::TAS_UID, \TaskPeer::TAS_UID, \Criteria::LEFT_JOIN);
+ $criteria->addJoin(\CaseConsolidatedCorePeer::TAS_UID, \ListInboxPeer::TAS_UID, \Criteria::LEFT_JOIN);
+ $criteria->add(\ListInboxPeer::USR_UID, $usr_uid, \Criteria::EQUAL);
+ $criteria->add(\ListInboxPeer::TAS_UID, $tas_uid, \Criteria::EQUAL);
+ $criteria->add(\ListInboxPeer::APP_STATUS, 'TO_DO', \Criteria::EQUAL);
+ $count = CaseConsolidatedCorePeer::doSelectRS($criteria);
+ $count->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$totalCount = 0;
foreach ($count as $item) {
@@ -1115,10 +1136,9 @@ class Consolidated
{
$criteria = new Criteria();
$criteria->add(\CaseConsolidatedCorePeer::CON_STATUS, 'ACTIVE');
- $criteria->addJoin(\CaseConsolidatedCorePeer::TAS_UID, \AppCacheViewPeer::TAS_UID, Criteria::LEFT_JOIN);
- $criteria->add(\AppCacheViewPeer::USR_UID, $usrUid);
- $criteria->add(\AppCacheViewPeer::DEL_THREAD_STATUS, 'OPEN');
- $criteria->add(\AppCacheViewPeer::APP_STATUS, 'TO_DO');
+ $criteria->addJoin(\CaseConsolidatedCorePeer::TAS_UID, \ListInboxPeer::TAS_UID, Criteria::LEFT_JOIN);
+ $criteria->add(\ListInboxPeer::USR_UID, $usrUid, Criteria::EQUAL);
+ $criteria->add(\ListInboxPeer::APP_STATUS, 'TO_DO',Criteria::EQUAL);
$total = \CaseConsolidatedCorePeer::doCount($criteria);
return (int)$total;
}
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php
index 65aaa3808..e739eb485 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php
@@ -69,16 +69,18 @@ class Light
$task->setArrayParamException(array("taskUid" => "act_uid", "stepUid" => "step_uid"));
$webEntryEvent = new \ProcessMaker\BusinessModel\WebEntryEvent();
- $webEntryEvent->setFormatFieldNameInUppercase(false);
- $webEntryEvent->setArrayFieldNameForException(array("processUid" => "prj_uid"));
+ $arrayWebEntryEvent = array();
+ $allWebEntryEvents = $webEntryEvent->getAllWebEntryEvents();
+ foreach ($allWebEntryEvents as $webEntryEvents) {
+ $arrayWebEntryEvent[] = $webEntryEvents["ACT_UID"];
+ }
$step = new \ProcessMaker\Services\Api\Project\Activity\Step();
$response = array();
foreach ($processList as $key => $processInfo) {
$tempTreeChildren = array ();
foreach ($processList[$key] as $keyChild => $processInfoChild) {
- $webEntryEventStart = $webEntryEvent->getWebEntryEvents($processInfoChild['pro_uid']);
- if (empty($webEntryEventStart) && in_array($processInfoChild['pro_uid'], $bpmnProjects)) {
+ if (!in_array($processInfoChild['uid'], $arrayWebEntryEvent) && in_array($processInfoChild['pro_uid'], $bpmnProjects)) {
$tempTreeChild['text'] = $keyChild; //ellipsis ( $keyChild, 50 );
$tempTreeChild['processId'] = $processInfoChild['pro_uid'];
$tempTreeChild['taskId'] = $processInfoChild['uid'];
diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php
index 9850a47ea..6dffa896b 100644
--- a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php
+++ b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntryEvent.php
@@ -898,6 +898,31 @@ class WebEntryEvent
}
}
+ /**
+ * Get all WebEntry-Events
+ * Return an array with all WebEntry-Events
+ * @return array
+ * @throws \Exception
+ */
+ public function getAllWebEntryEvents()
+ {
+ try {
+ $result = array();
+ $criteria = $this->getWebEntryEventCriteria();
+ $criteria->addJoin(\WebEntryEventPeer::PRJ_UID, \ProcessPeer::PRO_UID, \Criteria::JOIN);
+ $criteria->add(\ProcessPeer::PRO_STATUS, 'ACTIVE', \Criteria::EQUAL);
+ $rsCriteria = \WebEntryEventPeer::doSelectRS($criteria);
+ $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
+ while ($rsCriteria->next()) {
+ $row = $rsCriteria->getRow();
+ $result[] = $this->getWebEntryEventDataFromRecord($row);
+ }
+ return $result;
+ } catch (\Exception $e) {
+ throw $e;
+ }
+ }
+
/**
* Get data of a WebEntry-Event
*
diff --git a/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php b/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php
index d6dd9c209..dafe61a98 100644
--- a/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php
+++ b/workflow/engine/src/ProcessMaker/Core/RoutingScreen.php
@@ -65,6 +65,9 @@ class RoutingScreen extends \Derivation
} else {
$aDataMerged[$key]['NEXT_ROUTING'][] = $post[$i];
}
+ if (isset($post[$i]['NEXT_TASK'])) {
+ $aDataMerged[$key]['NEXT_TASK'] = $post[$i]['NEXT_TASK'];
+ }
}
}
}
diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Cases.php b/workflow/engine/src/ProcessMaker/Services/Api/Cases.php
index 9fcdb2635..c3df40aa5 100644
--- a/workflow/engine/src/ProcessMaker/Services/Api/Cases.php
+++ b/workflow/engine/src/ProcessMaker/Services/Api/Cases.php
@@ -60,7 +60,6 @@ class Cases extends Api
//Check if the user is supervisor process
$case = new \ProcessMaker\BusinessModel\Cases();
- $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
$user = new \ProcessMaker\BusinessModel\User();
$count = 0;
@@ -70,10 +69,10 @@ class Cases extends Api
if (!empty($arrayApplicationData)) {
if (!$user->checkPermission($usrUid, 'PM_REASSIGNCASE')) {
- if($user->checkPermission($usrUid, 'PM_REASSIGNCASE_SUPERVISOR')){
+ if ($user->checkPermission($usrUid, 'PM_REASSIGNCASE_SUPERVISOR')) {
$supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
$flagps = $supervisor->isUserProcessSupervisor($arrayApplicationData['PRO_UID'], $usrUid);
- if(!$flagps){
+ if (!$flagps) {
$count = $count + 1;
}
diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php
index 80f288b49..32757d56a 100644
--- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php
+++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php
@@ -30,6 +30,31 @@ class Light extends Api
'delRiskDate'
];
+ public function __isAllowed()
+ {
+ try {
+ $methodName = $this->restler->apiMethodInfo->methodName;
+ $arrayArgs = $this->restler->apiMethodInfo->arguments;
+ switch ($methodName) {
+ case 'doIfAlreadyRoute':
+ $applicationUid = $this->parameters[$arrayArgs['app_uid']];
+ $delIndex = $this->parameters[$arrayArgs['cas_index']];
+ $userUid = $this->getUserId();
+ //Check if the user has the case
+ $appDelegation = new \AppDelegation();
+ $aCurUser = $appDelegation->getCurrentUsers($applicationUid, $delIndex);
+ if (!empty($aCurUser) && in_array($userUid, $aCurUser)) {
+ return true;
+ }
+ return false;
+ break;
+ }
+ return false;
+ } catch (\Exception $e) {
+ throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
+ }
+ }
+
/**
* Constructor of the class
*
@@ -793,6 +818,8 @@ class Light extends Api
/**
* Get Already Route
*
+ * @access protected
+ * @class AccessControl {@className \ProcessMaker\Services\Api\Light}
* @param string $app_uid {@min 1}{@max 32}
* @param int $cas_index
*
diff --git a/workflow/engine/templates/app/main.js b/workflow/engine/templates/app/main.js
index bb52fa407..cef2996a1 100644
--- a/workflow/engine/templates/app/main.js
+++ b/workflow/engine/templates/app/main.js
@@ -589,12 +589,12 @@ var openSummaryWindow = function(appUid, delIndex, action)
]
});
tabs.push({
- title: Ext.util.Format.capitalize(_('ID_MORE_INFORMATION')),
+ title: _('ID_MORE_INFORMATION'),
layout: 'fit',
items: [panel]
});
} else {
- tabs.push({title: Ext.util.Format.capitalize(_('ID_MORE_INFORMATION')), bodyCfg: {
+ tabs.push({title: _('ID_MORE_INFORMATION'), bodyCfg: {
tag: 'iframe',
id: 'summaryIFrame',
src: '../cases/summary?APP_UID=' + appUid + '&DEL_INDEX=' + delIndex + '&DYN_UID=' + response.dynUid,
@@ -604,7 +604,7 @@ var openSummaryWindow = function(appUid, delIndex, action)
}
}
- tabs.push({title: Ext.util.Format.capitalize(_('ID_UPLOADED_DOCUMENTS')), bodyCfg: {
+ tabs.push({title: _('ID_UPLOADED_DOCUMENTS'), bodyCfg: {
tag: 'iframe',
id: 'summaryIFrame',
src: '../cases/ajaxListener?action=uploadedDocumentsSummary',
@@ -612,7 +612,7 @@ var openSummaryWindow = function(appUid, delIndex, action)
onload: ''
}});
- tabs.push({title: Ext.util.Format.capitalize(_('ID_GENERATED_DOCUMENTS')), bodyCfg: {
+ tabs.push({title: _('ID_GENERATED_DOCUMENTS'), bodyCfg: {
tag: 'iframe',
id: 'summaryIFrame',
src: '../cases/ajaxListener?action=generatedDocumentsSummary',
diff --git a/workflow/engine/templates/cases/caseHistory.js b/workflow/engine/templates/cases/caseHistory.js
index d8d0596ab..05e77da55 100644
--- a/workflow/engine/templates/cases/caseHistory.js
+++ b/workflow/engine/templates/cases/caseHistory.js
@@ -241,7 +241,7 @@
return actionTranslate;
};
-
+ var pageSize = 15;
processesGrid = new Ext.grid.GridPanel({
region: 'center',
layout: 'fit',
@@ -293,7 +293,7 @@
}
],
bbar: new Ext.PagingToolbar({
- pageSize: 15,
+ pageSize: pageSize,
store: store,
displayInfo: true,
displayMsg: _('ID_DISPLAY_PROCESSES'),
@@ -312,7 +312,7 @@
}
});
- processesGrid.store.load({params: {"function":"languagesList"}});
+ processesGrid.store.load({params: {"function":"languagesList", "start": 0, "limit": pageSize}});
processesGrid.store.on(
'load',
diff --git a/workflow/engine/templates/cases/casesList.js b/workflow/engine/templates/cases/casesList.js
index d0344047b..430c0ea94 100644
--- a/workflow/engine/templates/cases/casesList.js
+++ b/workflow/engine/templates/cases/casesList.js
@@ -2050,7 +2050,8 @@ Ext.onReady ( function() {
btnReassign,
"->",
_("ID_USER"),
- comboAllUsers,
+ suggestUser,
+ resetSuggestButton,
"-",
_("ID_CATEGORY"),
comboCategory,
diff --git a/workflow/engine/templates/cases/casesUploadedDocumentsPage.js b/workflow/engine/templates/cases/casesUploadedDocumentsPage.js
index 136a31057..f1581980c 100644
--- a/workflow/engine/templates/cases/casesUploadedDocumentsPage.js
+++ b/workflow/engine/templates/cases/casesUploadedDocumentsPage.js
@@ -373,6 +373,7 @@
}
return actionTranslate;
};
+ var pageSize = 25;
var processesGrid = new Ext.grid.GridPanel({
region: 'center',
layout: 'fit',
@@ -487,7 +488,7 @@
}
],
bbar: new Ext.PagingToolbar({
- pageSize: 10,
+ pageSize: pageSize,
store: store,
displayInfo: true,
displayMsg: _('ID_DISPLAY_PROCESSES'),
@@ -515,7 +516,7 @@
}
}
});
- processesGrid.store.load({params: {"function":"languagesList"}});
+ processesGrid.store.load({params: {"function": "languagesList", "start": 0, "limit": pageSize}});
processesGrid.store.on(
'load',
diff --git a/workflow/engine/templates/processes/main.js b/workflow/engine/templates/processes/main.js
index 43adb6cb0..66765f905 100644
--- a/workflow/engine/templates/processes/main.js
+++ b/workflow/engine/templates/processes/main.js
@@ -1626,12 +1626,27 @@ importProcessExistGroup = function()
success : function(o, resp) {
var resp_ = Ext.util.JSON.decode(resp.response.responseText);
var sNewProUid = resp_.sNewProUid;
-
- if (typeof(resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
- var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
- openWindowIfIE(goTo + sNewProUid);
+ if (resp_.catchMessage === '') {
+ if (typeof (resp_.project_type) != "undefined" && resp_.project_type == "bpmn") {
+ var goTo = importProcessCallbackFile ? importProcessCallbackFile : "../designer?prj_uid=";
+ openWindowIfIE(goTo + sNewProUid);
+ } else {
+ window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
+ }
} else {
- window.location.href = "processes_Map?PRO_UID=" + sNewProUid;
+ Ext.getCmp('objectsToImport').setValue("");
+ Ext.getCmp('importProcessExistGroupWindow').close();
+ Ext.getCmp('importProcessExistProcessWindow').close();
+ Ext.getCmp('importProcessWindow').close();
+ Ext.MessageBox.show({
+ title: _('ID_ERROR'),
+ msg: resp_.catchMessage,
+ buttons: Ext.MessageBox.OK,
+ animEl: 'mb9',
+ fn: function () {},
+ icon: Ext.MessageBox.ERROR
+ });
+ processesGrid.store.reload();
}
},
failure: function(o, resp) {
|