Merged in jennydmz/processmaker/BY-166 (pull request #3891)

Adding require of the G class to validate the use of json_decode().
This commit is contained in:
Dante Loayza
2016-03-22 16:53:41 -04:00
4 changed files with 143 additions and 138 deletions

View File

@@ -5390,135 +5390,124 @@ class Cases
} catch (Exception $oException) {
throw $oException;
}
}
public function getTo($taskType, $taskUid, $taskUsrUid, $arrayData)
{
$sTo = null;
$sCc = null;
$arrayResp = array();
$task = new Tasks();
$group = new Groups();
$oUser = new Users();
switch ($taskType) {
case "SELF_SERVICE":
if (isset($taskUid) && !empty($taskUid)) {
$arrayTaskUser = array();
$arrayAux1 = $task->getGroupsOfTask($taskUid, 1);
foreach ($arrayAux1 as $arrayGroup) {
$arrayAux2 = $group->getUsersOfGroup($arrayGroup["GRP_UID"]);
foreach ($arrayAux2 as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
}
$arrayAux1 = $task->getUsersOfTask($taskUid, 1);
foreach ($arrayAux1 as $arrayUser) {
$arrayTaskUser[] = $arrayUser["USR_UID"];
}
$criteria = new Criteria("workflow");
$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->add(UsersPeer::USR_UID, $arrayTaskUser, Criteria::IN);
$rsCriteria = UsersPeer::doSelectRs($criteria);
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$to = null;
$cc = null;
$sw = 1;
while ($rsCriteria->next()) {
$row = $rsCriteria->getRow();
$toAux = (
(($row["USR_FIRSTNAME"] != "") || ($row["USR_LASTNAME"] != "")) ?
$row["USR_FIRSTNAME"] . " " . $row["USR_LASTNAME"] . " " : ""
) . "<" . $row["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$cc = $cc . (($cc != null) ? "," : null) . $toAux;
}
}
$arrayResp['to'] = $to;
$arrayResp['cc'] = $cc;
}
break;
case "MULTIPLE_INSTANCE":
$to = null;
$cc = null;
$sw = 1;
$oDerivation = new Derivation();
$userFields = $oDerivation->getUsersFullNameFromArray($oDerivation->getAllUsersFromAnyTask($taskUid));
if(isset($userFields)){
foreach($userFields as $row){
$toAux = (
(($row["USR_FIRSTNAME"] != "") || ($row["USR_LASTNAME"] != "")) ?
$row["USR_FIRSTNAME"] . " " . $row["USR_LASTNAME"] . " " : ""
) . "<" . $row["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$cc = $cc . (($cc != null) ? "," : null) . $toAux;
}
}
$arrayResp['to'] = $to;
$arrayResp['cc'] = $cc;
}
break;
case "MULTIPLE_INSTANCE_VALUE_BASED":
$oTask = new Task();
$aTaskNext = $oTask->load($taskUid);
if(isset($aTaskNext["TAS_ASSIGN_VARIABLE"]) && !empty($aTaskNext["TAS_ASSIGN_VARIABLE"])){
$to = null;
$cc = null;
$sw = 1;
$nextTaskAssignVariable = trim($aTaskNext["TAS_ASSIGN_VARIABLE"], " @#");
$arrayUsers = $arrayData[$nextTaskAssignVariable];
$oDerivation = new Derivation();
$userFields = $oDerivation->getUsersFullNameFromArray($arrayUsers);
foreach ($userFields as $row) {
$toAux = (
(($row["USR_FIRSTNAME"] != "") || ($row["USR_LASTNAME"] != "")) ?
$row["USR_FIRSTNAME"] . " " . $row["USR_LASTNAME"] . " " : ""
) . "<" . $row["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$cc = $cc . (($cc != null) ? "," : null) . $toAux;
}
}
$arrayResp['to'] = $to;
$arrayResp['cc'] = $cc;
}
break;
default:
if (isset($taskUsrUid) && !empty($taskUsrUid)) {
$aUser = $oUser->load($taskUsrUid);
$sTo = (
(($aUser["USR_FIRSTNAME"] != "") || ($aUser["USR_LASTNAME"] != "")) ?
$aUser["USR_FIRSTNAME"] . " " . $aUser["USR_LASTNAME"] . " " : ""
) . "<" . $aUser["USR_EMAIL"] . ">";
}
$arrayResp['to'] = $sTo;
$arrayResp['cc'] = '';
break;
}
return $arrayResp;
}
public function getTo($taskType, $taskUid, $taskUsrUid, $arrayData)
{
$sTo = null;
$sCc = null;
$arrayResp = array ();
$task = new Tasks ();
$group = new Groups ();
$oUser = new Users ();
switch ($taskType) {
case "SELF_SERVICE" :
if (isset ( $taskUid ) && ! empty ( $taskUid )) {
$arrayTaskUser = array ();
$arrayAux1 = $task->getGroupsOfTask ( $taskUid, 1 );
foreach ( $arrayAux1 as $arrayGroup ) {
$arrayAux2 = $group->getUsersOfGroup ( $arrayGroup ["GRP_UID"] );
foreach ( $arrayAux2 as $arrayUser ) {
$arrayTaskUser [] = $arrayUser ["USR_UID"];
}
}
$arrayAux1 = $task->getUsersOfTask ( $taskUid, 1 );
foreach ( $arrayAux1 as $arrayUser ) {
$arrayTaskUser [] = $arrayUser ["USR_UID"];
}
$criteria = new Criteria ( "workflow" );
$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->add ( UsersPeer::USR_UID, $arrayTaskUser, Criteria::IN );
$rsCriteria = UsersPeer::doSelectRs ( $criteria );
$rsCriteria->setFetchmode ( ResultSet::FETCHMODE_ASSOC );
$to = null;
$cc = null;
$sw = 1;
while ( $rsCriteria->next () ) {
$row = $rsCriteria->getRow ();
$toAux = ((($row ["USR_FIRSTNAME"] != "") || ($row ["USR_LASTNAME"] != "")) ? $row ["USR_FIRSTNAME"] . " " . $row ["USR_LASTNAME"] . " " : "") . "<" . $row ["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$cc = $cc . (($cc != null) ? "," : null) . $toAux;
}
}
$arrayResp ['to'] = $to;
$arrayResp ['cc'] = $cc;
}
break;
case "MULTIPLE_INSTANCE" :
$to = null;
$cc = null;
$sw = 1;
$oDerivation = new Derivation ();
$userFields = $oDerivation->getUsersFullNameFromArray ( $oDerivation->getAllUsersFromAnyTask ( $taskUid ) );
if (isset ( $userFields )) {
foreach ( $userFields as $row ) {
$toAux = ((($row ["USR_FIRSTNAME"] != "") || ($row ["USR_LASTNAME"] != "")) ? $row ["USR_FIRSTNAME"] . " " . $row ["USR_LASTNAME"] . " " : "") . "<" . $row ["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$cc = $cc . (($cc != null) ? "," : null) . $toAux;
}
}
$arrayResp ['to'] = $to;
$arrayResp ['cc'] = $cc;
}
break;
case "MULTIPLE_INSTANCE_VALUE_BASED" :
$oTask = new Task ();
$aTaskNext = $oTask->load ( $taskUid );
if (isset ( $aTaskNext ["TAS_ASSIGN_VARIABLE"] ) && ! empty ( $aTaskNext ["TAS_ASSIGN_VARIABLE"] )) {
$to = null;
$cc = null;
$sw = 1;
$nextTaskAssignVariable = trim ( $aTaskNext ["TAS_ASSIGN_VARIABLE"], " @#" );
$arrayUsers = $arrayData [$nextTaskAssignVariable];
$oDerivation = new Derivation ();
$userFields = $oDerivation->getUsersFullNameFromArray ( $arrayUsers );
foreach ( $userFields as $row ) {
$toAux = ((($row ["USR_FIRSTNAME"] != "") || ($row ["USR_LASTNAME"] != "")) ? $row ["USR_FIRSTNAME"] . " " . $row ["USR_LASTNAME"] . " " : "") . "<" . $row ["USR_EMAIL"] . ">";
if ($sw == 1) {
$to = $toAux;
$sw = 0;
} else {
$cc = $cc . (($cc != null) ? "," : null) . $toAux;
}
}
$arrayResp ['to'] = $to;
$arrayResp ['cc'] = $cc;
}
break;
default :
if (isset ( $taskUsrUid ) && ! empty ( $taskUsrUid )) {
$aUser = $oUser->load ( $taskUsrUid );
$sTo = ((($aUser ["USR_FIRSTNAME"] != "") || ($aUser ["USR_LASTNAME"] != "")) ? $aUser ["USR_FIRSTNAME"] . " " . $aUser ["USR_LASTNAME"] . " " : "") . "<" . $aUser ["USR_EMAIL"] . ">";
}
$arrayResp ['to'] = $sTo;
$arrayResp ['cc'] = '';
break;
}
return $arrayResp;
}
/**

View File

@@ -171,14 +171,25 @@ try {
if($licensedFeatures->verifyfeature('7qhYmF1eDJWcEdwcUZpT0k4S0xTRStvdz09')){
G::LoadClass( "pmGoogleApi" );
$pmGoogle = new PMGoogleApi();
if($pmGoogle->getServiceGmailStatus()){
if($pmGoogle->getServiceGmailStatus()){
$flagGmail = true;
$appDel = new AppDelegation();
$actualThread = $appDel->Load($_SESSION['APPLICATION'], $_SESSION['INDEX']);
$appDelPrev = $appDel->LoadParallel($_SESSION['APPLICATION']);
$Pmgmail = new \ProcessMaker\BusinessModel\Pmgmail();
if(!$appDelPrev){
$Pmgmail->sendEmail($_SESSION['APPLICATION'], "", $_SESSION['INDEX'], $_POST['form']['TASKS'], $appFields['APP_DATA']);
}else{
foreach ($appDelPrev as $app){
if( ($app['DEL_INDEX'] != $_SESSION['INDEX']) && ($app['DEL_PREVIOUS'] != $actualThread['DEL_PREVIOUS']) ){
$Pmgmail->sendEmail($_SESSION['APPLICATION'], "", $app['DEL_INDEX'], $_POST['form']['TASKS'], $appFields['APP_DATA']);
}
}
}
}
}
if( $flagGmail === true ){
$Pmgmail = new \ProcessMaker\BusinessModel\Pmgmail();
$Pmgmail->sendEmail($_SESSION['APPLICATION'], "", $_SESSION['INDEX'], $_POST['form']['TASKS'], $appFields['APP_DATA']);
}
/*----------------------------------********---------------------------------*/
try {

View File

@@ -115,6 +115,10 @@ class Pmgmail {
}
$appData = $this->getDraftApp($app_uid, $index);
if (!$appData){
$appData = $this->getDraftApp($app_uid, $index-1);
}
foreach ($appData as $application) {
$appNumber = $application['APP_NUMBER'];
$appStatus = $application['APP_STATUS'];
@@ -146,7 +150,7 @@ class Pmgmail {
$respTo = $oCases->getTo($aTask["TAS_ASSIGN_TYPE"], $aTask["TAS_UID"], $aTask["USR_UID"], $arrayData);
$mailToAddresses = $respTo['to'];
$mailCcAddresses = $respTo['cc'];
if($aTask["TAS_ASSIGN_TYPE"] === "SELF_SERVICE"){
$labelID = "PMUASS";
if ((string)$mailToAddresses === ""){ // Self Service Value Based
@@ -176,16 +180,16 @@ class Pmgmail {
$oTask = new \Task();
$aTaskInfo = $oTask->load($aTask["TAS_PARENT"]);
$oSubPro = new \SubApplication();
$oSubPro = new \SubApplication();
$subProAppUid = "";
if( ($aTaskInfo["TAS_TYPE"] === "SUBPROCESS") ){
$subProAppUid = $oSubPro->loadSubProUidByParent($app_uid, $index, $index+1);
$index = 1;
} else if($aTask['TAS_UID'] == -1 && $aTask['TAS_ASSIGN_TYPE'] == "nobody"){
$subProAppUid = $oSubPro->loadSubProUidBySon($app_uid, $index, $index+1);
$appDel = new \AppDelegation();
$actualThread = $appDel->Load($subProAppUid, $index+1);
$index = $actualThread['DEL_INDEX'];
$index = $actualThread['DEL_INDEX']+1;
$aCriteria = new \Criteria("workflow");
$aCriteria->addSelectColumn(\RoutePeer::ROU_NEXT_TASK);

View File

@@ -1,6 +1,7 @@
<?php
session_start();
require_once (dirname(__FILE__) . '/../../../gulliver/system/class.bootstrap.php');
require_once (dirname(__FILE__) . '/../../../gulliver/system/class.g.php');
$gmailToken = $_GET['gmailToken'];
$gmail = $_GET['gmail'];