diff --git a/gulliver/system/class.inputfilter.php b/gulliver/system/class.inputfilter.php index 87c790a7c..0ff8fcb9e 100644 --- a/gulliver/system/class.inputfilter.php +++ b/gulliver/system/class.inputfilter.php @@ -413,7 +413,7 @@ class InputFilter * @author Marcelo Cuiza * @access protected * @param Array or String $input - * @param String $type + * @param String $type (url) * @return Array or String $input */ function xssFilterHard($input, $type = "") @@ -514,7 +514,7 @@ class InputFilter * @param Array $values * @return String $query */ - function preventSqlInjection($query, $values = Array(), &$con = NULL) + function preventSqlInjection($query, $values = Array(), $con = NULL) { if(is_array($values) && sizeof($values)) { foreach($values as $k1 => $val1) { @@ -535,12 +535,12 @@ class InputFilter } /** - * Internal method: protect against SQL injenction + * Internal method: validate user input * @author Marcelo Cuiza * @access protected - * @param String $value - * @param String or Array $types - * @param String $valType + * @param String $value (required) + * @param Array or String $types ( string | int | float | boolean | path | nosql ) + * @param String $valType ( validate | sanitize ) * @return String $value */ function validateInput($value, $types = 'string', $valType = 'sanitize') diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 2a2dd14ba..7e81cab80 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -746,31 +746,45 @@ class Derivation } //switch } } + //SETS THE APP_PROC_CODE //if (isset($nextDel['TAS_DEF_PROC_CODE'])) //$appFields['APP_PROC_CODE'] = $nextDel['TAS_DEF_PROC_CODE']; /*----------------------------------********---------------------------------*/ - $taskCur = TaskPeer::retrieveByPK( $nextDel['TAS_UID']); - $aTask = $taskCur->toArray( BasePeer::TYPE_FIELDNAME ); - $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); - if (!in_array($aTask['TAS_TYPE'], $arrayTaskTypeToExclude)) { - if (!empty($iNewDelIndex) && empty($aSP)) { - $oAppDel = AppDelegationPeer::retrieveByPK( $appFields['APP_UID'], $iNewDelIndex ); - $aFields = $oAppDel->toArray( BasePeer::TYPE_FIELDNAME ); - $aFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; - $aFields['REMOVED_LIST'] = $removeList; - $inbox = new ListInbox(); - $inbox->newRow($aFields, $appFields['CURRENT_USER_UID'], false, array(), ($nextDel['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE' ? true : false)); - $removeList = false; - } - } else { - $oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']); - $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); - $users = new Users(); - if ($aFields['APP_STATUS'] == 'DRAFT') { - $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft'); + if ($nextDel['TAS_UID'] != '-1') { + $taskCur = TaskPeer::retrieveByPK($nextDel['TAS_UID']); + $aTask = $taskCur->toArray( BasePeer::TYPE_FIELDNAME ); + $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); + if (!in_array($aTask['TAS_TYPE'], $arrayTaskTypeToExclude)) { + if (!empty($iNewDelIndex) && empty($aSP)) { + $oAppDel = AppDelegationPeer::retrieveByPK( $appFields['APP_UID'], $iNewDelIndex ); + $aFields = $oAppDel->toArray( BasePeer::TYPE_FIELDNAME ); + $aFields['APP_STATUS'] = $currentDelegation['APP_STATUS']; + $aFields['REMOVED_LIST'] = $removeList; + $inbox = new ListInbox(); + $inbox->newRow($aFields, $appFields['CURRENT_USER_UID'], false, array(), ($nextDel['TAS_ASSIGN_TYPE'] == 'SELF_SERVICE' ? true : false)); + $removeList = false; + } else { + if (empty($aSP)) { + $oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']); + $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); + $users = new Users(); + if ($aFields['APP_STATUS'] == 'DRAFT') { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft'); + } else { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox'); + } + } + } } else { - $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox'); + $oRow = ApplicationPeer::retrieveByPK($appFields['APP_UID']); + $aFields = $oRow->toArray( BasePeer::TYPE_FIELDNAME ); + $users = new Users(); + if ($aFields['APP_STATUS'] == 'DRAFT') { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'draft'); + } else { + $users->refreshTotal($appFields['CURRENT_USER_UID'], 'remove', 'inbox'); + } } } /*----------------------------------********---------------------------------*/ diff --git a/workflow/engine/classes/model/AppCacheView.php b/workflow/engine/classes/model/AppCacheView.php index 4c7da1043..71e0be44d 100755 --- a/workflow/engine/classes/model/AppCacheView.php +++ b/workflow/engine/classes/model/AppCacheView.php @@ -102,10 +102,6 @@ class AppCacheView extends BaseAppCacheView $criteria->addSelectColumn(AppCacheViewPeer::TAS_UID); $criteria->addSelectColumn(AppCacheViewPeer::PRO_UID); - $arrayTaskTypeToExclude = array("WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT"); - $criteria->addJoin(AppCacheViewPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); - $criteria->add(TaskPeer::TAS_TYPE, $arrayTaskTypeToExclude, Criteria::NOT_IN); - $criteria->add(AppCacheViewPeer::APP_STATUS, "TO_DO", CRITERIA::EQUAL); if (!empty($userUid)) { diff --git a/workflow/engine/classes/model/ListMyInbox.php b/workflow/engine/classes/model/ListMyInbox.php index 61d90ff37..b2cc4860b 100644 --- a/workflow/engine/classes/model/ListMyInbox.php +++ b/workflow/engine/classes/model/ListMyInbox.php @@ -123,7 +123,10 @@ class ListMyInbox extends BaseListMyInbox if ($data['DEL_INDEX'] == 1 && $data['APP_STATUS'] == 'TO_DO') { $data['APP_CREATE_DATE'] = $data['APP_UPDATE_DATE']; - $this->remove($data['APP_UID'], $data['USR_UID']); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ListMyInboxPeer::APP_UID, $data['APP_UID']); + $oCriteria->add(ListMyInboxPeer::USR_UID, $data['USR_UID']); + ListMyInboxPeer::doDelete($oCriteria); $this->create($data); } else { unset($data['USR_UID']); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Light.php b/workflow/engine/src/ProcessMaker/Services/Api/Light.php index ea3b3382a..da841a043 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Light.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Light.php @@ -26,14 +26,34 @@ class Light extends Api public function countersCases () { try { - $oMobile = new \ProcessMaker\BusinessModel\Light(); - $counterCase = $oMobile->getCounterCase($this->getUserId()); + $userId = $this->getUserId(); + $lists = new \ProcessMaker\BusinessModel\Lists(); + $response = $lists->getCounters($userId); + $result = $this->parserCountersCases($response); } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } - return $counterCase; + return $result; } + public function parserCountersCases ($data) + { + $structure = array( + "CASES_INBOX" => "toDo", + "CASES_DRAFT" => "draft", + "CASES_CANCELLED" => "cancelled", + "CASES_SENT" => "participated", + "CASES_PAUSED" => "paused", + "CASES_COMPLETED" => "completed", + "CASES_SELFSERVICE" => "unassigned", + ); + $response = array(); + foreach ($data as $counterList) { + $name = $structure[$counterList['item']]; + $response[$name] = $counterList['count']; + } + return $response; + } /** * Get list process start * @return array