177 lines
6.3 KiB
PHP
177 lines
6.3 KiB
PHP
<?php
|
|
require_once ('geoLocalisation/geoLocalisation.lib.php');
|
|
|
|
/**
|
|
* Controller de geolocalisation pour les fiches identités et fiche etablissement.
|
|
*
|
|
* @author Lasserre Damien
|
|
*
|
|
*/
|
|
Class geolocalisationController extends Zend_Controller_Action
|
|
{
|
|
private $mappyVille;
|
|
private $mappyLogin = array(); // Utiliser les setter pour setter les valeurs !
|
|
|
|
public function init()
|
|
{
|
|
$this->view->headScript()
|
|
->appendFile('/themes/default/scripts/geolocalisation.js', 'text/javascript');
|
|
$this->view->headLink()
|
|
->appendStylesheet('/themes/default/styles/geolocalisation.css', 'all');
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
/* Liste des établissements */
|
|
/**********************************************************************************/
|
|
|
|
/**
|
|
* Genere une sorte d'iframe pour la page liste des etablissements.
|
|
*/
|
|
public function iframeAction()
|
|
{
|
|
$listeEtablissement = $this->getRequest()->getParam('listeEtablissement');
|
|
|
|
$this->view->assign('listeEtablissement', $listeEtablissement);
|
|
}
|
|
|
|
/**
|
|
* Fonction complémentaire de iframe.
|
|
*/
|
|
public function geolistejavascriptAction()
|
|
{
|
|
$valeur = array();
|
|
$listeEtablissement = $this->getRequest()->getParam('listeEtablissement');
|
|
$geoLocalisation = new geoLocalisationLib($listeEtablissement, $valeur);
|
|
$this->view->assign('geoInformations', $valeur);
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
/* Photo sur fiche identité */
|
|
/**********************************************************************************/
|
|
|
|
/**
|
|
* Netoye l'adresse des espace et des arrondissement pour paris etc... exemple "PARIS 16" devient "Paris"
|
|
* @param unknown_type $ville
|
|
*/
|
|
private function cleanAdress($ville)
|
|
{
|
|
$ville = ' '.trim(preg_replace('/([0-9]|ARRONDISSEMENT|_)/i', ' ', $ville)).' ';
|
|
$ville = trim(strtr($ville, array(' EME ' => '', ' ER ' => '')));
|
|
return (ucwords(strtolower($ville)));
|
|
}
|
|
|
|
/**
|
|
* Affiche la bonne photo celon si deisponnible chez Mappy sinon ont interoge google.
|
|
*/
|
|
public function geophotoAction()
|
|
{
|
|
self::initMappy();
|
|
$infos = $this->getRequest()->getParam('infos');
|
|
$ville = self::cleanAdress($infos->Ville);
|
|
|
|
if (in_array($ville, $this->mappyVille)) {
|
|
$source = 'mappy';
|
|
$token = self::mappyPhoto();
|
|
$this->view->assign('token', $token);
|
|
$this->view->assign('AdresseNum',$infos->AdresseNum);
|
|
$this->view->assign('AdresseRue', $infos->AdresseRue);
|
|
$this->view->assign('AdresseVille', $infos->Ville);
|
|
}
|
|
else {
|
|
$source = 'google';
|
|
self::googlePhoto();
|
|
}
|
|
|
|
$this->view->assign('source', $source);
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
/* Mappy sur fiche identité */
|
|
/**********************************************************************************/
|
|
public function setMappyLogin($login)
|
|
{
|
|
$this->mappyLogin['login'] = $login;
|
|
}
|
|
|
|
public function setMappyPassword($password)
|
|
{
|
|
$this->mappyLogin['password'] = $password;
|
|
}
|
|
|
|
/**
|
|
* Initialisation des villes disponnible chez mappy
|
|
*/
|
|
private function initMappy()
|
|
{
|
|
self::setMappyLogin('scoresdecisions');
|
|
self::setMappyPassword('g1nq3iKv');
|
|
|
|
$this->mappyVille = array(
|
|
'Bordeaux', 'Caen' , 'Cannes',
|
|
'Grenoble', 'La Baule', 'Lille',
|
|
'Lyon', 'Marseille', 'Montpellier',
|
|
'Nancy', 'Nantes', 'Nice',
|
|
'Rennes', 'Strasbourg', 'Toulouse',
|
|
'Asnières-sur-Seine', 'Boulogne-Billancourt', 'Courbevoie',
|
|
'Issy-les-Moulineaux', 'Levallois-Perret',
|
|
'Montrouge', 'Nanterre', 'Neuilly-sur-Seine',
|
|
'Rueil-Malmaison', 'Sèvres', 'Versailles',
|
|
'Paris'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Génère le toker pour mappy.
|
|
*/
|
|
private function getToken()
|
|
{
|
|
$ACCESSOR_URL = 'http://axe.mappy.com/1v1/';
|
|
$timestamp = time();
|
|
$hash = md5($this->mappyLogin['login']."@".$this->mappyLogin['password']."@".$timestamp);
|
|
$preToken = $this->mappyLogin['login']."@".$timestamp."@".$hash;
|
|
$urlGetToken = $ACCESSOR_URL . 'token/generate.aspx?auth=' . urlencode($preToken) . '&ip=' . urlencode($_SERVER["REMOTE_ADDR"]);
|
|
$fh = @fopen($urlGetToken, 'rb');
|
|
|
|
if ($fh == false) return false;
|
|
$token = '';
|
|
while (!feof($fh))$token .= fread($fh, 8192);
|
|
fclose($fh);
|
|
return ($token);
|
|
}
|
|
|
|
/**
|
|
* Apelle le token
|
|
*/
|
|
public function mappyPhoto()
|
|
{
|
|
if(!($token = self::getToken())) {
|
|
echo 'Impossible de recuperer le Token !';
|
|
}
|
|
return($token);
|
|
}
|
|
|
|
/**********************************************************************************/
|
|
/* Google sur fiche identité */
|
|
/**********************************************************************************/
|
|
|
|
/**
|
|
* Genere le code pour l'image google.
|
|
*/
|
|
public function googlePhoto()
|
|
{
|
|
$googleKey = geoLocalisationLib::getGoogleKey('extranet.sd.dev');
|
|
$adress = array();
|
|
$request = $this->getRequest();
|
|
$info = $request->getParam('infos');
|
|
$google_map = 'http://maps.google.fr/maps?f=q&hl=fr&geocode=&q='.
|
|
$info->AdresseNum.',+'.
|
|
urlencode($info->AdresseVoie).'+'.
|
|
urlencode(htmlspecialchars_decode($info->AdresseRue, ENT_QUOTES)).
|
|
',+'.$info->CP.'+'.
|
|
urlencode($info->Ville);
|
|
|
|
$this->view->assign('infos', $info);
|
|
$this->view->assign('google_map_link', $google_map);
|
|
$this->view->assign('googleKey', $googleKey);
|
|
}
|
|
} |