/**
  * Execute the queue.
  *
  * @param Request      $request   The request.
  * @param Queue        $queueData The queue data.
  * @param \BackendUser $user      The user.
  *
  * @return JsonResponse
  *
  * @SuppressWarnings(PHPMD.Superglobals)
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 protected function execute(Request $request, Queue $queueData, \BackendUser $user)
 {
     global $container;
     if (!$queueData->getAllowManualSending()) {
         $response = new JsonResponse(array('error' => 'manual sending is forbidden'), 403);
         $response->prepare($request);
         return $response;
     }
     $serviceName = sprintf('avisota.queue.%s', $queueData->getId());
     /** @var QueueInterface $queue */
     $queue = $container[$serviceName];
     $transportServiceName = sprintf('avisota.transport.%s', $queueData->getTransport()->getId());
     $transport = $container[$transportServiceName];
     $config = new ExecutionConfig();
     if ($queueData->getMaxSendTime() > 0) {
         $config->setTimeLimit($queueData->getMaxSendTime());
     }
     if ($queueData->getMaxSendCount() > 0) {
         $config->setMessageLimit($queueData->getMaxSendCount());
     }
     $event = new PreQueueExecuteEvent($queue, $transport, $config);
     /** @var EventDispatcher $eventDispatcher */
     $eventDispatcher = $GLOBALS['container']['event-dispatcher'];
     $eventDispatcher->dispatch(PreQueueExecuteEvent::NAME, $event);
     $queue = $event->getQueue();
     $transport = $event->getTransport();
     $config = $event->getConfig();
     $status = $queue->execute($transport, $config);
     $jsonData = array('success' => 0, 'failed' => 0);
     foreach ($status as $stat) {
         $jsonData['success'] += $stat->getSuccessfullySend();
         $jsonData['failed'] += count($stat->getFailedRecipients());
     }
     $response = new JsonResponse($jsonData);
     $response->prepare($request);
     return $response;
 }
Ejemplo n.º 2
0
 /**
  * Create queue.
  *
  * @param Queue $queue The queue.
  *
  * @return mixed
  *
  * @SuppressWarnings(PHPMD.Superglobals)
  */
 public function createQueue(Queue $queue)
 {
     $queueFactoryClass = new \ReflectionClass($GLOBALS['AVISOTA_QUEUE'][$queue->getType()]);
     /** @var QueueFactoryInterface $queueFactory */
     $queueFactory = $queueFactoryClass->newInstance();
     return $queueFactory->createQueue($queue);
 }
 /**
  * Create the simple queue database.
  *
  * @param Queue $queue
  *
  * @return SimpleDatabaseQueue
  */
 public function createQueue(Queue $queue)
 {
     global $container;
     return new SimpleDatabaseQueue($container['doctrine.connection.default'], $queue->getSimpleDatabaseQueueTable(), true, $container['avisota.logger.queue'], $container['event-dispatcher']);
 }