public function SendGCMFromNotification() { DB::statement("SET SESSION group_concat_max_len = 1000000;"); //$notifications = DB::select("SELECT GROUP_CONCAT(users.DeviceUDID) AS Devices, GROUP_CONCAT(NotificationID) AS NotificationIDs, n.NotificationID, NotificationType, Message, `Key`, ImageUrl, IsPast FROM notifications n INNER JOIN users ON users.UserID = n.UserID AND users.DeviceUDID IS NOT NULL AND users.DeviceUDID != '' WHERE issent = 0 GROUP BY `NotificationType`, `Key`, `Message`"); $notifications = DB::select("SELECT GROUP_CONCAT(users.DeviceUDID) AS Devices, GROUP_CONCAT(NotificationID) AS NotificationIDs, n.NotificationID, NotificationType,Message, `Key`, ImageUrl, IsPast FROM notifications n LEFT JOIN users ON users.UserID = n.UserID and users.IsAndroid = 1 WHERE issent = 0\nAND IFNULL(users.DeviceUDID,'') != '' GROUP BY `NotificationType`, `Key`, `Message`"); foreach ($notifications as $notification) { if ($notification && $notification->Devices) { $AlldeviceUdIDs = explode(',', $notification->Devices); $AllnotificationIDs = explode(',', $notification->NotificationIDs); if ($AlldeviceUdIDs && is_array($AlldeviceUdIDs) && count($AlldeviceUdIDs) > 0) { $listOfdeviceUdIDs = array_chunk($AlldeviceUdIDs, 20); $listOfnotificationIDs = array_chunk($AllnotificationIDs, 20); $total = DB::update("update notifications set IsSent = 2 where NotificationID IN (" . $notification->NotificationIDs . ") and IsSent = 0"); foreach ($listOfdeviceUdIDs as $num => $deviceUdIDs) { if ($deviceUdIDs && is_array($deviceUdIDs) && count($deviceUdIDs) > 0) { $notificationResponse = Common::SendGoogleCloudMessage($deviceUdIDs, Common::GetGoogleCloudMessage($notification->Message, $notification->NotificationType, $notification->Key, $notification->ImageUrl, $notification->IsPast)); if ($notificationResponse) { $results = json_decode($notificationResponse)->results; if ($results && count($results) > 0) { foreach ($results as $key => $result) { if (!property_exists($result, 'error')) { $notificationEntity = NotificationEntity::where("NotificationID", $listOfnotificationIDs[$num][$key])->update(array("IsSent" => 1, "SentDate" => date(Constants::$DefaultDateTimeFormat))); } else { $notificationEntity = NotificationEntity::where("NotificationID", $listOfnotificationIDs[$num][$key])->update(array("IsSent" => 3, "SentDate" => date(Constants::$DefaultDateTimeFormat))); } } } else { $notificationEntity = DB::update("update notifications set IsSent = 0 where NotificationID IN (" . implode(',', $listOfnotificationIDs[$num]) . ") and IsSent = 2"); } } else { $notificationEntity = DB::update("update notifications set IsSent = 0 where NotificationID IN (" . implode(',', $listOfnotificationIDs[$num]) . ") and IsSent = 2"); } } } } } } $this->SendAPNsFromNotification(); }