From 0e22641c861a66510bfebc9d673a522f14329b69 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Tue, 15 Aug 2017 16:37:58 -0400 Subject: [PATCH 1/3] HOR-3648 --- framework/src/Maveriks/WebApplication.php | 1 + workflow/engine/classes/Cases.php | 28 +++++++++---------- .../engine/classes/model/ObjectPermission.php | 10 ++++--- .../src/ProcessMaker/Services/Api/Cases.php | 23 ++++++++++++++- .../Services/Api/Cases/InputDocument.php | 2 ++ 5 files changed, 45 insertions(+), 19 deletions(-) diff --git a/framework/src/Maveriks/WebApplication.php b/framework/src/Maveriks/WebApplication.php index faf88a941..05d4dde7e 100644 --- a/framework/src/Maveriks/WebApplication.php +++ b/framework/src/Maveriks/WebApplication.php @@ -519,6 +519,7 @@ class WebApplication define('MEMCACHED_ENABLED', $arraySystemConfiguration['memcached']); define('MEMCACHED_SERVER', $arraySystemConfiguration['memcached_server']); define('SYS_SKIN', $arraySystemConfiguration['default_skin']); + define('DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION', $arraySystemConfiguration['disable_download_documents_session_validation']); require_once (PATH_DB . SYS_SYS . "/db.php"); diff --git a/workflow/engine/classes/Cases.php b/workflow/engine/classes/Cases.php index 30321f0e7..203dc597f 100644 --- a/workflow/engine/classes/Cases.php +++ b/workflow/engine/classes/Cases.php @@ -5779,13 +5779,13 @@ class Cases */ public function getAllObjectsFrom($proUid, $appUid, $tasUid = '', $usrUid = '', $action = '', $delIndex = 0) { - $aCase = $this->loadCase($appUid); + $caseData = $this->loadCase($appUid); if ($delIndex != 0) { $appDelay = new AppDelay(); if ($appDelay->isPaused($appUid, $delIndex)) { - $aCase["APP_STATUS"] = "PAUSED"; + $caseData["APP_STATUS"] = "PAUSED"; } } @@ -5804,8 +5804,8 @@ class Cases ); $oObjectPermission = new ObjectPermission(); - $userPermissions = $oObjectPermission->verifyObjectPermissionPerUser($usrUid, $proUid, $tasUid, $action); - $groupPermissions = $oObjectPermission->verifyObjectPermissionPerGroup($usrUid, $proUid, $tasUid, $action); + $userPermissions = $oObjectPermission->verifyObjectPermissionPerUser($usrUid, $proUid, $tasUid, $action, $caseData); + $groupPermissions = $oObjectPermission->verifyObjectPermissionPerGroup($usrUid, $proUid, $tasUid, $action, $caseData); $permissions = array_merge($userPermissions, $groupPermissions); foreach ($permissions as $row) { @@ -5845,7 +5845,7 @@ class Cases $appUid, $opTaskSource, $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); //For Ouputs $result['OUTPUT'] = $oObjectPermission->objectPermissionByOutputInput( @@ -5854,7 +5854,7 @@ class Cases $opTaskSource, 'OUTPUT', $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); //For Inputs $result['INPUT'] = $oObjectPermission->objectPermissionByOutputInput( @@ -5863,7 +5863,7 @@ class Cases $opTaskSource, 'INPUT', $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); //For Attachment $result['ATTACHMENT'] = $oObjectPermission->objectPermissionByOutputInput( @@ -5872,7 +5872,7 @@ class Cases $opTaskSource, 'ATTACHED', $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); $result['CASES_NOTES'] = 1; @@ -5888,7 +5888,7 @@ class Cases $action, $opTaskSource, $opUserRelation, - $aCase['APP_STATUS'], + $caseData['APP_STATUS'], $opParticipated ); break; @@ -5897,7 +5897,7 @@ class Cases $appUid, $opTaskSource, $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); break; case 'INPUT': @@ -5907,7 +5907,7 @@ class Cases $opTaskSource, 'INPUT', $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); break; case 'ATTACHMENT': @@ -5917,7 +5917,7 @@ class Cases $opTaskSource, 'ATTACHED', $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); break; case 'OUTPUT': @@ -5927,7 +5927,7 @@ class Cases $opTaskSource, 'OUTPUT', $opObjUid, - $aCase['APP_STATUS'] + $caseData['APP_STATUS'] ); break; case 'CASES_NOTES': @@ -5946,7 +5946,7 @@ class Cases $action, $opTaskSource, $opUserRelation, - $aCase['APP_STATUS'], + $caseData['APP_STATUS'], $opParticipated ); break; diff --git a/workflow/engine/classes/model/ObjectPermission.php b/workflow/engine/classes/model/ObjectPermission.php index 04af9b9fe..e67cf340d 100644 --- a/workflow/engine/classes/model/ObjectPermission.php +++ b/workflow/engine/classes/model/ObjectPermission.php @@ -157,10 +157,11 @@ class ObjectPermission extends BaseObjectPermission * @param string $proUid the uid of the process * @param string $tasUid the uid of the task * @param string $action for the object permissions VIEW, BLOCK, RESEND + * @param array $caseData for review the case status DRAFT, TODO, COMPLETED, PAUSED * * @return array */ - public function verifyObjectPermissionPerUser ($usrUid, $proUid, $tasUid = '', $action = '') + public function verifyObjectPermissionPerUser ($usrUid, $proUid, $tasUid = '', $action = '', $caseData = array()) { $userPermissions = array(); $oCriteria = new Criteria('workflow'); @@ -188,7 +189,7 @@ class ObjectPermission extends BaseObjectPermission $row = $rs->getRow(); if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" || - $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"] + $row["OP_CASE_STATUS"] == $caseData["APP_STATUS"] ) { array_push($userPermissions, $row); } @@ -203,10 +204,11 @@ class ObjectPermission extends BaseObjectPermission * @param string $proUid the uid of the process * @param string $tasUid the uid of the task * @param string $action for the object permissions VIEW, BLOCK, RESEND + * @param array $caseData for review the case status DRAFT, TODO, COMPLETED, PAUSED * * @return array */ - public function verifyObjectPermissionPerGroup ($usrUid, $proUid, $tasUid = '', $action = '') + public function verifyObjectPermissionPerGroup ($usrUid, $proUid, $tasUid = '', $action = '', $caseData = array()) { $gr = new Groups(); $records = $gr->getActiveGroupsForAnUser($usrUid); @@ -231,7 +233,7 @@ class ObjectPermission extends BaseObjectPermission $row = $rs->getRow(); if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" || - $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"] + $row["OP_CASE_STATUS"] == $caseData["APP_STATUS"] ) { array_push($groupPermissions, $row); } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Cases.php b/workflow/engine/src/ProcessMaker/Services/Api/Cases.php index d12ef50f1..47818ac73 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Cases.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Cases.php @@ -5,6 +5,7 @@ use \ProcessMaker\Services\Api; use \Luracast\Restler\RestException; use \ProcessMaker\Util\DateTime; use \ProcessMaker\BusinessModel\Validator; +use AppDocument; /** * Cases Api Controller @@ -108,7 +109,27 @@ class Cases extends Api } } break; - } + case 'doDownloadInputDocument': + //Verify if the user can be download the file + $appDocUid = $this->parameters[$arrayArgs['app_doc_uid']]; + $version = $this->parameters[$arrayArgs['v']]; + $usrUid = $this->getUserId(); + $oAppDocument = new AppDocument(); + if ($version == 0) { + $docVersion = $oAppDocument->getLastAppDocVersion($appDocUid); + } else { + $docVersion = $version; + } + if (defined('DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION') && DISABLE_DOWNLOAD_DOCUMENTS_SESSION_VALIDATION == 0) { + if ($oAppDocument->canDownloadInput($usrUid, $appDocUid, $docVersion)) { + return true; + } + } else { + return true; + } + break; + } + return false; } catch (\Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php b/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php index 7a2f48c42..b187f8243 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php @@ -54,6 +54,8 @@ class InputDocument extends Api } /** + * @access protected + * @class AccessControl {@className \ProcessMaker\Services\Api\Cases} * @url GET /:app_uid/input-document/:app_doc_uid/file * * @param string $app_uid {@min 32}{@max 32} From c60bb07f75c6909242b626c5e6e37420b9df3124 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Wed, 16 Aug 2017 07:34:48 -0400 Subject: [PATCH 2/3] HOR-3703 --- .../BusinessModel/Cases/InputDocument.php | 457 +++++++++++------- .../Services/Api/Cases/InputDocument.php | 21 + 2 files changed, 304 insertions(+), 174 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php index 8e34eb0d9..853095c30 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases/InputDocument.php @@ -2,25 +2,48 @@ namespace ProcessMaker\BusinessModel\Cases; use ProcessMaker\Plugins\PluginRegistry; +use AppDocument; +use AppDocumentPeer; +use Exception; +use Criteria; +use ResultSet; +use G; +use ObjectPermissionPeer; +use StepPeer; +use StepSupervisorPeer; +use AppDelegation; +use AppDelegationPeer; +use Users; +use Configurations; +use Bootstrap; +use WsBase; +use ApplicationPeer; +use ProcessMaker\BusinessModel\ProcessSupervisor; +use ProcessMaker\BusinessModel\Cases AS BusinessModelCases; +use Cases; +use ProcessUserPeer; +use AppFolder; + class InputDocument { /** * Verify exists app_doc_uid in table APP_DOCUMENT * - * @param string $applicationUid + * @param string $appDocumentUid * - * return void Throw exception + * @return void Throw exception + * @throws Exception */ private function throwExceptionIfNotExistsAppDocument($appDocumentUid) { try { - $appDocument = \AppDocumentPeer::retrieveByPK($appDocumentUid, 1); + $appDocument = AppDocumentPeer::retrieveByPK($appDocumentUid, 1); if (is_null($appDocument)) { - throw new \Exception(\G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($appDocumentUid))); + throw new Exception(G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($appDocumentUid))); } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -31,15 +54,16 @@ class InputDocument * @param string $applicationUid Unique id of Case * @param string $delIndex Delegataion index * @param string $userUid Unique id of User - * @param string $inputDocumentUid + * @param string $appDocumentUid * - * return void Throw exception the user does not have permission to delete + * @return void Throw exception the user does not have permission to delete + * @throws Exception */ public function throwExceptionIfHaventPermissionToDelete($applicationUid, $delIndex, $userUid, $appDocumentUid) { try { //Verify data inbox - $case = new \ProcessMaker\BusinessModel\Cases(); + $case = new BusinessModelCases(); $arrayResult = $case->getStatusInfo($applicationUid, $delIndex, $userUid); $flagInbox = 1; @@ -49,11 +73,11 @@ class InputDocument } //Verify data Supervisor - $application = \ApplicationPeer::retrieveByPK($applicationUid); + $application = ApplicationPeer::retrieveByPK($applicationUid); $flagSupervisor = 0; - $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); + $supervisor = new ProcessSupervisor(); $processSupervisor= $supervisor->getProcessSupervisors($application->getProUid(), "ASSIGNED"); $arraySupervisor = $processSupervisor["data"]; @@ -66,7 +90,7 @@ class InputDocument } if ($flagInbox == 0 && $flagSupervisor == 0) { - throw new \Exception(\G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION_DELETE_INPUT_DOCUMENT", array($userUid))); + throw new Exception(G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION_DELETE_INPUT_DOCUMENT", array($userUid))); } //verfiry exists $appDocumentUid @@ -75,16 +99,16 @@ class InputDocument //Verify data permission $flagPermission = 0; - $criteria = new \Criteria("workflow"); + $criteria = new Criteria("workflow"); - $criteria->addSelectColumn(\AppDocumentPeer::DOC_UID); + $criteria->addSelectColumn(AppDocumentPeer::DOC_UID); - $criteria->add(\AppDocumentPeer::APP_DOC_UID, $appDocumentUid, \Criteria::EQUAL); - $criteria->add(\AppDocumentPeer::APP_UID, $applicationUid, \Criteria::EQUAL); - $criteria->add(\AppDocumentPeer::APP_DOC_TYPE, "INPUT", \Criteria::EQUAL); + $criteria->add(AppDocumentPeer::APP_DOC_UID, $appDocumentUid, Criteria::EQUAL); + $criteria->add(AppDocumentPeer::APP_UID, $applicationUid, Criteria::EQUAL); + $criteria->add(AppDocumentPeer::APP_DOC_TYPE, "INPUT", Criteria::EQUAL); - $rsCriteria = \AppDocumentPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteria = AppDocumentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -92,27 +116,27 @@ class InputDocument $inputDocumentUid = $row["DOC_UID"]; //Criteria - $criteria2 = new \Criteria("workflow"); + $criteria2 = new Criteria("workflow"); - $criteria2->addSelectColumn(\ObjectPermissionPeer::OP_UID); + $criteria2->addSelectColumn(ObjectPermissionPeer::OP_UID); - $criteria2->add(\ObjectPermissionPeer::PRO_UID, $application->getProUid(), \Criteria::EQUAL); - $criteria2->add(\ObjectPermissionPeer::OP_OBJ_TYPE, "INPUT", \Criteria::EQUAL); + $criteria2->add(ObjectPermissionPeer::PRO_UID, $application->getProUid(), Criteria::EQUAL); + $criteria2->add(ObjectPermissionPeer::OP_OBJ_TYPE, "INPUT", Criteria::EQUAL); $criteria2->add( - $criteria2->getNewCriterion(\ObjectPermissionPeer::OP_OBJ_UID, $inputDocumentUid, \Criteria::EQUAL)->addOr( - $criteria2->getNewCriterion(\ObjectPermissionPeer::OP_OBJ_UID, "0", \Criteria::EQUAL))->addOr( - $criteria2->getNewCriterion(\ObjectPermissionPeer::OP_OBJ_UID, "", \Criteria::EQUAL)) + $criteria2->getNewCriterion(ObjectPermissionPeer::OP_OBJ_UID, $inputDocumentUid, Criteria::EQUAL)->addOr( + $criteria2->getNewCriterion(ObjectPermissionPeer::OP_OBJ_UID, "0", Criteria::EQUAL))->addOr( + $criteria2->getNewCriterion(ObjectPermissionPeer::OP_OBJ_UID, "", Criteria::EQUAL)) ); - $criteria2->add(\ObjectPermissionPeer::OP_ACTION, "DELETE", \Criteria::EQUAL); + $criteria2->add(ObjectPermissionPeer::OP_ACTION, "DELETE", Criteria::EQUAL); //User $criteriaU = clone $criteria2; - $criteriaU->add(\ObjectPermissionPeer::OP_USER_RELATION, 1, \Criteria::EQUAL); - $criteriaU->add(\ObjectPermissionPeer::USR_UID, $userUid, \Criteria::EQUAL); + $criteriaU->add(ObjectPermissionPeer::OP_USER_RELATION, 1, Criteria::EQUAL); + $criteriaU->add(ObjectPermissionPeer::USR_UID, $userUid, Criteria::EQUAL); - $rsCriteriaU = \ObjectPermissionPeer::doSelectRS($criteriaU); - $rsCriteriaU->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteriaU = ObjectPermissionPeer::doSelectRS($criteriaU); + $rsCriteriaU->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteriaU->next()) { $flagPermission = 1; @@ -122,13 +146,13 @@ class InputDocument if ($flagPermission == 0) { $criteriaG = clone $criteria2; - $criteriaG->add(\ObjectPermissionPeer::OP_USER_RELATION, 2, \Criteria::EQUAL); + $criteriaG->add(ObjectPermissionPeer::OP_USER_RELATION, 2, Criteria::EQUAL); - $criteriaG->addJoin(\ObjectPermissionPeer::USR_UID, \GroupUserPeer::GRP_UID, \Criteria::LEFT_JOIN); - $criteriaG->add(\GroupUserPeer::USR_UID, $userUid, \Criteria::EQUAL); + $criteriaG->addJoin(ObjectPermissionPeer::USR_UID, GroupUserPeer::GRP_UID, Criteria::LEFT_JOIN); + $criteriaG->add(GroupUserPeer::USR_UID, $userUid, Criteria::EQUAL); - $rsCriteriaG = \ObjectPermissionPeer::doSelectRS($criteriaG); - $rsCriteriaG->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteriaG = ObjectPermissionPeer::doSelectRS($criteriaG); + $rsCriteriaG->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteriaG->next()) { $flagPermission = 1; @@ -137,9 +161,9 @@ class InputDocument } if ($flagPermission == 0) { - throw new \Exception(\G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION_DELETE_INPUT_DOCUMENT", array($userUid))); + throw new Exception(G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION_DELETE_INPUT_DOCUMENT", array($userUid))); } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -151,53 +175,54 @@ class InputDocument * @param string $delIndex Delegataion index * @param string $appDocumentUid * - * return void Throw exception if not exists input Document in Steps + * @return void Throw exception if not exists input Document in Steps + * @throws Exception */ - public function throwExceptionIfInputDocumentNotExistsInSteps($applicacionUid, $delIndex, $appDocumentUid) + public function throwExceptionIfInputDocumentNotExistsInSteps($applicationUid, $delIndex, $appDocumentUid) { try { //Verify Case - $appDelegation = \AppDelegationPeer::retrieveByPK($applicacionUid, $delIndex); + $appDelegation = AppDelegationPeer::retrieveByPK($applicationUid, $delIndex); if (is_null($appDelegation)) { - throw new \Exception(\G::LoadTranslation("ID_CASE_DEL_INDEX_DOES_NOT_EXIST", array("app_uid", $applicacionUid, "del_index", $delIndex))); + throw new Exception(G::LoadTranslation("ID_CASE_DEL_INDEX_DOES_NOT_EXIST", array("app_uid", $applicationUid, "del_index", $delIndex))); } $taskUid = $appDelegation->getTasUid(); //Verify Steps - $criteria = new \Criteria("workflow"); + $criteria = new Criteria("workflow"); - $criteria->addSelectColumn(\AppDocumentPeer::DOC_UID); + $criteria->addSelectColumn(AppDocumentPeer::DOC_UID); - $criteria->add(\AppDocumentPeer::APP_DOC_UID, $appDocumentUid, \Criteria::EQUAL); - $criteria->add(\AppDocumentPeer::APP_UID, $applicacionUid, \Criteria::EQUAL); - $criteria->add(\AppDocumentPeer::APP_DOC_TYPE, "INPUT", \Criteria::EQUAL); + $criteria->add(AppDocumentPeer::APP_DOC_UID, $appDocumentUid, Criteria::EQUAL); + $criteria->add(AppDocumentPeer::APP_UID, $applicationUid, Criteria::EQUAL); + $criteria->add(AppDocumentPeer::APP_DOC_TYPE, "INPUT", Criteria::EQUAL); - $rsCriteria = \AppDocumentPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteria = AppDocumentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $inputDocumentUid = $row["DOC_UID"]; - $criteria = new \Criteria("workflow"); + $criteria = new Criteria("workflow"); - $criteria->addSelectColumn(\StepPeer::STEP_UID); + $criteria->addSelectColumn(StepPeer::STEP_UID); - $criteria->add(\StepPeer::TAS_UID, $taskUid, \Criteria::EQUAL); - $criteria->add(\StepPeer::STEP_TYPE_OBJ, "INPUT_DOCUMENT", \Criteria::EQUAL); - $criteria->add(\StepPeer::STEP_UID_OBJ, $inputDocumentUid, \Criteria::EQUAL); + $criteria->add(StepPeer::TAS_UID, $taskUid, Criteria::EQUAL); + $criteria->add(StepPeer::STEP_TYPE_OBJ, "INPUT_DOCUMENT", Criteria::EQUAL); + $criteria->add(StepPeer::STEP_UID_OBJ, $inputDocumentUid, Criteria::EQUAL); - $rsCriteria = \StepPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteria = StepPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); if (!$rsCriteria->next()) { - throw new \Exception(\G::LoadTranslation("ID_CASES_INPUT_DOCUMENT_DOES_NOT_EXIST", array($appDocumentUid))); + throw new Exception(G::LoadTranslation("ID_CASES_INPUT_DOCUMENT_DOES_NOT_EXIST", array($appDocumentUid))); } } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -205,39 +230,40 @@ class InputDocument /** * Get criteria for AppDocument * - * return object + * @return object + * @throws Exception */ public function getAppDocumentCriteriaByData($applicationUid) { try { - $criteria = new \Criteria("workflow"); + $criteria = new Criteria("workflow"); - $criteria->addSelectColumn(\AppDocumentPeer::APP_DOC_UID); - $criteria->addSelectColumn(\AppDocumentPeer::DOC_VERSION); - $criteria->addSelectColumn(\AppDocumentPeer::DOC_UID); - $criteria->addSelectColumn(\AppDocumentPeer::USR_UID); - $criteria->addSelectColumn(\AppDocumentPeer::APP_DOC_TYPE); - $criteria->addSelectColumn(\AppDocumentPeer::APP_DOC_CREATE_DATE); - $criteria->addSelectColumn(\AppDocumentPeer::APP_DOC_INDEX); + $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID); + $criteria->addSelectColumn(AppDocumentPeer::DOC_VERSION); + $criteria->addSelectColumn(AppDocumentPeer::DOC_UID); + $criteria->addSelectColumn(AppDocumentPeer::USR_UID); + $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE); + $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_CREATE_DATE); + $criteria->addSelectColumn(AppDocumentPeer::APP_DOC_INDEX); $sql = " SELECT MAX(APPDOC.DOC_VERSION) - FROM " . \AppDocumentPeer::TABLE_NAME . " AS APPDOC - WHERE APPDOC.APP_DOC_UID = " . \AppDocumentPeer::APP_DOC_UID . " + FROM " . AppDocumentPeer::TABLE_NAME . " AS APPDOC + WHERE APPDOC.APP_DOC_UID = " . AppDocumentPeer::APP_DOC_UID . " "; $criteria->add( - $criteria->getNewCriterion(\AppDocumentPeer::APP_UID, $applicationUid, \Criteria::EQUAL)->addAnd( - $criteria->getNewCriterion(\AppDocumentPeer::APP_DOC_TYPE, array("INPUT", "ATTACHED"), \Criteria::IN))->addAnd( - $criteria->getNewCriterion(\AppDocumentPeer::APP_DOC_STATUS, array("ACTIVE"), \Criteria::IN))->addAnd( - $criteria->getNewCriterion(\AppDocumentPeer::DOC_VERSION, \AppDocumentPeer::DOC_VERSION . " IN ($sql)", \Criteria::CUSTOM)) + $criteria->getNewCriterion(AppDocumentPeer::APP_UID, $applicationUid, Criteria::EQUAL)->addAnd( + $criteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, array("INPUT", "ATTACHED"), Criteria::IN))->addAnd( + $criteria->getNewCriterion(AppDocumentPeer::APP_DOC_STATUS, array("ACTIVE"), Criteria::IN))->addAnd( + $criteria->getNewCriterion(AppDocumentPeer::DOC_VERSION, AppDocumentPeer::DOC_VERSION . " IN ($sql)", Criteria::CUSTOM)) ); - $criteria->addAscendingOrderByColumn(\AppDocumentPeer::APP_DOC_INDEX); + $criteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX); //Return return $criteria; - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -247,23 +273,43 @@ class InputDocument * * @param array $record Record * - * return array Return an array with data AppDocument + * @return array Return an array with data AppDocument + * @throws Exception */ public function getAppDocumentDataFromRecord(array $record) { try { - return array( - "app_doc_uid" => $record["APP_DOC_UID"], - "app_doc_filename" => $record["APP_DOC_FILENAME"], - "doc_uid" => $record["DOC_UID"], - "app_doc_version" => $record["DOC_VERSION"], - "app_doc_create_date" => $record["APP_DOC_CREATE_DATE"], - "app_doc_create_user" => $record["APP_DOC_CREATE_USER"], - "app_doc_type" => $record["APP_DOC_TYPE"], - "app_doc_index" => (int)($record["APP_DOC_INDEX"]), - "app_doc_link" => $record["APP_DOC_LINK"] - ); - } catch (\Exception $e) { + $newArray = array(); + if (isset($record["APP_DOC_UID"])) { + $newArray["app_doc_uid"] = $record["APP_DOC_UID"]; + } + if (isset($record["APP_DOC_FILENAME"])) { + $newArray["app_doc_filename"] = $record["APP_DOC_FILENAME"]; + } + if (isset($record["DOC_UID"])) { + $newArray["doc_uid"] = $record["DOC_UID"]; + } + if (isset($record["DOC_VERSION"])) { + $newArray["app_doc_version"] = $record["DOC_VERSION"]; + } + if (isset($record["APP_DOC_CREATE_DATE"])) { + $newArray["app_doc_create_date"] = $record["APP_DOC_CREATE_DATE"]; + } + if (isset($record["APP_DOC_CREATE_USER"])) { + $newArray["app_doc_create_user"] = $record["APP_DOC_CREATE_USER"]; + } + if (isset($record["APP_DOC_TYPE"])) { + $newArray["app_doc_type"] = $record["APP_DOC_TYPE"]; + } + if (isset($record["APP_DOC_INDEX"])) { + $newArray["app_doc_index"] = $record["APP_DOC_INDEX"]; + } + if (isset($record["APP_DOC_LINK"])) { + $newArray["app_doc_link"] = $record["APP_DOC_LINK"]; + } + + return $newArray; + } catch (Exception $e) { throw $e; } } @@ -274,17 +320,18 @@ class InputDocument * @param string $applicationUid Unique id of Case * @param string $userUid Unique id of User * - * return array Return data of input documents + * @return array Return data of input documents + * @throws Exception */ public function getCasesInputDocumentsBySupervisor($applicationUid, $userUid) { try { //Verify data Supervisor - $application = \ApplicationPeer::retrieveByPK($applicationUid); + $application = ApplicationPeer::retrieveByPK($applicationUid); $flagSupervisor = 0; - $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); + $supervisor = new ProcessSupervisor(); $processSupervisor = $supervisor->getProcessSupervisors($application->getProUid(), "ASSIGNED"); $arraySupervisor = $processSupervisor["data"]; @@ -295,9 +342,9 @@ class InputDocument } } - $user = new \Users(); - $appDocument = new \AppDocument(); - $configuraction = new \Configurations(); + $user = new Users(); + $appDocument = new AppDocument(); + $configuraction = new Configurations(); $confEnvSetting = $configuraction->getFormats(); @@ -306,8 +353,8 @@ class InputDocument //Query $criteria = $this->getAppDocumentCriteriaByData($applicationUid); - $rsCriteria = \AppDocumentPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteria = AppDocumentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -324,12 +371,12 @@ class InputDocument } if (!empty($arrayInputDocument) && $flagSupervisor == 0) { - throw new \Exception(\G::LoadTranslation("ID_USER_IS_NOT_SUPERVISOR")); + throw new Exception(G::LoadTranslation("ID_USER_IS_NOT_SUPERVISOR")); } //Return return $arrayInputDocument; - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -340,13 +387,14 @@ class InputDocument * @param string $applicationUid * @param string $userUid * - * return array Return an array with data of an InputDocument + * @return array Return an array with data of an InputDocument + * @throws Exception */ public function getCasesInputDocuments($applicationUid, $userUid) { try { //Verify data inbox - $case = new \ProcessMaker\BusinessModel\Cases(); + $case = new BusinessModelCases(); $arrayResult = $case->getStatusInfo($applicationUid, 0, $userUid); $flagInbox = true; @@ -355,9 +403,9 @@ class InputDocument $flagInbox = false; } - $user = new \Users(); - $appDocument = new \AppDocument(); - $configuraction = new \Configurations(); + $user = new Users(); + $appDocument = new AppDocument(); + $configuraction = new Configurations(); $confEnvSetting = $configuraction->getFormats(); @@ -367,11 +415,11 @@ class InputDocument $criteria = $this->getAppDocumentCriteriaByData($applicationUid); if (!$flagInbox) { - $criteria->add(\AppDocumentPeer::USR_UID, $userUid, \Criteria::EQUAL); + $criteria->add(AppDocumentPeer::USR_UID, $userUid, Criteria::EQUAL); } - $rsCriteria = \AppDocumentPeer::doSelectRS($criteria); - $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $rsCriteria = AppDocumentPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); @@ -393,7 +441,7 @@ class InputDocument //Return return $arrayInputDocument; - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -405,7 +453,8 @@ class InputDocument * @param string $userUid * @param string $inputDocumentUid * - * return array Return an array with data of an InputDocument + * @return array Return an array with data of an InputDocument + * @throws Exception */ public function getCasesInputDocument($applicationUid, $userUid, $inputDocumentUid) { @@ -413,11 +462,11 @@ class InputDocument $sApplicationUID = $applicationUid; $sUserUID = $userUid; - $oCase = new \Cases(); + $oCase = new Cases(); $fields = $oCase->loadCase( $sApplicationUID ); $sProcessUID = $fields['PRO_UID']; $sTaskUID = ''; - $oCaseRest = new \ProcessMaker\BusinessModel\Cases(); + $oCaseRest = new BusinessModelCases(); $oCaseRest->getAllUploadedDocumentsCriteria( $sProcessUID, $sApplicationUID, $sTaskUID, $sUserUID ); $result = array (); global $_DBArray; @@ -439,7 +488,7 @@ class InputDocument if ($docrow["app_doc_uid"] == $inputDocumentUid) { $flagInputDocument = true; - $appDocument = \AppDocumentPeer::retrieveByPK($inputDocumentUid, $row["DOC_VERSION"]); + $appDocument = AppDocumentPeer::retrieveByPK($inputDocumentUid, $row["DOC_VERSION"]); if (is_null($appDocument)) { $flagInputDocument = false; @@ -452,12 +501,12 @@ class InputDocument } if (!$flagInputDocument) { - throw new \Exception(\G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($inputDocumentUid))); + throw new Exception(G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($inputDocumentUid))); } $oResponse = json_decode(json_encode($result), false); return $oResponse; - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -468,12 +517,12 @@ class InputDocument * @param $app_uid * @param $app_doc_uid * @param $version - * @throws \Exception + * @throws Exception */ public function downloadInputDocument($app_uid, $app_doc_uid, $version) { try { - $oAppDocument = new \AppDocument(); + $oAppDocument = new AppDocument(); if ($version == 0) { $docVersion = $oAppDocument->getLastAppDocVersion($app_doc_uid); } else { @@ -484,8 +533,8 @@ class InputDocument $iDocVersion = $oAppDocument->getDocVersion(); $info = pathinfo($oAppDocument->getAppDocFilename()); - $app_uid = \G::getPathFromUID($oAppDocument->Fields['APP_UID']); - $file = \G::getPathFromFileUID($oAppDocument->Fields['APP_UID'], $sAppDocUid); + $app_uid = G::getPathFromUID($oAppDocument->Fields['APP_UID']); + $file = G::getPathFromFileUID($oAppDocument->Fields['APP_UID'], $sAppDocUid); $ext = (isset($info['extension']) ? $info['extension'] : ''); $realPath = PATH_DOCUMENT . $app_uid . '/' . $file[0] . $file[1] . '_' . $iDocVersion . '.' . $ext; @@ -513,7 +562,7 @@ class InputDocument } @fclose($fp); } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -691,19 +740,20 @@ class InputDocument * * @param string $inputDocumentUid * - * return array Return an array with data of an InputDocument + * @return array Return an array with data of an InputDocument + * @throws Exception */ public function removeInputDocument($inputDocumentUid) { try { - $oAppDocument = \AppDocumentPeer::retrieveByPK( $inputDocumentUid, 1 ); + $oAppDocument = AppDocumentPeer::retrieveByPK( $inputDocumentUid, 1 ); if (is_null( $oAppDocument ) || $oAppDocument->getAppDocStatus() == 'DELETED') { - throw new \Exception(\G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($inputDocumentUid))); + throw new Exception(G::LoadTranslation("ID_CASES_INPUT_DOES_NOT_EXIST", array($inputDocumentUid))); } - $ws = new \WsBase(); + $ws = new WsBase(); $ws->removeDocument($inputDocumentUid); - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } @@ -717,7 +767,8 @@ class InputDocument * @param string $inputDocumentUid * @param string $userUid * - * return array Return an array with data of an InputDocument + * @return array Return an array with data of an InputDocument + * @throws Exception */ public function addCasesInputDocument($applicationUid, $taskUid, $appDocComment, $inputDocumentUid, $userUid, $runningWorkflow = true) { @@ -726,90 +777,90 @@ class InputDocument $code = $_FILES['form']['error']; switch ($code) { case UPLOAD_ERR_INI_SIZE: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_INI_SIZE' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_INI_SIZE' ); break; case UPLOAD_ERR_FORM_SIZE: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_FORM_SIZE' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_FORM_SIZE' ); break; case UPLOAD_ERR_PARTIAL: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_PARTIAL' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_PARTIAL' ); break; case UPLOAD_ERR_NO_FILE: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_NO_FILE' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_NO_FILE' ); break; case UPLOAD_ERR_NO_TMP_DIR: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_NO_TMP_DIR' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_NO_TMP_DIR' ); break; case UPLOAD_ERR_CANT_WRITE: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_CANT_WRITE' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_CANT_WRITE' ); break; case UPLOAD_ERR_EXTENSION: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_EXTENSION' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_EXTENSION' ); break; default: - $message = \G::LoadTranslation( 'ID_UPLOAD_ERR_UNKNOWN' ); + $message = G::LoadTranslation( 'ID_UPLOAD_ERR_UNKNOWN' ); break; } - \G::SendMessageText( $message, "ERROR" ); + G::SendMessageText( $message, "ERROR" ); $backUrlObj = explode( "sys" . SYS_SYS, $_SERVER['HTTP_REFERER'] ); - \G::header( "location: " . "/sys" . SYS_SYS . $backUrlObj[1] ); + G::header( "location: " . "/sys" . SYS_SYS . $backUrlObj[1] ); die(); } - $appDocUid = \G::generateUniqueID(); + $appDocUid = G::generateUniqueID(); $docVersion = ''; $appDocType = 'INPUT'; - $case = new \Cases(); - $delIndex = \AppDelegation::getCurrentIndex($applicationUid); + $case = new Cases(); + $delIndex = AppDelegation::getCurrentIndex($applicationUid); if ($runningWorkflow) { $case->thisIsTheCurrentUser($applicationUid, $delIndex, $userUid, 'REDIRECT', 'casesListExtJs'); } else { - $criteria = new \Criteria('workflow'); + $criteria = new Criteria('workflow'); - $criteria->add(\AppDelegationPeer::APP_UID, $applicationUid); - $criteria->add(\AppDelegationPeer::DEL_INDEX, $delIndex); - $criteria->add(\AppDelegationPeer::USR_UID, $userUid); + $criteria->add(AppDelegationPeer::APP_UID, $applicationUid); + $criteria->add(AppDelegationPeer::DEL_INDEX, $delIndex); + $criteria->add(AppDelegationPeer::USR_UID, $userUid); - $rsCriteria = \ProcessUserPeer::doSelectRS($criteria); + $rsCriteria = ProcessUserPeer::doSelectRS($criteria); if (!$rsCriteria->next()) { - $case2 = new \ProcessMaker\BusinessModel\Cases(); + $case2 = new BusinessModelCases(); $arrayApplicationData = $case2->getApplicationRecordByPk($applicationUid, [], false); $msg = ''; - $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); + $supervisor = new ProcessSupervisor(); $flagps = $supervisor->isUserProcessSupervisor($arrayApplicationData['PRO_UID'], $userUid); if ($flagps == false) { - $msg = \G::LoadTranslation('ID_USER_NOT_IT_BELONGS_CASE_OR_NOT_SUPERVISOR'); + $msg = G::LoadTranslation('ID_USER_NOT_IT_BELONGS_CASE_OR_NOT_SUPERVISOR'); } if ($msg == '') { - $criteria = new \Criteria('workflow'); + $criteria = new Criteria('workflow'); - $criteria->add(\StepSupervisorPeer::PRO_UID, $arrayApplicationData['PRO_UID'], \Criteria::EQUAL); - $criteria->add(\StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT', \Criteria::EQUAL); - $criteria->add(\StepSupervisorPeer::STEP_UID_OBJ, $inputDocumentUid, \Criteria::EQUAL); + $criteria->add(StepSupervisorPeer::PRO_UID, $arrayApplicationData['PRO_UID'], Criteria::EQUAL); + $criteria->add(StepSupervisorPeer::STEP_TYPE_OBJ, 'INPUT_DOCUMENT', Criteria::EQUAL); + $criteria->add(StepSupervisorPeer::STEP_UID_OBJ, $inputDocumentUid, Criteria::EQUAL); - $rsCriteria = \StepSupervisorPeer::doSelectRS($criteria); + $rsCriteria = StepSupervisorPeer::doSelectRS($criteria); if (!$rsCriteria->next()) { - $msg = \G::LoadTranslation('ID_USER_IS_SUPERVISOR_DOES_NOT_ASSOCIATED_INPUT_DOCUMENT'); + $msg = G::LoadTranslation('ID_USER_IS_SUPERVISOR_DOES_NOT_ASSOCIATED_INPUT_DOCUMENT'); } } if ($msg != '') { if ($runningWorkflow) { - \G::SendMessageText($msg, 'ERROR'); + G::SendMessageText($msg, 'ERROR'); $backUrlObj = explode('sys' . SYS_SYS, $_SERVER['HTTP_REFERER']); - \G::header('location: ' . '/sys' . SYS_SYS . $backUrlObj[1]); + G::header('location: ' . '/sys' . SYS_SYS . $backUrlObj[1]); exit(0); } else { - throw new \Exception($msg); + throw new Exception($msg); } } } @@ -817,19 +868,19 @@ class InputDocument //Load the fields $arrayField = $case->loadCase($applicationUid); - $arrayField["APP_DATA"] = array_merge($arrayField["APP_DATA"], \G::getSystemConstants()); + $arrayField["APP_DATA"] = array_merge($arrayField["APP_DATA"], G::getSystemConstants()); //Validate Process Uid and Input Document Process Uid $inputDocumentInstance = new \InputDocument(); $inputDocumentFields = $inputDocumentInstance->load($inputDocumentUid); if ($arrayField['PRO_UID'] != $inputDocumentFields['PRO_UID']) { - throw new \Exception(\G::LoadTranslation("ID_INPUT_DOCUMENT_DOES_NOT_EXIST", + throw new Exception(G::LoadTranslation("ID_INPUT_DOCUMENT_DOES_NOT_EXIST", array('UID=' . $inputDocumentUid, 'PRO_UID=' . $arrayField['PRO_UID']))); } //Triggers $arrayTrigger = $case->loadTriggers($taskUid, "INPUT_DOCUMENT", $inputDocumentUid, "AFTER"); //Add Input Document if (empty($_FILES)) { - throw new \Exception(\G::LoadTranslation("ID_CASES_INPUT_FILENAME_DOES_NOT_EXIST")); + throw new Exception(G::LoadTranslation("ID_CASES_INPUT_FILENAME_DOES_NOT_EXIST")); } if (!$_FILES["form"]["error"]) { $_FILES["form"]["error"] = 0; @@ -866,14 +917,14 @@ class InputDocument $arrayData["TAS_UID"] = $taskUid; $case->updateCase($applicationUid, $arrayData); return($this->getCasesInputDocument($applicationUid, $userUid, $appDocUid)); - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } } /** * @param $files $_FILES request files - * @param $caseInstance \Cases object class.cases + * @param $caseInstance Cases object class.cases * @param $aData array data case * @param $userUid string user id * @param $appUid string application id @@ -941,10 +992,10 @@ class InputDocument $aID = $oInputDocument->load($indocUid); //Get the Custom Folder ID (create if necessary) - $oFolder = new \AppFolder(); + $oFolder = new AppFolder(); //***Validating the file allowed extensions*** - $res = \G::verifyInputDocExtension($aID['INP_DOC_TYPE_FILE'], $arrayFileName[$i], $arrayFileTmpName[$i]); + $res = G::verifyInputDocExtension($aID['INP_DOC_TYPE_FILE'], $arrayFileName[$i], $arrayFileTmpName[$i]); if ($res->status == 0) { //The value of the variable "_label" is cleared because the file load failed. //The validation of the die command should be improved. @@ -953,9 +1004,9 @@ class InputDocument $caseInstance->updateCase($appUid, $aData); } $message = $res->message; - \G::SendMessageText($message, "ERROR"); + G::SendMessageText($message, "ERROR"); $backUrlObj = explode("sys" . SYS_SYS, $_SERVER['HTTP_REFERER']); - \G::header("location: " . "/sys" . SYS_SYS . $backUrlObj[1]); + G::header("location: " . "/sys" . SYS_SYS . $backUrlObj[1]); die(); } @@ -967,9 +1018,9 @@ class InputDocument if ($inpDocMaxFilesize > 0 && $fileSizeByField > 0) { if ($fileSizeByField > $inpDocMaxFilesize) { - \G::SendMessageText(\G::LoadTranslation("ID_SIZE_VERY_LARGE_PERMITTED"), "ERROR"); + G::SendMessageText(G::LoadTranslation("ID_SIZE_VERY_LARGE_PERMITTED"), "ERROR"); $arrayAux1 = explode("sys" . SYS_SYS, $_SERVER["HTTP_REFERER"]); - \G::header("location: /sys" . SYS_SYS . $arrayAux1[1]); + G::header("location: /sys" . SYS_SYS . $arrayAux1[1]); exit(0); } } @@ -980,31 +1031,31 @@ class InputDocument } $sExtension = pathinfo($aFields["APP_DOC_FILENAME"]); - if (\Bootstrap::getDisablePhpUploadExecution() === 1 && $sExtension["extension"] === 'php') { - $message = \G::LoadTranslation('THE_UPLOAD_OF_PHP_FILES_WAS_DISABLED'); - \Bootstrap::registerMonologPhpUploadExecution('phpUpload', 550, $message, $sFileName); - \G::SendMessageText($message, "ERROR"); + if (Bootstrap::getDisablePhpUploadExecution() === 1 && $sExtension["extension"] === 'php') { + $message = G::LoadTranslation('THE_UPLOAD_OF_PHP_FILES_WAS_DISABLED'); + Bootstrap::registerMonologPhpUploadExecution('phpUpload', 550, $message, 'processmaker.log'); + G::SendMessageText($message, "ERROR"); $backUrlObj = explode("sys" . SYS_SYS, $_SERVER['HTTP_REFERER']); - \G::header("location: " . "/sys" . SYS_SYS . $backUrlObj[1]); + G::header("location: " . "/sys" . SYS_SYS . $backUrlObj[1]); die(); } - $oAppDocument = new \AppDocument(); + $oAppDocument = new AppDocument(); $oAppDocument->create($aFields); $iDocVersion = $oAppDocument->getDocVersion(); $sAppDocUid = $oAppDocument->getAppDocUid(); $aInfo = pathinfo($oAppDocument->getAppDocFilename()); $sExtension = ((isset($aInfo["extension"])) ? $aInfo["extension"] : ""); - $pathUID = \G::getPathFromUID($appUid); + $pathUID = G::getPathFromUID($appUid); $sPathName = PATH_DOCUMENT . $pathUID . PATH_SEP; $sFileName = $sAppDocUid . "_" . $iDocVersion . "." . $sExtension; - \G::uploadFile($arrayFileTmpName[$i], $sPathName, $sFileName); + G::uploadFile($arrayFileTmpName[$i], $sPathName, $sFileName); //set variable for APP_DOC_UID - $aData["APP_DATA"][$oAppDocument->getAppDocFieldname()] = \G::json_encode([$oAppDocument->getAppDocUid()]); - $aData["APP_DATA"][$oAppDocument->getAppDocFieldname() . "_label"] = \G::json_encode([$oAppDocument->getAppDocFilename()]); + $aData["APP_DATA"][$oAppDocument->getAppDocFieldname()] = G::json_encode([$oAppDocument->getAppDocUid()]); + $aData["APP_DATA"][$oAppDocument->getAppDocFieldname() . "_label"] = G::json_encode([$oAppDocument->getAppDocFilename()]); $caseInstance->updateCase($appUid, $aData); //Plugin Hook PM_UPLOAD_DOCUMENT for upload document @@ -1031,4 +1082,62 @@ class InputDocument } } } + + /** + * Get all versions related to the appDocUid + * @param string $appUid, Uid of the case + * @param string $appDocUid, Uid of the document + * @param string $docUid, Uid of the inputDocument + * @param string $userUid, Uid of user + * @param string $status, It can be ACTIVE, DELETED + * @param string $docType, It can be ATTACHED, INPUT + * @param string $docTags, It can be EXTERNAL, INPUT + * + * @return array $docVersion + * @throws Exception + */ + public function getAllVersionByDocUid ($appUid, $appDocUid, $docUid = '', $userUid = '', $status = 'ACTIVE', $docType = '', $docTags = '') + { + try { + $criteria = new Criteria('workflow'); + $criteria->add(AppDocumentPeer::APP_UID, $appUid); + $criteria->add(AppDocumentPeer::APP_DOC_UID, $appDocUid); + $criteria->add(AppDocumentPeer::APP_DOC_STATUS, $status, Criteria::EQUAL); + if (!empty($docUid)) { + $criteria->add(AppDocumentPeer::DOC_UID, $docUid); + } + if (!empty($userUid)) { + $criteria->add(AppDocumentPeer::USR_UID, $userUid); + } + if (!empty($docType)) { + $criteria->add(AppDocumentPeer::APP_DOC_TYPE, $docType); + } + if (!empty($docTags)) { + $criteria->add(AppDocumentPeer::APP_DOC_TAGS, $docTags); + } + $criteria->addDescendingOrderByColumn(AppDocumentPeer::DOC_VERSION); + $dataset = AppDocumentPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $dataset->next(); + $config = new Configurations(); + $confEnvSetting = $config->getFormats(); + $user = new Users(); + + $arrayInputDocument = array(); + while ($row = $dataset->getRow()) { + //todo, we use this *** in others endpoint for mark that user not exist, but we need to change + $userInfo = '***'; + if ($row["USR_UID"] !== '-1') { + $arrayUserData = $user->load($row["USR_UID"]); + $userInfo = $config->usersNameFormatBySetParameters($confEnvSetting["format"], $arrayUserData["USR_USERNAME"], $arrayUserData["USR_FIRSTNAME"], $arrayUserData["USR_LASTNAME"]); + } + $row["APP_DOC_CREATE_USER"] = $userInfo; + $arrayInputDocument[] = $this->getAppDocumentDataFromRecord($row); + $dataset->next(); + } + return $arrayInputDocument; + } catch (Exception $e) { + throw $e; + } + } } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php b/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php index 7a2f48c42..e5315bc81 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Cases/InputDocument.php @@ -3,6 +3,8 @@ namespace ProcessMaker\Services\Api\Cases; use \ProcessMaker\Services\Api; use \Luracast\Restler\RestException; +use ProcessMaker\BusinessModel\Cases\InputDocument AS CasesInputDocument; +use Exception; /** * Cases\InputDocument Api Controller @@ -111,5 +113,24 @@ class InputDocument extends Api throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } } + + /** + * @url GET /:app_uid/input-document/:app_doc_uid/versions + * + * @param string $app_uid {@min 32}{@max 32} + * @param string $app_doc_uid {@min 32}{@max 32} + * @return array $response + * @throws Exception + */ + public function doGetDocumentByVersion($app_uid, $app_doc_uid) + { + try { + $inputDocument = new CasesInputDocument(); + $response = $inputDocument->getAllVersionByDocUid($app_uid, $app_doc_uid); + return $response; + } catch (Exception $e) { + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + } } From 2be3ca49b298ad8198dabc5f333ecade7adc5c72 Mon Sep 17 00:00:00 2001 From: Paula Quispe Date: Wed, 23 Aug 2017 12:20:54 -0400 Subject: [PATCH 3/3] HOR-3777 --- .../src/ProcessMaker/BusinessModel/Light.php | 715 ++++++++++-------- 1 file changed, 396 insertions(+), 319 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php index 92a578e4c..d4ad1a058 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light.php @@ -10,6 +10,31 @@ use AppDelayPeer; use ProcessMaker\Core\System; use ProcessMaker\Util\DateTime; use PmLicenseManager; +use Bootstrap; +use ProcessPeer; +use BpmnProjectPeer; +use Propel; +use ResultSet; +use Process; +use Cases; +use ProcessMaker\BusinessModel\Task as BusinessModelTask; +use ProcessMaker\Services\Api\Project\Activity\Step; +use Exception; +use AppCacheView; +use database; +use TaskPeer; +use StepPeer; +use GulliverBasePeer; +use AppDocument; +use Users; +use ProcessMaker\BusinessModel\User as BusinessModelUser; +use ProcessMaker\BusinessModel\Cases as BusinessModelCases; +use ProcessMaker\Core\RoutingScreen; +use Configurations; +use InputDocument; +use AppFolder; +use PMmemcached; +use RBAC; class Light { @@ -19,7 +44,7 @@ class Light * * @param $userId User id * @return array - * @throws \Exception + * @throws Exception */ public function getProcessListStartCase($userId) { @@ -27,9 +52,9 @@ class Light try { // getting bpmn projects $c = new Criteria('workflow'); - $c->addSelectColumn(\BpmnProjectPeer::PRJ_UID); - $ds = \ProcessPeer::doSelectRS($c, \Propel::getDbConnection('workflow_ro')); - $ds->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $c->addSelectColumn(BpmnProjectPeer::PRJ_UID); + $ds = ProcessPeer::doSelectRS($c, Propel::getDbConnection('workflow_ro')); + $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); $bpmnProjects = array(); while ($ds->next()) { @@ -37,49 +62,50 @@ class Light $bpmnProjects[] = $row['PRJ_UID']; } - $oProcess = new \Process(); - $oCase = new \Cases(); + $oProcess = new Process(); + $oCase = new Cases(); //Get ProcessStatistics Info - $start = 0; - $limit = ''; - $proData = $oProcess->getAllProcesses( $start, $limit, null, null, false, true ); + $start = 0; + $limit = ''; + $proData = $oProcess->getAllProcesses($start, $limit, null, null, false, true); - $processListInitial = $oCase->getStartCasesPerType( $userId, 'category' ); + $processListInitial = $oCase->getStartCasesPerType($userId, 'category'); - $processList = array (); + $processList = array(); foreach ($processListInitial as $key => $procInfo) { - if (isset( $procInfo['pro_uid'] )) { - if (trim( $procInfo['cat'] ) == "") { + if (isset($procInfo['pro_uid'])) { + if (trim($procInfo['cat']) == "") { $procInfo['cat'] = "_OTHER_"; } $processList[$procInfo['catname']][$procInfo['value']] = $procInfo; } } - ksort( $processList ); + ksort($processList); foreach ($processList as $key => $processInfo) { - ksort( $processList[$key] ); + ksort($processList[$key]); } foreach ($proData as $key => $proInfo) { $proData[$proInfo['PRO_UID']] = $proInfo; } - $task = new \ProcessMaker\BusinessModel\Task(); + $task = new BusinessModelTask(); $task->setFormatFieldNameInUppercase(false); $task->setArrayParamException(array("taskUid" => "act_uid", "stepUid" => "step_uid")); - $step = new \ProcessMaker\Services\Api\Project\Activity\Step(); + $step = new Step(); $response = array(); foreach ($processList as $key => $processInfo) { - $tempTreeChildren = array (); + $tempTreeChildren = array(); foreach ($processList[$key] as $keyChild => $processInfoChild) { if (in_array($processInfoChild['pro_uid'], $bpmnProjects)) { - $tempTreeChild['text'] = $keyChild; //ellipsis ( $keyChild, 50 ); + $tempTreeChild['text'] = $keyChild; //ellipsis ( $keyChild, 50 ); $tempTreeChild['processId'] = $processInfoChild['pro_uid']; - $tempTreeChild['taskId'] = $processInfoChild['uid']; - list($tempTreeChild['offlineEnabled'], $tempTreeChild['autoRoot']) = $task->getColumnValues($processInfoChild['pro_uid'], $processInfoChild['uid'], array('TAS_OFFLINE', 'TAS_AUTO_ROOT')); + $tempTreeChild['taskId'] = $processInfoChild['uid']; + list($tempTreeChild['offlineEnabled'], $tempTreeChild['autoRoot']) = $task->getColumnValues($processInfoChild['pro_uid'], + $processInfoChild['uid'], array('TAS_OFFLINE', 'TAS_AUTO_ROOT')); //Add process category $tempTreeChild['categoryName'] = $processInfoChild['catname']; $tempTreeChild['categoryId'] = $processInfoChild['cat']; @@ -92,30 +118,32 @@ class Light $newForm[$c]['formId'] = $form['step_uid_obj']; $newForm[$c]['formUpdateDate'] = DateTime::convertUtcToIso8601($dynaForm->getDynUpdateDate()); - $newForm[$c]['index'] = $c+1; + $newForm[$c]['index'] = $c + 1; $newForm[$c]['title'] = $form['obj_title']; $newForm[$c]['description'] = $form['obj_description']; - $newForm[$c]['stepId'] = $form["step_uid"]; - $newForm[$c]['stepUidObj'] = $form["step_uid_obj"]; - $newForm[$c]['stepMode'] = $form['step_mode']; + $newForm[$c]['stepId'] = $form["step_uid"]; + $newForm[$c]['stepUidObj'] = $form["step_uid_obj"]; + $newForm[$c]['stepMode'] = $form['step_mode']; $newForm[$c]['stepCondition'] = $form['step_condition']; $newForm[$c]['stepPosition'] = $form['step_position']; - $trigger = $this->statusTriggers($step->doGetActivityStepTriggers($form["step_uid"], $tempTreeChild['taskId'], $tempTreeChild['processId'])); - $newForm[$c]["triggers"] = $trigger; + $trigger = $this->statusTriggers($step->doGetActivityStepTriggers($form["step_uid"], + $tempTreeChild['taskId'], $tempTreeChild['processId'])); + $newForm[$c]["triggers"] = $trigger; $c++; } } $tempTreeChild['forms'] = $newForm; - if (isset( $proData[$processInfoChild['pro_uid']] )) { + if (isset($proData[$processInfoChild['pro_uid']])) { $tempTreeChildren[] = $tempTreeChild; } } } $response = array_merge($response, $tempTreeChildren); } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } + return $response; } @@ -126,15 +154,16 @@ class Light */ public function statusTriggers($triggers) { - $return = array("before" => false, "after"=> false); - foreach($triggers as $trigger){ - if ($trigger['st_type'] == "BEFORE"){ - $return["before"]= true; + $return = array("before" => false, "after" => false); + foreach ($triggers as $trigger) { + if ($trigger['st_type'] == "BEFORE") { + $return["before"] = true; } - if ($trigger['st_type'] == "AFTER"){ - $return["after"]= true; + if ($trigger['st_type'] == "AFTER") { + $return["after"] = true; } } + return $return; } @@ -142,32 +171,33 @@ class Light * Get counters each type of list * @param $userId * @return array - * @throws \Exception + * @throws Exception */ public function getCounterCase($userId) { try { - $userUid = (isset( $userId ) && $userId != '') ? $userId : null; - $oAppCache = new \AppCacheView(); + $userUid = (isset($userId) && $userId != '') ? $userId : null; + $oAppCache = new AppCacheView(); - $aTypes = Array (); - $aTypes['to_do'] = 'toDo'; - $aTypes['draft'] = 'draft'; - $aTypes['cancelled'] = 'cancelled'; - $aTypes['sent'] = 'participated'; - $aTypes['paused'] = 'paused'; - $aTypes['completed'] = 'completed'; + $aTypes = Array(); + $aTypes['to_do'] = 'toDo'; + $aTypes['draft'] = 'draft'; + $aTypes['cancelled'] = 'cancelled'; + $aTypes['sent'] = 'participated'; + $aTypes['paused'] = 'paused'; + $aTypes['completed'] = 'completed'; $aTypes['selfservice'] = 'unassigned'; - $aCount = $oAppCache->getAllCounters( array_keys( $aTypes ), $userUid ); + $aCount = $oAppCache->getAllCounters(array_keys($aTypes), $userUid); - $response = Array (); + $response = Array(); foreach ($aCount as $type => $count) { $response[$aTypes[$type]] = $count; } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } + return $response; } @@ -189,10 +219,11 @@ class Light $sDataBase = 'database_' . strtolower(DB_ADAPTER); if (G::LoadSystemExist($sDataBase)) { - $oDataBase = new \database(); + $oDataBase = new database(); $c->addAsColumn('USR_NAME', $oDataBase->concatString("USR_LASTNAME", "' '", "USR_FIRSTNAME")); $c->addAsColumn( - 'DEL_FINISH_DATE', $oDataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'-'", AppDelegationPeer::DEL_FINISH_DATE) + 'DEL_FINISH_DATE', + $oDataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'-'", AppDelegationPeer::DEL_FINISH_DATE) ); $c->addAsColumn( 'APP_TYPE', $oDataBase->getCaseWhen("DEL_FINISH_DATE IS NULL", "'IN_PROGRESS'", AppDelayPeer::APP_TYPE) @@ -201,13 +232,10 @@ class Light $c->addSelectColumn(AppDelegationPeer::DEL_INIT_DATE); $c->addSelectColumn(AppDelayPeer::APP_ENABLE_ACTION_DATE); $c->addSelectColumn(AppDelayPeer::APP_DISABLE_ACTION_DATE); - $c->addSelectColumn(\TaskPeer::TAS_TITLE); + $c->addSelectColumn(TaskPeer::TAS_TITLE); //APP_DELEGATION LEFT JOIN USERS $c->addJoin(AppDelegationPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); - //APP_DELAY FOR MORE DESCRIPTION - //$c->addJoin(AppDelegationPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX, Criteria::LEFT_JOIN); - //$c->addJoin(AppDelegationPeer::APP_UID, AppDelayPeer::APP_UID, Criteria::LEFT_JOIN); $del = \DBAdapter::getStringDelimiter(); $app = array(); $app[] = array(AppDelegationPeer::DEL_INDEX, AppDelayPeer::APP_DEL_INDEX); @@ -215,7 +243,7 @@ class Light $c->addJoinMC($app, Criteria::LEFT_JOIN); //LEFT JOIN TASK TAS_TITLE - $c->addJoin(AppDelegationPeer::TAS_UID, \TaskPeer::TAS_UID, Criteria::LEFT_JOIN); + $c->addJoin(AppDelegationPeer::TAS_UID, TaskPeer::TAS_UID, Criteria::LEFT_JOIN); //WHERE $c->add(AppDelegationPeer::APP_UID, $sAppUid); @@ -232,39 +260,34 @@ class Light * * @param $app_uid * @return array - * @throws \Exception + * @throws Exception */ public function getCasesListHistory($app_uid) { //global $G_PUBLISH; - $c = $this->getTransferHistoryCriteria( $app_uid ); + $c = $this->getTransferHistoryCriteria($app_uid); + $aProcesses = Array(); - //$result = new \stdClass(); - $aProcesses = Array (); - - $rs = \GulliverBasePeer::doSelectRs( $c ); - $rs->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + $rs = GulliverBasePeer::doSelectRs($c); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); - for ($j = 0; $j < $rs->getRecordCount(); $j ++) { - $result = $rs->getRow(); + for ($j = 0; $j < $rs->getRecordCount(); $j++) { + $result = $rs->getRow(); $result["ID_HISTORY"] = $result["PRO_UID"] . '_' . $result["APP_UID"] . '_' . $result["TAS_UID"]; - $aProcesses[] = $result; + $aProcesses[] = $result; $rs->next(); $processUid = $result["PRO_UID"]; } - $process = new \Process(); + $process = new Process(); $arrayProcessData = $process->load($processUid); - //$newDir = '/tmp/test/directory'; - //G::verifyPath( $newDir ); - $result = array(); $result["processName"] = $arrayProcessData["PRO_TITLE"]; - //$result["PRO_DESCRIPTION"] = $arrayProcessData["PRO_DESCRIPTION"]; $result['flow'] = $aProcesses; + return $result; } @@ -275,16 +298,16 @@ class Light * @param string $proUid * @param string $taskUid * @return array - * @throws \Exception + * @throws Exception */ public function startCase($userId = '', $proUid = '', $taskUid = '') { try { - $oCase = new \Cases(); + $oCase = new Cases(); - $aData = $oCase->startCase( $taskUid, $userId ); + $aData = $oCase->startCase($taskUid, $userId); - $user = new \ProcessMaker\BusinessModel\User(); + $user = new BusinessModelUser(); $arrayUserData = $user->getUserRecordByPk($userId, ['$userUid' => '$userId']); $_SESSION['APPLICATION'] = $aData['APPLICATION']; @@ -294,8 +317,8 @@ class Light $_SESSION["USER_LOGGED"] = $userId; $_SESSION['USR_USERNAME'] = $arrayUserData['USR_USERNAME']; - $aFields = $oCase->loadCase( $aData['APPLICATION'], $aData['INDEX'] ); - $oCase->updateCase( $aData['APPLICATION'], $aFields ); + $aFields = $oCase->loadCase($aData['APPLICATION'], $aData['INDEX']); + $oCase->updateCase($aData['APPLICATION'], $aFields); $response = array(); $response['caseId'] = $aData['APPLICATION']; @@ -303,45 +326,48 @@ class Light $response['caseNumber'] = $aData['CASE_NUMBER']; //Log - \Bootstrap::registerMonolog('MobileCreateCase', 200, "Create case", ['application_uid' => $aData['APPLICATION'], 'usr_uid' => $userId], SYS_SYS, 'processmaker.log'); + Bootstrap::registerMonolog('MobileCreateCase', 200, "Create case", + ['application_uid' => $aData['APPLICATION'], 'usr_uid' => $userId], SYS_SYS, 'processmaker.log'); } catch (Exception $e) { $response['status'] = 'failure'; $response['message'] = $e->getMessage(); } + return $response; } - public function lookinginforContentProcess ($sproUid) + public function lookinginforContentProcess($sproUid) { $oContent = new \Content(); ///we are looking for a pro title for this process $sproUid - $oCriteria = new \Criteria( 'workflow' ); - $oCriteria->add(\ProcessPeer::PRO_UID, $sproUid); - $oDataset = \ProcessPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oCriteria = new Criteria('workflow'); + $oCriteria->add(ProcessPeer::PRO_UID, $sproUid); + $oDataset = ProcessPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); if (!is_array($aRow)) { - $oC = new \Criteria('workflow'); - $oC->addSelectColumn(\TaskPeer::TAS_UID); - $oC->addSelectColumn(\TaskPeer::TAS_TITLE); - $oC->add(\TaskPeer::PRO_UID, $sproUid); - $oDataset1 = \TaskPeer::doSelectRS($oC); - $oDataset1->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oC = new Criteria('workflow'); + $oC->addSelectColumn(TaskPeer::TAS_UID); + $oC->addSelectColumn(TaskPeer::TAS_TITLE); + $oC->add(TaskPeer::PRO_UID, $sproUid); + $oDataset1 = TaskPeer::doSelectRS($oC); + $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($oDataset1->next()) { $aRow1 = $oDataset1->getRow(); \Content::insertContent('TAS_TITLE', '', $aRow1['TAS_UID'], 'en', $aRow1['TAS_TITLE']); } $oC2 = new Criteria('workflow'); - $oC2->addSelectColumn(\ProcessPeer::PRO_UID); - $oC2->addSelectColumn(\ProcessPeer::PRO_TITLE); - $oC2->add(\ProcessPeer::PRO_UID, $sproUid); - $oDataset3 = \ProcessPeer::doSelectRS($oC2); - $oDataset3->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oC2->addSelectColumn(ProcessPeer::PRO_UID); + $oC2->addSelectColumn(ProcessPeer::PRO_TITLE); + $oC2->add(ProcessPeer::PRO_UID, $sproUid); + $oDataset3 = ProcessPeer::doSelectRS($oC2); + $oDataset3->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset3->next(); $aRow3 = $oDataset3->getRow(); \Content::insertContent('PRO_TITLE', '', $aRow3['PRO_UID'], 'en', $aRow3['PRO_TITLE']); } + return 1; } @@ -353,38 +379,40 @@ class Light public function doExecuteTriggerCase($usr_uid, $prj_uid, $act_uid, $cas_uid, $step_uid, $type, $del_index = null) { $userData = $this->getUserData($usr_uid); - $c = new \Criteria(); + $c = new Criteria(); $c->clearSelectColumns(); - $c->addSelectColumn(\StepPeer::STEP_UID); - $c->addSelectColumn(\StepPeer::STEP_UID_OBJ); - $c->add(\StepPeer::TAS_UID, $act_uid); - $c->add(\StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); - $c->add(\StepPeer::STEP_UID, $step_uid); - $rs = \StepPeer::doSelectRS($c); - $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $c->addSelectColumn(StepPeer::STEP_UID); + $c->addSelectColumn(StepPeer::STEP_UID_OBJ); + $c->add(StepPeer::TAS_UID, $act_uid); + $c->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM'); + $c->add(StepPeer::STEP_UID, $step_uid); + $rs = StepPeer::doSelectRS($c); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); $step_uid_obj = $row['STEP_UID_OBJ']; - $oCase = new \Cases(); - $Fields = $oCase->loadCase( $cas_uid ); + $oCase = new Cases(); + $Fields = $oCase->loadCase($cas_uid); $_SESSION["APPLICATION"] = $cas_uid; $_SESSION["PROCESS"] = $prj_uid; $_SESSION["TASK"] = $act_uid; $_SESSION["USER_LOGGED"] = $usr_uid; $_SESSION["USR_USERNAME"] = $userData['firstName']; $_SESSION["INDEX"] = $Fields["DEL_INDEX"] = $del_index !== null ? $del_index : \AppDelegation::getCurrentIndex($cas_uid); - $Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() ); - $triggers = $oCase->loadTriggers( $act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type) ); - if($triggers){ - $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type), $Fields['APP_DATA'] ); + $Fields['APP_DATA'] = array_merge($Fields['APP_DATA'], G::getSystemConstants()); + $triggers = $oCase->loadTriggers($act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type)); + if ($triggers) { + $Fields['APP_DATA'] = $oCase->ExecuteTriggers($act_uid, 'DYNAFORM', $step_uid_obj, strtoupper($type), + $Fields['APP_DATA']); } $Fields['TAS_UID'] = $act_uid; $Fields['CURRENT_DYNAFORM'] = $step_uid_obj; $Fields['USER_UID'] = $usr_uid; $Fields['PRO_UID'] = $prj_uid; - $oCase->updateCase( $cas_uid, $Fields ); + $oCase->updateCase($cas_uid, $Fields); $response = array('status' => 'ok'); + return $response; } @@ -397,39 +425,42 @@ class Light public function getPrepareInformation($usr_uid, $tas_uid, $app_uid, $del_index = null) { try { - $oCase = new \Cases(); - $Fields = $oCase->loadCase( $app_uid ); - $_SESSION["APPLICATION"] = $app_uid; - $_SESSION["PROCESS"] = $Fields['PRO_UID']; - $_SESSION["TASK"] = $tas_uid; - $_SESSION["INDEX"] = $del_index; - $_SESSION["USER_LOGGED"] = $usr_uid; - $_SESSION["USR_USERNAME"] = isset($Fields['APP_DATA']['USR_USERNAME'])?$Fields['APP_DATA']['USR_USERNAME']:''; + $oCase = new Cases(); + $Fields = $oCase->loadCase($app_uid); + $_SESSION["APPLICATION"] = $app_uid; + $_SESSION["PROCESS"] = $Fields['PRO_UID']; + $_SESSION["TASK"] = $tas_uid; + $_SESSION["INDEX"] = $del_index; + $_SESSION["USER_LOGGED"] = $usr_uid; + $_SESSION["USR_USERNAME"] = isset($Fields['APP_DATA']['USR_USERNAME']) ? $Fields['APP_DATA']['USR_USERNAME'] : ''; - $triggers = $oCase->loadTriggers( $tas_uid, 'ASSIGN_TASK', '-1', 'BEFORE'); - if (isset($triggers)){ - $Fields['APP_DATA'] = array_merge( $Fields['APP_DATA'], G::getSystemConstants() ); - $Fields['APP_DATA'] = $oCase->ExecuteTriggers( $tas_uid, 'DYNAFORM', '-1', 'BEFORE', $Fields['APP_DATA'] ); - $oCase->updateCase( $app_uid, $Fields ); + $triggers = $oCase->loadTriggers($tas_uid, 'ASSIGN_TASK', '-1', 'BEFORE'); + if (isset($triggers)) { + $Fields['APP_DATA'] = array_merge($Fields['APP_DATA'], G::getSystemConstants()); + $Fields['APP_DATA'] = $oCase->ExecuteTriggers($tas_uid, 'DYNAFORM', '-1', 'BEFORE', + $Fields['APP_DATA']); + $oCase->updateCase($app_uid, $Fields); } $oDerivation = new \Derivation(); $aData = array(); $aData['APP_UID'] = $app_uid; $aData['DEL_INDEX'] = $del_index; $aData['USER_UID'] = $usr_uid; - $oRoute = new \ProcessMaker\Core\RoutingScreen(); + $oRoute = new RoutingScreen(); $derive = $oRoute->prepareRoutingScreen($aData); $response = array(); foreach ($derive as $sKey => &$aValues) { $sPriority = ''; //set priority value if ($derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'] != '') { //TO DO: review this type of assignment - if (isset( $aData['APP_DATA'][str_replace( '@@', '', $derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'] )] )) { - $sPriority = $aData['APP_DATA'][str_replace( '@@', '', $derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'] )]; + if (isset($aData['APP_DATA'][str_replace('@@', '', + $derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'])])) { + $sPriority = $aData['APP_DATA'][str_replace('@@', '', + $derive[$sKey]['NEXT_TASK']['TAS_PRIORITY_VARIABLE'])]; } } //set priority value - $taskType = (isset($aValues["NEXT_TASK"]["TAS_TYPE"]))? $aValues["NEXT_TASK"]["TAS_TYPE"] : false; + $taskType = (isset($aValues["NEXT_TASK"]["TAS_TYPE"])) ? $aValues["NEXT_TASK"]["TAS_TYPE"] : false; $taskMessage = ""; switch ($taskType) { case "SCRIPT-TASK": @@ -450,14 +481,14 @@ class Light $taskAss['taskName'] = $aValues['NEXT_TASK']['TAS_TITLE']; $taskAss['taskAssignType'] = $aValues['NEXT_TASK']['TAS_ASSIGN_TYPE']; $taskAss['taskDefProcCode'] = $aValues['NEXT_TASK']['TAS_DEF_PROC_CODE']; - $taskAss['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY'])?$aValues['NEXT_TASK']['DEL_PRIORITY']:""; + $taskAss['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY']) ? $aValues['NEXT_TASK']['DEL_PRIORITY'] : ""; $taskAss['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT']; - $taskAss['taskMessage'] = $taskType?$taskMessage:""; + $taskAss['taskMessage'] = $taskType ? $taskMessage : ""; $taskAss['sourceUid'] = $aValues['SOURCE_UID']; $users = array(); $users['userId'] = $derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_UID']; $users['userFullName'] = strip_tags($derive[$sKey]['NEXT_TASK']['USER_ASSIGNED']['USR_FULLNAME']); - $taskAss['users'][] = $users; + $taskAss['users'][] = $users; $response[] = $taskAss; break; case 'MANUAL': @@ -468,15 +499,15 @@ class Light $manual['taskName'] = $aValues['NEXT_TASK']['TAS_TITLE']; $manual['taskAssignType'] = $aValues['NEXT_TASK']['TAS_ASSIGN_TYPE']; $manual['taskDefProcCode'] = $aValues['NEXT_TASK']['TAS_DEF_PROC_CODE']; - $manual['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY'])?$aValues['NEXT_TASK']['DEL_PRIORITY']:""; + $manual['delPriority'] = isset($aValues['NEXT_TASK']['DEL_PRIORITY']) ? $aValues['NEXT_TASK']['DEL_PRIORITY'] : ""; $manual['taskParent'] = $aValues['NEXT_TASK']['TAS_PARENT']; - $manual['taskMessage'] = $taskType?$taskMessage:""; + $manual['taskMessage'] = $taskType ? $taskMessage : ""; $manual['sourceUid'] = $aValues['SOURCE_UID']; - $Aux = array (); + $Aux = array(); foreach ($aValues['NEXT_TASK']['USER_ASSIGNED'] as $aUser) { $Aux[$aUser['USR_UID']] = $aUser['USR_FULLNAME']; } - asort( $Aux ); + asort($Aux); $users = array(); foreach ($Aux as $id => $fullname) { $user['userId'] = $id; @@ -488,23 +519,24 @@ class Light break; case '': //when this task is the Finish process case 'nobody': - $userFields = $oDerivation->getUsersFullNameFromArray( $derive[$sKey]['USER_UID'] ); + $userFields = $oDerivation->getUsersFullNameFromArray($derive[$sKey]['USER_UID']); $taskAss = array(); $taskAss['routeFinishFlag'] = true; $user['userId'] = $derive[$sKey]['USER_UID']; $user['userFullName'] = $userFields['USR_FULLNAME']; - $taskAss['users'][] = $user; + $taskAss['users'][] = $user; $response[] = $taskAss; break; } } - if (empty( $response )) { - throw new \Exception(G::LoadTranslation("ID_NO_DERIVATION_RULE")); + if (empty($response)) { + throw new Exception(G::LoadTranslation("ID_NO_DERIVATION_RULE")); } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } + return $response; } @@ -527,11 +559,12 @@ class Light } $ws = new \WsBase(); - $fields = $ws->derivateCase($userUid, $applicationUid, $delIndex, $bExecuteTriggersBeforeAssignment = false, $tasks); + $fields = $ws->derivateCase($userUid, $applicationUid, $delIndex, $bExecuteTriggersBeforeAssignment = false, + $tasks); $array = json_decode(json_encode($fields), true); $array['message'] = trim(strip_tags($array['message'])); if ($array ["status_code"] != 0) { - throw (new \Exception($array ["message"])); + throw (new Exception($array ["message"])); } else { unset($array['status_code']); unset($array['message']); @@ -539,10 +572,12 @@ class Light } //Log - \Bootstrap::registerMonolog('MobileRouteCase', 200, 'Route case', ['application_uid' => $applicationUid, 'usr_uid' => $userUid], SYS_SYS, 'processmaker.log'); - } catch (\Exception $e) { + Bootstrap::registerMonolog('MobileRouteCase', 200, 'Route case', + ['application_uid' => $applicationUid, 'usr_uid' => $userUid], SYS_SYS, 'processmaker.log'); + } catch (Exception $e) { throw $e; } + return $fields; } @@ -560,27 +595,28 @@ class Light { try { $direction = PATH_IMAGES_ENVIRONMENT_USERS . $userUid . ".gif"; - if (! file_exists( $direction )) { + if (!file_exists($direction)) { $direction = PATH_HOME . 'public_html/images/user.gif'; } - $gestor = fopen($direction, "r"); + $gestor = fopen($direction, "r"); $contenido = fread($gestor, filesize($direction)); fclose($gestor); $oUser = new \Users(); $aUserLog = $oUser->loadDetailed($userUid); - $response['userId'] = $aUserLog['USR_UID']; - $response['userName'] = $aUserLog['USR_USERNAME']; - $response['firstName'] = $aUserLog['USR_FIRSTNAME']; - $response['lastName'] = $aUserLog['USR_LASTNAME']; - $response['fullName'] = $aUserLog['USR_FULLNAME']; - $response['email'] = $aUserLog['USR_EMAIL']; - $response['userRole'] = $aUserLog['USR_ROLE_NAME']; - $response['userPhone'] = $aUserLog['USR_PHONE']; + $response['userId'] = $aUserLog['USR_UID']; + $response['userName'] = $aUserLog['USR_USERNAME']; + $response['firstName'] = $aUserLog['USR_FIRSTNAME']; + $response['lastName'] = $aUserLog['USR_LASTNAME']; + $response['fullName'] = $aUserLog['USR_FULLNAME']; + $response['email'] = $aUserLog['USR_EMAIL']; + $response['userRole'] = $aUserLog['USR_ROLE_NAME']; + $response['userPhone'] = $aUserLog['USR_PHONE']; $response['updateDate'] = $aUserLog['USR_UPDATE_DATE']; - $response['userPhoto'] = base64_encode($contenido); - } catch (\Exception $e) { + $response['userPhoto'] = base64_encode($contenido); + } catch (Exception $e) { throw $e; } + return $response; } @@ -593,69 +629,72 @@ class Light public function downloadFile($app_uid, $request_data) { try { - $oAppDocument = new \AppDocument(); + $oAppDocument = new AppDocument(); $arrayFiles = array(); foreach ($request_data as $key => $fileData) { - if (! isset( $fileData['version'] )) { + if (!isset($fileData['version'])) { //Load last version of the document - $docVersion = $oAppDocument->getLastAppDocVersion( $fileData['fileId'] ); + $docVersion = $oAppDocument->getLastAppDocVersion($fileData['fileId']); } else { $docVersion = $fileData['version']; } - $oAppDocument->Fields = $oAppDocument->load( $fileData['fileId'], $docVersion ); + $oAppDocument->Fields = $oAppDocument->load($fileData['fileId'], $docVersion); - $sAppDocUid = $oAppDocument->getAppDocUid(); + $sAppDocUid = $oAppDocument->getAppDocUid(); $iDocVersion = $oAppDocument->getDocVersion(); - $info = pathinfo( $oAppDocument->getAppDocFilename() ); - $ext = (isset($info['extension'])?$info['extension']:'');//BUG fix: must handle files without any extension + $info = pathinfo($oAppDocument->getAppDocFilename()); + $ext = (isset($info['extension']) ? $info['extension'] : '');//BUG fix: must handle files without any extension - //$app_uid = \G::getPathFromUID($oAppDocument->Fields['APP_UID']); - $file = \G::getPathFromFileUID($oAppDocument->Fields['APP_UID'], $sAppDocUid); + //$app_uid = G::getPathFromUID($oAppDocument->Fields['APP_UID']); + $file = G::getPathFromFileUID($oAppDocument->Fields['APP_UID'], $sAppDocUid); - $realPath = PATH_DOCUMENT . G::getPathFromUID($app_uid) . '/' . $file[0] . $file[1] . '_' . $iDocVersion . '.' . $ext; + $realPath = PATH_DOCUMENT . G::getPathFromUID($app_uid) . '/' . $file[0] . $file[1] . '_' . $iDocVersion . '.' . $ext; $realPath1 = PATH_DOCUMENT . G::getPathFromUID($app_uid) . '/' . $file[0] . $file[1] . '.' . $ext; - $width = isset($fileData['width']) ? $fileData['width']:null; - $height = isset($fileData['height']) ? $fileData['height']:null; - if (file_exists( $realPath )) { - switch($ext){ + $width = isset($fileData['width']) ? $fileData['width'] : null; + $height = isset($fileData['height']) ? $fileData['height'] : null; + if (file_exists($realPath)) { + switch ($ext) { case 'jpg': case 'jpeg': case 'gif': case 'png': - $arrayFiles[$key]['fileId'] = $fileData['fileId']; - $arrayFiles[$key]['fileContent'] = base64_encode($this->imagesThumbnails($realPath, $ext, $width, $height)); + $arrayFiles[$key]['fileId'] = $fileData['fileId']; + $arrayFiles[$key]['fileContent'] = base64_encode($this->imagesThumbnails($realPath, $ext, + $width, $height)); break; default: - $fileTmp = fopen($realPath, "r"); + $fileTmp = fopen($realPath, "r"); $content = fread($fileTmp, filesize($realPath)); - $arrayFiles[$key]['fileId'] = $fileData['fileId']; + $arrayFiles[$key]['fileId'] = $fileData['fileId']; $arrayFiles[$key]['fileContent'] = base64_encode($content); fclose($fileTmp); break; } - } elseif (file_exists( $realPath1 )) { - switch($ext){ + } elseif (file_exists($realPath1)) { + switch ($ext) { case 'jpg': case 'jpeg': case 'gif': case 'png': - $arrayFiles[$key]['fileId'] = $fileData['fileId']; - $arrayFiles[$key]['fileContent'] = $this->imagesThumbnails($realPath1, $ext, $width, $height); + $arrayFiles[$key]['fileId'] = $fileData['fileId']; + $arrayFiles[$key]['fileContent'] = $this->imagesThumbnails($realPath1, $ext, $width, + $height); break; default: - $fileTmp = fopen($realPath, "r"); + $fileTmp = fopen($realPath, "r"); $content = fread($fileTmp, filesize($realPath)); - $arrayFiles[$key]['fileId'] = $fileData['fileId']; + $arrayFiles[$key]['fileId'] = $fileData['fileId']; $arrayFiles[$key]['fileContent'] = base64_encode($content); fclose($fileTmp); break; } } } - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } + return $arrayFiles; } @@ -670,7 +709,7 @@ class Light */ public function imagesThumbnails($path, $extensions, $newWidth = null, $newHeight = null) { - switch($extensions){ + switch ($extensions) { case 'jpg': case 'jpeg': ini_set('gd.jpeg_ignore_warning', 1); @@ -685,22 +724,22 @@ class Light break; } - $width = imagesx($imgTmp); + $width = imagesx($imgTmp); $height = imagesy($imgTmp); - $ratio = $width / $height; + $ratio = $width / $height; $isThumbnails = false; if (isset($newWidth) && !isset($newHeight)) { - $newwidth = $newWidth; + $newwidth = $newWidth; $newheight = round($newwidth / $ratio); $isThumbnails = true; } elseif (!isset($newWidth) && isset($newHeight)) { $newheight = $newHeight; - $newwidth = round($newheight / $ratio); + $newwidth = round($newheight / $ratio); $isThumbnails = true; } elseif (isset($newWidth) && isset($newHeight)) { - $newwidth = $newWidth; + $newwidth = $newWidth; $newheight = $newHeight; $isThumbnails = true; } @@ -711,7 +750,7 @@ class Light imagecopyresampled($thumb, $imgTmp, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); } ob_start(); - switch($extensions){ + switch ($extensions) { case 'jpg': case 'jpeg': imagejpeg($thumb); @@ -725,6 +764,7 @@ class Light } $image = ob_get_clean(); imagedestroy($thumb); + return $image; } @@ -782,7 +822,8 @@ class Light /*----------------------------------********---------------------------------*/ $licenseManager =& PmLicenseManager::getSingleton(); - if (in_array(md5($licenseManager->result), array('38afd7ae34bd5e3e6fc170d8b09178a3', 'ba2b45bdc11e2a4a6e86aab2ac693cbb'))) { + if (in_array(md5($licenseManager->result), + array('38afd7ae34bd5e3e6fc170d8b09178a3', 'ba2b45bdc11e2a4a6e86aab2ac693cbb'))) { $G_PUBLISH = new \Publisher(); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/licenseExpired', '', array(), 'licenseUpdate'); G::RenderPage('publish'); @@ -796,9 +837,10 @@ class Light $response["status"] = "OK"; } catch (Exception $e) { - $response["status"] = "ERROR"; + $response["status"] = "ERROR"; $response["message"] = $e->getMessage(); } + return $response; } @@ -809,7 +851,7 @@ class Light * @param $userUid * @param $type * @param $app_uid - * @throws \Exception + * @throws Exception */ public function getInformation($userUid, $type, $app_uid) { @@ -818,22 +860,23 @@ class Light case 'unassigned': case 'paused': case 'participated': - $oCase = new \Cases(); - $iDelIndex = $oCase->getCurrentDelegationCase( $app_uid ); + $oCase = new Cases(); + $iDelIndex = $oCase->getCurrentDelegationCase($app_uid); $aFields = $oCase->loadCase($app_uid, $iDelIndex); $response = $this->getInfoResume($userUid, $aFields, $type); break; case 'lastopenindex': //Get the last participate from a user - $oNewCase = new \ProcessMaker\BusinessModel\Cases(); + $oNewCase = new BusinessModelCases(); $iDelIndex = $oNewCase->getLastParticipatedByUser($app_uid, $userUid, 'OPEN'); - $oCase = new \Cases(); + $oCase = new Cases(); $aFields = $oCase->loadCase($app_uid, $iDelIndex); $aFields['DEL_INDEX'] = $iDelIndex === 0 ? '' : $iDelIndex; $aFields['USR_UID'] = $userUid; $response = $this->getInfoResume($userUid, $aFields, $type); break; } + return $response; } @@ -843,13 +886,13 @@ class Light * @param $userUid * @param $Fields * @param $type - * @throws \Exception + * @throws Exception */ public function getInfoResume($userUid, $Fields, $type) { /* Prepare page before to show */ - $objProc = new \Process(); - $aProc = $objProc->load( $Fields['PRO_UID'] ); + $objProc = new Process(); + $aProc = $objProc->load($Fields['PRO_UID']); $Fields['PRO_TITLE'] = $aProc['PRO_TITLE']; $objTask = new \Task(); @@ -858,8 +901,8 @@ class Light $task = explode('|', $Fields['TAS_UID']); $Fields['TAS_TITLE'] = ''; - for( $i = 0; $i < sizeof($task)-1; $i ++ ) { - $aTask = $objTask->load( $task[$i] ); + for ($i = 0; $i < sizeof($task) - 1; $i++) { + $aTask = $objTask->load($task[$i]); $Fields['TAS_TITLE'][] = $aTask['TAS_TITLE']; } @@ -873,43 +916,47 @@ class Light } /** - * first step for upload file + * First step for upload file * create uid app_document for upload file * - * @param $userUid - * @param $Fields - * @param $type - * @throws \Exception + * @param string $userUid + * @param string $appUid + * @param array $requestData + * @return array $response + * @throws Exception */ - public function postUidUploadFiles($userUid, $app_uid, $request_data) + public function postUidUploadFiles($userUid, $appUid, $requestData) { $response = array(); - if (is_array($request_data)) { - foreach ($request_data as $k => $file) { + if (is_array($requestData)) { + $config = new Configurations(); + $confEnvSetting = $config->getFormats(); + $user = new Users(); + foreach ($requestData as $k => $file) { $ext = pathinfo($file['name'], PATHINFO_EXTENSION); - if (\Bootstrap::getDisablePhpUploadExecution() === 1 && $ext === 'php') { - $message = \G::LoadTranslation('THE_UPLOAD_OF_PHP_FILES_WAS_DISABLED'); - \Bootstrap::registerMonologPhpUploadExecution('phpUpload', 550, $message, $file['name']); + if (Bootstrap::getDisablePhpUploadExecution() === 1 && $ext === 'php') { + $message = G::LoadTranslation('THE_UPLOAD_OF_PHP_FILES_WAS_DISABLED'); + Bootstrap::registerMonologPhpUploadExecution('phpUpload', 550, $message, $file['name']); $response[$k]['error'] = array( "code" => "400", "message" => $message ); continue; } - $oCase = new \Cases(); - $delIndex = $oCase->getCurrentDelegation($app_uid, $userUid); + $cases = new Cases(); + $delIndex = $cases->getCurrentDelegation($appUid, $userUid); $docUid = !empty($file['docUid']) ? $file['docUid'] : -1; $folderId = ''; - if($docUid !== -1){ - $inputDocument = new \InputDocument(); + if ($docUid !== -1) { + $inputDocument = new InputDocument(); $aInputDocumentData = $inputDocument->load($docUid); - $appFolder = new \AppFolder(); - $folderId = $appFolder->createFromPath($aInputDocumentData["INP_DOC_DESTINATION_PATH"], $app_uid); + $appFolder = new AppFolder(); + $folderId = $appFolder->createFromPath($aInputDocumentData["INP_DOC_DESTINATION_PATH"], $appUid); } $appDocType = !empty($file['appDocType']) ? $file['appDocType'] : "ATTACHED"; $fieldName = !empty($file['fieldName']) ? $file['fieldName'] : null; - $aFields = array( - "APP_UID" => $app_uid, + $fieldsInput = array( + "APP_UID" => $appUid, "DEL_INDEX" => $delIndex, "USR_UID" => $userUid, "DOC_UID" => $docUid, @@ -921,12 +968,31 @@ class Light "APP_DOC_FIELDNAME" => $fieldName, "FOLDER_UID" => $folderId ); - $oAppDocument = new \AppDocument(); - $oAppDocument->create($aFields); - $response[$k]['docVersion'] = $iDocVersion = $oAppDocument->getDocVersion(); - $response[$k]['appDocUid'] = $sAppDocUid = $oAppDocument->getAppDocUid(); + //We will to create a new version related to the appDocUid + if (isset($file['appDocUid'])) { + $fieldsInput['APP_DOC_UID'] = $file['appDocUid']; + } + $appDocument = new AppDocument(); + $appDocument->create($fieldsInput); + //todo, we need to uniform the response format with camelCase + $response[$k]['appDocUid'] = $appDocUid = $appDocument->getAppDocUid(); + $response[$k]['docVersion'] = $docVersion = $appDocument->getDocVersion(); + $response[$k]['appDocFilename'] = $appDocument->getAppDocFilename(); + $response[$k]['appDocCreateDate'] = $appDocument->getAppDocCreateDate(); + $response[$k]['appDocType'] = $appDocument->getAppDocType(); + $response[$k]['appDocIndex'] = $appDocument->getAppDocIndex(); + //todo, we use this *** in others endpoint for mark that user not exist, but we need to change + $userInfo = '***'; + if ($userUid !== '-1') { + $arrayUserData = $user->load($userUid); + $userInfo = $config->usersNameFormatBySetParameters($confEnvSetting["format"], + $arrayUserData["USR_USERNAME"], $arrayUserData["USR_FIRSTNAME"], + $arrayUserData["USR_LASTNAME"]); + } + $response[$k]['appDocCreateUser'] = $userInfo; } } + return $response; } @@ -937,22 +1003,22 @@ class Light * @param $userUid * @param $Fields * @param $type - * @throws \Exception + * @throws Exception */ public function documentUploadFiles($userUid, $app_uid, $app_doc_uid, $request_data) { $response = array("status" => "fail"); - if (isset( $_FILES["form"]["name"] ) && count( $_FILES["form"]["name"] ) > 0) { - $arrayField = array (); - $arrayFileName = array (); - $arrayFileTmpName = array (); - $arrayFileError = array (); + if (isset($_FILES["form"]["name"]) && count($_FILES["form"]["name"]) > 0) { + $arrayField = array(); + $arrayFileName = array(); + $arrayFileTmpName = array(); + $arrayFileError = array(); $i = 0; foreach ($_FILES["form"]["name"] as $fieldIndex => $fieldValue) { - if (is_array( $fieldValue )) { + if (is_array($fieldValue)) { foreach ($fieldValue as $index => $value) { - if (is_array( $value )) { + if (is_array($value)) { foreach ($value as $grdFieldIndex => $grdFieldValue) { $arrayField[$i]["grdName"] = $fieldIndex; $arrayField[$i]["grdFieldName"] = $grdFieldIndex; @@ -974,24 +1040,24 @@ class Light $i = $i + 1; } } - if (count( $arrayField ) > 0) { - for ($i = 0; $i <= count( $arrayField ) - 1; $i ++) { + if (count($arrayField) > 0) { + for ($i = 0; $i <= count($arrayField) - 1; $i++) { if ($arrayFileError[$i] == 0) { $indocUid = null; $fieldName = null; $fileSizeByField = 0; - $oAppDocument = new \AppDocument(); + $oAppDocument = new AppDocument(); $aAux = $oAppDocument->load($app_doc_uid); $iDocVersion = $oAppDocument->getDocVersion(); $sAppDocUid = $oAppDocument->getAppDocUid(); - $aInfo = pathinfo( $oAppDocument->getAppDocFilename() ); - $sExtension = ((isset( $aInfo["extension"] )) ? $aInfo["extension"] : ""); + $aInfo = pathinfo($oAppDocument->getAppDocFilename()); + $sExtension = ((isset($aInfo["extension"])) ? $aInfo["extension"] : ""); $pathUID = G::getPathFromUID($app_uid); $sPathName = PATH_DOCUMENT . $pathUID . PATH_SEP; $sFileName = $sAppDocUid . "_" . $iDocVersion . "." . $sExtension; - G::uploadFile( $arrayFileTmpName[$i], $sPathName, $sFileName ); + G::uploadFile($arrayFileTmpName[$i], $sPathName, $sFileName); $response = array("status" => "ok"); } } @@ -1007,24 +1073,25 @@ class Light * @param $userUid * @param $Fields * @param $type - * @throws \Exception + * @throws Exception */ public function claimCaseUser($userUid, $sAppUid) { $response = array("status" => "fail"); - $oCase = new \Cases(); - $iDelIndex = $oCase->getCurrentDelegation( $sAppUid, '', true ); + $oCase = new Cases(); + $iDelIndex = $oCase->getCurrentDelegation($sAppUid, '', true); $oAppDelegation = new \AppDelegation(); - $aDelegation = $oAppDelegation->load( $sAppUid, $iDelIndex ); + $aDelegation = $oAppDelegation->load($sAppUid, $iDelIndex); //if there are no user in the delegation row, this case is still in selfservice if ($aDelegation['USR_UID'] == "") { - $oCase->setCatchUser( $sAppUid,$iDelIndex, $userUid ); + $oCase->setCatchUser($sAppUid, $iDelIndex, $userUid); $response = array("status" => "ok"); } else { //G::SendMessageText( G::LoadTranslation( 'ID_CASE_ALREADY_DERIVATED' ), 'error' ); } + return $response; } @@ -1033,24 +1100,25 @@ class Light * * @return array */ - public function getCategoryList () + public function getCategoryList() { - $category = array (); - $category[] = array ("", G::LoadTranslation( "ID_ALL_CATEGORIES" )); + $category = array(); + $category[] = array("", G::LoadTranslation("ID_ALL_CATEGORIES")); - $criteria = new Criteria( 'workflow' ); - $criteria->addSelectColumn( \ProcessCategoryPeer::CATEGORY_UID ); - $criteria->addSelectColumn( \ProcessCategoryPeer::CATEGORY_NAME ); - $criteria->addAscendingOrderByColumn(\ProcessCategoryPeer::CATEGORY_NAME); + $criteria = new Criteria('workflow'); + $criteria->addSelectColumn(ProcessCategoryPeer::CATEGORY_UID); + $criteria->addSelectColumn(ProcessCategoryPeer::CATEGORY_NAME); + $criteria->addAscendingOrderByColumn(ProcessCategoryPeer::CATEGORY_NAME); - $dataset = \ProcessCategoryPeer::doSelectRS( $criteria ); - $dataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + $dataset = ProcessCategoryPeer::doSelectRS($criteria); + $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); while ($row = $dataset->getRow()) { - $category[] = array ($row['CATEGORY_UID'],$row['CATEGORY_NAME']); + $category[] = array($row['CATEGORY_UID'], $row['CATEGORY_NAME']); $dataset->next(); } + return $category; } @@ -1059,65 +1127,66 @@ class Light * @param $categoryUid * @param $userUid * @return array - * @throws \PropelException + * @throws PropelException */ - public function getProcessList ($action, $categoryUid, $userUid) + public function getProcessList($action, $categoryUid, $userUid) { //$action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : null; //$categoryUid = isset( $_REQUEST['CATEGORY_UID'] ) ? $_REQUEST['CATEGORY_UID'] : null; //$userUid = (isset( $_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '') ? $_SESSION['USER_LOGGED'] : null; // global $oAppCache; - $oAppCache = new \AppCacheView(); - $processes = array (); - $processes[] = array ('',G::LoadTranslation( 'ID_ALL_PROCESS' )); + $oAppCache = new AppCacheView(); + $processes = array(); + $processes[] = array('', G::LoadTranslation('ID_ALL_PROCESS')); //get the list based in the action provided switch ($action) { case 'draft': - $cProcess = $oAppCache->getDraftListCriteria( $userUid ); //fast enough + $cProcess = $oAppCache->getDraftListCriteria($userUid); //fast enough break; case 'sent': - $cProcess = $oAppCache->getSentListProcessCriteria( $userUid ); // fast enough + $cProcess = $oAppCache->getSentListProcessCriteria($userUid); // fast enough break; 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. - $oConf = new \Configurations(); - $oConf->loadConfig( $x, 'APP_CACHE_VIEW_ENGINE', '', '', '', '' ); + $oConf = new Configurations(); + $oConf->loadConfig($x, 'APP_CACHE_VIEW_ENGINE', '', '', '', ''); $appCacheViewEngine = $oConf->aConfig; - $lang = isset( $appCacheViewEngine['LANG'] ) ? $appCacheViewEngine['LANG'] : 'en'; + $lang = isset($appCacheViewEngine['LANG']) ? $appCacheViewEngine['LANG'] : 'en'; - $cProcess = new Criteria( 'workflow' ); + $cProcess = new Criteria('workflow'); $cProcess->clearSelectColumns(); - $cProcess->addSelectColumn( \ProcessPeer::PRO_UID ); - $cProcess->addSelectColumn( \ProcessPeer::PRO_TITLE ); + $cProcess->addSelectColumn(ProcessPeer::PRO_UID); + $cProcess->addSelectColumn(ProcessPeer::PRO_TITLE); if ($categoryUid) { - $cProcess->add( \ProcessPeer::PRO_CATEGORY, $categoryUid ); + $cProcess->add(ProcessPeer::PRO_CATEGORY, $categoryUid); } - $cProcess->add( ProcessPeer::PRO_STATUS, 'ACTIVE' ); - $cProcess->addAscendingOrderByColumn(\ProcessPeer::PRO_TITLE); + $cProcess->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); + $cProcess->addAscendingOrderByColumn(ProcessPeer::PRO_TITLE); - $oDataset = \ProcessPeer::doSelectRS( $cProcess ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + $oDataset = ProcessPeer::doSelectRS($cProcess); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { - $processes[] = array ($aRow['PRO_UID'],$aRow['PRO_TITLE']); + $processes[] = array($aRow['PRO_UID'], $aRow['PRO_TITLE']); $oDataset->next(); } - return print G::json_encode( $processes ); + + return print G::json_encode($processes); break; case 'unassigned': - $cProcess = $oAppCache->getUnassignedListCriteria( $userUid ); + $cProcess = $oAppCache->getUnassignedListCriteria($userUid); break; case 'paused': - $cProcess = $oAppCache->getPausedListCriteria( $userUid ); + $cProcess = $oAppCache->getPausedListCriteria($userUid); break; case 'to_revise': - $cProcess = $oAppCache->getToReviseListCriteria( $userUid ); + $cProcess = $oAppCache->getToReviseListCriteria($userUid); break; case 'to_reassign': $cProcess = $oAppCache->getToReassignListCriteria($userUid); @@ -1127,33 +1196,36 @@ class Light break; case 'todo': default: - $cProcess = $oAppCache->getToDoListCriteria( $userUid ); //fast enough + $cProcess = $oAppCache->getToDoListCriteria($userUid); //fast enough break; } //get the processes for this user in this action $cProcess->clearSelectColumns(); - $cProcess->addSelectColumn( \AppCacheViewPeer::PRO_UID ); - $cProcess->addSelectColumn( \AppCacheViewPeer::APP_PRO_TITLE ); - $cProcess->setDistinct( \AppCacheViewPeer::PRO_UID ); + $cProcess->addSelectColumn(AppCacheViewPeer::PRO_UID); + $cProcess->addSelectColumn(AppCacheViewPeer::APP_PRO_TITLE); + $cProcess->setDistinct(AppCacheViewPeer::PRO_UID); if ($categoryUid) { require_once 'classes/model/Process.php'; - $cProcess->addAlias( 'CP', 'PROCESS' ); - $cProcess->add( 'CP.PRO_CATEGORY', $categoryUid, Criteria::EQUAL ); - $cProcess->addJoin( \AppCacheViewPeer::PRO_UID, 'CP.PRO_UID', Criteria::LEFT_JOIN ); - $cProcess->addAsColumn( 'CATEGORY_UID', 'CP.PRO_CATEGORY' ); + $cProcess->addAlias('CP', 'PROCESS'); + $cProcess->add('CP.PRO_CATEGORY', $categoryUid, Criteria::EQUAL); + $cProcess->addJoin(AppCacheViewPeer::PRO_UID, 'CP.PRO_UID', Criteria::LEFT_JOIN); + $cProcess->addAsColumn('CATEGORY_UID', 'CP.PRO_CATEGORY'); } - $cProcess->addAscendingOrderByColumn(\AppCacheViewPeer::APP_PRO_TITLE); + $cProcess->addAscendingOrderByColumn(AppCacheViewPeer::APP_PRO_TITLE); - $oDataset = \AppCacheViewPeer::doSelectRS( $cProcess, \Propel::getDbConnection('workflow_ro') ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + $oDataset = AppCacheViewPeer::doSelectRS($cProcess, Propel::getDbConnection('workflow_ro')); + $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['APP_PRO_TITLE'] ); $oDataset->next(); } + return $processes; } @@ -1163,22 +1235,23 @@ class Light public function getUsersToReassign($usr_uid, $task_uid) { - $memcache = \PMmemcached::getSingleton( SYS_SYS ); - $RBAC = \RBAC::getSingleton( PATH_DATA, session_id() ); + $memcache = PMmemcached::getSingleton(SYS_SYS); + $RBAC = RBAC::getSingleton(PATH_DATA, session_id()); $RBAC->sSystem = 'PROCESSMAKER'; $RBAC->initRBAC(); $memKey = 'rbacSession' . session_id(); - if (($RBAC->aUserInfo = $memcache->get( $memKey )) === false) { - $RBAC->loadUserRolePermission( $RBAC->sSystem, $usr_uid ); - $memcache->set( $memKey, $RBAC->aUserInfo, \PMmemcached::EIGHT_HOURS ); + if (($RBAC->aUserInfo = $memcache->get($memKey)) === false) { + $RBAC->loadUserRolePermission($RBAC->sSystem, $usr_uid); + $memcache->set($memKey, $RBAC->aUserInfo, PMmemcached::EIGHT_HOURS); } $GLOBALS['RBAC'] = $RBAC; $task = new \Task(); $tasks = $task->load($task_uid); - $case = new \Cases(); + $case = new Cases(); $result = new \stdclass(); $result->data = $case->getUsersToReassign($task_uid, $usr_uid, $tasks['PRO_UID']); + return $result; } @@ -1187,13 +1260,13 @@ class Light */ public function reassignCase($usr_uid, $app_uid, $TO_USR_UID) { - $cases = new \Cases(); + $cases = new Cases(); $user = new \Users(); $app = new \Application(); $result = new \stdclass(); try { - $iDelIndex = $cases->getCurrentDelegation( $app_uid, $usr_uid ); + $iDelIndex = $cases->getCurrentDelegation($app_uid, $usr_uid); $cases->reassignCase($app_uid, $iDelIndex, $usr_uid, $TO_USR_UID); $caseData = $app->load($app_uid); $userData = $user->load($TO_USR_UID); @@ -1201,7 +1274,7 @@ class Light $data['USER'] = $userData['USR_LASTNAME'] . ' ' . $userData['USR_FIRSTNAME']; //TODO change with the farmated username from environment conf $result->status = 0; $result->msg = G::LoadTranslation('ID_REASSIGNMENT_SUCCESS', SYS_LANG, $data); - } catch (\Exception $e) { + } catch (Exception $e) { $result->status = 1; $result->msg = $e->getMessage(); } @@ -1217,8 +1290,8 @@ class Light $result = new \stdclass(); try { - $oCase = new \Cases(); - $iDelIndex = $oCase->getCurrentDelegation( $app_uid, $usr_uid ); + $oCase = new Cases(); + $iDelIndex = $oCase->getCurrentDelegation($app_uid, $usr_uid); // Save the note pause reason if ($request_data['noteContent'] != '') { $request_data['noteContent'] = G::LoadTranslation('ID_CASE_PAUSE_LABEL_NOTE') . ' ' . $request_data['noteContent']; @@ -1236,9 +1309,10 @@ class Light $result->success = true; $result->msg = G::LoadTranslation('ID_CASE_PAUSED_SUCCESSFULLY', SYS_LANG, $data); - } catch (\Exception $e) { + } catch (Exception $e) { throw $e; } + return $result; } @@ -1248,7 +1322,7 @@ class Light */ public function getConfiguration($params) { - $sysConf = \Bootstrap::getSystemConfiguration('','',SYS_SYS); + $sysConf = Bootstrap::getSystemConfiguration('', '', SYS_SYS); $multiTimeZone = false; //Set Time Zone /*----------------------------------********---------------------------------*/ @@ -1257,9 +1331,10 @@ class Light $multiTimeZone = (int)($sysConf['system_utc_time_zone']) == 1; } /*----------------------------------********---------------------------------*/ - $tz = isset($_SESSION['USR_TIME_ZONE'])?$_SESSION['USR_TIME_ZONE']:$sysConf['time_zone']; - $offset = timezone_offset_get( new \DateTimeZone( $tz ), new \DateTime() ); - $response['timeZone'] = sprintf( "GMT%s%02d:%02d", ( $offset >= 0 ) ? '+' : '-', abs( $offset / 3600 ), abs( ($offset % 3600) / 60 ) ); + $tz = isset($_SESSION['USR_TIME_ZONE']) ? $_SESSION['USR_TIME_ZONE'] : $sysConf['time_zone']; + $offset = timezone_offset_get(new \DateTimeZone($tz), new \DateTime()); + $response['timeZone'] = sprintf("GMT%s%02d:%02d", ($offset >= 0) ? '+' : '-', abs($offset / 3600), + abs(($offset % 3600) / 60)); $response['multiTimeZone'] = $multiTimeZone; $fields = System::getSysInfo(); $response['version'] = $fields['PM_VERSION']; @@ -1270,24 +1345,24 @@ class Light /*----------------------------------********---------------------------------*/ $response['buildType'] = $buildType; - $conf = new \Configurations(); + $conf = new Configurations(); $confEnvironment = $conf->getFormats(); $response['environment'] = array(); - if (is_array($confEnvironment)){ - $response['environment']['format'] = isset($confEnvironment['format'])?$confEnvironment['format']:''; - $response['environment']['dateFormat'] = isset($confEnvironment['dateFormat'])?$confEnvironment['dateFormat']:''; - $response['environment']['casesListDateFormat'] = isset($confEnvironment['casesListDateFormat'])?$confEnvironment['casesListDateFormat']:''; + if (is_array($confEnvironment)) { + $response['environment']['format'] = isset($confEnvironment['format']) ? $confEnvironment['format'] : ''; + $response['environment']['dateFormat'] = isset($confEnvironment['dateFormat']) ? $confEnvironment['dateFormat'] : ''; + $response['environment']['casesListDateFormat'] = isset($confEnvironment['casesListDateFormat']) ? $confEnvironment['casesListDateFormat'] : ''; } $Translations = new \Translation; $translationsTable = $Translations->getTranslationEnvironments(); - $languagesList = array (); + $languagesList = array(); foreach ($translationsTable as $locale) { $LANG_ID = $locale['LOCALE']; if ($locale['COUNTRY'] != '.') { - $LANG_NAME = $locale['LANGUAGE'] . ' (' . (ucwords( strtolower( $locale['COUNTRY'] ) )) . ')'; + $LANG_NAME = $locale['LANGUAGE'] . ' (' . (ucwords(strtolower($locale['COUNTRY']))) . ')'; } else { $LANG_NAME = $locale['LANGUAGE']; } @@ -1299,14 +1374,15 @@ class Light if (isset($params['fileLimit']) && $params['fileLimit']) { $postMaxSize = $this->return_bytes(ini_get('post_max_size')); $uploadMaxFileSize = $this->return_bytes(ini_get('upload_max_filesize')); - if ($postMaxSize < $uploadMaxFileSize){ + if ($postMaxSize < $uploadMaxFileSize) { $uploadMaxFileSize = $postMaxSize; } $response['fileLimit'] = $uploadMaxFileSize; } if (isset($params['tz']) && $params['tz']) { - $response['tz'] = isset($_SESSION['USR_TIME_ZONE'])?$_SESSION['USR_TIME_ZONE']:$sysConf['time_zone']; + $response['tz'] = isset($_SESSION['USR_TIME_ZONE']) ? $_SESSION['USR_TIME_ZONE'] : $sysConf['time_zone']; } + return $response; } @@ -1329,22 +1405,23 @@ class Light public function getInformationDerivatedCase($app_uid, $del_index) { - $oCriteria = new Criteria( 'workflow' ); - $children = array (); + $oCriteria = new Criteria('workflow'); + $children = array(); $oCriteria->clearSelectColumns(); - $oCriteria->addSelectColumn( AppDelegationPeer::DEL_INDEX ); - $oCriteria->addSelectColumn( AppDelegationPeer::PRO_UID ); - $oCriteria->addSelectColumn( AppDelegationPeer::TAS_UID ); - $oCriteria->addSelectColumn( AppDelegationPeer::USR_UID ); - $oCriteria->add( AppDelegationPeer::APP_UID, $app_uid ); - $oCriteria->add( AppDelegationPeer::DEL_PREVIOUS, $del_index ); - $oDataset = AppDelegationPeer::doSelectRS( $oCriteria ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); + $oCriteria->addSelectColumn(AppDelegationPeer::DEL_INDEX); + $oCriteria->addSelectColumn(AppDelegationPeer::PRO_UID); + $oCriteria->addSelectColumn(AppDelegationPeer::TAS_UID); + $oCriteria->addSelectColumn(AppDelegationPeer::USR_UID); + $oCriteria->add(AppDelegationPeer::APP_UID, $app_uid); + $oCriteria->add(AppDelegationPeer::DEL_PREVIOUS, $del_index); + $oDataset = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($row = $oDataset->getRow()) { $children[] = $row; $oDataset->next(); } + return $children; }