src/EventListener/ChannelListener.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3.   
  4. use Pimcore\Model\DataObject\Channel;
  5. use Pimcore\Event\Model\ElementEventInterface;
  6. use Pimcore\Event\Model\DataObjectEvent;
  7. class ChannelListener {
  8.     /**
  9.      * @param ElementEventInterface $event
  10.      */
  11.     public function onPreUpdate(ElementEventInterface $event
  12.     {
  13.         if ($event instanceof DataObjectEvent) {
  14.             $object $event->getObject();
  15.             if (!$object instanceof Channel) {
  16.                 return;   
  17.             }
  18.             $errors = [];
  19.             if(empty($object->getName())) {
  20.                 $errors[] = 'Name is mandatory';
  21.             }
  22.             if(!empty($object->getChannelCode())) 
  23.             {
  24.                 $ChannelCodeUnique = new \Pimcore\Model\DataObject\Channel\Listing();
  25.                 $ChannelCodeUnique->setCondition('oo_id !=' $object->getId() . ' and ChannelCode = "' $object->getChannelCode() . '"');
  26.                 $ChannelCodeUnique->setUnpublished(true);
  27.                 $ChannelCodeUnique->setLimit(1);
  28.                 $ChannelCodeUniqueObject $ChannelCodeUnique->current();
  29.                 if ($ChannelCodeUniqueObject instanceof \Pimcore\Model\DataObject\Channel && $ChannelCodeUniqueObject->getChannelCode() == $object->getChannelCode()) {
  30.                     $errors[] = 'Channel code already exist in the channel id ' $ChannelCodeUniqueObject->getId();
  31.                 }
  32.             }
  33.             if ($errors) {
  34.                 throw new \Pimcore\Model\Element\ValidationException(implode('<br>'$errors));
  35.             }
  36.             if (!isset($_GET['task'])) {
  37.                 return;
  38.             }
  39.     
  40.             $errors = [];
  41.             if(!empty($object->getName()) && strlen($object->getName()) < 4
  42.             {
  43.                 $errors[] ='Name must be at least 4 characters.';
  44.             }
  45.             if(!empty($object->getChannelCode())) 
  46.             {
  47.                 if (strlen($object->getChannelCode())  < || strlen($object->getChannelCode())> 4
  48.                 {
  49.                     $errors[] = 'Channel code should be 3 or 4 characters.';
  50.                 }
  51.             }elseif(empty($object->getChannelCode())) {
  52.                 $errors[] = 'Channel code is mandatory';
  53.             }
  54.             if($errors) {
  55.                 throw new \Pimcore\Model\Element\ValidationException(implode('<br>'$errors));
  56.             }
  57.         }
  58.     }
  59. }