core/lib/Thelia/Action/MetaData.php line 29

  1. <?php
  2. /*
  3.  * This file is part of the Thelia package.
  4.  * http://www.thelia.net
  5.  *
  6.  * (c) OpenStudio <info@thelia.net>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Thelia\Action;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Thelia\Core\Event\MetaData\MetaDataCreateOrUpdateEvent;
  14. use Thelia\Core\Event\MetaData\MetaDataDeleteEvent;
  15. use Thelia\Core\Event\TheliaEvents;
  16. use Thelia\Model\MetaData as MetaDataModel;
  17. use Thelia\Model\MetaDataQuery;
  18. /**
  19.  * Class MetaData.
  20.  *
  21.  * @author  Julien Chanséaume <jchanseaume@openstudio.fr>
  22.  */
  23. class MetaData extends BaseAction implements EventSubscriberInterface
  24. {
  25.     public function createOrUpdate(MetaDataCreateOrUpdateEvent $event): void
  26.     {
  27.         $metaData MetaDataQuery::create()
  28.             ->filterByMetaKey($event->getMetaKey())
  29.             ->filterByElementKey($event->getElementKey())
  30.             ->filterByElementId($event->getElementId())
  31.             ->findOne();
  32.         if (null === $metaData) {
  33.             $metaData = new MetaDataModel();
  34.             $metaData
  35.                 ->setMetaKey($event->getMetaKey())
  36.                 ->setElementKey($event->getElementkey())
  37.                 ->setElementId($event->getElementId());
  38.         }
  39.         $metaData->
  40.             setValue($event->getValue());
  41.         $metaData->save();
  42.         $event->setMetaData($metaData);
  43.     }
  44.     public function delete(MetaDataDeleteEvent $event): void
  45.     {
  46.         $metaData MetaDataQuery::create()
  47.             ->filterByMetaKey($event->getMetaKey())
  48.             ->filterByElementKey($event->getElementKey())
  49.             ->filterByElementId($event->getElementId())
  50.             ->findOne();
  51.         $event->setMetaData($metaData);
  52.         if (null !== $metaData) {
  53.             $metaData->delete();
  54.         }
  55.     }
  56.     /**
  57.      * {@inheritdoc}
  58.      */
  59.     public static function getSubscribedEvents()
  60.     {
  61.         return [
  62.             TheliaEvents::META_DATA_CREATE => ['createOrUpdate'128],
  63.             TheliaEvents::META_DATA_UPDATE => ['createOrUpdate'128],
  64.             TheliaEvents::META_DATA_DELETE => ['delete'128],
  65.         ];
  66.     }
  67. }