diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index ef3c3b175..9045aac16 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -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; } /** diff --git a/workflow/engine/methods/cases/cases_Derivate.php b/workflow/engine/methods/cases/cases_Derivate.php index 94e202474..ddfa6a4b4 100755 --- a/workflow/engine/methods/cases/cases_Derivate.php +++ b/workflow/engine/methods/cases/cases_Derivate.php @@ -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 { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php b/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php index 0985199d5..1aed73e16 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Pmgmail.php @@ -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); diff --git a/workflow/public_html/pmGmail/sso.php b/workflow/public_html/pmGmail/sso.php index 71c62a73e..8af583ab5 100644 --- a/workflow/public_html/pmGmail/sso.php +++ b/workflow/public_html/pmGmail/sso.php @@ -1,6 +1,7 @@