core/lib/Thelia/Action/MetaData.php line 29
- <?php
- /*
- * This file is part of the Thelia package.
- * http://www.thelia.net
- *
- * (c) OpenStudio <info@thelia.net>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Thelia\Action;
- use Symfony\Component\EventDispatcher\EventSubscriberInterface;
- use Thelia\Core\Event\MetaData\MetaDataCreateOrUpdateEvent;
- use Thelia\Core\Event\MetaData\MetaDataDeleteEvent;
- use Thelia\Core\Event\TheliaEvents;
- use Thelia\Model\MetaData as MetaDataModel;
- use Thelia\Model\MetaDataQuery;
- /**
- * Class MetaData.
- *
- * @author Julien Chanséaume <jchanseaume@openstudio.fr>
- */
- class MetaData extends BaseAction implements EventSubscriberInterface
- {
- public function createOrUpdate(MetaDataCreateOrUpdateEvent $event): void
- {
- $metaData = MetaDataQuery::create()
- ->filterByMetaKey($event->getMetaKey())
- ->filterByElementKey($event->getElementKey())
- ->filterByElementId($event->getElementId())
- ->findOne();
- if (null === $metaData) {
- $metaData = new MetaDataModel();
- $metaData
- ->setMetaKey($event->getMetaKey())
- ->setElementKey($event->getElementkey())
- ->setElementId($event->getElementId());
- }
- $metaData->
- setValue($event->getValue());
- $metaData->save();
- $event->setMetaData($metaData);
- }
- public function delete(MetaDataDeleteEvent $event): void
- {
- $metaData = MetaDataQuery::create()
- ->filterByMetaKey($event->getMetaKey())
- ->filterByElementKey($event->getElementKey())
- ->filterByElementId($event->getElementId())
- ->findOne();
- $event->setMetaData($metaData);
- if (null !== $metaData) {
- $metaData->delete();
- }
- }
- /**
- * {@inheritdoc}
- */
- public static function getSubscribedEvents()
- {
- return [
- TheliaEvents::META_DATA_CREATE => ['createOrUpdate', 128],
- TheliaEvents::META_DATA_UPDATE => ['createOrUpdate', 128],
- TheliaEvents::META_DATA_DELETE => ['delete', 128],
- ];
- }
- }