/** * 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); }
/** * 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; }