コード例 #1
0
ファイル: Message.php プロジェクト: peteraba/dm-mailer
 /**
  * @param MessageEntity $entity
  *
  * @return bool
  */
 public function handlePost(MessageEntity $entity)
 {
     $form = $this->getForm();
     if ($this->request->isPost()) {
         $form->setData($this->request->getPost());
         if ($form->isValid()) {
             $entity->populate($this->getPopulateData());
             return $this->saveEntity($entity);
         }
     }
     $form->bind($entity);
     return false;
 }
コード例 #2
0
 /**
  * @return Entity\Message
  */
 protected function getOldMessage()
 {
     $message = new Entity\Message();
     $message->setSystemMessage(false);
     $message->setSubject('Suspicious Message');
     $message->setBody('Nope');
     $message->setOnHalt(false);
     $message->setSendAt(new \DateTime('-70 minutes'));
     $message->setQueuedAt(new \DateTime('-65 minutes'));
     $message->setCampaign($this->getReference('winter2013-campaign'));
     return $message;
 }
コード例 #3
0
ファイル: QueueItem.php プロジェクト: peteraba/dm-mailer
 /**
  * @param MessageEntity $message
  *
  * @return int
  */
 public function queueMessage(MessageEntity $message)
 {
     $queueCount = 0;
     foreach ($message->getCampaign()->getSubscribers() as $subscriber) {
         /** @var Entity $queueItem */
         $queueItem = $this->getNewEntity();
         $queueItem->setSubscriber($subscriber);
         $queueItem->setMessage($message);
         $queueItem->setSecurityKey();
         $this->_em->persist($queueItem);
         $queueCount++;
     }
     $message->setQueuedAt(new \DateTime('now'));
     $this->_em->persist($message);
     $this->_em->flush();
     return $queueCount;
 }
コード例 #4
0
ファイル: Campaign.php プロジェクト: peteraba/dm-mailer
 /**
  * @TODO: Move to event
  *
  * @param CampaignEntity $entity
  * @param MessageEntity  $message
  *
  * @return bool
  */
 private function handleSystemMessage(CampaignEntity $entity, MessageEntity $message)
 {
     if ($message->getBody() && $message->getSubject()) {
         if (!$message->getId()) {
             $message->setCampaign($entity);
             $message->setQueuedAt(new \DateTime('now'));
             $message->setSendAt(new \DateTime('now'));
             $message->setOnHalt(false);
             $message->setSystemMessage(true);
             $this->systemMessageOp = static::SYSTEM_MESSAGE_CREATED;
         } else {
             $this->systemMessageOp = static::SYSTEM_MESSAGE_UPDATED;
         }
         $this->entityManager->persist($message);
     } elseif ($message->getId()) {
         $this->systemMessageOp = static::SYSTEM_MESSAGE_DELETED;
         $this->entityManager->remove($message);
     } else {
         $this->systemMessageOp = static::SYSTEM_MESSAGE_SKIPPED;
     }
     return true;
 }
コード例 #5
0
 /**
  * @param int           $added
  * @param EntityMessage $message
  */
 private function sendTestMails($added, EntityMessage $message)
 {
     $feedback = $this->userText->getMessage(EntityName::MESSAGE, DmMailerAdminMessage::APPROVE_SUCCESS);
     $this->flashMessenger()->addSuccessMessage($feedback);
     if ($added && $this->queueService) {
         $added = $this->queueService->process($message->getQueue()->toArray(), true);
         for ($i = 0; $i < $added; $i++) {
             $feedback = $this->userText->getMessage(EntityName::EMAIL, DmMailerAdminMessage::SEND_SUCCESS);
             $this->flashMessenger()->addSuccessMessage($feedback);
         }
     } else {
         for ($i = 0; $i < $added; $i++) {
             $feedback = $this->userText->getMessage(EntityName::EMAIL, DmMailerAdminMessage::QUEUE_SUCCESS);
             $this->flashMessenger()->addSuccessMessage($feedback);
         }
     }
 }
コード例 #6
0
 /**
  * @param Entity\Message    $message
  * @param Entity\Subscriber $subscriber
  *
  * @return array Entity\Queue[]
  */
 private function isSubscriberSubscribedToCampaign($message, $subscriber)
 {
     $campaignId = $message->getCampaign()->getId();
     $subscribedCampaignIds = [];
     /** @var $campaign Entity\Campaign */
     foreach ($subscriber->getCampaigns() as $campaign) {
         $subscribedCampaignIds[] = $campaign->getId();
     }
     return in_array($campaignId, $subscribedCampaignIds);
 }
コード例 #7
0
ファイル: Message.php プロジェクト: peteraba/dm-mailer
 /**
  * @param Entity $message
  */
 public function closeMessage(Entity $message)
 {
     $message->setClosedAt(new \DateTime('now'));
     $this->_em->persist($message);
     $this->_em->flush();
 }
コード例 #8
0
 /**
  * @param Message $message
  *
  * @return bool
  */
 private function closeSentMessage(Message $message)
 {
     $queue = $message->getQueue();
     if (empty($queue)) {
         return false;
     }
     $allSent = true;
     foreach ($queue as $queueItem) {
         if (null === $queueItem->getSentAt()) {
             $allSent = false;
             break;
         }
     }
     if ($this->isVerbose()) {
         $messageAsString = $this->messageToString($message, count($queue));
         if ($allSent) {
             $this->logger->info('Message to be closed: ' . $messageAsString);
         } else {
             $this->logger->info('Message is still being sent: ' . $messageAsString);
         }
     }
     if ($allSent) {
         $this->messageRepository->closeMessage($message);
         return true;
     }
     return false;
 }
コード例 #9
0
    /**
     * @return Entity\Message
     */
    protected function getNye2014()
    {
        $message = new Entity\Message();
        $body = <<<EOF
<p>Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. <b>Suspendisse in justo eu magna luctus
suscipit <b>nulla facilisi</b>. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede. Ut orci risus,
accumsan porttitor, cursus quis, aliquet eget, justo. Sed pretium blandit orci. Ut eu diam at pede suscipit sodales.</p>
EOF;
        $message->setSubject('HNYE Berlin!');
        $message->setBody($body);
        $message->setCampaign($this->getReference('winter2014-campaign'));
        $message->setSendAt(new \DateTime("+20 minutes"));
        $message->setOnHalt(false);
        return $message;
    }