<?php
namespace Abcpremium\AssetMetadataAssignerBundle\Event\Subscriber;
use Abcpremium\AssetMetadataAssignerBundle\Configuration\BundleConfiguration;
use Abcpremium\AssetMetadataAssignerBundle\Event\Validator;
use Abcpremium\AssetMetadataAssignerBundle\Messenger\AssetMetadataMessage;
use Pimcore\Event\AssetEvents;
use Pimcore\Event\Model\AssetEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Messenger\MessageBusInterface;
class DispatchMessageOnNewAsset implements EventSubscriberInterface
{
private BundleConfiguration $bundleConfiguration;
private Validator $validator;
private MessageBusInterface $messageBus;
public function __construct(
BundleConfiguration $bundleConfiguration,
MessageBusInterface $messageBus,
Validator $validator
) {
$this->bundleConfiguration = $bundleConfiguration;
$this->validator = $validator;
$this->messageBus = $messageBus;
}
public static function getSubscribedEvents(): array
{
return [
AssetEvents::POST_ADD => 'dispatchMessageOnNewAsset',
];
}
public function dispatchMessageOnNewAsset(AssetEvent $event): void
{
if (false === $this->validator->isValidAssetEvent($event)) {
return;
}
$assetModel = $event->getAsset();
$metaDataConfiguration = $this->bundleConfiguration->getAssetMetaDataConfiguration();
$message = new AssetMetadataMessage();
$message->setAssetId($assetModel->getId());
$message->setMetaDataConfiguration($metaDataConfiguration);
$this->messageBus->dispatch($message);
}
}