Spaces:
No application file
No application file
| namespace Mautic\ChannelBundle\Entity; | |
| use Doctrine\Common\Collections\ArrayCollection; | |
| use Doctrine\ORM\Mapping\ClassMetadata; | |
| use Mautic\ApiBundle\Serializer\Driver\ApiMetadataDriver; | |
| use Mautic\CategoryBundle\Entity\Category; | |
| use Mautic\CoreBundle\Doctrine\Mapping\ClassMetadataBuilder; | |
| use Mautic\CoreBundle\Entity\FormEntity; | |
| use Symfony\Component\Validator\Constraints\NotBlank; | |
| use Symfony\Component\Validator\Mapping\ClassMetadata as ValidationClassMetadata; | |
| class Message extends FormEntity | |
| { | |
| /** | |
| * @var ?int | |
| */ | |
| private $id; | |
| /** | |
| * @var string | |
| */ | |
| private $name; | |
| /** | |
| * @var ?string | |
| */ | |
| private $description; | |
| /** | |
| * @var ?\DateTimeInterface | |
| */ | |
| private $publishUp; | |
| /** | |
| * @var ?\DateTimeInterface | |
| */ | |
| private $publishDown; | |
| /** | |
| * @var ?Category | |
| */ | |
| private $category; | |
| /** | |
| * @var ArrayCollection<int,Channel> | |
| */ | |
| private $channels; | |
| public function __clone() | |
| { | |
| $this->id = null; | |
| } | |
| public static function loadMetadata(ClassMetadata $metadata): void | |
| { | |
| $builder = new ClassMetadataBuilder($metadata); | |
| $builder->setTable('messages') | |
| ->setCustomRepositoryClass(MessageRepository::class) | |
| ->addIndex(['date_added'], 'date_message_added'); | |
| $builder | |
| ->addIdColumns() | |
| ->addPublishDates() | |
| ->addCategory(); | |
| $builder->createOneToMany('channels', Channel::class) | |
| ->setIndexBy('channel') | |
| ->orphanRemoval() | |
| ->mappedBy('message') | |
| ->cascadeMerge() | |
| ->cascadePersist() | |
| ->cascadeDetach() | |
| ->build(); | |
| } | |
| public static function loadValidatorMetadata(ValidationClassMetadata $metadata): void | |
| { | |
| $metadata->addPropertyConstraint('name', new NotBlank([ | |
| 'message' => 'mautic.core.name.required', | |
| ])); | |
| } | |
| public static function loadApiMetadata(ApiMetadataDriver $metadata): void | |
| { | |
| $metadata->setGroupPrefix('message') | |
| ->addListProperties( | |
| [ | |
| 'id', | |
| 'name', | |
| 'description', | |
| ] | |
| ) | |
| ->addProperties( | |
| [ | |
| 'publishUp', | |
| 'publishDown', | |
| 'channels', | |
| 'category', | |
| ] | |
| ) | |
| ->build(); | |
| } | |
| public function __construct() | |
| { | |
| $this->channels = new ArrayCollection(); | |
| } | |
| /** | |
| * @return ?int | |
| */ | |
| public function getId() | |
| { | |
| return $this->id; | |
| } | |
| /** | |
| * @return ?string | |
| */ | |
| public function getName() | |
| { | |
| return $this->name; | |
| } | |
| /** | |
| * @param ?string $name | |
| * | |
| * @return Message | |
| */ | |
| public function setName($name) | |
| { | |
| $this->isChanged('name', $name); | |
| $this->name = $name; | |
| return $this; | |
| } | |
| /** | |
| * @return ?string | |
| */ | |
| public function getDescription() | |
| { | |
| return $this->description; | |
| } | |
| /** | |
| * @param ?string $description | |
| * | |
| * @return Message | |
| */ | |
| public function setDescription($description) | |
| { | |
| $this->isChanged('description', $description); | |
| $this->description = $description; | |
| return $this; | |
| } | |
| /** | |
| * @return ?\DateTimeInterface | |
| */ | |
| public function getPublishUp() | |
| { | |
| return $this->publishUp; | |
| } | |
| /** | |
| * @param ?\DateTime $publishUp | |
| * | |
| * @return Message | |
| */ | |
| public function setPublishUp($publishUp) | |
| { | |
| $this->isChanged('publishUp', $publishUp); | |
| $this->publishUp = $publishUp; | |
| return $this; | |
| } | |
| /** | |
| * @return ?\DateTimeInterface | |
| */ | |
| public function getPublishDown() | |
| { | |
| return $this->publishDown; | |
| } | |
| /** | |
| * @param ?\DateTime $publishDown | |
| * | |
| * @return Message | |
| */ | |
| public function setPublishDown($publishDown) | |
| { | |
| $this->isChanged('publishDown', $publishDown); | |
| $this->publishDown = $publishDown; | |
| return $this; | |
| } | |
| /** | |
| * @return ?Category | |
| */ | |
| public function getCategory() | |
| { | |
| return $this->category; | |
| } | |
| /** | |
| * @param ?Category $category | |
| * | |
| * @return Message | |
| */ | |
| public function setCategory($category) | |
| { | |
| $this->isChanged('category', $category); | |
| $this->category = $category; | |
| return $this; | |
| } | |
| /** | |
| * @return ArrayCollection<int,Channel> | |
| */ | |
| public function getChannels() | |
| { | |
| return $this->channels; | |
| } | |
| /** | |
| * @param ArrayCollection<int,Channel> $channels | |
| * | |
| * @return Message | |
| */ | |
| public function setChannels($channels) | |
| { | |
| $this->isChanged('channels', $channels); | |
| $this->channels = $channels; | |
| return $this; | |
| } | |
| public function addChannel(Channel $channel): void | |
| { | |
| if (!$this->channels->contains($channel)) { | |
| $channel->setMessage($this); | |
| $this->isChanged('channels', $channel); | |
| $this->channels[$channel->getChannel()] = $channel; | |
| } | |
| } | |
| public function removeChannel(Channel $channel): void | |
| { | |
| if ($channel->getId()) { | |
| $this->isChanged('channels', $channel->getId()); | |
| } | |
| $this->channels->removeElement($channel); | |
| } | |
| } | |