<?php
namespace App\EventListener;
use Pimcore\Model\DataObject\Channel;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
class ChannelListener {
/**
* @param ElementEventInterface $event
*/
public function onPreUpdate(ElementEventInterface $event)
{
if ($event instanceof DataObjectEvent) {
$object = $event->getObject();
if (!$object instanceof Channel) {
return;
}
$errors = [];
if(empty($object->getName())) {
$errors[] = 'Name is mandatory';
}
if(!empty($object->getChannelCode()))
{
$ChannelCodeUnique = new \Pimcore\Model\DataObject\Channel\Listing();
$ChannelCodeUnique->setCondition('oo_id !=' . $object->getId() . ' and ChannelCode = "' . $object->getChannelCode() . '"');
$ChannelCodeUnique->setUnpublished(true);
$ChannelCodeUnique->setLimit(1);
$ChannelCodeUniqueObject = $ChannelCodeUnique->current();
if ($ChannelCodeUniqueObject instanceof \Pimcore\Model\DataObject\Channel && $ChannelCodeUniqueObject->getChannelCode() == $object->getChannelCode()) {
$errors[] = 'Channel code already exist in the channel id ' . $ChannelCodeUniqueObject->getId();
}
}
if ($errors) {
throw new \Pimcore\Model\Element\ValidationException(implode('<br>', $errors));
}
if (!isset($_GET['task'])) {
return;
}
$errors = [];
if(!empty($object->getName()) && strlen($object->getName()) < 4)
{
$errors[] ='Name must be at least 4 characters.';
}
if(!empty($object->getChannelCode()))
{
if (strlen($object->getChannelCode()) < 3 || strlen($object->getChannelCode())> 4)
{
$errors[] = 'Channel code should be 3 or 4 characters.';
}
}elseif(empty($object->getChannelCode())) {
$errors[] = 'Channel code is mandatory';
}
if($errors) {
throw new \Pimcore\Model\Element\ValidationException(implode('<br>', $errors));
}
}
}
}