<?php declare(strict_types=1);
namespace StudioSolid\ProductVideos\Core\Content\Product\Subscriber;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
use StudioSolid\ProductVideos\Core\Content\Product\Service\ProductEmbeddedVideoMediaService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ProductEmbeddedVideoMediaWrittenSubscriber implements EventSubscriberInterface
{
/**
* @var ProductEmbeddedVideoMediaService
*/
private $productEmbeddedVideoMediaService;
public function __construct(ProductEmbeddedVideoMediaService $productEmbeddedVideoMediaService)
{
$this->productEmbeddedVideoMediaService = $productEmbeddedVideoMediaService;
}
public static function getSubscribedEvents()
{
return [
'solid_pv_product_embedded_video_media.written' => 'onProductEmbeddedVideoMediaWritten',
];
}
public function onProductEmbeddedVideoMediaWritten(EntityWrittenEvent $event): void
{
foreach ($event->getExistences() as $existence) {
if (!$existence->exists()) {
// TODO Set position based on combined product media length
}
}
foreach ($event->getWriteResults() as $writeResult) {
$videoId = $writeResult->getProperty('videoId');
$source = $writeResult->getProperty('source');
if (!$videoId || !$source) {
return;
}
$this->productEmbeddedVideoMediaService->storeThumbnail(
$source,
$videoId
);
}
}
}