@@ -24,41 +24,6 @@
|
|||||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/* require_once ("classes/model/Application.php");
|
|
||||||
require_once ("classes/model/AppCacheView.php");
|
|
||||||
require_once ("classes/model/AppDelay.php");
|
|
||||||
require_once ("classes/model/AppDelegation.php");
|
|
||||||
require_once ("classes/model/AppDocument.php");
|
|
||||||
require_once ("classes/model/AppEvent.php");
|
|
||||||
require_once ("classes/model/AppHistory.php");
|
|
||||||
require_once ("classes/model/AppMessage.php");
|
|
||||||
require_once ("classes/model/AppNotes.php");
|
|
||||||
require_once ("classes/model/AppOwner.php");
|
|
||||||
require_once ("classes/model/AppSolrQueue.php");
|
|
||||||
require_once ("classes/model/AppThread.php");
|
|
||||||
require_once ("classes/model/CaseTracker.php");
|
|
||||||
require_once ("classes/model/CaseTrackerObject.php");
|
|
||||||
require_once ("classes/model/Configuration.php");
|
|
||||||
require_once ("classes/model/Content.php");
|
|
||||||
require_once ("classes/model/DbSource.php");
|
|
||||||
require_once ("classes/model/Dynaform.php"); */
|
|
||||||
//require_once ("classes/model/InputDocument.php");
|
|
||||||
//require_once ("classes/model/Language.php");
|
|
||||||
//require_once ("classes/model/ObjectPermission.php");
|
|
||||||
//require_once ("classes/model/OutputDocument.php");
|
|
||||||
//require_once ("classes/model/Process.php");
|
|
||||||
//require_once ("classes/model/ProcessUser.php");
|
|
||||||
//require_once ("classes/model/ReportTable.php");
|
|
||||||
//require_once ("classes/model/ReportVar.php");
|
|
||||||
//require_once ("classes/model/Route.php");
|
|
||||||
//require_once ("classes/model/Step.php");
|
|
||||||
//require_once ("classes/model/StepSupervisor.php");
|
|
||||||
//require_once ("classes/model/StepTrigger.php");
|
|
||||||
//require_once ("classes/model/SubApplication.php");
|
|
||||||
//require_once ("classes/model/Task.php");
|
|
||||||
//require_once ("classes/model/TaskUser.php");
|
|
||||||
//require_once ("classes/model/Triggers.php");
|
|
||||||
//require_once ("classes/model/Users.php");
|
|
||||||
|
|
||||||
G::LoadClass("pmScript");
|
G::LoadClass("pmScript");
|
||||||
|
|
||||||
@@ -5201,17 +5166,272 @@ class Cases
|
|||||||
return $oCriteria;
|
return $oCriteria;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* This function sends notifications in a task
|
* @param $aTaskInfo
|
||||||
*
|
* @param $arrayData
|
||||||
* @name sendNotifications
|
* @param $typeSend
|
||||||
* @param string $taskUid
|
* @param $from
|
||||||
* @param array $arrayTask
|
* @return array
|
||||||
* @param array $arrayData
|
* @throws Exception
|
||||||
* @param string $applicationUid
|
*/
|
||||||
* @param string $delIndex
|
public function loadDataSendEmail($aTaskInfo, $arrayData, $from, $typeSend)
|
||||||
|
{
|
||||||
|
$eServer = new \ProcessMaker\BusinessModel\EmailServer();
|
||||||
|
$dataLastEmail = array();
|
||||||
|
|
||||||
|
switch ($typeSend) {
|
||||||
|
case 'LAST':
|
||||||
|
if (isset($aTaskInfo['TAS_DEF_SUBJECT_MESSAGE']) && $aTaskInfo['TAS_DEF_SUBJECT_MESSAGE'] != '') {
|
||||||
|
$sSubject = G::replaceDataField($aTaskInfo['TAS_DEF_SUBJECT_MESSAGE'], $arrayData);
|
||||||
|
} else {
|
||||||
|
$sSubject = G::LoadTranslation('ID_MESSAGE_SUBJECT_DERIVATION');
|
||||||
|
}
|
||||||
|
|
||||||
|
G::loadClass('configuration');
|
||||||
|
$oConf = new Configurations;
|
||||||
|
$oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aTaskInfo['TAS_UID'], '', '');
|
||||||
|
$conf = $oConf->aConfig;
|
||||||
|
|
||||||
|
$pathEmail = PATH_DATA_SITE . "mailTemplates" . PATH_SEP . $aTaskInfo["PRO_UID"] . PATH_SEP;
|
||||||
|
$swtplDefault = 0;
|
||||||
|
$sBody = null;
|
||||||
|
|
||||||
|
if (isset($conf["TAS_DEF_MESSAGE_TYPE"]) &&
|
||||||
|
isset($conf["TAS_DEF_MESSAGE_TEMPLATE"]) &&
|
||||||
|
$conf["TAS_DEF_MESSAGE_TYPE"] == "template" &&
|
||||||
|
$conf["TAS_DEF_MESSAGE_TEMPLATE"] != ""
|
||||||
|
) {
|
||||||
|
if ($conf["TAS_DEF_MESSAGE_TEMPLATE"] == "alert_message.html") {
|
||||||
|
$swtplDefault = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$fileTemplate = $pathEmail . $conf["TAS_DEF_MESSAGE_TEMPLATE"];
|
||||||
|
|
||||||
|
if (!file_exists($fileTemplate)) {
|
||||||
|
$tempale = PATH_CORE . "templates" . PATH_SEP . "mails" . PATH_SEP . "alert_message.html";
|
||||||
|
$copied = @copy($tempale, $fileTemplate);
|
||||||
|
if ($copied) {
|
||||||
|
$dataTemplate = array("prf_filename" => $conf["TAS_DEF_MESSAGE_TEMPLATE"],
|
||||||
|
"prf_path" => $fileTemplate,
|
||||||
|
"pro_uid" => $aTaskInfo["PRO_UID"],
|
||||||
|
"usr_uid" => "00000000000000000000000000000001",
|
||||||
|
"prf_uid" => G::generateUniqueID(),
|
||||||
|
"prf_type" => "file",
|
||||||
|
"prf_create_date" => date("Y-m-d H:i:s"));
|
||||||
|
$filesManager = new ProcessMaker\BusinessModel\FilesManager();
|
||||||
|
$filesManager->addProcessFilesManagerInDb($dataTemplate);
|
||||||
|
} else {
|
||||||
|
throw (new Exception("Template file \"$fileTemplate\" does not exist."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sBody = file_get_contents($fileTemplate);
|
||||||
|
} else {
|
||||||
|
$sBody = nl2br($aTaskInfo['TAS_DEF_MESSAGE']);
|
||||||
|
}
|
||||||
|
if (!class_exists('System')) {
|
||||||
|
G::LoadClass('system');
|
||||||
|
}
|
||||||
|
$aConfiguration = ($aTaskInfo['TAS_EMAIL_SERVER_UID'] != '') ?
|
||||||
|
$eServer->getEmailServer($aTaskInfo['TAS_EMAIL_SERVER_UID'], true) : $eServer->getEmailServerDefault();
|
||||||
|
$aConfiguration['SMTPSecure'] = $aConfiguration['SMTPSECURE'];
|
||||||
|
$msgError = '';
|
||||||
|
if (empty($aConfiguration)) {
|
||||||
|
$msgError = G::LoadTranslation('ID_THE_DEFAULT_CONFIGURATION');
|
||||||
|
$aConfiguration['MESS_ENGINE'] = '';
|
||||||
|
}
|
||||||
|
if ($aTaskInfo['TAS_NOT_EMAIL_FROM_FORMAT']) {
|
||||||
|
$fromName = $aConfiguration['MESS_FROM_NAME'];
|
||||||
|
$fromMail = $aConfiguration['MESS_FROM_MAIL'];
|
||||||
|
$from = $fromName . (($fromMail != '') ? ' <' . $fromMail . '>' : '');
|
||||||
|
}
|
||||||
|
$dataLastEmail['msgError'] = $msgError;
|
||||||
|
$dataLastEmail['configuration'] = $aConfiguration;
|
||||||
|
$dataLastEmail['subject'] = $sSubject;
|
||||||
|
$dataLastEmail['pathEmail'] = $pathEmail;
|
||||||
|
$dataLastEmail['swtplDeafault'] = $swtplDefault;
|
||||||
|
$dataLastEmail['body'] = $sBody;
|
||||||
|
$dataLastEmail['from'] = $from;
|
||||||
|
break;
|
||||||
|
case 'RECEIVE':
|
||||||
|
if (isset($aTaskInfo['TAS_RECEIVE_SUBJECT_MESSAGE']) && $aTaskInfo['TAS_RECEIVE_SUBJECT_MESSAGE'] != '') {
|
||||||
|
$sSubject = G::replaceDataField($aTaskInfo['TAS_RECEIVE_SUBJECT_MESSAGE'], $arrayData);
|
||||||
|
} else {
|
||||||
|
$sSubject = G::LoadTranslation('ID_MESSAGE_SUBJECT_DERIVATION');
|
||||||
|
}
|
||||||
|
|
||||||
|
$pathEmail = PATH_DATA_SITE . "mailTemplates" . PATH_SEP . $aTaskInfo["PRO_UID"] . PATH_SEP;
|
||||||
|
$swtplDefault = 0;
|
||||||
|
$sBody = null;
|
||||||
|
|
||||||
|
if (isset($aTaskInfo["TAS_RECEIVE_MESSAGE_TYPE"]) &&
|
||||||
|
isset($aTaskInfo["TAS_RECEIVE_MESSAGE_TEMPLATE"]) &&
|
||||||
|
$aTaskInfo["TAS_RECEIVE_MESSAGE_TYPE"] == "template" &&
|
||||||
|
$aTaskInfo["TAS_RECEIVE_MESSAGE_TEMPLATE"] != ""
|
||||||
|
) {
|
||||||
|
if ($aTaskInfo["TAS_RECEIVE_MESSAGE_TEMPLATE"] == "alert_message.html") {
|
||||||
|
$swtplDefault = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$fileTemplate = $pathEmail . $aTaskInfo["TAS_RECEIVE_MESSAGE_TEMPLATE"];
|
||||||
|
|
||||||
|
if (!file_exists($fileTemplate)) {
|
||||||
|
$tempale = PATH_CORE . "templates" . PATH_SEP . "mails" . PATH_SEP . "alert_message.html";
|
||||||
|
$copied = @copy($tempale, $fileTemplate);
|
||||||
|
if ($copied) {
|
||||||
|
$dataTemplate = array("prf_filename" => $aTaskInfo["TAS_RECEIVE_MESSAGE_TEMPLATE"],
|
||||||
|
"prf_path" => $fileTemplate,
|
||||||
|
"pro_uid" => $aTaskInfo["PRO_UID"],
|
||||||
|
"usr_uid" => "00000000000000000000000000000001",
|
||||||
|
"prf_uid" => G::generateUniqueID(),
|
||||||
|
"prf_type" => "file",
|
||||||
|
"prf_create_date" => date("Y-m-d H:i:s"));
|
||||||
|
$filesManager = new ProcessMaker\BusinessModel\FilesManager();
|
||||||
|
$filesManager->addProcessFilesManagerInDb($dataTemplate);
|
||||||
|
} else {
|
||||||
|
throw (new Exception("Template file \"$fileTemplate\" does not exist."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$sBody = file_get_contents($fileTemplate);
|
||||||
|
} else {
|
||||||
|
$sBody = nl2br($aTaskInfo['TAS_RECEIVE_MESSAGE']);
|
||||||
|
}
|
||||||
|
if (!class_exists('System')) {
|
||||||
|
G::LoadClass('system');
|
||||||
|
}
|
||||||
|
$aConfiguration = ($aTaskInfo['TAS_RECEIVE_SERVER_UID'] != '') ?
|
||||||
|
$eServer->getEmailServer($aTaskInfo['TAS_RECEIVE_SERVER_UID'], true) : $eServer->getEmailServerDefault();
|
||||||
|
$aConfiguration['SMTPSecure'] = $aConfiguration['SMTPSECURE'];
|
||||||
|
$msgError = '';
|
||||||
|
if (empty($aConfiguration)) {
|
||||||
|
$msgError = G::LoadTranslation('ID_THE_DEFAULT_CONFIGURATION');
|
||||||
|
$aConfiguration['MESS_ENGINE'] = '';
|
||||||
|
}
|
||||||
|
if ($aTaskInfo['TAS_RECEIVE_EMAIL_FROM_FORMAT']) {
|
||||||
|
$fromName = $aConfiguration['MESS_FROM_NAME'];
|
||||||
|
$fromMail = $aConfiguration['MESS_FROM_MAIL'];
|
||||||
|
$from = $fromName . (($fromMail != '') ? ' <' . $fromMail . '>' : '');
|
||||||
|
}
|
||||||
|
$dataLastEmail['msgError'] = $msgError;
|
||||||
|
$dataLastEmail['configuration'] = $aConfiguration;
|
||||||
|
$dataLastEmail['subject'] = $sSubject;
|
||||||
|
$dataLastEmail['pathEmail'] = $pathEmail;
|
||||||
|
$dataLastEmail['swtplDeafault'] = $swtplDefault;
|
||||||
|
$dataLastEmail['body'] = $sBody;
|
||||||
|
$dataLastEmail['from'] = $from;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return $dataLastEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $dataLastEmail
|
||||||
|
* @param $arrayData
|
||||||
|
* @param $arrayTask
|
||||||
|
*/
|
||||||
|
public function sendMessage($dataLastEmail, $arrayData, $arrayTask)
|
||||||
|
{
|
||||||
|
G::LoadClass("spool");
|
||||||
|
foreach ($arrayTask as $aTask) {
|
||||||
|
//Check and fix if Task Id is complex
|
||||||
|
if (strpos($aTask['TAS_UID'], "/") !== false) {
|
||||||
|
$aux = explode("/", $aTask['TAS_UID']);
|
||||||
|
if (isset($aux[1])) {
|
||||||
|
$aTask['TAS_UID'] = $aux[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if the next is EOP dont send notification and continue with the next
|
||||||
|
if ($aTask['TAS_UID'] === '-1') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (isset($aTask['DEL_INDEX'])) {
|
||||||
|
$arrayData2 = $arrayData;
|
||||||
|
$appDelegation = AppDelegationPeer::retrieveByPK($dataLastEmail['applicationUid'], $aTask['DEL_INDEX']);
|
||||||
|
if (!is_null($appDelegation)) {
|
||||||
|
$oTaskUpd = new Task();
|
||||||
|
$aTaskUpdate = $oTaskUpd->load($appDelegation->getTasUid());
|
||||||
|
$arrayData2['TAS_TITLE'] = $aTaskUpdate['TAS_TITLE'];
|
||||||
|
$arrayData2['DEL_TASK_DUE_DATE'] = $appDelegation->getDelTaskDueDate();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$arrayData2 = $arrayData;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($aTask['USR_UID']) && !empty($aTask['USR_UID'])) {
|
||||||
|
$user = new \ProcessMaker\BusinessModel\User();
|
||||||
|
$arrayUserData = $user->getUser($aTask['USR_UID'], true);
|
||||||
|
$arrayData2 = \ProcessMaker\Util\DateTime::convertUtcToTimeZone($arrayData2,
|
||||||
|
(trim($arrayUserData['USR_TIME_ZONE']) != '') ? trim($arrayUserData['USR_TIME_ZONE']) :
|
||||||
|
\ProcessMaker\Util\System::getTimeZone());
|
||||||
|
} else {
|
||||||
|
$arrayData2 = \ProcessMaker\Util\DateTime::convertUtcToTimeZone($arrayData2);
|
||||||
|
}
|
||||||
|
$sBody2 = G::replaceDataGridField($dataLastEmail['body'], $arrayData2, false);
|
||||||
|
$sTo = null;
|
||||||
|
$sCc = '';
|
||||||
|
if ($aTask['TAS_UID'] != '-1') {
|
||||||
|
$respTo = $this->getTo($aTask['TAS_UID'], $aTask['USR_UID'], $arrayData);
|
||||||
|
$sTo = $respTo['to'];
|
||||||
|
$sCc = $respTo['cc'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($aTask ["TAS_ASSIGN_TYPE"] === "SELF_SERVICE") {
|
||||||
|
if ($dataLastEmail['swtplDefault'] == 1) {
|
||||||
|
G::verifyPath($dataLastEmail['pathEmail'], true); // Create if it does not exist
|
||||||
|
$fileTemplate = $dataLastEmail['pathEmail'] . G::LoadTranslation('ID_UNASSIGNED_MESSAGE');
|
||||||
|
|
||||||
|
if ((!file_exists($fileTemplate)) && file_exists(PATH_TPL . "mails" . PATH_SEP .
|
||||||
|
G::LoadTranslation('ID_UNASSIGNED_MESSAGE'))
|
||||||
|
) {
|
||||||
|
@copy(PATH_TPL . "mails" . PATH_SEP . G::LoadTranslation('ID_UNASSIGNED_MESSAGE'),
|
||||||
|
$fileTemplate);
|
||||||
|
}
|
||||||
|
$sBody2 = G::replaceDataField(file_get_contents($fileTemplate), $arrayData2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($sTo != null) {
|
||||||
|
$oSpool = new spoolRun();
|
||||||
|
|
||||||
|
$oSpool->setConfig($dataLastEmail['configuration']);
|
||||||
|
$oSpool->create(array(
|
||||||
|
"msg_uid" => "",
|
||||||
|
'app_uid' => $dataLastEmail['applicationUid'],
|
||||||
|
'del_index' => $dataLastEmail['delIndex'],
|
||||||
|
"app_msg_type" => "DERIVATION",
|
||||||
|
"app_msg_subject" => $dataLastEmail['subject'],
|
||||||
|
'app_msg_from' => $dataLastEmail['from'],
|
||||||
|
"app_msg_to" => $sTo,
|
||||||
|
'app_msg_body' => $sBody2,
|
||||||
|
"app_msg_cc" => $sCc,
|
||||||
|
"app_msg_bcc" => "",
|
||||||
|
"app_msg_attach" => "",
|
||||||
|
"app_msg_template" => "",
|
||||||
|
"app_msg_status" => "pending",
|
||||||
|
"app_msg_error" => $dataLastEmail['msgError']
|
||||||
|
));
|
||||||
|
|
||||||
|
if ($dataLastEmail['msgError'] == '') {
|
||||||
|
if (($dataLastEmail['configuration']["MESS_BACKGROUND"] == "") ||
|
||||||
|
($dataLastEmail['configuration']["MESS_TRY_SEND_INMEDIATLY"] == "1")
|
||||||
|
) {
|
||||||
|
$oSpool->sendMail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $taskUid
|
||||||
|
* @param $arrayTask
|
||||||
|
* @param $arrayData
|
||||||
|
* @param $applicationUid
|
||||||
|
* @param $delIndex
|
||||||
* @param string $from
|
* @param string $from
|
||||||
* @return void
|
* @return bool
|
||||||
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function sendNotifications($taskUid, $arrayTask, $arrayData, $applicationUid, $delIndex, $from = '')
|
public function sendNotifications($taskUid, $arrayTask, $arrayData, $applicationUid, $delIndex, $from = '')
|
||||||
@@ -5220,194 +5440,17 @@ class Cases
|
|||||||
$arrayApplicationData = $this->loadCase($applicationUid);
|
$arrayApplicationData = $this->loadCase($applicationUid);
|
||||||
$arrayData['APP_NUMBER'] = $arrayApplicationData['APP_NUMBER'];
|
$arrayData['APP_NUMBER'] = $arrayApplicationData['APP_NUMBER'];
|
||||||
|
|
||||||
if (!class_exists('System')) {
|
|
||||||
G::LoadClass('system');
|
|
||||||
}
|
|
||||||
|
|
||||||
//Send derivation notification - Start
|
|
||||||
$oTask = new Task();
|
$oTask = new Task();
|
||||||
$aTaskInfo = $oTask->load($taskUid);
|
$aTaskInfo = $oTask->load($taskUid);
|
||||||
|
|
||||||
if ($aTaskInfo['TAS_SEND_LAST_EMAIL'] != 'TRUE') {
|
if ($aTaskInfo['TAS_SEND_LAST_EMAIL'] == 'TRUE') {
|
||||||
|
$dataLastEmail = $this->loadDataSendEmail($aTaskInfo, $arrayData, $from, 'LAST');
|
||||||
|
$dataLastEmail['applicationUid'] = $applicationUid;
|
||||||
|
$dataLastEmail['delIndex'] = $delIndex;
|
||||||
|
$this->sendMessage($dataLastEmail, $arrayData, $arrayTask);
|
||||||
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$emailServer = new \ProcessMaker\BusinessModel\EmailServer();
|
|
||||||
|
|
||||||
$emailServerUid = $aTaskInfo['TAS_EMAIL_SERVER_UID'];
|
|
||||||
|
|
||||||
if ($emailServerUid != '') {
|
|
||||||
$aConfiguration = $emailServer->getEmailServer($emailServerUid, true);
|
|
||||||
$aConfiguration['SMTPSecure'] = $aConfiguration['SMTPSECURE'];
|
|
||||||
} else {
|
|
||||||
$aConfiguration = $emailServer->getEmailServerDefault();
|
|
||||||
$aConfiguration['SMTPSecure'] = $aConfiguration['SMTPSECURE'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$msgError = '';
|
|
||||||
|
|
||||||
if (empty($aConfiguration)) {
|
|
||||||
$msgError = G::LoadTranslation('ID_THE_DEFAULT_CONFIGURATION');
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($aTaskInfo['TAS_NOT_EMAIL_FROM_FORMAT']) {
|
|
||||||
$fromName = $aConfiguration['MESS_FROM_NAME'];
|
|
||||||
$fromMail = $aConfiguration['MESS_FROM_MAIL'];
|
|
||||||
|
|
||||||
$from = $fromName . (($fromMail != '')? ' <' . $fromMail . '>' : '');
|
|
||||||
}
|
|
||||||
|
|
||||||
$from = G::buildFrom($aConfiguration, $from);
|
|
||||||
|
|
||||||
if (isset($aTaskInfo['TAS_DEF_SUBJECT_MESSAGE']) && $aTaskInfo['TAS_DEF_SUBJECT_MESSAGE'] != '') {
|
|
||||||
$sSubject = G::replaceDataField($aTaskInfo['TAS_DEF_SUBJECT_MESSAGE'], $arrayData);
|
|
||||||
} else {
|
|
||||||
$sSubject = G::LoadTranslation('ID_MESSAGE_SUBJECT_DERIVATION');
|
|
||||||
}
|
|
||||||
|
|
||||||
//erik: new behaviour for messages
|
|
||||||
G::loadClass('configuration');
|
|
||||||
$oConf = new Configurations;
|
|
||||||
$oConf->loadConfig($x, 'TAS_EXTRA_PROPERTIES', $aTaskInfo['TAS_UID'], '', '');
|
|
||||||
$conf = $oConf->aConfig;
|
|
||||||
|
|
||||||
$pathEmail = PATH_DATA_SITE . "mailTemplates" . PATH_SEP . $aTaskInfo["PRO_UID"] . PATH_SEP;
|
|
||||||
$swtplDefault = 0;
|
|
||||||
$sBody = null;
|
|
||||||
|
|
||||||
if (isset($conf["TAS_DEF_MESSAGE_TYPE"]) &&
|
|
||||||
isset($conf["TAS_DEF_MESSAGE_TEMPLATE"]) &&
|
|
||||||
$conf["TAS_DEF_MESSAGE_TYPE"] == "template" &&
|
|
||||||
$conf["TAS_DEF_MESSAGE_TEMPLATE"] != ""
|
|
||||||
) {
|
|
||||||
if ($conf["TAS_DEF_MESSAGE_TEMPLATE"] == "alert_message.html") {
|
|
||||||
$swtplDefault = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$fileTemplate = $pathEmail . $conf["TAS_DEF_MESSAGE_TEMPLATE"];
|
|
||||||
|
|
||||||
if (!file_exists($fileTemplate)) {
|
|
||||||
$tempale = PATH_CORE."templates".PATH_SEP."mails".PATH_SEP."alert_message.html";
|
|
||||||
$copied = @copy($tempale,$fileTemplate);
|
|
||||||
if($copied) {
|
|
||||||
$dataTemplate = array("prf_filename"=>$conf["TAS_DEF_MESSAGE_TEMPLATE"],
|
|
||||||
"prf_path"=>$fileTemplate,
|
|
||||||
"pro_uid"=>$aTaskInfo["PRO_UID"],
|
|
||||||
"usr_uid"=>"00000000000000000000000000000001",
|
|
||||||
"prf_uid"=>G::generateUniqueID(),
|
|
||||||
"prf_type"=>"file",
|
|
||||||
"prf_create_date"=>date("Y-m-d H:i:s"));
|
|
||||||
$filesManager = new ProcessMaker\BusinessModel\FilesManager();
|
|
||||||
$filesManager->addProcessFilesManagerInDb($dataTemplate);
|
|
||||||
} else {
|
|
||||||
throw (new Exception("Template file \"$fileTemplate\" does not exist."));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$sBody = file_get_contents($fileTemplate);
|
|
||||||
} else {
|
|
||||||
$sBody = nl2br($aTaskInfo['TAS_DEF_MESSAGE']);
|
|
||||||
}
|
|
||||||
|
|
||||||
G::LoadClass("tasks");
|
|
||||||
G::LoadClass("groups");
|
|
||||||
G::LoadClass("spool");
|
|
||||||
|
|
||||||
$task = new Tasks();
|
|
||||||
$group = new Groups();
|
|
||||||
$oUser = new Users();
|
|
||||||
|
|
||||||
foreach ($arrayTask as $aTask) {
|
|
||||||
|
|
||||||
//Check and fix if Task Id is complex
|
|
||||||
if (strpos($aTask['TAS_UID'], "/") !== false) {
|
|
||||||
$aux = explode("/", $aTask['TAS_UID']);
|
|
||||||
if (isset($aux[1])) {
|
|
||||||
$aTask['TAS_UID'] = $aux[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//if the next is EOP dont send notification and continue with the next
|
|
||||||
if($aTask['TAS_UID'] === '-1'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (isset($aTask['DEL_INDEX'])) {
|
|
||||||
$arrayData2 = $arrayData;
|
|
||||||
|
|
||||||
$appDelegation = AppDelegationPeer::retrieveByPK($applicationUid, $aTask['DEL_INDEX']);
|
|
||||||
|
|
||||||
if (!is_null($appDelegation)) {
|
|
||||||
$oTaskUpd = new Task();
|
|
||||||
$aTaskUpdate = $oTaskUpd->load($appDelegation->getTasUid());
|
|
||||||
$arrayData2['TAS_TITLE'] = $aTaskUpdate['TAS_TITLE'];
|
|
||||||
$arrayData2['DEL_TASK_DUE_DATE'] = $appDelegation->getDelTaskDueDate();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$arrayData2 = $arrayData;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($aTask['USR_UID']) && !empty($aTask['USR_UID'])) {
|
|
||||||
$user = new \ProcessMaker\BusinessModel\User();
|
|
||||||
|
|
||||||
$arrayUserData = $user->getUser($aTask['USR_UID'], true);
|
|
||||||
|
|
||||||
$arrayData2 = \ProcessMaker\Util\DateTime::convertUtcToTimeZone($arrayData2, (trim($arrayUserData['USR_TIME_ZONE']) != '')? trim($arrayUserData['USR_TIME_ZONE']) : \ProcessMaker\Util\System::getTimeZone());
|
|
||||||
} else {
|
|
||||||
$arrayData2 = \ProcessMaker\Util\DateTime::convertUtcToTimeZone($arrayData2);
|
|
||||||
}
|
|
||||||
|
|
||||||
$sBody2 = G::replaceDataGridField($sBody, $arrayData2, false);
|
|
||||||
|
|
||||||
$sTo = null;
|
|
||||||
if($aTask['TAS_UID'] != '-1'){
|
|
||||||
$respTo = $this->getTo($aTask['TAS_UID'], $aTask['USR_UID'], $arrayData);
|
|
||||||
$sTo = $respTo['to'];
|
|
||||||
$sCc = $respTo['cc'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($aTask ["TAS_ASSIGN_TYPE"] === "SELF_SERVICE") {
|
|
||||||
if ($swtplDefault == 1) {
|
|
||||||
G::verifyPath ( $pathEmail, true ); // Create if it does not exist
|
|
||||||
$fileTemplate = $pathEmail . G::LoadTranslation ( 'ID_UNASSIGNED_MESSAGE' );
|
|
||||||
|
|
||||||
if ((! file_exists ( $fileTemplate )) && file_exists ( PATH_TPL . "mails" . PATH_SEP . G::LoadTranslation ( 'ID_UNASSIGNED_MESSAGE' ) )) {
|
|
||||||
@copy ( PATH_TPL . "mails" . PATH_SEP . G::LoadTranslation ( 'ID_UNASSIGNED_MESSAGE' ), $fileTemplate );
|
|
||||||
}
|
|
||||||
$sBody2 = G::replaceDataField ( file_get_contents ( $fileTemplate ), $arrayData2 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($sTo != null) {
|
|
||||||
$oSpool = new spoolRun();
|
|
||||||
|
|
||||||
$oSpool->setConfig($aConfiguration);
|
|
||||||
$oSpool->create(array(
|
|
||||||
"msg_uid" => "",
|
|
||||||
'app_uid' => $applicationUid,
|
|
||||||
'del_index' => $delIndex,
|
|
||||||
"app_msg_type" => "DERIVATION",
|
|
||||||
"app_msg_subject" => $sSubject,
|
|
||||||
'app_msg_from' => $from,
|
|
||||||
"app_msg_to" => $sTo,
|
|
||||||
'app_msg_body' => $sBody2,
|
|
||||||
"app_msg_cc" => $sCc,
|
|
||||||
"app_msg_bcc" => "",
|
|
||||||
"app_msg_attach" => "",
|
|
||||||
"app_msg_template" => "",
|
|
||||||
"app_msg_status" => "pending",
|
|
||||||
"app_msg_error" => $msgError
|
|
||||||
));
|
|
||||||
|
|
||||||
if ($msgError == '') {
|
|
||||||
if (($aConfiguration["MESS_BACKGROUND"] == "") ||
|
|
||||||
($aConfiguration["MESS_TRY_SEND_INMEDIATLY"] == "1")
|
|
||||||
) {
|
|
||||||
$oSpool->sendMail();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//Send derivation notification - End
|
|
||||||
} catch (Exception $oException) {
|
} catch (Exception $oException) {
|
||||||
throw $oException;
|
throw $oException;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,9 +52,11 @@ class Derivation
|
|||||||
protected $flagControlMulInstance;
|
protected $flagControlMulInstance;
|
||||||
private $regexpTaskTypeToInclude;
|
private $regexpTaskTypeToInclude;
|
||||||
public $node;
|
public $node;
|
||||||
|
public $userLogged = null;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
|
$this->userLogged = new Users();
|
||||||
$this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT");
|
$this->setRegexpTaskTypeToInclude("GATEWAYTOGATEWAY|END-MESSAGE-EVENT|END-EMAIL-EVENT");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1253,6 +1255,7 @@ class Derivation
|
|||||||
|
|
||||||
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
$iAppThreadIndex = $appFields['DEL_THREAD'];
|
||||||
$delType = 'NORMAL';
|
$delType = 'NORMAL';
|
||||||
|
$sendNotifications = false;
|
||||||
$sendNotificationsMobile = false;
|
$sendNotificationsMobile = false;
|
||||||
|
|
||||||
$appDelegation = new AppDelegation();
|
$appDelegation = new AppDelegation();
|
||||||
@@ -1418,6 +1421,9 @@ class Derivation
|
|||||||
}
|
}
|
||||||
|
|
||||||
$sendNotificationsMobile = $this->sendNotificationsMobile($aOldFields, $aSP, $aNewCase['INDEX']);
|
$sendNotificationsMobile = $this->sendNotificationsMobile($aOldFields, $aSP, $aNewCase['INDEX']);
|
||||||
|
$nextTaskData = $taskNextDel->toArray(BasePeer::TYPE_FIELDNAME);
|
||||||
|
$nextTaskData['USR_UID'] = $aSP['USR_UID'];
|
||||||
|
$sendNotifications = $this->notifyAssignedUser($appFields, $nextTaskData, $aNewCase['INDEX']);
|
||||||
|
|
||||||
//If not is SYNCHRONOUS derivate one more time
|
//If not is SYNCHRONOUS derivate one more time
|
||||||
if ($aSP['SP_SYNCHRONOUS'] == 0) {
|
if ($aSP['SP_SYNCHRONOUS'] == 0) {
|
||||||
@@ -1450,8 +1456,13 @@ class Derivation
|
|||||||
}
|
}
|
||||||
} //end switch
|
} //end switch
|
||||||
|
|
||||||
if($iNewDelIndex !== 0 && !$sendNotificationsMobile){
|
if ($iNewDelIndex !== 0 && !$sendNotificationsMobile) {
|
||||||
$sendNotificationsMobile = $this->sendNotificationsMobile($appFields, $nextDel, $iNewDelIndex);
|
$this->sendNotificationsMobile($appFields, $nextDel, $iNewDelIndex);
|
||||||
|
}
|
||||||
|
if ($iNewDelIndex !== 0 && !$sendNotifications) {
|
||||||
|
$nextTaskData = $taskNextDel->toArray(BasePeer::TYPE_FIELDNAME);
|
||||||
|
$nextTaskData['USR_UID'] = $nextDel['USR_UID'];
|
||||||
|
$this->notifyAssignedUser($appFields, $nextTaskData, $iNewDelIndex);
|
||||||
}
|
}
|
||||||
return $iNewDelIndex;
|
return $iNewDelIndex;
|
||||||
}
|
}
|
||||||
@@ -1724,4 +1735,30 @@ class Derivation
|
|||||||
\G::log(G::loadTranslation('ID_NOTIFICATION_ERROR') . '|' . $e->getMessage(), PATH_DATA, "mobile.log");
|
\G::log(G::loadTranslation('ID_NOTIFICATION_ERROR') . '|' . $e->getMessage(), PATH_DATA, "mobile.log");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $appFields
|
||||||
|
* @param $nextDel
|
||||||
|
* @param $iNewDelIndex
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function notifyAssignedUser($appFields, $nextDel, $iNewDelIndex)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if ($nextDel['TAS_RECEIVE_LAST_EMAIL'] == 'TRUE') {
|
||||||
|
$taskData = array();
|
||||||
|
$userLogged = $this->userLogged->load($appFields['APP_DATA']['USER_LOGGED']);
|
||||||
|
$fromName = $userLogged['USR_FIRSTNAME'] . ' ' . $userLogged['USR_LASTNAME'];
|
||||||
|
$sFromData = $fromName . ($userLogged['USR_EMAIL'] != '' ? ' <' . $userLogged['USR_EMAIL'] . '>' : '');
|
||||||
|
$dataEmail = $this->case->loadDataSendEmail($nextDel, $appFields['APP_DATA'], $sFromData, 'RECEIVE');
|
||||||
|
$dataEmail['applicationUid'] = $appFields['APP_UID'];
|
||||||
|
$dataEmail['delIndex'] = $iNewDelIndex;
|
||||||
|
array_push($taskData, $nextDel);
|
||||||
|
$this->case->sendMessage($dataEmail, $appFields['APP_DATA'], $taskData);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
\G::log(G::loadTranslation('ID_NOTIFICATION_ERROR') . '|' . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user