/
SubscribeToProcessTopicsTrait.php
40 lines (35 loc) · 1.36 KB
/
SubscribeToProcessTopicsTrait.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
namespace Concrete\Core\Notification\Events\Traits;
use Concrete\Core\Notification\Events\MercureService;
use Concrete\Core\Notification\Events\ServerEvent\AbstractEvent;
use Concrete\Core\Notification\Events\ServerEvent\BatchUpdatedEvent;
use Concrete\Core\Notification\Events\ServerEvent\ProcessClosedEvent;
use Concrete\Core\Notification\Events\ServerEvent\ProcessOutputEvent;
use Concrete\Core\Notification\Events\ServerEvent\SubscribableEventInterface;
use Concrete\Core\Notification\Events\Subscriber;
trait SubscribeToProcessTopicsTrait
{
public function subscribeToProcessTopicsIfNotificationEnabled($refreshCookie = true): ?Subscriber
{
$mercureService = app(MercureService::class);
if ($mercureService->isEnabled()) {
$events = [
BatchUpdatedEvent::class,
ProcessClosedEvent::class,
ProcessOutputEvent::class,
];
$subscriber = $mercureService->getSubscriber();
foreach ($events as $event) {
/**
* @var $event SubscribableEventInterface
*/
$subscriber->addTopic($event::getTopicForSubscribing());
}
if ($refreshCookie) {
$subscriber->refreshAuthorizationCookie();
}
return $subscriber;
}
return null;
}
}