src/AppBundle/EventListeners/UnavailabilityVerifier.php line 15

Open in your IDE?
  1. <?php
  2. namespace AppBundle\EventListeners;
  3. use Carbon\Carbon;
  4. use Pimcore;
  5. use Pimcore\Event\Model\ElementEventInterface;
  6. use Pimcore\Model\DataObject\Product;
  7. class UnavailabilityVerifier
  8. {
  9.     /**
  10.      * @param ElementEventInterface $e
  11.      */
  12.     public function handleEvent(ElementEventInterface $e)
  13.     {
  14.         if (!$e instanceof Pimcore\Event\Model\DataObjectEvent) {
  15.             return;
  16.         }
  17.         $object $e->getObject();
  18.         if (!$object instanceof Product) {
  19.             return;
  20.         }
  21.         if (!method_exists($object'getUnavailability') || !method_exists($object'getUnavailableUntilDate')) {
  22.             return;
  23.         }
  24.         if ($object->getUnavailability() === true && $object->getUnavailableUntilDate()) {
  25.             if (Carbon::now()->gt($object->getUnavailableUntilDate())) {
  26.                 $object->setUnavailability(false);
  27.             }
  28.         }
  29.         foreach ($object->getColors() as $colorMetaData) {
  30.             if ($colorMetaData->unavailable === true && $object->getUnavailableUntilDate()) {
  31.                 if (Carbon::now()->gt(new Carbon($object->getUnavailableUntilDate()))) {
  32.                     $object->setUnavailable(false);
  33.                 }
  34.             }
  35.         }
  36.     }
  37. }