![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/app/bundles/ChannelBundle/Form/Type/ |
<?php namespace Mautic\ChannelBundle\Form\Type; use Mautic\ChannelBundle\Entity\Channel; use Mautic\ChannelBundle\Entity\Message; use Mautic\ChannelBundle\Model\MessageModel; use Mautic\CoreBundle\Form\Type\AbstractFormStandardType; use Mautic\CoreBundle\Security\Permissions\CorePermissions; use Symfony\Component\Form\Extension\Core\Type\CollectionType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Validator\Constraints\Valid; class MessageType extends AbstractFormStandardType { public function __construct( protected MessageModel $model, CorePermissions $security ) { $this->security = $security; } public function buildForm(FormBuilderInterface $builder, array $options): void { // Add standard fields $options = array_merge($options, ['model_name' => 'channel.message', 'permission_base' => 'channel:messages']); parent::buildForm($builder, $options); // Ensure that all channels exist /** @var Message $message */ $message = $options['data']; $channels = $this->model->getChannels(); $messageChannels = $message->getChannels(); foreach ($channels as $channelType => $channel) { if (!isset($messageChannels[$channelType])) { $message->addChannel( (new Channel()) ->setChannel($channelType) ->setMessage($message) ); } } $builder->add( 'channels', CollectionType::class, [ 'label' => false, 'allow_add' => true, 'allow_delete' => false, 'prototype' => false, 'entry_type' => ChannelType::class, 'by_reference' => false, 'entry_options' => [ 'channels' => $channels, ], 'constraints' => [ new Valid(), ], ] ); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults( [ 'data_class' => Message::class, 'category_bundle' => 'messages', ] ); } }