custom/plugins/cityarticle/src/Subscriber/ArticleSubscriber.php line 28

Open in your IDE?
  1. <?php
  2. namespace CityArticle\Subscriber;
  3. use Throwable;
  4. use Psr\Log\LoggerInterface;
  5. use CityArticle\Service\Articles\WritingData;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class ArticleSubscriber implements EventSubscriberInterface
  8. {
  9.     private LoggerInterface $logger;
  10.     private WritingData $articleClickWritingData;
  11.     public function __construct(LoggerInterface $loggerWritingData $articleClickWritingData)
  12.     {
  13.         $this->logger $logger;
  14.         $this->articleClickWritingData $articleClickWritingData;
  15.     }
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return [
  19.             "articles.loaded" => [['onArticleClickAction'0]],
  20.         ];
  21.     }
  22.     public function onArticleClickAction($event)
  23.     {
  24.         try {
  25.             $entityIds $event->getIds();
  26.             $entityId $entityIds[0] ?? null;
  27.             if (count($entityIds) > 1) {
  28.                 return;
  29.             }
  30.             if (!is_null($entityId)) {
  31.                 $this->articleClickWritingData->upsertClickCount($entityId);
  32.             }
  33.         } catch (Throwable $exception) {
  34.             $this->logger->error($exception->getMessage());
  35.         }
  36.     }
  37. }