src/EventListener/ColourListener.php line 11

Open in your IDE?
  1. <?php 
  2. namespace App\EventListener;
  3. use Pimcore\Event\Model\ElementEventInterface;
  4. use Pimcore\Event\Model\DataObjectEvent;
  5. use Pimcore\Model\DataObject\Colour;
  6. class ColourListener {
  7.     public function onPostAdd (ElementEventInterface $e) {
  8.         if (!$e->hasArgument('isAutoSave')) {
  9.             if ($e instanceof DataObjectEvent) {
  10.                 $dataObject $e->getObject();
  11.                 if ($dataObject instanceof Colour) {
  12.                     $conflict $this->NameConflict($dataObject);
  13.                     if ($conflict == true) {
  14.                         throw new \Exception("A colour with that name already exists. Please rename your colour to continue.");
  15.                     }
  16.                 }
  17.             }
  18.         }
  19.     }
  20.     public function onPreUpdate (ElementEventInterface $e) {
  21.         if (!$e->hasArgument('isAutoSave')) {
  22.             if ($e instanceof DataObjectEvent) {
  23.                 $dataObject $e->getObject();
  24.                 if ($dataObject instanceof Colour) {
  25.                     $conflict $this->NameConflict($dataObject);
  26.                     if ($conflict == true) {
  27.                         throw new \Exception("A colour with that name already exists. Please rename your colour to continue.");
  28.                     }
  29.                 }
  30.             }
  31.         }
  32.     }
  33.     /**
  34.      * Checks to see if there are any other colour values with the same name
  35.      *
  36.      * @param Colour $dataObject
  37.      * @return bool
  38.      */
  39.     private function NameConflict(Colour $dataObject) {
  40.         if ($dataObject->getName() != '') {
  41.             $existingColour Colour::getByName($dataObject->getName());
  42.             return false;
  43.             if ($existingColour instanceof Colour || $existingColour instanceof Colour\Listing) {
  44.                 return true;
  45.             }
  46.             return false;
  47.         }
  48.     }
  49. }