extranet/application/controllers/GeolocalisationController.php
2011-12-07 15:49:05 +00:00

176 lines
6.3 KiB
PHP

<?php
require_once ('geoLocalisation/geoLocalisation.lib.php');
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()
{
$user = new Utilisateur();
if ($user->checkPref('mappy'))
{
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);
} else {
$this->view->assign('disable', true);
}
}
/**********************************************************************************/
/* 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($_SERVER['SERVER_NAME']);
$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);
}
}