From 960ba82c63f283c8f72a1f39642e58b0c5eb2bc8 Mon Sep 17 00:00:00 2001 From: Ronald Q Date: Wed, 22 Jun 2016 15:28:33 -0400 Subject: [PATCH] HOR-1102 Mobile - No heads up notifications fix in delindex for notifications structure fix in payload for IOs --- .../Light/NotificationDevice.php | 34 ++++++++++++++----- .../BusinessModel/Light/PushMessageIOS.php | 8 +++-- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light/NotificationDevice.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light/NotificationDevice.php index a53f3649b..372557da0 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light/NotificationDevice.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light/NotificationDevice.php @@ -168,7 +168,19 @@ class NotificationDevice $typeList = 'todo'; foreach ($aTasks as $aTask) { $arrayTaskUser = array(); + $delIndex = null; + foreach ($nextIndex as $nIndex) { + if ($aTask['TAS_UID'] == $nIndex['TAS_UID']) { + $delIndex = $nIndex['DEL_INDEX']; + break; + } + } switch ($aTask["TAS_ASSIGN_TYPE"]) { + case "MULTIPLE_INSTANCE": + case "MULTIPLE_INSTANCE_VALUE_BASED": + $arrayTaskUser = $this->getTaskUserMultipleInstance($aTask["TAS_UID"], $appFields); + $delIndex = 0; + break; case "SELF_SERVICE": $arrayTaskUser = $this->getTaskUserSelfService($aTask["TAS_UID"], $appFields); $typeList = 'unassigned'; @@ -180,19 +192,12 @@ class NotificationDevice break; } - $delIndex = null; - foreach ($nextIndex as $nIndex) { - if ($aTask['TAS_UID'] == $nIndex['TAS_UID']) { - $delIndex = $nIndex['DEL_INDEX']; - break; - } - } - $userIds = $arrayTaskUser; $message = '#'. $appFields['APP_NUMBER'] . ' : '.$appFields['APP_TITLE']; $data = array( 'processId' => $processId, 'taskId' => $aTask["TAS_UID"], + 'taskAssignType' => $aTask["TAS_ASSIGN_TYPE"], 'caseId' => $appFields['APP_UID'], 'caseTitle' => $appFields['APP_TITLE'], 'delIndex' => $delIndex, @@ -296,5 +301,16 @@ class NotificationDevice return $arrayTaskUser; } - + public function getTaskUserMultipleInstance($tas_uid, $appFields) + { + $oDerivation = new \Derivation(); + $taskNextDel = \TaskPeer::retrieveByPK($tas_uid); + $oDerivation->case = new \Cases(); + $arrayUsersOfTask = $oDerivation->getNextAssignedUser(array("APP_UID" => $appFields['APP_UID'], "NEXT_TASK" => $taskNextDel->toArray(\BasePeer::TYPE_FIELDNAME))); + $arrayTaskUser = array(); + foreach ($arrayUsersOfTask as $arrayUser) { + $arrayTaskUser[] = $arrayUser["USR_UID"]; + } + return $arrayTaskUser; + } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Light/PushMessageIOS.php b/workflow/engine/src/ProcessMaker/BusinessModel/Light/PushMessageIOS.php index c9cbe3337..490b46eee 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Light/PushMessageIOS.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Light/PushMessageIOS.php @@ -100,17 +100,19 @@ class PushMessageIOS // $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); // if (!$fp) // exit("Failed to connect: $err $errstr" . PHP_EOL); - + $alert = new \stdClass(); + $alert->{'loc-key'} = $data['taskAssignType']; + $alert->{'loc-args'} = array($message); // Create the payload body if (!is_null($data)) { $body['aps'] = array( - 'alert' => $message, + 'alert' => $alert, 'sound' => 'default', 'data' => $data ); } else { $body['aps'] = array( - 'alert' => $message, + 'alert' => $alert, 'sound' => 'default' ); }