From 36b325d7a693dd7a8f69b79b2b65b62cff77a202 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Fri, 16 Jan 2015 17:00:40 -0400 Subject: [PATCH 1/6] PM-1227 "Error al borrar un Dynaforms/Input Documents..." SOLVED Issue: Error al borrar un Dynaforms/Input Documents en Supervisor Steps. Cause: Linea accidentalmente agregada "ob_end_clean();" Solution: Se esta quitando esas lineas --- .../ProcessMaker/Services/Api/Project/ProcessSupervisors.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php index 03909dbb9..9c9672930 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php @@ -286,7 +286,6 @@ class ProcessSupervisors extends Api try { $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); $supervisor->removeDynaformSupervisor($prjUid, $pudUid); - ob_end_clean(); } catch (\Exception $e) { //response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); @@ -305,7 +304,6 @@ class ProcessSupervisors extends Api try { $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); $supervisor->removeInputDocumentSupervisor($prjUid, $puiUid); - ob_end_clean(); } catch (\Exception $e) { //response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); From 35ba6c57095be7edbfa4ef8e25c66fcc7e99da2c Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Sat, 17 Jan 2015 11:11:20 -0400 Subject: [PATCH 2/6] PM-1227 "Error al borrar un Dynaforms/Input Documents..." SOLVED Issue: Error al borrar un Dynaforms/Input Documents en Supervisor Steps. Cause: Uso incorrecto de la funcion "var_dump" y "echo" en el metodo "reorderPositions()" Solution: Se estan quitando esas lineas --- workflow/engine/classes/model/StepSupervisor.php | 12 +++++------- .../ProcessMaker/BusinessModel/ProcessSupervisor.php | 4 ++-- .../Services/Api/Project/ProcessSupervisors.php | 4 ++-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/workflow/engine/classes/model/StepSupervisor.php b/workflow/engine/classes/model/StepSupervisor.php index faa3ec31c..77eb769b3 100755 --- a/workflow/engine/classes/model/StepSupervisor.php +++ b/workflow/engine/classes/model/StepSupervisor.php @@ -187,14 +187,12 @@ class StepSupervisor extends BaseStepSupervisor $oCriteria->add( StepSupervisorPeer::STEP_POSITION, $iPosition, '>' ); $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - $oDataset->next(); - var_dump( StepSupervisorPeer::doCount( $oCriteria ) ); - while ($aRow = $oDataset->getRow()) { - var_dump( $aRow ); - echo "\n"; + + while ($oDataset->next()) { + $aRow = $oDataset->getRow(); + $this->update( array ('STEP_UID' => $aRow['STEP_UID'],'PRO_UID' => $aRow['PRO_UID'],'STEP_TYPE_OBJ' => $aRow['STEP_TYPE_OBJ'],'STEP_UID_OBJ' => $aRow['STEP_UID_OBJ'],'STEP_POSITION' => $aRow['STEP_POSITION'] - 1 ) ); - $oDataset->next(); } } catch (Exception $oException) { throw $Exception; @@ -243,7 +241,7 @@ class StepSupervisor extends BaseStepSupervisor $oCriteria->add( StepSupervisorPeer::STEP_TYPE_OBJ, 'DYNAFORM' ); $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); - while($oDataset->next()) { + while ($oDataset->next()) { $res[] = $oDataset->getRow(); } return $res; diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php index 0ae4d0a06..ba20b1389 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ProcessSupervisor.php @@ -855,7 +855,7 @@ class ProcessSupervisor try { $oDynaformSupervidor = \StepSupervisorPeer::retrieveByPK($sPudUID); if (!is_null($oDynaformSupervidor)) { - $oProcessMap = new \processMap(new \DBConnection()); + $oProcessMap = new \processMap(); $oProcessMap->removeSupervisorStep( $oDynaformSupervidor->getStepUid(), $sProcessUID, 'DYNAFORM', $oDynaformSupervidor->getStepUidObj(), $oDynaformSupervidor->getStepPosition() ); } else { throw new \Exception(\G::LoadTranslation("ID_ROW_DOES_NOT_EXIST")); @@ -877,7 +877,7 @@ class ProcessSupervisor try { $oInputDocumentSupervidor = \StepSupervisorPeer::retrieveByPK($sPuiUID); if (!is_null($oInputDocumentSupervidor)) { - $oProcessMap = new \processMap(new \DBConnection()); + $oProcessMap = new \processMap(); $oProcessMap->removeSupervisorStep( $oInputDocumentSupervidor->getStepUid(), $sProcessUID, 'INPUT_DOCUMENT', $oInputDocumentSupervidor->getStepUidObj(), $oInputDocumentSupervidor->getStepPosition() ); } else { throw new \Exception(\G::LoadTranslation("ID_ROW_DOES_NOT_EXIST")); diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php index 9c9672930..cbfa0c796 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/ProcessSupervisors.php @@ -219,7 +219,7 @@ class ProcessSupervisors extends Api * * @status 201 */ - public function doPostProcessSupervisorDynaform($prjUid, $dyn_uid, $pud_position=null) + public function doPostProcessSupervisorDynaform($prjUid, $dyn_uid, $pud_position = null) { try { $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); @@ -242,7 +242,7 @@ class ProcessSupervisors extends Api * * @status 201 */ - public function doPostProcessSupervisorInputDocument($prjUid, $inp_doc_uid, $pui_position=null) + public function doPostProcessSupervisorInputDocument($prjUid, $inp_doc_uid, $pui_position = null) { try { $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor(); From eac594e0d95c79858cb616682f2d6d5a21e29384 Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Sat, 17 Jan 2015 17:02:10 -0400 Subject: [PATCH 3/6] PM 934 "16557: PMFDerivate is not working" SOLVED Code Issue: 16557: PMFDerivate is not working. Solution: - En el metodo derivateCase(), existia codigo repetido en dos partes del metodo. Se suprime el codigo repetido. - En PMFDerivateCase contiene lo siguiente: PMFDerivateCase ($caseId, $delIndex, $bExecuteTriggersBeforeAssignment = false, $sUserLogged = null) Al ejecutar el trigger cuando esta como Before Assigment, se debe pasar el tercer parametro como true. --- workflow/engine/classes/class.wsBase.php | 53 +++--------------------- 1 file changed, 6 insertions(+), 47 deletions(-) diff --git a/workflow/engine/classes/class.wsBase.php b/workflow/engine/classes/class.wsBase.php index 76be0ade5..3818d684f 100755 --- a/workflow/engine/classes/class.wsBase.php +++ b/workflow/engine/classes/class.wsBase.php @@ -927,7 +927,7 @@ class wsBase } else { /*----------------------------------********---------------------------------*/ $aSetup = System::getEmailConfiguration(); - /*----------------------------------********---------------------------------*/ + /*----------------------------------********---------------------------------*/ } /*----------------------------------********---------------------------------*/ @@ -2093,6 +2093,7 @@ class wsBase * @param string $userId * @param string $caseId * @param string $delIndex + * @param bool $bExecuteTriggersBeforeAssignment * @return $result will return an object */ public function derivateCase ($userId, $caseId, $delIndex, $bExecuteTriggersBeforeAssignment = false) @@ -2187,6 +2188,8 @@ class wsBase $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 1, 'BEFORE' ); if (count( $aTriggers ) > 0) { + $varTriggers = $varTriggers . "
-= Before Assignment =-
"; + $oPMScript = new PMScript(); foreach ($aTriggers as $aTrigger) { @@ -2218,7 +2221,8 @@ class wsBase $oPMScript->setScript( $aTrigger['TRI_WEBBOT'] ); $oPMScript->execute(); - $varTriggers .= "
-= Before Assignment =-
" . nl2br( htmlentities( $aTrigger['TRI_WEBBOT'], ENT_QUOTES ) ) . "
"; + $trigger = TriggersPeer::retrieveByPk($aTrigger["TRI_UID"]); + $varTriggers = $varTriggers . " - " . nl2br(htmlentities($trigger->getTriTitle(), ENT_QUOTES)) . "
"; //$appFields = $oCase->loadCase( $caseId ); $appFields['APP_DATA'] = $oPMScript->aFields; @@ -2283,51 +2287,6 @@ class wsBase } } - //Execute triggers before derivation BEFORE_ASSIGNMENT - $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 1, 'BEFORE' ); - - if (count( $aTriggers ) > 0) { - $varTriggers .= "-= Before Derivation =-
"; - - $oPMScript = new PMScript(); - - foreach ($aTriggers as $aTrigger) { - //Set variables - $params = new stdClass(); - $params->appData = $appFields["APP_DATA"]; - - if ($this->stored_system_variables) { - $params->option = "STORED SESSION"; - $params->SID = $this->wsSessionId; - } - - $appFields["APP_DATA"] = array_merge( $appFields["APP_DATA"], G::getSystemConstants( $params ) ); - - //PMScript - $oPMScript->setFields( $appFields['APP_DATA'] ); - $bExecute = true; - - if ($aTrigger['ST_CONDITION'] !== '') { - $oPMScript->setScript( $aTrigger['ST_CONDITION'] ); - $bExecute = $oPMScript->evaluate(); - } - - if ($bExecute) { - $oPMScript->setScript( $aTrigger['TRI_WEBBOT'] ); - $oPMScript->execute(); - - $oTrigger = TriggersPeer::retrieveByPk( $aTrigger['TRI_UID'] ); - $varTriggers .= " - " . nl2br( htmlentities( $oTrigger->getTriTitle(), ENT_QUOTES ) ) . "
"; - $appFields['APP_DATA'] = $oPMScript->aFields; - unset($appFields['APP_STATUS']); - unset($appFields['APP_PROC_STATUS']); - unset($appFields['APP_PROC_CODE']); - unset($appFields['APP_PIN']); - $oCase->updateCase( $caseId, $appFields ); - } - } - } - $oDerivation = new Derivation(); $derive = $oDerivation->prepareInformation( $aData ); From 5fb4cb9217134f6594816153528617bae887f450 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Mon, 19 Jan 2015 11:29:15 -0400 Subject: [PATCH 4/6] PM-1275 PM-1276: Create Dynaform from Copy/Import & PM Table dynaform. --- workflow/engine/classes/model/Dynaform.php | 152 ++++++++++++++++++ .../ProcessMaker/BusinessModel/DynaForm.php | 10 ++ 2 files changed, 162 insertions(+) diff --git a/workflow/engine/classes/model/Dynaform.php b/workflow/engine/classes/model/Dynaform.php index 35a0a651a..53e730ac1 100755 --- a/workflow/engine/classes/model/Dynaform.php +++ b/workflow/engine/classes/model/Dynaform.php @@ -353,6 +353,158 @@ class Dynaform extends BaseDynaform $attributes = array ('XMLNODE_NAME_OLD' => '','XMLNODE_NAME' => 'SUBMIT','TYPE' => 'submit' ); $fieldXML->Save( $attributes, $labels, $options ); + + //update content if version is 2 + if ($this->getDynVersion() === 2) { + $items = array(); + $variables = array(); + $res = $sth->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); + while ($res->next()) { + //variables + $arrayData = array( + "var_name" => $res->get('Field'), + "var_label" => $res->get('Field'), + "var_field_type" => "string", + "var_field_size" => 10, + "var_null" => 1, + "var_dbconnection" => "none", + "var_sql" => "", + "var_options_control" => "", + "var_default" => "", + "var_accepted_values" => Array() + ); + $objVariable = new \ProcessMaker\BusinessModel\Variable(); + try { + $objVariable->existsName($this->getProUid(), $res->get('Field')); + $variable = $objVariable->create($this->getProUid(), $arrayData); + } catch (\Exception $e) { + $data = $objVariable->getVariables($this->getProUid()); + foreach ($data as $datavariable) { + if ($datavariable["var_name"] === $res->get('Field')) { + $variable = $datavariable; + break; + } + } + } + array_push($variables, $variable); + + //data type + $type = "text"; + $dataType = explode('(', $res->get('Type')); + error_log(print_r($dataType, true)); + switch ($dataType[0]) { + case 'bigint': + $type = 'text'; + $dataType = 'integer'; + break; + case 'int': + $type = 'text'; + $dataType = 'integer'; + break; + case 'smallint': + $type = 'text'; + $dataType = 'integer'; + break; + case 'tinyint': + $type = 'text'; + $dataType = 'integer'; + break; + case 'decimal': + $type = 'text'; + $dataType = 'float'; + break; + case 'double': + $type = 'text'; + $dataType = 'float'; + break; + case 'float': + $type = 'text'; + $dataType = 'float'; + break; + case 'datetime': + $type = 'datetime'; + $dataType = 'datetime'; + break; + case 'date': + $type = 'datetime'; + $dataType = 'datetime'; + break; + case 'time': + $type = 'datetime'; + $dataType = 'datetime'; + break; + case 'char': + $type = 'text'; + $dataType = 'string'; + break; + case 'varchar': + $type = 'text'; + $dataType = 'string'; + break; + case 'mediumtext': + $type = 'textarea'; + $dataType = 'string'; + break; + default: + $type = "text"; + $dataType = 'string'; + break; + } + + array_push($items, array( + array( + "type" => $type, + "dataType" => $dataType, //$res->get('Type'), + "id" => $res->get('Field'), + "name" => $res->get('Field'), + "label" => $res->get('Field'), + "hint" => "", + "required" => false, + "defaultValue" => "", + "dependentFields" => array(), + "textTransform" => "none", + "validate" => "any", + "mask" => "", + "maxLength" => 1000, + "formula" => "", + "mode" => "parent", + "var_uid" => $variable["var_uid"], + "var_name" => $variable["var_name"], + "colSpan" => 12 + ) + )); + } + //submit button + array_push($items, array( + array( + "type" => "submit", + "id" => "FormDesigner-" . \ProcessMaker\Util\Common::generateUID(), + "name" => "submit", + "label" => "submit", + "colSpan" => 12 + ) + )); + $json = array( + "name" => $this->getDynTitle(), + "description" => $this->getDynDescription(), + "items" => array( + array( + "type" => "form", + "id" => $this->getDynUid(), + "name" => $this->getDynTitle(), + "description" => $this->getDynDescription(), + "mode" => "edit", + "script" => "", + "items" => $items, + "variables" => $variables + ) + ) + ); + + $aData = $this->Load($this->getDynUid()); + $aData["DYN_CONTENT"] = G::json_encode($json); + $this->update($aData); + } } /** diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php index 08827276a..a92681785 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/DynaForm.php @@ -544,6 +544,16 @@ class DynaForm $this->throwExceptionIfNotExistsDynaForm($dynaFormUidCopyImport, $processUidCopyImport, $this->getFieldNameByFormatFieldName("COPY_IMPORT.DYN_UID")); //Copy/Import + + //Copy content if version is 2 + if ($arrayData["DYN_VERSION"] === 2) { + $dynaFormOld = new \Dynaform(); + + $arrayDynaFormData = $dynaFormOld->Load($dynaFormUidCopyImport); + + $arrayData["DYN_CONTENT"] = $arrayDynaFormData["DYN_CONTENT"]; + } + //Create $arrayData = $this->create($processUid, $arrayData); From 4aad139361082c0b7c4de45f22bc7655ebe2acc8 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Mon, 19 Jan 2015 12:41:30 -0400 Subject: [PATCH 5/6] IMPROVEMENT PM-1267 --- workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php b/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php index d48c7a3d0..a305cd269 100644 --- a/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php +++ b/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php @@ -385,6 +385,8 @@ if ($actionAjax == 'dynaformChangeLogViewHistory') { G::LoadClass('pmDynaform'); $a = new pmDynaform($_GET['DYN_UID'], $Fields['APP_DATA']); if ($a->isResponsive()) { + $a->app_data["PROCESS"] = $_SESSION['PROCESS']; + $a->app_data["SYS_SYS"] = $_SESSION['WORKSPACE']; $a->printView((!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false", $_SESSION['APPLICATION']); } else { $G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_POST['DYN_UID'], '', $Fields['APP_DATA'], '', '', 'view'); From dd25cee0e01d320c514479bbb1c7d651a07798f8 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Mon, 19 Jan 2015 13:45:59 -0400 Subject: [PATCH 6/6] IMPROVEMENT PM-1267 --- workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php b/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php index a305cd269..4b53f2ee6 100644 --- a/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php +++ b/workflow/engine/methods/cases/casesHistoryDynaformPage_Ajax.php @@ -386,7 +386,7 @@ if ($actionAjax == 'dynaformChangeLogViewHistory') { $a = new pmDynaform($_GET['DYN_UID'], $Fields['APP_DATA']); if ($a->isResponsive()) { $a->app_data["PROCESS"] = $_SESSION['PROCESS']; - $a->app_data["SYS_SYS"] = $_SESSION['WORKSPACE']; + $a->app_data["SYS_SYS"] = SYS_SYS; $a->printView((!isset($_SESSION["PM_RUN_OUTSIDE_MAIN_APP"])) ? "true" : "false", $_SESSION['APPLICATION']); } else { $G_PUBLISH->AddContent('dynaform', 'xmlform', $_SESSION['PROCESS'] . '/' . $_POST['DYN_UID'], '', $Fields['APP_DATA'], '', '', 'view');