예제 #1
12
 public function PdfAction()
 {
     $pdf = new TCPDF('L');
     $pdf->SetPrintHeader(true);
     $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
     // set margins
     $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
     $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
     // set auto page breaks
     $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
     // set image scale factor
     $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
     // set some language-dependent strings (optional)
     if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) {
         require_once dirname(__FILE__) . '/lang/eng.php';
         $pdf->setLanguageArray($l);
     }
     // set font
     $pdf->SetFont('helvetica', '', 8);
     // add a page
     $pdf->AddPage();
     //get report data into $data variable
     $project = $this->getServiceLocator()->get('ProjectTable');
     $data = $project->getWsr();
     $view = new PhpRenderer();
     $resolver = new TemplateMapResolver();
     //set the path of the pdf.phtml file
     $resolver->setMap(array('PDFTemplate' => '/var/www/html/WSRAutomation/module/Application/view/application/index/pdf.phtml'));
     $view->setResolver($resolver);
     $viewModel = new ViewModel();
     $viewModel->setTemplate('PDFTemplate')->setVariables(array('projects' => $data, 'view' => 'pdf'));
     $html = $view->render($viewModel);
     $pdf->writeHTML($html, true, 0, true, 0);
     $pdf->Output('WsrReport.pdf', 'I');
 }
 public function onRoute(MvcEvent $e)
 {
     $request = $e->getRequest();
     if (!$request instanceof HttpRequest) {
         return;
     }
     $application = $e->getApplication();
     $serviceLocator = $application->getServiceManager();
     // Load the configuration for maintenance mode
     if ($serviceLocator->has('MaintenanceConfig')) {
         $config = $serviceLocator->get('MaintenanceConfig');
     } else {
         $config = new Config();
     }
     if (!$config->isEnabled()) {
         // Maintenance mode is disabled.
         return;
     }
     // Check the white list
     if ($request instanceof PhpRequest) {
         $address = $request->getServer('REMOTE_ADDR', null);
     } else {
         $address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null;
     }
     if (!empty($address)) {
         if (in_array($address, $config->getWhitelist())) {
             return;
         }
     }
     // Render the maintenance layout
     $renderer = new PhpRenderer();
     if ($serviceLocator->has('ViewHelperManager')) {
         $renderer->setHelperPluginManager($serviceLocator->get('ViewHelperManager'));
     }
     $resolver = new TemplateMapResolver();
     $resolver->add('maintenance', $config->getTemplate());
     $renderer->setResolver($resolver);
     $content = $renderer->render('maintenance');
     // Set the response
     $response = $e->getResponse();
     if (!$response instanceof HttpResponse) {
         $response = new HttpResponse();
     }
     $statusCode = $config->getStatusCode();
     $response->setStatusCode($statusCode);
     if ($statusCode === 503 && !$response->getHeaders()->has('Retry-After')) {
         $retryDate = $config->getRetryAfter();
         if ($retryDate instanceof DateTime) {
             $retryAfter = new RetryAfter();
             $retryAfter->setDate($retryDate);
             $response->getHeaders()->addHeader($retryAfter);
         }
     }
     $response->setContent($content);
     $e->setResponse($response);
     // Return the response
     return $response;
 }
예제 #3
0
 protected function renderTemplatePath($strPath, $arrVariables)
 {
     $view = new PhpRenderer();
     $resolver = new TemplateMapResolver();
     $resolver->setMap(array('mailTemplate' => __DIR__ . '/../../../' . $strPath));
     $view->setResolver($resolver);
     $viewModel = new ViewModel();
     $viewModel->setTemplate('mailTemplate')->setVariables($arrVariables);
     return $view->render($viewModel);
 }
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     /* @var $config ModuleOptions */
     $config = $serviceLocator->get('ZendSmarty\\ModuleOptions');
     /* @var $orig TemplateMapResolver */
     $orig = $serviceLocator->get('ViewTemplateMapResolver');
     $suffix = '.' . $config->suffix;
     $nlen = -strlen($suffix);
     $instance = new TemplateMapResolver();
     foreach ($orig->getMap() as $name => $file) {
         if (substr($file, $nlen) === $suffix) {
             $instance->add($name, $file);
         }
     }
     return $instance;
 }
예제 #5
0
 /**
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     //VIEW
     //	create and configure view
     $child = new ViewModel(array('user' => $this->params->recipients, 'password' => $this->params->password));
     $child->setTemplate('script');
     $layout = new ViewModel();
     $layout->setTemplate('layout');
     $layout->addChild($child, 'content');
     $phpRenderer = new PhpRenderer();
     $phpRenderer->setCanRenderTrees(true);
     $resolver = new Resolver\TemplateMapResolver();
     $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'script' => __DIR__ . '/../../../view/email/lost-password.phtml'));
     $phpRenderer->setResolver($resolver);
     foreach ($layout as $child) {
         $child->setOption('has_parent', true);
         $result = $phpRenderer->render($child);
         $child->setOption('has_parent', null);
         $capture = $child->captureTo();
         if (!empty($capture)) {
             $layout->setVariable($capture, $result);
         }
     }
     $result = new Mail();
     $result->name = $this->params->recipients->name;
     $result->email = $this->params->recipients->email;
     $result->subject = "Nýtt lykilorð";
     $result->body = $phpRenderer->render($layout);
     $result->type = 'Password';
     $result->test = true;
     //MAIL
     //	now we want to send this to the user/quest via e-mail
     //	so we try to connect to Queue and send a message
     //	to mail_queue
     try {
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         $msg = new AMQPMessage($result->serialize(), ['delivery_mode' => 2]);
         $this->logger->info($this->params->recipients->name . " is requesting new password");
         $channel->basic_publish($msg, '', 'mail_queue');
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
     }
     return $this;
 }
 /**
  * Generate paging html
  */
 private function generatePaging()
 {
     # Get total page count
     $pages = ceil($this->totalResults / $this->resultsPerPage);
     /* # Don't show pagination if there's only one page
             if($pages == 1)
             {
                 return;
             }
     
             # Show back to first page if not first page
             if($this->page != 1)
             {
             	$this->paging .= "<a href='".$this->baseUrl . '?page=1'."' /> << </a>";
             }
     
             # Create a link for each page
             $pageCount = 1;
             while($pageCount <= $pages)
             {
                 $this->paging .= "<a href='".$this->baseUrl . '?page='. $pageCount . "' /> ". $pageCount ." </a>";
                 $pageCount++;
             }
     
             # Show go to last page option if not the last page
             if($this->page != $pages)
             {
                 $this->paging .= "<a href='".$this->baseUrl . '?page='. $pages . "' /> >> </a>";
             }*/
     //return $this->paging;
     $renderer = new PhpRenderer();
     $resolver = new TemplateMapResolver();
     $resolver->setMap(array('pager' => __DIR__ . '/../../../../../GDI/view/gdi/index2/_pager.phtml'));
     $renderer->setResolver($resolver);
     $view = new ViewModel(array('pages' => $pages, 'current_page' => $this->page, 'baseUrl' => $this->baseUrl, 'pageCount' => 1));
     $view->setTemplate('pager');
     $content = $renderer->render($view);
     return $content;
 }
예제 #7
0
 /**
  * Create, configure and return the email renderer.
  *
  * @see FactoryInterface::createService()
  * @return \Zend\View\Renderer\RendererInterface
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $config = $serviceLocator->get('config');
     if (empty($config['mail']['renderer'])) {
         throw new \Exception('Config required in order to create Mailer\\Renderer.' . 'required config key: $config["mail"]["renderer"].');
     }
     $rendererConfig = $config['mail']['renderer'];
     $resolver = new AggregateResolver();
     if (isset($rendererConfig['templateMap'])) {
         $templateMapResolver = new TemplateMapResolver();
         $templateMapResolver->setMap($rendererConfig['templateMap']);
         $resolver->attach($templateMapResolver);
     }
     if (isset($rendererConfig['templatePathStack'])) {
         $pathStackResolver = new TemplatePathStack();
         $pathStackResolver->setPaths($rendererConfig['templatePathStack']);
         $resolver->attach($pathStackResolver);
     }
     $renderer = new PhpRenderer();
     $renderer->setHelperPluginManager($serviceLocator->get('ViewHelperManager'));
     $renderer->setResolver($resolver);
     return $renderer;
 }
 public function testResolveReturnsFalseWhenNameHasNoMatch()
 {
     $map = array('foo/bar' => __DIR__ . '/foo/bar.phtml');
     $resolver = new TemplateMapResolver($map);
     $this->assertFalse($resolver->resolve('bar/baz'));
 }
예제 #9
0
파일: Attend.php 프로젝트: bix0r/Stjornvisi
 /**
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     //DATA-OBJECTS
     //  get data-objects from persistence layer.
     $eventObject = $this->getEvent($this->params->event_id);
     $userObject = $this->getUser($this->params->recipients);
     //VIEW
     //	create and configure view
     $child = new ViewModel(array('user' => $userObject, 'event' => $eventObject));
     $child->setTemplate($this->params->type ? 'attend' : 'unattend');
     $layout = new ViewModel();
     $layout->setTemplate('layout');
     $layout->addChild($child, 'content');
     $phpRenderer = new PhpRenderer();
     $phpRenderer->setCanRenderTrees(true);
     $resolver = new Resolver\TemplateMapResolver();
     $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'attend' => __DIR__ . '/../../../view/email/attending.phtml', 'unattend' => __DIR__ . '/../../../view/email/un-attending.phtml'));
     $phpRenderer->setResolver($resolver);
     foreach ($layout as $child) {
         $child->setOption('has_parent', true);
         $result = $phpRenderer->render($child);
         $child->setOption('has_parent', null);
         $capture = $child->captureTo();
         if (!empty($capture)) {
             $layout->setVariable($capture, $result);
         }
     }
     //MESSAGE
     //  create and configure message.
     $message = new Mail();
     $message->body = $phpRenderer->render($layout);
     $message->email = $userObject->email;
     $message->name = $userObject->name;
     $message->subject = $this->params->type ? "Þú hefur skráð þig á viðburðinn: {$eventObject->subject}" : "Þú hefur afskráð þig af viðburðinum: {$eventObject->subject}";
     //MAIL
     //	now we want to send this to the user/quest via e-mail
     //	so we try to connect to Queue and send a message
     //	to mail_queue
     try {
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         $msg = new AMQPMessage($message->serialize(), ['delivery_mode' => 2]);
         $this->logger->info("{$userObject->email} is " . ($this->params->type ? '' : 'not ') . "attending {$eventObject->subject}");
         $channel->basic_publish($msg, '', 'mail_queue');
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
         $eventObject = null;
         $userObject = null;
         $this->closeDataSourceDriver();
     }
     return $this;
 }
예제 #10
0
파일: Mail.php 프로젝트: arvind2110/zf2mail
 private function _readTemplate()
 {
     $config = $this->serviceManager->get('config');
     $templateFile = $this->templatePath . $this->templateFile . ".phtml";
     $view = new PhpRenderer();
     $resolver = new TemplateMapResolver();
     $resolver->setMap(array('mailTemplate' => $templateFile));
     $view->setResolver($resolver);
     $viewModel = new ViewModel();
     $viewModel->setTemplate('mailTemplate');
     $viewModel->setVariables($this->params);
     $content = $view->render($viewModel);
     return $content;
 }
 public function testTriggersRenderErrorEventInCaseOfRenderingException()
 {
     $resolver = new TemplateMapResolver();
     $resolver->add('exception', __DIR__ . '/_files/exception.phtml');
     $this->renderer->setResolver($resolver);
     $strategy = new PhpRendererStrategy($this->renderer);
     $this->view->getEventManager()->attach($strategy);
     $model = new ViewModel();
     $model->setTemplate('exception');
     $this->event->setViewModel($model);
     $services = new ServiceManager();
     $services->setService('Request', $this->request);
     $services->setService('Response', $this->response);
     $services->setInvokableClass('SharedEventManager', 'Zend\\EventManager\\SharedEventManager');
     $services->setFactory('EventManager', function ($services) {
         $sharedEvents = $services->get('SharedEventManager');
         $events = new EventManager();
         $events->setSharedManager($sharedEvents);
         return $events;
     }, false);
     $application = new Application(array(), $services);
     $this->event->setApplication($application);
     $test = (object) array('flag' => false);
     $application->getEventManager()->attach(MvcEvent::EVENT_RENDER_ERROR, function ($e) use($test) {
         $test->flag = true;
         $test->error = $e->getError();
         $test->exception = $e->getParam('exception');
     });
     $this->strategy->render($this->event);
     $this->assertTrue($test->flag);
     $this->assertEquals(Application::ERROR_EXCEPTION, $test->error);
     $this->assertInstanceOf('Exception', $test->exception);
     $this->assertContains('script', $test->exception->getMessage());
 }
예제 #12
0
파일: Event.php 프로젝트: bix0r/Stjornvisi
 /**
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     $emailId = $this->getEmailId();
     $event = $this->getEvent($this->params->event_id);
     $users = $this->getUser($this->getGroupsFromEvent($event), $event->id, $this->params->user_id, $this->params->recipients, $this->params->test);
     $this->logger->info(count($users) . " user will get an email" . "in connection with event {$event->subject}:{$event->id}");
     //VIEW
     //	create and configure view
     $child = new ViewModel(array('user' => null, 'event' => $event, 'body' => call_user_func(new Paragrapher(), $this->params->body)));
     $child->setTemplate('event');
     $layout = new ViewModel();
     $layout->setTemplate('layout');
     $layout->addChild($child, 'content');
     $phpRenderer = new PhpRenderer();
     $phpRenderer->setCanRenderTrees(true);
     $resolver = new Resolver\TemplateMapResolver();
     $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'event' => __DIR__ . '/../../../view/email/event.phtml'));
     $phpRenderer->setResolver($resolver);
     //CONNECT TO QUEUE
     //	try to connect to RabbitMQ
     try {
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         //FOR EVER USER
         //	for every user: render email template, create message object and
         //	send to mail-queue
         foreach ($users as $user) {
             $child->setVariable('user', $user);
             foreach ($layout as $child) {
                 $child->setOption('has_parent', true);
                 $result = $phpRenderer->render($child);
                 $child->setOption('has_parent', null);
                 $capture = $child->captureTo();
                 if (!empty($capture)) {
                     $layout->setVariable($capture, $result);
                 }
             }
             $message = new Mail();
             $message->name = $user->name;
             $message->email = $user->email;
             $message->subject = $this->params->subject;
             $message->body = $phpRenderer->render($layout);
             $message->id = $emailId;
             $message->user_id = md5((string) $emailId . $user->email);
             $message->type = 'Event';
             $message->entity_id = $event->id;
             $message->parameters = $this->params->recipients;
             $message->test = $this->params->test;
             $msg = new AMQPMessage($message->serialize(), ['delivery_mode' => 2]);
             $this->logger->info(" {$user->email} will get an email" . "in connection with event {$event->subject}:{$event->id}");
             $channel->basic_publish($msg, '', 'mail_queue');
         }
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
         $users = null;
         $event = null;
         $this->closeDataSourceDriver();
     }
     return $this;
 }
예제 #13
0
 /**
  * Prepare the resolver with all the templates we have available
  *
  * @return Zend\View\Resolver\TemplateMapResolver
  */
 protected static function initResolver()
 {
     $resolver = new TemplateMapResolver();
     $resolver->setMap(array('MailLayout' => __DIR__ . '/../../view/layout/email-layout.phtml', 'WelcomeTemplate' => __DIR__ . '/../../view/emails/welcome.phtml', 'NewComment' => __DIR__ . '/../../view/emails/new-comment.phtml'));
     return $resolver;
 }
예제 #14
0
 /**
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     $groupObject = $this->getGroup($this->params->group_id);
     $userObject = $this->getUser($this->params->recipient);
     //VIEW
     //	create and configure view
     $child = new ViewModel(array('user' => $userObject, 'group' => $groupObject));
     $child->setTemplate($this->params->register ? 'group-register' : 'group-unregister');
     $layout = new ViewModel();
     $layout->setTemplate('layout');
     $layout->addChild($child, 'content');
     $phpRenderer = new PhpRenderer();
     $phpRenderer->setCanRenderTrees(true);
     $resolver = new Resolver\TemplateMapResolver();
     $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'group-register' => __DIR__ . '/../../../view/email/group-register.phtml', 'group-unregister' => __DIR__ . '/../../../view/email/group-unregister.phtml'));
     $phpRenderer->setResolver($resolver);
     foreach ($layout as $child) {
         $child->setOption('has_parent', true);
         $result = $phpRenderer->render($child);
         $child->setOption('has_parent', null);
         $capture = $child->captureTo();
         if (!empty($capture)) {
             $layout->setVariable($capture, $result);
         }
     }
     $result = new Mail();
     $result->name = $userObject->name;
     $result->email = $userObject->email;
     $result->subject = $this->params->register ? "Þú hefur skráð þig í hópinn: {$groupObject->name}" : "Þú hefur afskráð þig úr hópnum: {$groupObject->name}";
     $result->body = $phpRenderer->render($layout);
     $result->test = true;
     //MAIL
     //	now we want to send this to the user/quest via e-mail
     //	so we try to connect to Queue and send a message
     //	to mail_queue
     try {
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         $msg = new AMQPMessage($result->serialize(), ['delivery_mode' => 2]);
         $this->logger->info(get_class($this) . ":send" . " {$userObject->email} is " . ($this->params->register ? '' : 'not ') . "joining group {$groupObject->name_short}");
         $channel->basic_publish($msg, '', 'mail_queue');
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
         $userObject = null;
         $groupObject = null;
         $this->closeDataSourceDriver();
     }
     return $this;
 }
예제 #15
0
파일: Group.php 프로젝트: bix0r/Stjornvisi
 /**
  * Run the handler.
  *
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     $emailId = $this->getHash();
     $users = $this->getUsers($this->params->recipients, $this->params->test, $this->params->sender_id, $this->params->group_id);
     $group = $this->getGroup($this->params->group_id);
     $this->logger->info("Group-email in " . ($this->params->test ? '' : 'none') . " test mode");
     //MAIL
     //	now we want to send this to the user/quest via e-mail
     //	so we try to connect to Queue and send a message
     //	to mail_queue
     try {
         //QUEUE
         //	create and configure queue
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         //VIEW
         //	create and configure view
         $child = new ViewModel(array('user' => null, 'group' => $group, 'body' => call_user_func(new Paragrapher(), $this->params->body)));
         $child->setTemplate('script');
         $layout = new ViewModel();
         $layout->setTemplate('layout');
         $layout->addChild($child, 'content');
         $phpRenderer = new PhpRenderer();
         $phpRenderer->setCanRenderTrees(true);
         $resolver = new Resolver\TemplateMapResolver();
         $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'script' => __DIR__ . '/../../../view/email/group-letter.phtml'));
         $phpRenderer->setResolver($resolver);
         //FOR EVERY USER
         //	for every user, render mail-template
         //	and send to mail-queue
         foreach ($users as $user) {
             $child->setVariable('user', $user);
             foreach ($layout as $child) {
                 $child->setOption('has_parent', true);
                 $result = $phpRenderer->render($child);
                 $child->setOption('has_parent', null);
                 $capture = $child->captureTo();
                 if (!empty($capture)) {
                     $layout->setVariable($capture, $result);
                 }
             }
             $result = new Mail();
             $result->name = $user->name;
             $result->email = $user->email;
             $result->subject = $this->params->subject;
             $result->body = $phpRenderer->render($layout);
             $result->user_id = md5((string) $emailId . $user->email);
             $result->id = $emailId;
             $result->type = 'Event';
             $result->entity_id = $group->id;
             $result->parameters = $this->params->recipients;
             $result->test = $this->params->test;
             $msg = new AMQPMessage($result->serialize(), ['delivery_mode' => 2]);
             $this->logger->info("Groupmail to user:{$user->email}, group:{$group->name_short}");
             $channel->basic_publish($msg, '', 'mail_queue');
         }
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
         $users = null;
         $group = null;
         $this->closeDataSourceDriver();
     }
     return $this;
 }
예제 #16
0
파일: Digest.php 프로젝트: bix0r/Stjornvisi
 /**
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     //ID
     //  create an ID for this digest
     $emailId = $this->getHash();
     //TIME RANGE
     //	calculate time range and create from and
     //	to date objects for the range.
     $from = new DateTime();
     $from->add(new DateInterval('P1D'));
     $to = new DateTime();
     $to->add(new DateInterval('P8D'));
     $this->logger->info("Queue Service says: Fetching upcoming events");
     //EVENTS
     //  fetch all events
     $events = $this->getEvents($from, $to);
     //NO EVENTS
     //	if there are no events to publish, then it's no need
     //	to keep on processing this script
     if (count($events) == 0) {
         $this->logger->info("Digest, no events registered, stop");
         return $this;
     } else {
         $this->logger->info("Digest, " . count($events) . " events registered.");
     }
     //USERS
     //	get all users who want to know
     //	about the upcoming events.
     $users = $this->getUsers();
     $this->logger->info("Digest, " . count($users) . " user will get email ");
     //VIEW
     //	create and configure view
     $child = new ViewModel(array('events' => $events, 'from' => $from, 'to' => $to));
     $child->setTemplate('news-digest');
     $layout = new ViewModel();
     $layout->setTemplate('layout');
     $layout->addChild($child, 'content');
     $phpRenderer = new PhpRenderer();
     $phpRenderer->setCanRenderTrees(true);
     $resolver = new TemplateMapResolver();
     $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'news-digest' => __DIR__ . '/../../../view/email/news-digest.phtml'));
     $phpRenderer->setResolver($resolver);
     //QUEUE
     //	try to connect to Queue and send messages to it.
     //	this will try to send messages to mail_queue, that will
     //	send them on it's way via a MailTransport
     try {
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         foreach ($users as $user) {
             $child->setVariable('user', $user);
             foreach ($layout as $child) {
                 $child->setOption('has_parent', true);
                 $result = $phpRenderer->render($child);
                 $child->setOption('has_parent', null);
                 $capture = $child->captureTo();
                 if (!empty($capture)) {
                     $layout->setVariable($capture, $result);
                 }
             }
             $result = new Mail();
             $result->name = $user->name;
             $result->email = $user->email;
             $result->subject = "Vikan framundan | {$from->format('j. n.')} - {$to->format('j. n. Y')}";
             $result->body = $phpRenderer->render($layout);
             $result->id = $emailId;
             $result->user_id = md5((string) $emailId . $user->email);
             $result->type = 'Digest';
             $result->parameters = 'allir';
             $result->test = false;
             $msg = new AMQPMessage($result->serialize(), ['delivery_mode' => 2]);
             $channel->basic_publish($msg, '', 'mail_queue');
             $this->logger->debug("Queue Service says: Fetching users who want upcoming events, {$user->email} in queue ");
         }
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
         $this->closeDataSourceDriver();
     }
     return $this;
 }
예제 #17
0
 /**
  * Function for getting the forgot password template
  *
  * @author Kaushal Kishore <*****@*****.**>
  * @package Users
  * @access Public
  * @return Ambigous <string, \Zend\Filter\mixed, mixed>
  */
 public function getForgotPasswordTemplate($variables = array())
 {
     $view = new PhpRenderer();
     $resolver = new TemplateMapResolver();
     $resolver->setMap(array('mailTemplate' => __DIR__ . '/../../../view/users/user/forgot-mail-template.phtml'));
     $view->setResolver($resolver);
     $viewModel = new \Zend\View\Model\ViewModel();
     $viewModel->setTemplate('mailTemplate');
     $viewModel->setVariables($variables);
     $content = $view->render($viewModel);
     return $content;
 }
예제 #18
0
 /**
  * @return $this
  * @throws NotifyException
  */
 public function send()
 {
     //USER
     //	get the user.
     $user = $this->getUser($this->params->user_id);
     $this->logger->debug("User validate [{$user->email}]");
     //VIEW
     //	create and configure view
     $child = new ViewModel(array('user' => $user, 'link' => $this->params->facebook));
     $child->setTemplate('script');
     $layout = new ViewModel();
     $layout->setTemplate('layout');
     $layout->addChild($child, 'content');
     $phpRenderer = new PhpRenderer();
     $phpRenderer->setCanRenderTrees(true);
     $resolver = new Resolver\TemplateMapResolver();
     $resolver->setMap(array('layout' => __DIR__ . '/../../../view/layout/email.phtml', 'script' => __DIR__ . '/../../../view/email/user-validate.phtml'));
     $phpRenderer->setResolver($resolver);
     //MAIL
     //	now we want to send this to the user/quest via e-mail
     //	so we try to connect to Queue and send a message
     //	to mail_queue
     try {
         $connection = $this->queueFactory->createConnection();
         $channel = $connection->channel();
         $channel->queue_declare('mail_queue', false, true, false, false);
         foreach ($layout as $child) {
             $child->setOption('has_parent', true);
             $result = $phpRenderer->render($child);
             $child->setOption('has_parent', null);
             $capture = $child->captureTo();
             if (!empty($capture)) {
                 $layout->setVariable($capture, $result);
             }
         }
         $result = new Mail();
         $result->name = $user->name;
         $result->email = $user->email;
         $result->subject = "Stjórnvísi, staðfesting á aðgangi";
         $result->body = $phpRenderer->render($layout);
         $result->test = true;
         $msg = new AMQPMessage($result->serialize(), ['delivery_mode' => 2]);
         $this->logger->info("User validate email to [{$user->email}]");
         $channel->basic_publish($msg, '', 'mail_queue');
     } catch (\Exception $e) {
         throw new NotifyException($e->getMessage(), 0, $e);
     } finally {
         if (isset($channel) && $channel) {
             $channel->close();
         }
         if (isset($connection) && $connection) {
             $connection->close();
         }
         $user = null;
     }
     return $this;
 }