From 230efa682cc069877fe9c65c03bf3808bfb02824 Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Tue, 15 Mar 2016 10:21:53 -0400 Subject: [PATCH 1/2] HOR-466 --- .../classes/class.actionsByEmailCore.php | 2 +- .../actionsByEmail/actionsByEmailAjax.php | 18 +- .../BusinessModel/ActionsByEmail.php | 220 +++++++++++++----- 3 files changed, 164 insertions(+), 76 deletions(-) diff --git a/workflow/engine/classes/class.actionsByEmailCore.php b/workflow/engine/classes/class.actionsByEmailCore.php index 8c8960a28..0accc134c 100644 --- a/workflow/engine/classes/class.actionsByEmailCore.php +++ b/workflow/engine/classes/class.actionsByEmailCore.php @@ -193,7 +193,7 @@ class actionsByEmailCoreClass extends PMPlugin if(isset($variables['items'][0]['items'])){ $fields = $variables['items'][0]['items']; foreach ($fields as $key => $value) { - foreach($value as $var){ G::pr($var); + foreach($value as $var){ if(isset($var['variable'])){ if ($var['variable'] == $actionField) { $field->label = $var['label']; diff --git a/workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php b/workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php index 8a8079f64..da5a30bcd 100644 --- a/workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php +++ b/workflow/engine/methods/actionsByEmail/actionsByEmailAjax.php @@ -15,35 +15,31 @@ if (!isset($_REQUEST['start'])) { //Initialize response object $response = new stdclass(); $response->status = 'OK'; - //Main switch try { $actionsByEmail = new \ProcessMaker\BusinessModel\ActionsByEmail(); switch ($_REQUEST['action']) { case 'editTemplate': - $actionsByEmail->editTemplate($_REQUEST); - die(); + $response = $actionsByEmail->editTemplate($_REQUEST); break; case 'updateTemplate': - $actionsByEmail->updateTemplate($_REQUEST); + $response = $actionsByEmail->updateTemplate($_REQUEST); break; case 'loadFields': - $actionsByEmail->loadFields($_REQUEST); + $response = $actionsByEmail->loadFields($_REQUEST); break; case 'saveConfiguration': - $actionsByEmail->saveConfiguration2($_REQUEST); + $response = $actionsByEmail->saveConfiguration2($_REQUEST); break; case 'loadActionByEmail': - $actionsByEmail->loadActionByEmail($_REQUEST); + $response = $actionsByEmail->loadActionByEmail($_REQUEST); break; case 'forwardMail': - $actionsByEmail->forwardMail($_REQUEST); - die; + $response = $actionsByEmail->forwardMail($_REQUEST); break; case 'viewForm': - $actionsByEmail->viewForm($_REQUEST); - die; + $response = $actionsByEmail->viewForm($_REQUEST); break; } } catch (Exception $error) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php index be0427d10..9860d1f40 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php @@ -345,6 +345,12 @@ class ActionsByEmail return $response; } + /** + * Forward the Mail + * @param array $arrayData + * + * @return string $message + */ public function forwardMail(array $arrayData) { if (!isset($arrayData['REQ_UID'])) { @@ -371,7 +377,7 @@ class ActionsByEmail $criteria->addJoin(\AbeRequestsPeer::ABE_UID, \AbeConfigurationPeer::ABE_UID); $criteria->addJoin(\AppDelegationPeer::APP_UID, \AbeRequestsPeer::APP_UID); $criteria->addJoin(\AppDelegationPeer::DEL_INDEX, \AbeRequestsPeer::DEL_INDEX); - $resultRes = AbeRequestsPeer::doSelectRS($criteria); + $resultRes = \AbeRequestsPeer::doSelectRS($criteria); $resultRes->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $resultRes->next(); @@ -381,37 +387,20 @@ class ActionsByEmail if (is_null($dataRes['DEL_FINISH_DATE'])) { \G::LoadClass('spool'); - $configuration = new \Configuration(); - $sDelimiter = \DBAdapter::getStringDelimiter(); - $criteria = new \Criteria('workflow'); - $criteria->add(\ConfigurationPeer::CFG_UID, 'Emails'); - $criteria->add(\ConfigurationPeer::OBJ_UID, ''); - $criteria->add(\ConfigurationPeer::PRO_UID, ''); - $criteria->add(\ConfigurationPeer::USR_UID, ''); - $criteria->add(\ConfigurationPeer::APP_UID, ''); + $emailServer = new \ProcessMaker\BusinessModel\EmailServer(); + $criteria = $emailServer->getEmailServerCriteria(); + $rsCriteria = \EmailServerPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + if ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); - if (\ConfigurationPeer::doCount($criteria) == 0) { - $configuration->create(array('CFG_UID' => 'Emails', 'OBJ_UID' => '', 'CFG_VALUE' => '', 'PRO_UID' => '', 'USR_UID' => '', 'APP_UID' => '')); - $newConfiguration = array(); - } else { - $newConfiguration = $configuration->load('Emails', '', '', '', ''); - - if ($newConfiguration['CFG_VALUE'] != '') { - $newConfiguration = unserialize($newConfiguration['CFG_VALUE']); - } else { - $newConfiguration = array(); - } + $arrayConfigAux = $row; + $arrayConfigAux["SMTPSecure"] = $row["SMTPSECURE"]; } + $aSetup = (!empty($arrayConfigAux))? $arrayConfigAux : \System::getEmailConfiguration(); $spool = new \spoolRun(); - $spool->setConfig(array( - 'MESS_ENGINE' => $newConfiguration['MESS_ENGINE'], - 'MESS_SERVER' => $newConfiguration['MESS_SERVER'], - 'MESS_PORT' => $newConfiguration['MESS_PORT'], - 'MESS_ACCOUNT' => $newConfiguration['MESS_ACCOUNT'], - 'MESS_PASSWORD' => $newConfiguration['MESS_PASSWORD'], - 'SMTPAuth' => $newConfiguration['MESS_RAUTH'] - )); + $spool->setConfig($aSetup); $spool->create(array( 'msg_uid' => '', @@ -419,7 +408,7 @@ class ActionsByEmail 'del_index' => $dataRes['DEL_INDEX'], 'app_msg_type' => 'TEST', 'app_msg_subject' => $dataRes['ABE_REQ_SUBJECT'], - 'app_msg_from' => $newConfiguration['MESS_ACCOUNT'], + 'app_msg_from' => $aSetup['MESS_ACCOUNT'], 'app_msg_to' => $dataRes['ABE_REQ_SENT_TO'], 'app_msg_body' => $dataRes['ABE_REQ_BODY'], 'app_msg_cc' => '', @@ -432,10 +421,10 @@ class ActionsByEmail if ($spool->sendMail()) { $dataRes['ABE_REQ_STATUS'] = 'SENT'; - $message = G::LoadTranslation('ID_EMAIL_RESENT_TO') . ': '. $dataRes['ABE_REQ_SENT_TO']; + $message = \G::LoadTranslation('ID_EMAIL_RESENT_TO') . ': '. $dataRes['ABE_REQ_SENT_TO']; } else { $dataRes['ABE_REQ_STATUS'] = 'ERROR'; - $message = G::LoadTranslation('ID_THERE_PROBLEM_SENDING_EMAIL') . ': '. $dataRes['ABE_REQ_SENT_TO'] . ', ' . G::LoadTranslation('ID_PLEASE_TRY_LATER'); + $message = \G::LoadTranslation('ID_THERE_PROBLEM_SENDING_EMAIL') . ': '. $dataRes['ABE_REQ_SENT_TO'] . ', ' . G::LoadTranslation('ID_PLEASE_TRY_LATER'); } try { @@ -455,6 +444,12 @@ class ActionsByEmail return $message; } + /** + * Get the decision from Actions By Email and check if is Bpmn Process + * @param array $arrayData + * + * @return string $message + */ public function viewForm(array $arrayData) { //coment @@ -479,51 +474,148 @@ class ActionsByEmail $criteria->add(\AbeRequestsPeer::ABE_REQ_UID, $arrayData['REQ_UID']); $criteria->addJoin(\AbeRequestsPeer::ABE_UID, \AbeConfigurationPeer::ABE_UID); $criteria->addJoin(\AbeResponsesPeer::ABE_REQ_UID, \AbeRequestsPeer::ABE_REQ_UID); - $resultRes = AbeRequestsPeer::doSelectRS($criteria); + $resultRes = \AbeRequestsPeer::doSelectRS($criteria); $resultRes->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $resultRes->next(); $dataRes = Array(); $message = \G::LoadTranslation('ID_USER_NOT_RESPONDED_REQUEST'); - if ($dataRes = $resultRes->getRow()) { $_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); - $dynaform = new \Form($dataRes['PRO_UID'] . PATH_SEP . trim($dataRes['DYN_UID']), PATH_DYNAFORM, SYS_LANG, false); - $dynaform->mode = 'view'; - if ($dataRes['ABE_RES_DATA'] != '') { - $value = unserialize($dataRes['ABE_RES_DATA']); + $process = new \Process(); + $isBpmn = $process->isBpmnProcess($dataRes['PRO_UID']); + if($isBpmn) { + $message = $this->viewFormBpmn($dataRes); + } else { + $message = $this->viewFormClassic($dataRes); + } + } - if (is_array($value)) { - $dynaform->values = $value; + return $message; + } - foreach ($dynaform->fields as $fieldName => $field) { - if ($field->type == 'submit') { - unset($dynaform->fields[$fieldName]); + /** + * Get the decision from Actions By Email by Classic dynaform + * @param array $dataRes + * + * @return string $message + */ + public function viewFormClassic(array $dataRes) + { + $dynaform = new \Form($dataRes['PRO_UID'] . PATH_SEP . trim($dataRes['DYN_UID']), PATH_DYNAFORM, SYS_LANG, false); + $dynaform->mode = 'view'; + + if ($dataRes['ABE_RES_DATA'] != '') { + $value = unserialize($dataRes['ABE_RES_DATA']); + + if (is_array($value)) { + $dynaform->values = $value; + + foreach ($dynaform->fields as $fieldName => $field) { + if ($field->type == 'submit') { + unset($dynaform->fields[$fieldName]); + } + } + + $message = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); + } else { + $response = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); + + $field = $dynaform->fields[$dataRes['ABE_ACTION_FIELD']]; + $message = 'Type: ' . $field->type . '
'; + + switch ($field->type) { + case 'dropdown': + case 'radiogroup': + $message .=$field->label . ' - '; + $message .= $field->options[$value]; + break; + case 'yesno': + $message .= '' . $field->label . ' - '; + $message .= ($value == 1) ? 'Yes' : 'No'; + break; + case 'checkbox': + $message .= '' . $field->label . ' - '; + $message .= ($value == 'On') ? 'Check' : 'Uncheck'; + break; + } + } + } + + //Return + return $message; + } + + /** + * Get the decision from Actions By Email by BPMN dynaform + * @param array $arrayData + * + * @return string $message + */ + public function viewFormBpmn(array $dataRes) + { + $_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); + $configuration['DYN_UID'] = trim($dataRes['DYN_UID']); + $configuration['CURRENT_DYNAFORM'] = trim($dataRes['DYN_UID']); + $configuration['PRO_UID'] = trim($dataRes['PRO_UID']); + + $criteriaD = new \Criteria(); + $criteriaD->addSelectColumn(\DynaformPeer::DYN_CONTENT); + $criteriaD->addSelectColumn(\DynaformPeer::PRO_UID); + $criteriaD->add(\DynaformPeer::DYN_UID, trim($dataRes['DYN_UID'])); + $resultD = \DynaformPeer::doSelectRS($criteriaD); + $resultD->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $resultD->next(); + $configuration = $resultD->getRow(); + + \G::LoadClass('pmDynaform'); + $field = new \stdClass(); + $obj = new \pmDynaform($configuration); + + if ($dataRes['ABE_RES_DATA'] !== '') { + $value = unserialize($dataRes['ABE_RES_DATA']); + $actionField = str_replace(array('@@','@#','@=','@%','@?','@$'), '', $dataRes['ABE_ACTION_FIELD']); + $variables = \G::json_decode($configuration['DYN_CONTENT'], true); + if (is_array($value)) { + if(isset($variables['items'][0]['items'])) { + $fields = $variables['items'][0]['items']; + } + } else { + if(isset($variables['items'][0]['items'])) { + $fields = $variables['items'][0]['items']; + foreach ($fields as $key => $row) { + foreach($row as $var) { + if(isset($var['variable'])) { + if ($var['variable'] === $actionField) { + $field->label = isset($var['label']) ? $var['label'] : ''; + $field->type = isset($var['type']) ? $var['type'] : ''; + $values = $var['options']; + foreach ($values as $val){ + $field->options[$val['value']] = $val['value']; + } + } + } } } - - $message = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); - } else { - $response = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); - $field = $dynaform->fields[$dataRes['ABE_ACTION_FIELD']]; - $message = 'Type: ' . $field->type . '
'; - - switch ($field->type) { - case 'dropdown': - case 'radiogroup': - $message .=$field->label . ' - '; - $message .= $field->options[$value]; - break; - case 'yesno': - $message .= '' . $field->label . ' - '; - $message .= ($value == 1) ? 'Yes' : 'No'; - break; - case 'checkbox': - $message .= '' . $field->label . ' - '; - $message .= ($value == 'On') ? 'Check' : 'Uncheck'; - break; - } + } + $message = ''; + switch ($field->type) { + case 'dropdown': + case 'radiogroup': + case 'radio': + $message .= $field->label . ': '; + $message .= $field->options[$value]; + break; + case 'yesno': + $message .= $field->label . ': '; + $message .= ($value == 1) ? 'Yes' : 'No'; + break; + case 'checkgroup': + case 'checkbox': + $message .= $field->label . ': '; + $message .= ($value == 'On') ? 'Check' : 'Uncheck'; + break; } } } From a8851b890486d45d2faa703ea50484a66b3c9ca5 Mon Sep 17 00:00:00 2001 From: "Paula V. Quispe" Date: Thu, 17 Mar 2016 10:24:46 -0400 Subject: [PATCH 2/2] HOR-466 --- .../src/ProcessMaker/BusinessModel/ActionsByEmail.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php index 9860d1f40..f98a85ac7 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/ActionsByEmail.php @@ -533,11 +533,11 @@ class ActionsByEmail break; case 'yesno': $message .= '' . $field->label . ' - '; - $message .= ($value == 1) ? 'Yes' : 'No'; + $message .= ($value == 1) ? G::loadTranslation('ID_YES') : G::loadTranslation('ID_NO'); break; case 'checkbox': $message .= '' . $field->label . ' - '; - $message .= ($value == 'On') ? 'Check' : 'Uncheck'; + $message .= ($value == 'On') ? G::loadTranslation('ID_CHECK') : G::loadTranslation('ID_UNCHECK'); break; } } @@ -609,12 +609,12 @@ class ActionsByEmail break; case 'yesno': $message .= $field->label . ': '; - $message .= ($value == 1) ? 'Yes' : 'No'; + $message .= ($value == 1) ? G::loadTranslation('ID_YES') : G::loadTranslation('ID_NO'); break; case 'checkgroup': case 'checkbox': $message .= $field->label . ': '; - $message .= ($value == 'On') ? 'Check' : 'Uncheck'; + $message .= ($value == 'On') ? G::loadTranslation('ID_CHECK') : G::loadTranslation('ID_UNCHECK'); break; } }