<?php
namespace CityArticle\Subscriber;
use Throwable;
use Psr\Log\LoggerInterface;
use CityArticle\Service\Articles\WritingData;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ArticleSubscriber implements EventSubscriberInterface
{
private LoggerInterface $logger;
private WritingData $articleClickWritingData;
public function __construct(LoggerInterface $logger, WritingData $articleClickWritingData)
{
$this->logger = $logger;
$this->articleClickWritingData = $articleClickWritingData;
}
public static function getSubscribedEvents(): array
{
return [
"articles.loaded" => [['onArticleClickAction', 0]],
];
}
public function onArticleClickAction($event)
{
try {
$entityIds = $event->getIds();
$entityId = $entityIds[0] ?? null;
if (count($entityIds) > 1) {
return;
}
if (!is_null($entityId)) {
$this->articleClickWritingData->upsertClickCount($entityId);
}
} catch (Throwable $exception) {
$this->logger->error($exception->getMessage());
}
}
}