@@ -3,6 +3,10 @@ namespace ProcessMaker\BusinessModel;
|
|||||||
require_once (PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Task.php");
|
require_once (PATH_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Task.php");
|
||||||
|
|
||||||
use \G;
|
use \G;
|
||||||
|
use \Criteria;
|
||||||
|
use \UsersPeer;
|
||||||
|
use \GroupUserPeer;
|
||||||
|
use \ResultSet;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @copyright Colosa - Bolivia
|
* @copyright Colosa - Bolivia
|
||||||
@@ -115,19 +119,25 @@ class Pmgmail {
|
|||||||
if (!isset ($aTask ["USR_UID"])) {
|
if (!isset ($aTask ["USR_UID"])) {
|
||||||
$aTask ["USR_UID"] = "";
|
$aTask ["USR_UID"] = "";
|
||||||
}
|
}
|
||||||
$oCases = new \Cases ();
|
|
||||||
$application = $appData[0];
|
$application = $appData[0];
|
||||||
|
|
||||||
$respTo = $oCases->getTo($aTask ["TAS_UID"], $aTask ["USR_UID"], $arrayData);
|
|
||||||
$mailToAddresses = $respTo ['to'];
|
|
||||||
$mailCcAddresses = $respTo ['cc'];
|
|
||||||
$labelID = "PMUASS";
|
$labelID = "PMUASS";
|
||||||
|
$isSelfServiceValueBased = false;
|
||||||
|
|
||||||
if (( string )$mailToAddresses === "") { // Self Service Value Based
|
if ($aTask["TAS_ASSIGN_TYPE"] === "SELF_SERVICE") {
|
||||||
$isSelfServiceValueBased = true;
|
$task = \TaskPeer::retrieveByPK($aTask["TAS_UID"]);
|
||||||
|
if (trim($task->getTasGroupVariable()) != '') {
|
||||||
|
$isSelfServiceValueBased = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($isSelfServiceValueBased) {
|
||||||
|
$mailToAddresses = '';
|
||||||
|
$mailCcAddresses = '';
|
||||||
$criteria = new \Criteria ("workflow");
|
$criteria = new \Criteria ("workflow");
|
||||||
$criteria->addSelectColumn(\AppAssignSelfServiceValuePeer::GRP_UID);
|
$criteria->addSelectColumn(\AppAssignSelfServiceValuePeer::GRP_UID);
|
||||||
$criteria->add(\AppAssignSelfServiceValuePeer::APP_UID, $app_uid);
|
$criteria->add(\AppAssignSelfServiceValuePeer::APP_UID, $app_uid);
|
||||||
|
$criteria->add(\AppAssignSelfServiceValuePeer::DEL_INDEX, $aTask["DEL_INDEX"]);
|
||||||
|
|
||||||
$rsCriteria = \AppAssignSelfServiceValuePeer::doSelectRs($criteria);
|
$rsCriteria = \AppAssignSelfServiceValuePeer::doSelectRs($criteria);
|
||||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
||||||
@@ -135,23 +145,21 @@ class Pmgmail {
|
|||||||
while ($rsCriteria->next()) {
|
while ($rsCriteria->next()) {
|
||||||
$row = $rsCriteria->getRow();
|
$row = $rsCriteria->getRow();
|
||||||
}
|
}
|
||||||
$targetIds = unserialize($row ['GRP_UID']);
|
|
||||||
$oUsers = new \Users ();
|
|
||||||
|
|
||||||
if (is_array($targetIds)) {
|
$targetIds = unserialize($row ['GRP_UID']);
|
||||||
foreach ($targetIds as $user) {
|
$usersToSend = $this->getSelfServiceValueBasedUsers($targetIds);
|
||||||
$usrData = $oUsers->loadDetails($user);
|
|
||||||
$nextMail = $usrData ['USR_EMAIL'];
|
foreach($usersToSend as $record) {
|
||||||
$mailToAddresses .= ($mailToAddresses == '') ? $nextMail : ',' . $nextMail;
|
$toAux = (($record['USR_FIRSTNAME'] != '' || $record['USR_LASTNAME'] != '')
|
||||||
}
|
? $record['USR_FIRSTNAME'] . ' ' . $record['USR_LASTNAME'] . ' '
|
||||||
} else {
|
: '') . '<' . $record['USR_EMAIL'] . '>';
|
||||||
$group = new \Groups();
|
if ($mailToAddresses == '') {
|
||||||
$users = $group->getUsersOfGroup($targetIds);
|
$mailToAddresses = $toAux;
|
||||||
foreach ($users as $user) {
|
} else {
|
||||||
$nextMail = $user['USR_EMAIL'];
|
$mailCcAddresses .= (($mailCcAddresses != '')? ',' : '') . $toAux;
|
||||||
$mailToAddresses .= ($mailToAddresses == '') ? $nextMail : ',' . $nextMail;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$resultMail = $this->sendEmailWithApplicationData($application, $labelID, $mailToAddresses, $mailCcAddresses);
|
$resultMail = $this->sendEmailWithApplicationData($application, $labelID, $mailToAddresses, $mailCcAddresses);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -431,5 +439,50 @@ class Pmgmail {
|
|||||||
}
|
}
|
||||||
return $arrayResp;
|
return $arrayResp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a list of users emails that are the destion of the emails
|
||||||
|
* that will be sent, based in the list of groups or users that are
|
||||||
|
* passed to this function.
|
||||||
|
* @param $targetIds, array or single value of usr ids or group ids
|
||||||
|
* @return array, list of emails
|
||||||
|
*/
|
||||||
|
private function getSelfServiceValueBasedUsers($targetIds) {
|
||||||
|
$result = [];
|
||||||
|
$criteria = new Criteria('workflow');
|
||||||
|
$criteria->setDistinct();
|
||||||
|
$criteria->addSelectColumn(UsersPeer::USR_UID);
|
||||||
|
$criteria->addSelectColumn(UsersPeer::USR_USERNAME);
|
||||||
|
$criteria->addSelectColumn(UsersPeer::USR_FIRSTNAME);
|
||||||
|
$criteria->addSelectColumn(UsersPeer::USR_LASTNAME);
|
||||||
|
$criteria->addSelectColumn(UsersPeer::USR_EMAIL);
|
||||||
|
$criteria->addJoin(GroupUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN);
|
||||||
|
$criteria->add(UsersPeer::USR_STATUS, 'CLOSED', Criteria::NOT_EQUAL);
|
||||||
|
$rsCriteria = null;
|
||||||
|
|
||||||
|
if (is_array($targetIds)) {
|
||||||
|
$criteriaUid = $criteria->getNewCriterion(UsersPeer::USR_UID, $targetIds, Criteria::IN);
|
||||||
|
$criteriaUid->addOr($criteria->getNewCriterion(GroupUserPeer::GRP_UID, $targetIds, Criteria::IN));
|
||||||
|
$criteria->add($criteriaUid);
|
||||||
|
$rsCriteria = GroupUserPeer::doSelectRS($criteria);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$criteriaUid = $criteria->getNewCriterion(UsersPeer::USR_UID, $targetIds, Criteria::EQUAL);
|
||||||
|
$criteriaUid->addOr($criteria->getNewCriterion(GroupUserPeer::GRP_UID, $targetIds, Criteria::EQUAL));
|
||||||
|
$criteria->add($criteriaUid);
|
||||||
|
$rsCriteria = GroupUserPeer::doSelectRS($criteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_null($rsCriteria)) {
|
||||||
|
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
|
||||||
|
while ($rsCriteria->next()) {
|
||||||
|
$record = $rsCriteria->getRow();
|
||||||
|
$result [] = $record;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user