This commit is contained in:
Marco Antonio Nina Mena
2018-03-05 16:13:12 -04:00
committed by Paula Quispe
parent 4e6fda2e6c
commit f3800fdef5

View File

@@ -1,48 +1,49 @@
<?php <?php
namespace ProcessMaker\BusinessModel; namespace ProcessMaker\BusinessModel;
use BasePeer;
use Bootstrap;
use Criteria;
use EmailEvent as ModelEmailEvent;
use EmailEventPeer;
use EmailServerPeer;
use Exception;
use G; use G;
use ProcessMaker\Util\Common;
use Propel;
use ResultSet;
use UsersPeer;
class EmailEvent class EmailEvent
{ {
/*private $arrayFieldDefinition = array(
"EMAIL_EVENT_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "emailEventUid"),
"PRJ_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "projectUid"),
"EVN_UID" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "eventUid"),
"EMAIL_EVENT_FROM" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "messageTypeUid"),
"EMAIL_EVENT_TO" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "EmailEventUserUid"),
"EMAIL_EVENT_SUBJECT" => array("type" => "array", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventVariables"),
"PRF_UID" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventCorrelation")
);
*/
/** /**
* Get the email accounts of the current workspace * Get the email accounts of the current workspace
* *
* return array * @return array
* @throws Exception
*/ */
public function getEmailEventAccounts() public function getEmailEventAccounts()
{ {
try { try {
$criteria = new \Criteria("workflow"); $criteria = new Criteria('workflow');
$criteria->clearSelectColumns(); $criteria->clearSelectColumns();
$criteria->addSelectColumn(\UsersPeer::USR_UID); $criteria->addSelectColumn(UsersPeer::USR_UID);
$criteria->addSelectColumn(\UsersPeer::USR_EMAIL); $criteria->addSelectColumn(UsersPeer::USR_EMAIL);
$criteria->addAsColumn('UID', 'USR_UID'); $criteria->addAsColumn('UID', 'USR_UID');
$criteria->addAsColumn('EMAIL', 'USR_EMAIL'); $criteria->addAsColumn('EMAIL', 'USR_EMAIL');
$criteria->add(\UsersPeer::USR_STATUS, "ACTIVE"); $criteria->add(UsersPeer::USR_STATUS, 'ACTIVE');
$result = \UsersPeer::doSelectRS($criteria); $result = UsersPeer::doSelectRS($criteria);
$result->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next(); $accounts = [];
$accountsArray = array(); while ($result->next()) {
while ($aRow = $result->getRow()) { $row = $result->getRow();
if (($aRow['USR_EMAIL'] != null) || ($aRow['USR_EMAIL'] != "")) { if (!empty($row['USR_EMAIL'])) {
$accountsArray[] = array_change_key_case($aRow, CASE_LOWER); $accounts[] = array_change_key_case($row, CASE_LOWER);
} }
$result->next();
} }
return $accountsArray; return $accounts;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -50,101 +51,116 @@ class EmailEvent
/** /**
* Get the email server accounts of the current workspace * Get the email server accounts of the current workspace
* *
* return array * @return array
* @throws Exception
*/ */
public function getEmailEventServerAccounts() public function getEmailEventServerAccounts()
{ {
try { try {
$criteria = new \Criteria("workflow"); $criteria = new Criteria('workflow');
$criteria->clearSelectColumns(); $criteria->clearSelectColumns();
$criteria->addSelectColumn(\EmailServerPeer::MESS_UID); $criteria->addSelectColumn(EmailServerPeer::MESS_UID);
$criteria->addSelectColumn(\EmailServerPeer::MESS_FROM_MAIL); $criteria->addSelectColumn(EmailServerPeer::MESS_FROM_MAIL);
$criteria->addSelectColumn(\EmailServerPeer::MESS_ACCOUNT); $criteria->addSelectColumn(EmailServerPeer::MESS_ACCOUNT);
$criteria->addSelectColumn(EmailServerPeer::MESS_ENGINE);
$criteria->addAsColumn('UID', 'MESS_UID'); $criteria->addAsColumn('UID', 'MESS_UID');
$result = \EmailServerPeer::doSelectRS($criteria); $result = EmailServerPeer::doSelectRS($criteria);
$result->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$result->next(); $accounts = [];
$accountsArray = array(); while ($result->next()) {
while ($aRow = $result->getRow()) { $row = $result->getRow();
if ($aRow['MESS_UID'] != null) { if (!empty($row['MESS_UID'])) {
$aRow['EMAIL'] = $aRow['MESS_ACCOUNT']; $row['EMAIL'] = $row['MESS_ACCOUNT'];
if($aRow['EMAIL'] != "") {
$accountsArray[] = array_change_key_case($aRow, CASE_LOWER); if (empty($row['EMAIL']) && $row['MESS_ENGINE'] === 'MAIL') {
$row['MESS_ACCOUNT'] = $row['EMAIL'] = 'Mail (PHP)';
} }
$row['MESS_LABEL'] = $row['MESS_FROM_MAIL'];
if (empty($row['MESS_FROM_MAIL'])) {
$row['MESS_LABEL'] = $row['MESS_ACCOUNT'];
}
$accounts[] = array_change_key_case($row, CASE_LOWER);
} }
$result->next();
} }
return $accountsArray; return $accounts;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
/** /**
* Get the Email-Event data * Get the Email-Event data
* @var string $evn_uid. uid for activity *
* @var string $pro_uid. uid for process * @var string $evn_uid . uid for activity
* return array * @var string $pro_uid . uid for process
*
* @return array
* @throws Exception
*/ */
public function getEmailEventData($pro_uid, $evn_uid) public function getEmailEventData($pro_uid, $evn_uid)
{ {
try { try {
//Get data //Get data
$criteria = $this->getEmailEventCriteria(); $criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::EVN_UID, $evn_uid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::EVN_UID, $evn_uid, Criteria::EQUAL);
$criteria->add(\EmailEventPeer::PRJ_UID, $pro_uid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::PRJ_UID, $pro_uid, Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria = EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next(); $rsCriteria->next();
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
if(is_array($row)) { if ($row) {
$row = array_change_key_case($row, CASE_LOWER); $row = array_change_key_case($row, CASE_LOWER);
} }
return $row; return $row;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
/** /**
* Get the Email-Event data * Get the Email-Event data
* @var string $emailEventUid. uid for email event *
* @var string $pro_uid. uid for process * @var string $emailEventUid . uid for email event
* return array * @var string $pro_uid . uid for process
*
* @return array
* @throws Exception
*/ */
public function getEmailEventDataByUid($pro_uid, $emailEventUid) public function getEmailEventDataByUid($pro_uid, $emailEventUid)
{ {
try { try {
//Get data //Get data
$criteria = $this->getEmailEventCriteria(); $criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, Criteria::EQUAL);
$criteria->add(\EmailEventPeer::PRJ_UID, $pro_uid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::PRJ_UID, $pro_uid, Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria = EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next(); $rsCriteria->next();
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
if(is_array($row)) { if ($row) {
$row = array_change_key_case($row, CASE_LOWER); $row = array_change_key_case($row, CASE_LOWER);
} }
return $row; return $row;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
/** /**
* Save Data for Email-Event * Save Data for Email-Event
* @var string $prj_uid. Uid for Process
* @var string $arrayData. Data for Trigger
* *
* return array * @var string $prj_uid . Uid for Process
* @var string $arrayData . Data for Trigger
*
* @return array
* @throws Exception
*/ */
public function save($prj_uid = '', $arrayData = array()) public function save($prj_uid = '', $arrayData = [])
{ {
try { try {
//Verify data //Verify data
$process = new \ProcessMaker\BusinessModel\Process(); $process = new Process();
$validator = new \ProcessMaker\BusinessModel\Validator(); $validator = new Validator();
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
@@ -153,17 +169,17 @@ class EmailEvent
$arrayData = array_change_key_case($arrayData, CASE_UPPER); $arrayData = array_change_key_case($arrayData, CASE_UPPER);
//Verify data //Verify data
$process->throwExceptionIfNotExistsProcess($prj_uid, "projectUid"); $process->throwExceptionIfNotExistsProcess($prj_uid, 'projectUid');
//Create //Create
$db = \Propel::getConnection("workflow"); $db = Propel::getConnection('workflow');
try { try {
$emailEvent = new \EmailEvent(); $emailEvent = new ModelEmailEvent();
$emailEvent->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME); $emailEvent->fromArray($arrayData, BasePeer::TYPE_FIELDNAME);
$emailEventUid = \ProcessMaker\Util\Common::generateUID(); $emailEventUid = Common::generateUID();
$emailEvent->setEmailEventUid($emailEventUid); $emailEvent->setEmailEventUid($emailEventUid);
$emailEvent->setPrjUid($prj_uid); $emailEvent->setPrjUid($prj_uid);
@@ -173,11 +189,11 @@ class EmailEvent
$db->commit(); $db->commit();
return $this->getEmailEvent($emailEventUid); return $this->getEmailEvent($emailEventUid);
} catch (\Exception $e) { } catch (Exception $e) {
$db->rollback(); $db->rollback();
throw $e; throw $e;
} }
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -186,15 +202,16 @@ class EmailEvent
* Update Email-Event * Update Email-Event
* *
* @param string $emailEventUid Unique id of Email-Event * @param string $emailEventUid Unique id of Email-Event
* @param array $arrayData Data * @param array $arrayData Data
* *
* return array Return data of the Email-Event updated * @return array Return data of the Email-Event updated
* @throws Exception
*/ */
public function update($emailEventUid, array $arrayData) public function update($emailEventUid, array $arrayData)
{ {
try { try {
//Verify data //Verify data
$validator = new \ProcessMaker\BusinessModel\Validator(); $validator = new Validator();
$validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData");
$validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData");
@@ -210,11 +227,11 @@ class EmailEvent
$this->verifyIfEmailEventExists($emailEventUid); $this->verifyIfEmailEventExists($emailEventUid);
//Update //Update
$db = \Propel::getConnection("workflow"); $db = Propel::getConnection('workflow');
try { try {
$emailEvent = \EmailEventPeer::retrieveByPK($emailEventUid); $emailEvent = EmailEventPeer::retrieveByPK($emailEventUid);
$emailEvent->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME); $emailEvent->fromArray($arrayData, BasePeer::TYPE_FIELDNAME);
$db->begin(); $db->begin();
$result = $emailEvent->save(); $result = $emailEvent->save();
@@ -223,13 +240,12 @@ class EmailEvent
$arrayData = $arrayDataBackup; $arrayData = $arrayDataBackup;
$arrayData = array_change_key_case($arrayData, CASE_LOWER); $arrayData = array_change_key_case($arrayData, CASE_LOWER);
return $arrayData; return $arrayData;
} catch (Exception $e) {
} catch (\Exception $e) { $db->rollback();
$cnn->rollback();
throw $e; throw $e;
} }
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -237,11 +253,14 @@ class EmailEvent
/** /**
* Delete Email-Event * Delete Email-Event
* *
* @param string $pro_uid
* @param string $emailEventUid Unique id of Email-Event * @param string $emailEventUid Unique id of Email-Event
* @param boolean $passValidation
* @param boolean $verifyRelation
* *
* return void * @throws Exception
*/ */
public function delete($pro_uid, $emailEventUid, $passValidation = true) public function delete($pro_uid, $emailEventUid, $passValidation = true, $verifyRelation = true)
{ {
try { try {
//Verify data //Verify data
@@ -249,20 +268,19 @@ class EmailEvent
$this->verifyIfEmailEventExists($emailEventUid); $this->verifyIfEmailEventExists($emailEventUid);
//Delete file //Delete file
$filesManager = new \ProcessMaker\BusinessModel\FilesManager(); $filesManager = new FilesManager();
$arrayData = $this->getEmailEventDataByUid($pro_uid, $emailEventUid); $arrayData = $this->getEmailEventDataByUid($pro_uid, $emailEventUid);
$arrayData = array_change_key_case($arrayData, CASE_UPPER); $arrayData = array_change_key_case($arrayData, CASE_UPPER);
if (sizeof($arrayData)) { if ($arrayData) {
$prfUid = $arrayData['PRF_UID']; $prfUid = $arrayData['PRF_UID'];
$filesManager->deleteProcessFilesManager($pro_uid, $prfUid, true); $filesManager->deleteProcessFilesManager($pro_uid, $prfUid, $verifyRelation);
} }
} }
//Delete Email event //Delete Email event
$criteria = new \Criteria("workflow"); $criteria = new Criteria('workflow');
$criteria->add(\EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, Criteria::EQUAL);
$result = \EmailEventPeer::doDelete($criteria); $result = EmailEventPeer::doDelete($criteria);
} catch (Exception $e) {
} catch (\Exception $e) {
throw $e; throw $e;
} }
} }
@@ -270,21 +288,21 @@ class EmailEvent
/** /**
* Delete Email-Event by event uid * Delete Email-Event by event uid
* *
* @param string $emailEventUid Unique id of Email-Event * @param string $prj_uid Unique id of Process
* @param string $evn_uid Unique id of Email-Event
* *
* return void * @throws Exception
*/ */
public function deleteByEvent($prj_uid, $evn_uid) public function deleteByEvent($prj_uid, $evn_uid)
{ {
try { try {
//Verify data //Verify data
if (!$this->existsEvent($prj_uid, $evn_uid)) { if (!$this->existsEvent($prj_uid, $evn_uid)) {
throw new \Exception(G::LoadTranslation("ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST")); throw new Exception(G::LoadTranslation('ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST'));
} }
$arrayData = $this->existsEvent($prj_uid, $evn_uid); $arrayData = $this->existsEvent($prj_uid, $evn_uid);
$this->delete($prj_uid, $arrayData[0]); $this->delete($prj_uid, $arrayData[0]);
} catch (Exception $e) {
} catch (\Exception $e) {
throw $e; throw $e;
} }
} }
@@ -293,27 +311,25 @@ class EmailEvent
* Get data of a Email-Event * Get data of a Email-Event
* *
* @param string $emailEventUid Unique id of Email-Event * @param string $emailEventUid Unique id of Email-Event
* @param bool $flagGetRecord Value that set the getting
* *
* return array Return an array with data of a Email-Event * @return array Return an array with data of a Email-Event
* @throws Exception
*/ */
public function getEmailEvent($emailEventUid) public function getEmailEvent($emailEventUid)
{ {
try { try {
//Verify data //Verify data
$this->verifyIfEmailEventExists($emailEventUid); $this->verifyIfEmailEventExists($emailEventUid);
//Get data //Get data
$criteria = $this->getEmailEventCriteria(); $criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::EMAIL_EVENT_UID, $emailEventUid, Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria = EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next(); $rsCriteria->next();
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
return $row ? $row : [];
//Return } catch (Exception $e) {
return $row;
} catch (\Exception $e) {
throw $e; throw $e;
} }
} }
@@ -323,15 +339,16 @@ class EmailEvent
* *
* @param string $emailEventUid Unique id of Email-Event * @param string $emailEventUid Unique id of Email-Event
* *
* return bool Return true if exists the Email-Event, false otherwise * @return bool Return true if exists the Email-Event, false otherwise
* @throws Exception
*/ */
public function exists($emailEventUid) public function exists($emailEventUid)
{ {
try { try {
$obj = \EmailEventPeer::retrieveByPK($emailEventUid); $obj = EmailEventPeer::retrieveByPK($emailEventUid);
return (!is_null($obj))? true : false; return $obj ? true : false;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -339,82 +356,92 @@ class EmailEvent
/** /**
* Get criteria for Email-Event * Get criteria for Email-Event
* *
* return object * @return Criteria
* @throws Exception
*/ */
public function getEmailEventCriteria() public function getEmailEventCriteria()
{ {
try { try {
$criteria = new \Criteria("workflow"); $criteria = new Criteria('workflow');
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_UID); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_UID);
$criteria->addSelectColumn(\EmailEventPeer::PRJ_UID); $criteria->addSelectColumn(EmailEventPeer::PRJ_UID);
$criteria->addSelectColumn(\EmailEventPeer::EVN_UID); $criteria->addSelectColumn(EmailEventPeer::EVN_UID);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_FROM); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_FROM);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_TO); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_TO);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_SUBJECT); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_SUBJECT);
$criteria->addSelectColumn(\EmailEventPeer::PRF_UID); $criteria->addSelectColumn(EmailEventPeer::PRF_UID);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_SERVER_UID); $criteria->addSelectColumn(EmailEventPeer::EMAIL_SERVER_UID);
return $criteria; return $criteria;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
/** /**
* @return \Criteria * Get Criteria for Email Event when Server Uid is empty
* @throws \Exception *
* @return Criteria
* @throws Exception
*/ */
public function getEmailEventCriteriaEmailServer() public function getEmailEventCriteriaEmailServer()
{ {
try { try {
$criteria = new \Criteria("workflow"); $criteria = new Criteria('workflow');
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_UID); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_UID);
$criteria->addSelectColumn(\EmailEventPeer::PRJ_UID); $criteria->addSelectColumn(EmailEventPeer::PRJ_UID);
$criteria->addSelectColumn(\EmailEventPeer::EVN_UID); $criteria->addSelectColumn(EmailEventPeer::EVN_UID);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_FROM); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_FROM);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_TO); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_TO);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_SUBJECT); $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_SUBJECT);
$criteria->addSelectColumn(\EmailEventPeer::PRF_UID); $criteria->addSelectColumn(EmailEventPeer::PRF_UID);
$criteria->addSelectColumn(\EmailEventPeer::EMAIL_SERVER_UID); $criteria->addSelectColumn(EmailEventPeer::EMAIL_SERVER_UID);
$criteria->add(\EmailEventPeer::EMAIL_SERVER_UID, '',\Criteria::EQUAL); $criteria->add(EmailEventPeer::EMAIL_SERVER_UID, '', Criteria::EQUAL);
return $criteria; return $criteria;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
/**
* Verify if email Event exists
*
* @param $emailEventUid
* @throws Exception
*/
public function verifyIfEmailEventExists($emailEventUid) public function verifyIfEmailEventExists($emailEventUid)
{ {
if (!$this->exists($emailEventUid)) { if (!$this->exists($emailEventUid)) {
throw new \Exception(G::LoadTranslation("ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST", array("Email Event Uid", $emailEventUid))); throw new Exception(G::LoadTranslation('ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST', ['Email Event Uid', $emailEventUid]));
} }
} }
/** /**
* Verify if exists the Event of a Message-Event-Definition * Verify if exists the Event of a Message-Event-Definition
* *
* @param string $projectUid Unique id of Project * @param string $projectUid Unique id of Project
* @param string $eventUid Unique id of Event * @param string $eventUid Unique id of Event
* *
* return bool Return true if exists the Event of a Message-Event-Definition, false otherwise * @return bool Return true if exists the Event of a Message-Event-Definition, false otherwise
* @throws Exception
*/ */
public function existsEvent($projectUid, $eventUid) public function existsEvent($projectUid, $eventUid)
{ {
try { try {
$criteria = $this->getEmailEventCriteria(); $criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::PRJ_UID, $projectUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::PRJ_UID, $projectUid, Criteria::EQUAL);
$criteria->add(\EmailEventPeer::EVN_UID, $eventUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::EVN_UID, $eventUid, Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria = EmailEventPeer::doSelectRS($criteria);
$rsCriteria->next(); $rsCriteria->next();
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
if(is_array($row)) { if ($row) {
$row = array_change_key_case($row, CASE_LOWER); return array_change_key_case($row, CASE_LOWER);
} }
return (sizeof($row))? $row : false; return false;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -422,31 +449,32 @@ class EmailEvent
/** /**
* Email-event do function * Email-event do function
* *
* @param string $appUID Unique id of application * @param string $appUID Unique id of application
* @param string $prj_uid Unique id of Project * @param string $prj_uid Unique id of Project
* @param string $eventUid Unique id of event * @param string $eventUid Unique id of event
* @param array $arrayApplicationData Case data * @param array $arrayApplicationData Case data
* *
* return void * @return void
* @throws Exception
*/ */
public function sendEmail($appUID, $prj_uid, $eventUid, $arrayApplicationData) public function sendEmail($appUID, $prj_uid, $eventUid, $arrayApplicationData)
{ {
if (!$this->existsEvent($prj_uid, $eventUid)) { if (!$this->existsEvent($prj_uid, $eventUid)) {
throw new \Exception(G::LoadTranslation("ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST")); throw new Exception(G::LoadTranslation('ID_EMAIL_EVENT_DEFINITION_DOES_NOT_EXIST'));
} }
$arrayData = $this->existsEvent($prj_uid, $eventUid); $arrayData = $this->existsEvent($prj_uid, $eventUid);
if (sizeof($arrayData)) { if (sizeof($arrayData)) {
$oEmailServer = new EmailServer(); $oEmailServer = new EmailServer();
$configEmailData = $oEmailServer->getEmailServer($arrayData[7]); $configEmailData = $oEmailServer->getEmailServer($arrayData[7]);
$emailGroupTo = array(); $emailGroupTo = [];
$emailTo = ""; $emailTo = '';
$prfUid = $arrayData[6]; $prfUid = $arrayData[6];
$filesManager = new \ProcessMaker\BusinessModel\FilesManager(); $filesManager = new FilesManager();
$contentFile = $filesManager->getProcessFileManager($prj_uid, $prfUid); $contentFile = $filesManager->getProcessFileManager($prj_uid, $prfUid);
if (strpos($arrayData[4], ",")) { if (strpos($arrayData[4], ',')) {
$emailsArray = explode(",", $arrayData[4]); $emailsArray = explode(',', $arrayData[4]);
foreach ($emailsArray as $email) { foreach ($emailsArray as $email) {
if (substr($email, 0, 1) == "@") { if (substr($email, 0, 1) === '@') {
$email = substr($email, 2, strlen($email)); $email = substr($email, 2, strlen($email));
if (isset($arrayApplicationData['APP_DATA'])) { if (isset($arrayApplicationData['APP_DATA'])) {
if (is_array($arrayApplicationData['APP_DATA']) && isset($arrayApplicationData['APP_DATA'][$email])) { if (is_array($arrayApplicationData['APP_DATA']) && isset($arrayApplicationData['APP_DATA'][$email])) {
@@ -457,10 +485,10 @@ class EmailEvent
$emailGroupTo[] = $email; $emailGroupTo[] = $email;
} }
} }
$emailTo = implode(",", array_unique(array_filter($emailGroupTo))); $emailTo = implode(',', array_unique(array_filter($emailGroupTo)));
} else { } else {
$email = $arrayData[4]; $email = $arrayData[4];
if (substr($email, 0, 1) == "@") { if (substr($email, 0, 1) === '@') {
$email = substr($email, 2, strlen($email)); $email = substr($email, 2, strlen($email));
if (isset($arrayApplicationData['APP_DATA'])) { if (isset($arrayApplicationData['APP_DATA'])) {
if (is_array($arrayApplicationData['APP_DATA']) && isset($arrayApplicationData['APP_DATA'][$email])) { if (is_array($arrayApplicationData['APP_DATA']) && isset($arrayApplicationData['APP_DATA'][$email])) {
@@ -472,12 +500,28 @@ class EmailEvent
} }
} }
if (!empty($emailTo)) { if (!empty($emailTo)) {
$subject = $arrayData[5]; PMFSendMessage(
$subject = G::replaceDataField($arrayData[5], $arrayApplicationData['APP_DATA']); $appUID,
PMFSendMessage($appUID, G::buildFrom($configEmailData), $emailTo, '', '', $subject, G::buildFrom($configEmailData),
$contentFile['prf_filename'], array(), array(), true, 0, $configEmailData); $emailTo,
'',
'',
G::replaceDataField($arrayData[5], $arrayApplicationData['APP_DATA']),
$contentFile['prf_filename'],
[],
[],
true,
0,
$configEmailData
);
} else { } else {
\Bootstrap::registerMonolog('EmailEventMailError', 200, G::LoadTranslation('ID_EMAIL_EVENT_CONFIGURATION_EMAIL', array($eventUid, $prj_uid)), ['eventUid' => $eventUid, 'prj_uid' => $prj_uid], config("system.workspace"), 'processmaker.log'); Bootstrap::registerMonolog(
'EmailEventMailError',
200,
G::LoadTranslation('ID_EMAIL_EVENT_CONFIGURATION_EMAIL', [$eventUid, $prj_uid]),
['eventUid' => $eventUid, 'prj_uid' => $prj_uid],
config('system.workspace'),
'processmaker.log');
} }
} }
} }
@@ -485,22 +529,22 @@ class EmailEvent
/** /**
* Update process file Uid * Update process file Uid
* *
* @param string $oldUid Unique id of old process file * @param string $oldUid Unique id of old process file
* @param string $newUid Unique id of new process file * @param string $newUid Unique id of new process file
* @param string $projectUid Unique id of Project * @param string $projectUid Unique id of Project
* *
* return bool Return array if exists, false otherwise * @throws Exception
*/ */
public function updatePrfUid($oldUid, $newUid, $projectUid) { public function updatePrfUid($oldUid, $newUid, $projectUid)
{
try { try {
$newValues = array(); $newValues = [];
$rowData = $this->verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid); $rowData = $this->verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid);
if(is_array($rowData)) { if ($rowData) {
$newValues['PRF_UID'] = $newUid; $newValues['PRF_UID'] = $newUid;
$this->update($rowData['EMAIL_EVENT_UID'], $newValues); $this->update($rowData['EMAIL_EVENT_UID'], $newValues);
} }
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }
@@ -508,26 +552,27 @@ class EmailEvent
/** /**
* Verify if exists the Email Event of * Verify if exists the Email Event of
* *
* @param string $oldUid Unique id of old process file * @param string $oldUid Unique id of old process file
* @param string $projectUid Unique id of Project * @param string $projectUid Unique id of Project
* *
* return bool Return array if exists, false otherwise * @return bool Return array if exists, false otherwise
* @throws Exception
*/ */
public function verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid) public function verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid)
{ {
try { try {
$criteria = $this->getEmailEventCriteria(); $criteria = $this->getEmailEventCriteria();
$criteria->add(\EmailEventPeer::PRJ_UID, $projectUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::PRJ_UID, $projectUid, Criteria::EQUAL);
$criteria->add(\EmailEventPeer::PRF_UID, $oldUid, \Criteria::EQUAL); $criteria->add(EmailEventPeer::PRF_UID, $oldUid, Criteria::EQUAL);
$rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria = EmailEventPeer::doSelectRS($criteria);
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$rsCriteria->next(); $rsCriteria->next();
$row = $rsCriteria->getRow(); $row = $rsCriteria->getRow();
if(is_array($row)) { if ($row) {
$row = array_change_key_case($row, CASE_UPPER); return array_change_key_case($row, CASE_UPPER);
} }
return (sizeof($row))? $row : false; return false;
} catch (\Exception $e) { } catch (Exception $e) {
throw $e; throw $e;
} }
} }