mirror of
https://github.com/freescout-helpdesk/freescout.git
synced 2024-11-25 11:52:29 +01:00
98 lines
2.2 KiB
PHP
98 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Events;
|
|
|
|
use Illuminate\Broadcasting\Channel;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use Illuminate\Broadcasting\PrivateChannel;
|
|
use Illuminate\Broadcasting\PresenceChannel;
|
|
use Illuminate\Broadcasting\InteractsWithSockets;
|
|
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
|
|
|
|
class RealtimeBroadcastNotificationCreated implements ShouldBroadcastNow
|
|
{
|
|
use SerializesModels;
|
|
|
|
/**
|
|
* The notifiable entity who received the notification.
|
|
*
|
|
* @var mixed
|
|
*/
|
|
public $notifiable;
|
|
|
|
/**
|
|
* The notification instance.
|
|
*
|
|
* @var \Illuminate\Notifications\Notification
|
|
*/
|
|
public $notification;
|
|
|
|
/**
|
|
* The notification data.
|
|
*
|
|
* @var array
|
|
*/
|
|
public $data = [];
|
|
|
|
/**
|
|
* Create a new event instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct($notifiable, $notification, $data)
|
|
{
|
|
$this->data = $data;
|
|
$this->notifiable = $notifiable;
|
|
$this->notification = $notification;
|
|
}
|
|
|
|
/**
|
|
* Get the channels the event should broadcast on.
|
|
*
|
|
* @return Channel|array
|
|
*/
|
|
public function broadcastOn()
|
|
{
|
|
$channels = $this->notification->broadcastOn();
|
|
|
|
if (! empty($channels)) {
|
|
return $channels;
|
|
}
|
|
|
|
return [new PrivateChannel($this->channelName())];
|
|
|
|
//return new PrivateChannel('App.User.'.$this->receiver_user_id);
|
|
}
|
|
|
|
/**
|
|
* Get the data to broadcast.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function broadcastWith()
|
|
{
|
|
return array_merge($this->data, [
|
|
'id' => $this->notification->id,
|
|
'type' => get_class($this->notification),
|
|
]);
|
|
// return [
|
|
// 'thread_id' => $this->thread->id
|
|
// ];
|
|
}
|
|
|
|
/**
|
|
* Get the broadcast channel name for the event.
|
|
*
|
|
* @return string
|
|
*/
|
|
protected function channelName()
|
|
{
|
|
if (method_exists($this->notifiable, 'receivesBroadcastNotificationsOn')) {
|
|
return $this->notifiable->receivesBroadcastNotificationsOn($this->notification);
|
|
}
|
|
|
|
$class = str_replace('\\', '.', get_class($this->notifiable));
|
|
|
|
return $class.'.'.$this->notifiable->getKey();
|
|
}
|
|
} |