src/Subscriber/User/Webcam/NotificationSubscriber.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Subscriber\User\Webcam;
  3. use App\Entity\Member;
  4. use App\Event\RedisEventManager;
  5. use App\Event\User\AbstractLivecamEvent;
  6. use App\Event\User\LivecamOfflineEvent;
  7. use App\Event\User\LivecamOnlineEvent;
  8. use App\Service\Media\MemberMediaService;
  9. use App\Subscriber\AbstractRedisEventManagerSubscriber;
  10. use Frivol\Common\Service\Notification\WebcamNotification;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\Routing\RouterInterface;
  13. class NotificationSubscriber extends AbstractRedisEventManagerSubscriber implements EventSubscriberInterface
  14. {
  15.     /**
  16.      * @var MemberMediaService
  17.      */
  18.     protected $memberMediaService;
  19.     /**
  20.      * NotificationSubscriber constructor.
  21.      */
  22.     public function __construct(MemberMediaService $memberMediaServiceRedisEventManager $redisEventManager,
  23.         RouterInterface $router)
  24.     {
  25.         $this->memberMediaService $memberMediaService;
  26.         parent::__construct($redisEventManager$router);
  27.     }
  28.     public static function getSubscribedEvents(): array
  29.     {
  30.         return [
  31.             LivecamOnlineEvent::class => [
  32.                 ['sendNotification'0],
  33.             ],
  34.             LivecamOfflineEvent::class => [
  35.                 ['sendNotification'0],
  36.             ],
  37.         ];
  38.     }
  39.     public function sendNotification(AbstractLivecamEvent $event)
  40.     {
  41.         $member $event->getMember();
  42.         if (!$member->getIsAmateur()) {
  43.             return;
  44.         }
  45.         $notification = new WebcamNotification();
  46.         $notification->setData([
  47.             'username' => $member->getUsername(),
  48.             'sex' => $member->getSex(),
  49.             'id' => $member->getId(),
  50.             'status' => $event->getStatus(),
  51.             'image' => $this->getMediaUrl($memberfalse),
  52.         ]);
  53.         $notification->setFromUsername($member->getUsername());
  54.         $notification->setFromMemberId($member->getId());
  55.         $this->getRedisEventManager()->publishToAll($member$notification);
  56.     }
  57.     public function getMediaUrl(Member $memberbool $blur): ?string
  58.     {
  59.         if (!$media $member->getMainPhoto()) {
  60.             return null;
  61.         }
  62.         return $this->memberMediaService->getUrlForMemberMedia($mediafalse'100x100');
  63.     }
  64. }