/**
  * W momencie zapisu lokalizacji do bazy – wysyła się e-mail na stały adres administratora
  * serwisu z powiadomieniem o dodaniu nowej lokalizacji (nazwa miejsca + link do strony na froncie serwisu)
  *
  * @param Entity\Location $location
  */
 public function sendNotificationMail(Entity\Location $location)
 {
     /**
      * dane do wysylanego maila z potwierdzeniem, zdefiniowane w module.config.php
      */
     $config = $this->getServiceManager()->get('Config')['configuration']['location_mail_notification'];
     /* blokada wysylania maila (do testow) */
     if (false === $config['send_notification_mail']) {
         return false;
     }
     $uri = $this->getServiceManager()->get('request')->getUri();
     /* @var $uri \Zend\Uri\Http */
     $route = $this->getServiceManager()->get('router')->getRoute('location-details');
     /* @var $route \Zend\Mvc\Router\Http\Segment */
     /**
      * link do nowej lokalizacji
      */
     $base = sprintf('%s://%s', $uri->getScheme(), $uri->getHost());
     $url = $route->assemble(array('id' => $location->getId()));
     $mailConfig = (object) $config['message_config'];
     $html = strtr($mailConfig->message, array('%name%' => $location->getName(), '%link%' => $base . $url));
     $message = new Mime\Message();
     $message->setParts(array((new Mime\Part($html))->setType('text/html')));
     $mail = new Mail\Message();
     $mail->setBody($message)->setFrom($mailConfig->from_email, $mailConfig->from_name)->addTo($mailConfig->to_email, $mailConfig->to_name)->setSubject($mailConfig->subject);
     $transport = new Mail\Transport\Smtp(new Mail\Transport\SmtpOptions($config['smtp_config']));
     $transport->send($mail);
 }
Example #2
0
 /**
  * ustawia wspolrzedne geograficzne dla lokalizacji
  *
  * @param Entity\Location $location
  * @return Entity\Location
  */
 public function setCoordinates(Entity\Location $location)
 {
     $location->getAddress();
     $client = new Http\Client('http://maps.googleapis.com/maps/api/geocode/json');
     $client->setParameterGet(array('address' => $location->getAddress()));
     $client->send();
     $response = json_decode($client->getResponse()->getBody());
     /**
      * w wymaganiach nie ma obslugi przypadkow uzycia
      * - zapisuje lokalizacje pierwszego 'dopasowanego' przez google adresu
      *
      */
     if ($response->status === 'OK' && !empty($results = $response->results[0])) {
         $location->setLatitude($results->geometry->location->lat)->setLongitude($results->geometry->location->lng);
     }
     return $location;
 }