Merged in paulis/processmaker/HOR-466 (pull request #3838)

HOR-466
This commit is contained in:
Julio Cesar Laura Avendaño
2016-03-17 10:31:26 -04:00
3 changed files with 164 additions and 76 deletions

View File

@@ -193,7 +193,7 @@ class actionsByEmailCoreClass extends PMPlugin
if(isset($variables['items'][0]['items'])){ if(isset($variables['items'][0]['items'])){
$fields = $variables['items'][0]['items']; $fields = $variables['items'][0]['items'];
foreach ($fields as $key => $value) { foreach ($fields as $key => $value) {
foreach($value as $var){ G::pr($var); foreach($value as $var){
if(isset($var['variable'])){ if(isset($var['variable'])){
if ($var['variable'] == $actionField) { if ($var['variable'] == $actionField) {
$field->label = $var['label']; $field->label = $var['label'];

View File

@@ -15,35 +15,31 @@ if (!isset($_REQUEST['start'])) {
//Initialize response object //Initialize response object
$response = new stdclass(); $response = new stdclass();
$response->status = 'OK'; $response->status = 'OK';
//Main switch //Main switch
try { try {
$actionsByEmail = new \ProcessMaker\BusinessModel\ActionsByEmail(); $actionsByEmail = new \ProcessMaker\BusinessModel\ActionsByEmail();
switch ($_REQUEST['action']) { switch ($_REQUEST['action']) {
case 'editTemplate': case 'editTemplate':
$actionsByEmail->editTemplate($_REQUEST); $response = $actionsByEmail->editTemplate($_REQUEST);
die();
break; break;
case 'updateTemplate': case 'updateTemplate':
$actionsByEmail->updateTemplate($_REQUEST); $response = $actionsByEmail->updateTemplate($_REQUEST);
break; break;
case 'loadFields': case 'loadFields':
$actionsByEmail->loadFields($_REQUEST); $response = $actionsByEmail->loadFields($_REQUEST);
break; break;
case 'saveConfiguration': case 'saveConfiguration':
$actionsByEmail->saveConfiguration2($_REQUEST); $response = $actionsByEmail->saveConfiguration2($_REQUEST);
break; break;
case 'loadActionByEmail': case 'loadActionByEmail':
$actionsByEmail->loadActionByEmail($_REQUEST); $response = $actionsByEmail->loadActionByEmail($_REQUEST);
break; break;
case 'forwardMail': case 'forwardMail':
$actionsByEmail->forwardMail($_REQUEST); $response = $actionsByEmail->forwardMail($_REQUEST);
die;
break; break;
case 'viewForm': case 'viewForm':
$actionsByEmail->viewForm($_REQUEST); $response = $actionsByEmail->viewForm($_REQUEST);
die;
break; break;
} }
} catch (Exception $error) { } catch (Exception $error) {

View File

@@ -345,6 +345,12 @@ class ActionsByEmail
return $response; return $response;
} }
/**
* Forward the Mail
* @param array $arrayData
*
* @return string $message
*/
public function forwardMail(array $arrayData) public function forwardMail(array $arrayData)
{ {
if (!isset($arrayData['REQ_UID'])) { if (!isset($arrayData['REQ_UID'])) {
@@ -371,7 +377,7 @@ class ActionsByEmail
$criteria->addJoin(\AbeRequestsPeer::ABE_UID, \AbeConfigurationPeer::ABE_UID); $criteria->addJoin(\AbeRequestsPeer::ABE_UID, \AbeConfigurationPeer::ABE_UID);
$criteria->addJoin(\AppDelegationPeer::APP_UID, \AbeRequestsPeer::APP_UID); $criteria->addJoin(\AppDelegationPeer::APP_UID, \AbeRequestsPeer::APP_UID);
$criteria->addJoin(\AppDelegationPeer::DEL_INDEX, \AbeRequestsPeer::DEL_INDEX); $criteria->addJoin(\AppDelegationPeer::DEL_INDEX, \AbeRequestsPeer::DEL_INDEX);
$resultRes = AbeRequestsPeer::doSelectRS($criteria); $resultRes = \AbeRequestsPeer::doSelectRS($criteria);
$resultRes->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $resultRes->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$resultRes->next(); $resultRes->next();
@@ -381,37 +387,20 @@ class ActionsByEmail
if (is_null($dataRes['DEL_FINISH_DATE'])) { if (is_null($dataRes['DEL_FINISH_DATE'])) {
\G::LoadClass('spool'); \G::LoadClass('spool');
$configuration = new \Configuration(); $emailServer = new \ProcessMaker\BusinessModel\EmailServer();
$sDelimiter = \DBAdapter::getStringDelimiter(); $criteria = $emailServer->getEmailServerCriteria();
$criteria = new \Criteria('workflow'); $rsCriteria = \EmailServerPeer::doSelectRS($criteria);
$criteria->add(\ConfigurationPeer::CFG_UID, 'Emails'); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$criteria->add(\ConfigurationPeer::OBJ_UID, ''); if ($rsCriteria->next()) {
$criteria->add(\ConfigurationPeer::PRO_UID, ''); $row = $rsCriteria->getRow();
$criteria->add(\ConfigurationPeer::USR_UID, '');
$criteria->add(\ConfigurationPeer::APP_UID, '');
if (\ConfigurationPeer::doCount($criteria) == 0) { $arrayConfigAux = $row;
$configuration->create(array('CFG_UID' => 'Emails', 'OBJ_UID' => '', 'CFG_VALUE' => '', 'PRO_UID' => '', 'USR_UID' => '', 'APP_UID' => '')); $arrayConfigAux["SMTPSecure"] = $row["SMTPSECURE"];
$newConfiguration = array();
} else {
$newConfiguration = $configuration->load('Emails', '', '', '', '');
if ($newConfiguration['CFG_VALUE'] != '') {
$newConfiguration = unserialize($newConfiguration['CFG_VALUE']);
} else {
$newConfiguration = array();
}
} }
$aSetup = (!empty($arrayConfigAux))? $arrayConfigAux : \System::getEmailConfiguration();
$spool = new \spoolRun(); $spool = new \spoolRun();
$spool->setConfig(array( $spool->setConfig($aSetup);
'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->create(array( $spool->create(array(
'msg_uid' => '', 'msg_uid' => '',
@@ -419,7 +408,7 @@ class ActionsByEmail
'del_index' => $dataRes['DEL_INDEX'], 'del_index' => $dataRes['DEL_INDEX'],
'app_msg_type' => 'TEST', 'app_msg_type' => 'TEST',
'app_msg_subject' => $dataRes['ABE_REQ_SUBJECT'], '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_to' => $dataRes['ABE_REQ_SENT_TO'],
'app_msg_body' => $dataRes['ABE_REQ_BODY'], 'app_msg_body' => $dataRes['ABE_REQ_BODY'],
'app_msg_cc' => '', 'app_msg_cc' => '',
@@ -432,10 +421,10 @@ class ActionsByEmail
if ($spool->sendMail()) { if ($spool->sendMail()) {
$dataRes['ABE_REQ_STATUS'] = 'SENT'; $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 { } else {
$dataRes['ABE_REQ_STATUS'] = 'ERROR'; $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 { try {
@@ -455,6 +444,12 @@ class ActionsByEmail
return $message; 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) public function viewForm(array $arrayData)
{ {
//coment //coment
@@ -479,51 +474,148 @@ class ActionsByEmail
$criteria->add(\AbeRequestsPeer::ABE_REQ_UID, $arrayData['REQ_UID']); $criteria->add(\AbeRequestsPeer::ABE_REQ_UID, $arrayData['REQ_UID']);
$criteria->addJoin(\AbeRequestsPeer::ABE_UID, \AbeConfigurationPeer::ABE_UID); $criteria->addJoin(\AbeRequestsPeer::ABE_UID, \AbeConfigurationPeer::ABE_UID);
$criteria->addJoin(\AbeResponsesPeer::ABE_REQ_UID, \AbeRequestsPeer::ABE_REQ_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->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
$resultRes->next(); $resultRes->next();
$dataRes = Array(); $dataRes = Array();
$message = \G::LoadTranslation('ID_USER_NOT_RESPONDED_REQUEST'); $message = \G::LoadTranslation('ID_USER_NOT_RESPONDED_REQUEST');
if ($dataRes = $resultRes->getRow()) { if ($dataRes = $resultRes->getRow()) {
$_SESSION['CURRENT_DYN_UID'] = trim($dataRes['DYN_UID']); $_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'] != '') { $process = new \Process();
$value = unserialize($dataRes['ABE_RES_DATA']); $isBpmn = $process->isBpmnProcess($dataRes['PRO_UID']);
if($isBpmn) {
$message = $this->viewFormBpmn($dataRes);
} else {
$message = $this->viewFormClassic($dataRes);
}
}
if (is_array($value)) { return $message;
$dynaform->values = $value; }
foreach ($dynaform->fields as $fieldName => $field) { /**
if ($field->type == 'submit') { * Get the decision from Actions By Email by Classic dynaform
unset($dynaform->fields[$fieldName]); * @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 = '<b>Type: </b>' . $field->type . '<br>';
switch ($field->type) {
case 'dropdown':
case 'radiogroup':
$message .=$field->label . ' - ';
$message .= $field->options[$value];
break;
case 'yesno':
$message .= '<b>' . $field->label . ' </b>- ';
$message .= ($value == 1) ? G::loadTranslation('ID_YES') : G::loadTranslation('ID_NO');
break;
case 'checkbox':
$message .= '<b>' . $field->label . '</b> - ';
$message .= ($value == 'On') ? G::loadTranslation('ID_CHECK') : G::loadTranslation('ID_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); $message = '';
} else { switch ($field->type) {
$response = $dynaform->render(PATH_CORE . 'templates/xmlform.html', $scriptCode); case 'dropdown':
$field = $dynaform->fields[$dataRes['ABE_ACTION_FIELD']]; case 'radiogroup':
$message = '<b>Type: </b>' . $field->type . '<br>'; case 'radio':
$message .= $field->label . ': ';
switch ($field->type) { $message .= $field->options[$value];
case 'dropdown': break;
case 'radiogroup': case 'yesno':
$message .=$field->label . ' - '; $message .= $field->label . ': ';
$message .= $field->options[$value]; $message .= ($value == 1) ? G::loadTranslation('ID_YES') : G::loadTranslation('ID_NO');
break; break;
case 'yesno': case 'checkgroup':
$message .= '<b>' . $field->label . ' </b>- '; case 'checkbox':
$message .= ($value == 1) ? 'Yes' : 'No'; $message .= $field->label . ': ';
break; $message .= ($value == 'On') ? G::loadTranslation('ID_CHECK') : G::loadTranslation('ID_UNCHECK');
case 'checkbox': break;
$message .= '<b>' . $field->label . '</b> - ';
$message .= ($value == 'On') ? 'Check' : 'Uncheck';
break;
}
} }
} }
} }