/**
  * Serialize an entity and return its ID.
  *
  * @param EntityInterface $entity
  *
  * @return string
  */
 public function serializeEntityId(EntityInterface $entity)
 {
     /** @var EntityAccessor $entityAccessor */
     $entityAccessor = $GLOBALS['container']['doctrine.orm.entityAccessor'];
     $serializer = new IdSerializer();
     $serializer->setDataProviderName($entity->entityTableName());
     $serializer->setId($entityAccessor->getPrimaryKey($entity));
     return $serializer->getSerialized();
 }
 protected function execute(Message $message, \BackendUser $user)
 {
     global $container;
     /** @var \Symfony\Component\EventDispatcher\EventDispatcher $eventDispatcher */
     $eventDispatcher = $GLOBALS['container']['event-dispatcher'];
     $input = \Input::getInstance();
     $user = $input->get('recipient_user');
     /** @var \Doctrine\DBAL\Connection $connection */
     $connection = $container['doctrine.connection.default'];
     $queryBuilder = $connection->createQueryBuilder();
     /** @var \Doctrine\DBAL\Statement $statement */
     $statement = $queryBuilder->select('u.*')->from('tl_user', 'u')->where('id=:id')->setParameter(':id', $user)->execute();
     $userData = $statement->fetch();
     if (!$userData) {
         $_SESSION['AVISOTA_SEND_PREVIEW_TO_USER_EMPTY'] = true;
         header('Location: ' . $url);
         exit;
     }
     $idSerializer = new IdSerializer();
     $idSerializer->setDataProviderName('orm_avisota_message');
     $idSerializer->setId($message->getId());
     $pidSerializer = new IdSerializer();
     $pidSerializer->setDataProviderName('orm_avisota_message_category');
     $pidSerializer->setId($message->getCategory()->getId());
     $environment = Environment::getInstance();
     $url = sprintf('%scontao/main.php?do=avisota_newsletter&table=orm_avisota_message&act=preview&id=%s&pid=%s', $environment->base, $idSerializer->getSerialized(), $pidSerializer->getSerialized());
     if ($message->getCategory()->getViewOnlinePage()) {
         $event = new LoadLanguageFileEvent('avisota_message');
         $eventDispatcher->dispatch(ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, $event);
         $viewOnlineLink = sprintf($GLOBALS['TL_LANG']['avisota_message']['viewOnline'], $url);
     } else {
         $viewOnlineLink = false;
     }
     $event = new \Avisota\Contao\Core\Event\CreateFakeRecipientEvent($message);
     $eventDispatcher->dispatch(\Avisota\Contao\Core\CoreEvents::CREATE_FAKE_RECIPIENT, $event);
     $recipient = $event->getRecipient();
     $recipient->setEmail($userData['email']);
     $additionalData = array('view_online_link' => $viewOnlineLink);
     /** @var \Avisota\Contao\Message\Core\Renderer\MessageRendererInterface $renderer */
     $renderer = $container['avisota.message.renderer'];
     $messageTemplate = $renderer->renderMessage($message);
     $messageMail = $messageTemplate->render($recipient, $additionalData);
     /** @var \Avisota\Transport\TransportInterface $transport */
     $transport = $GLOBALS['container']['avisota.transport.' . $message->getQueue()->getTransport()->getId()];
     $transport->send($messageMail);
     $event = new \ContaoCommunityAlliance\Contao\Bindings\Events\System\LoadLanguageFileEvent('avisota_message_preview');
     $eventDispatcher->dispatch(\ContaoCommunityAlliance\Contao\Bindings\ContaoEvents::SYSTEM_LOAD_LANGUAGE_FILE, $event);
     $_SESSION['TL_CONFIRM'][] = sprintf($GLOBALS['TL_LANG']['avisota_message_preview']['previewSend'], $recipient->getEmail());
     header('Location: ' . $url);
     exit;
 }
Beispiel #3
0
 /**
  * Create the "new" button.
  *
  * @return CommandInterface|null
  */
 protected function getCreateModelCommand()
 {
     $environment = $this->getEnvironment();
     $definition = $environment->getDataDefinition();
     $basicDefinition = $definition->getBasicDefinition();
     $providerName = $environment->getDataDefinition()->getName();
     $mode = $basicDefinition->getMode();
     $config = $this->getEnvironment()->getController()->getBaseConfig();
     $sorting = $this->getManualSortingProperty();
     if ($serializedPid = $environment->getInputProvider()->getParameter('pid')) {
         $pid = IdSerializer::fromSerialized($serializedPid);
     } else {
         $pid = new IdSerializer();
     }
     if ($basicDefinition->isClosed()) {
         return null;
     }
     $command = new Command();
     $parameters = $command->getParameters();
     $extra = $command->getExtra();
     $extra['class'] = 'header_new';
     $extra['accesskey'] = 'n';
     $extra['attributes'] = 'onclick="Backend.getScrollOffset();"';
     $command->setName('button_new')->setLabel($this->translate('new.0', $providerName))->setDescription($this->translate('new.1', $providerName));
     $this->getPanel()->initialize($config);
     // Add new button.
     if ($mode == BasicDefinitionInterface::MODE_FLAT || $mode == BasicDefinitionInterface::MODE_PARENTEDLIST && !$sorting) {
         $parameters['act'] = 'create';
         // Add new button.
         if ($pid->getDataProviderName() && $pid->getId()) {
             $parameters['pid'] = $pid->getSerialized();
         }
     } elseif ($mode == BasicDefinitionInterface::MODE_PARENTEDLIST || $mode == BasicDefinitionInterface::MODE_HIERARCHICAL) {
         if ($environment->getClipboard()->isNotEmpty()) {
             return null;
         }
         $after = IdSerializer::fromValues($definition->getName(), 0);
         $parameters['act'] = 'paste';
         $parameters['mode'] = 'create';
         if ($mode == BasicDefinitionInterface::MODE_PARENTEDLIST) {
             $parameters['after'] = $after->getSerialized();
         }
         if ($pid->getDataProviderName() && $pid->getId()) {
             $parameters['pid'] = $pid->getSerialized();
         }
     }
     return $command;
 }