From fc7312180570f88f418b75d6419672fed5657629 Mon Sep 17 00:00:00 2001 From: Omar Suca Date: Wed, 14 Aug 2013 13:03:21 -0400 Subject: [PATCH 1/4] BUG-12285 Issue with Input Document with Process Permission. SOLVED Descripcion: When uploaded a document and given Process Permission to users to delete and upload new document, this does not reflect in the process. The current user can't see the files uploded from supervisor. Solucion: Se constato de que existe un filtro dentro de un query que restringe la visualizacion de archivos subidos por el supervisor, la cual fue quitada y de ese modo ya funciono. Para la actualizacion de campos del caso especificamente para los tipo input se realizo los siguientes pasos: - Se obtuvo todos los formularios en los cuales el usuario partipo. - Se filtro por tipo de campo (file) para realiza el update del caso. - El valor de cada campo tipo file asociado a un input document sera actualizado con el nombre del file subido por parte del supervisor. Resuelto para la version PM 2.5.2 --- workflow/engine/classes/class.case.php | 9 --- .../cases/cases_SupervisorSaveDocument.php | 63 ++++++++++++++++++- 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 9db2d6d56..ea2df69ab 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -4367,15 +4367,6 @@ class Cases $oCriteria->add(AppDocumentPeer::APP_DOC_STATUS, array('ACTIVE'), Criteria::IN); $oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000); - $oCriteria->add( - $oCriteria->getNewCriterion( - AppDocumentPeer::APP_DOC_UID, $aObjectPermissions['INPUT_DOCUMENTS'], Criteria::IN - )-> - addOr($oCriteria->getNewCriterion(AppDocumentPeer::USR_UID, array($sUserUID, '-1'), Criteria::IN))); - - $oCriteria->addJoin(AppDocumentPeer::APP_UID, ApplicationPeer::APP_UID, Criteria::LEFT_JOIN); - $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); - $oCriteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX); $oDataset = AppDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); diff --git a/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php b/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php index df68699c3..ba234cf11 100755 --- a/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php +++ b/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php @@ -25,7 +25,8 @@ try { //save info G::LoadClass( 'case' ); - + G::LoadClass( 'tasks' ); + $oAppDocument = new AppDocument(); $aFields = array ('APP_UID' => $_GET['APP_UID'],'DEL_INDEX' => 100000,'USR_UID' => $_SESSION['USER_LOGGED'],'DOC_UID' => $_GET['UID'],'APP_DOC_TYPE' => $_POST['form']['APP_DOC_TYPE'],'APP_DOC_CREATE_DATE' => date( 'Y-m-d H:i:s' ),'APP_DOC_COMMENT' => isset( $_POST['form']['APP_DOC_COMMENT'] ) ? $_POST['form']['APP_DOC_COMMENT'] : '','APP_DOC_TITLE' => '','APP_DOC_FILENAME' => isset( $_FILES['form']['name']['APP_DOC_FILENAME'] ) ? $_FILES['form']['name']['APP_DOC_FILENAME'] : '' ); @@ -38,6 +39,7 @@ try { if ($_FILES['form']['error']['APP_DOC_FILENAME'] == 0) { $sPathName = PATH_DOCUMENT . G::getPathFromUID($_GET['APP_UID']) . PATH_SEP; $sFileName = $sAppDocUid . '.' . $ext; + $sOriginalName = $_FILES['form']['name']['APP_DOC_FILENAME']; G::uploadFile( $_FILES['form']['tmp_name']['APP_DOC_FILENAME'], $sPathName, $sFileName ); //Plugin Hook PM_UPLOAD_DOCUMENT for upload document @@ -49,6 +51,65 @@ try { unlink( $sPathName . $sFileName ); } //end plugin + + //update AppData with the current file uploaded + $oCase = new Cases(); + $aAppDataFields = $oCase->loadCase( $_GET['APP_UID'] ); + + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(AppDelegationPeer::TAS_UID); + $oCriteria->add(AppDelegationPeer::APP_UID, $_GET['APP_UID'], CRITERIA::EQUAL); + $oCriteria->addAscendingOrderByColumn(AppDelegationPeer::DEL_INDEX); + $oDataset = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $oDataset->next(); + $oTask = new Tasks(); + + $aDynaforms = array(); + while ($aRow = $oDataset->getRow()) { + $aSteps = $oTask->getStepsOfTask($aRow['TAS_UID']); + if (is_array($aSteps)) { + foreach ($aSteps as $key => $value) { + $oCriteriaStep = new Criteria('workflow'); + $oCriteriaStep->addSelectColumn(StepPeer::STEP_UID_OBJ); + $sStepId = (isset($value['STEP_UID'])) ? $value['STEP_UID'] : 0 ; + $oCriteriaStep->add(StepPeer::STEP_UID, $sStepId, CRITERIA::EQUAL); + $oCriteriaStep->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM', CRITERIA::EQUAL); + $oDataSetStep = StepPeer::doSelectRS($oCriteriaStep); + $oDataSetStep->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataSetStep->next(); + $aRows = $oDataSetStep->getRow(); + + if (is_array($aRows) && !in_array($aRows['STEP_UID_OBJ'], $aDynaforms)) { + $aDynaforms[] = $aRows['STEP_UID_OBJ']; + } + } + unset($value); + } + $oDataset->next(); + } + + + if (count($aDynaforms) > 0) { + require_once ("classes/model/Dynaform.php"); + $dynInstance = new Dynaform(); + foreach ($aDynaforms as $key => $value) { + $aAllFields = $dynInstance->getDynaformFields($value); + if (is_array($aAllFields)) { + foreach ($aAllFields as $kInput => $input) { + $aPropertiesField = get_object_vars($input); + if ($aPropertiesField['type'] == 'file' && $aPropertiesField['input'] == $_GET['UID'] && !empty($aAppDataFields['APP_DATA'][$kInput])) { + $aAppDataFields['APP_DATA'][$kInput] = $sOriginalName; + $oCase->updateCase( $_GET['APP_UID'], $aAppDataFields ); + } + } + unset($input); + } + } + unset($value); + } + //End Update AppData with the current file uploaded } } //go to the next step From 2b7613f7615b5417873088d3f56846d93b4ff988 Mon Sep 17 00:00:00 2001 From: Omar Suca Date: Thu, 15 Aug 2013 15:01:34 -0400 Subject: [PATCH 2/4] BUG-12285 Issue with Input Document with Process Permission. SOLVED Descripcion: When uploaded a document and given Process Permission to users to delete and upload new document, this does not reflect in the process. The current user can't see the files uploded from supervisor. Solucion: Se constato de que existe un filtro dentro de un query que restringe la visualizacion de archivos subidos por el supervisor, la cual fue quitada y de ese modo ya funciono. Para la actualizacion de campos del caso especificamente para los tipo input se realizo los siguientes pasos: - Se obtuvo todos los formularios en los cuales el usuario partipo. - Se filtro por tipo de campo (file) para realiza el update del caso. - El valor de cada campo tipo file asociado a un input document sera actualizado con el nombre del file subido por parte del supervisor. Resuelto para la version PM 2.5.2 --- workflow/engine/classes/class.case.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index ea2df69ab..7b48ebf44 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -4366,7 +4366,9 @@ class Cases $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, array('INPUT'), Criteria::IN); $oCriteria->add(AppDocumentPeer::APP_DOC_STATUS, array('ACTIVE'), Criteria::IN); $oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000); - + $oCriteria->addJoin(AppDocumentPeer::APP_UID, ApplicationPeer::APP_UID, Criteria::LEFT_JOIN); + $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); + $oCriteria->addAscendingOrderByColumn(AppDocumentPeer::APP_DOC_INDEX); $oDataset = AppDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); From fce9104b6293e37ac2c63d3574364ebe8e699d42 Mon Sep 17 00:00:00 2001 From: Omar Suca Date: Mon, 19 Aug 2013 09:58:00 -0400 Subject: [PATCH 3/4] BUG-12285 Issue with Input Document with Process Permission. SOLVED Descripcion: When uploaded a document and given Process Permission to users to delete and upload new document, this does not reflect in the process. The current user can't see the files uploded from supervisor. Solucion: Se constato de que existe un filtro dentro de un query que restringe la visualizacion de archivos subidos por el supervisor, la cual fue quitada y de ese modo ya funciono. Para la actualizacion de campos del caso especificamente para los tipo input se realizo los siguientes pasos: Se obtuvo todos los formularios en los cuales el usuario partipo. Se filtro por tipo de campo (file) para realiza el update del caso. El valor de cada campo tipo file asociado a un input document sera actualizado con el nombre del file subido por parte del supervisor. Resuelto para la version PM 2.5.2 --- .../engine/methods/cases/cases_SupervisorSaveDocument.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php b/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php index ba234cf11..a7f35ff06 100755 --- a/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php +++ b/workflow/engine/methods/cases/cases_SupervisorSaveDocument.php @@ -98,8 +98,9 @@ try { $aAllFields = $dynInstance->getDynaformFields($value); if (is_array($aAllFields)) { foreach ($aAllFields as $kInput => $input) { - $aPropertiesField = get_object_vars($input); - if ($aPropertiesField['type'] == 'file' && $aPropertiesField['input'] == $_GET['UID'] && !empty($aAppDataFields['APP_DATA'][$kInput])) { + if (!isset($input->input)) continue; + + if ($input->type == 'file' && $input->input == $_GET['UID'] && !empty($aAppDataFields['APP_DATA'][$kInput])) { $aAppDataFields['APP_DATA'][$kInput] = $sOriginalName; $oCase->updateCase( $_GET['APP_UID'], $aAppDataFields ); } From 6eda4cc246ccceaa5f359838aab19ec78d154619 Mon Sep 17 00:00:00 2001 From: Omar Suca Date: Mon, 19 Aug 2013 10:51:38 -0400 Subject: [PATCH 4/4] BUG-12724 Issue with the task nottification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Descripcion: When you change the task name the task notification es disabled. Solucion: It was resolved getting the value of the Task Notification and if it don“t have any value assigned it will be assined FALSE value (disabled). The issue with the Assigment tab was resolved and it's related with the http://bugs.processmaker.com/view.php?id=12467. It was resolved for PM 2.5.2 --- workflow/engine/methods/tasks/tasks_Ajax.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow/engine/methods/tasks/tasks_Ajax.php b/workflow/engine/methods/tasks/tasks_Ajax.php index 039ac01c0..9a5a6d4d8 100755 --- a/workflow/engine/methods/tasks/tasks_Ajax.php +++ b/workflow/engine/methods/tasks/tasks_Ajax.php @@ -46,7 +46,8 @@ try { if (isset( $aData['SEND_EMAIL'] )) { $aData['TAS_SEND_LAST_EMAIL'] = $aData['SEND_EMAIL'] == 'TRUE' ? 'TRUE' : 'FALSE'; } else { - $aData['TAS_SEND_LAST_EMAIL'] = 'FALSE'; + $aTaskInfo = $oTask->load($aData['TAS_UID']); + $aData['TAS_SEND_LAST_EMAIL'] = is_null($aTaskInfo['TAS_SEND_LAST_EMAIL']) ? 'FALSE' : $aTaskInfo['TAS_SEND_LAST_EMAIL']; } //Additional configuration