Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 470 → Rev 471

/trunk/widget/modules/carto/Carto.php
19,8 → 19,9
* @copyright © 2010, Jean-Pascal MILCENT
*/
class Carto extends WidgetCommun {
const limitesCommunalesDossier = "http://www.tela-botanica.org/sites/eflore/generique/images/projets/cel/cartographie";
const LIMITES_COMMUNALES_URL = "http://www.tela-botanica.org/sites/eflore/generique/images/projets/cel/cartographie/%s";
const DS = DIRECTORY_SEPARATOR;
const SERVICE_DEFAUT = 'carte-defaut';
/**
* Méthode appelée avec une requête de type GET.
29,17 → 30,16
$retour = null;
extract($this->parametres);
 
if (isset($carte)) {
$methode = $this->traiterNomMethodeExecuter($carte);
if (method_exists($this, $methode)) {
$retour = $this->$methode();
} else {
$this->messages[] = "Ce type de carte '$methode' n'est pas disponible.";
}
if (!isset($methode)) {
$methode = self::SERVICE_DEFAUT;
}
$methode = $this->traiterNomMethodeExecuter($carte);
if (method_exists($this, $methode)) {
$retour = $this->$methode();
} else {
$this->messages[] = "Vous devez indiquer le type de carte.";
$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
}
 
if (is_null($retour)) {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
66,9 → 66,9
$url_base = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
 
// Création des infos du widget
$widget['type'] = 'widget';
$widget['donnees']['url_json'] = $url_json;
$widget['donnees']['url_base'] = $url_base;
$widget['donnees']['jquery_version'] = '1.4.3';
$widget['squelette'] = 'carte_defaut';
if (isset($dept)) {
75,8 → 75,7
// si on veut afficher les limites départemmentales on va compter et chercher les noms de fichiers
$fichiersKml = $this->chercherFichierKml($dept);
foreach ($fichiersKml as $kml){
$url_limites_communales = sprintf(self::limitesCommunalesDossier, '');
$url_limites_communales .= '/'.$kml;
$url_limites_communales = sprintf(self::LIMITES_COMMUNALES_URL, $kml);
$widget['donnees']['url_limites_communales'][] = $url_limites_communales;
}
}
98,6 → 97,89
closedir($dir);
return $fichier;
}
/**
* Tableau des observations d'une station
*/
public function executerObservations() {
$widget = null;
extract($this->parametres);
$observations = $this->chargerObservation($station);
$commune = $observations['commune'];
unset($observations['commune'])
;
// Création des infos du widget
$widget['donnees']['observations'] = $observations;
$widget['donnees']['station_id'] = $station;
$widget['donnees']['commune'] = $commune;
$widget['squelette'] = $this->choisirFormatSortie(count($observations));
return $widget;
}
private function chargerObservation($station) {
// Récupération des données au format Json
$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], "CelWidgetMap/observations/$station");
$json = $this->getDao()->envoyerRequeteConsultation($url);
$donnees = json_decode($json);
// Post-traitement des données
$observations = $this->traiterObservations($donnees);
return $observations;
}
private function traiterObservations($donnees) {
$observations = array();
if (is_array($donnees) && count($donnees) > 0) {
foreach ($donnees as $donnee) {
$observation = array();
$observation['nn'] = $donnee->num_nom_sel;
$observation['nom'] = $this->nettoyerTexte($donnee->nom_sel);
$observation['date'] = $this->traiterDate($donnee->date_observation);
$observation['lieu'] = $this->traiterLieu($donnee);
$observation['observateur'] = $this->tronquerCourriel($donnee->identifiant);
$observations[] = $observation;
$observations['commune'] = $this->nettoyerTexte($donnee->location);
}
}
return $observations;
}
private function traiterDate($date) {
$date_timestamp = strtotime($date);
$date_traitee = strftime('%d/%m/%Y', $date_timestamp);
return $date_traitee;
}
private function traiterLieu($donnee) {
$lieu = array();
if (isset($donnee->location) && ! empty($donnee->location)) {
$lieu[] = $donnee->location;
}
if (isset($donnee->lieudit) && ! empty($donnee->lieudit)) {
$lieu[] = $donnee->lieudit;
}
if (isset($donnee->milieu) && ! empty($donnee->milieu)) {
$lieu[] = $donnee->milieu;
}
return implode(', ', $lieu);
}
private function choisirFormatSortie($observations_nbre) {
extract($this->parametres);
$sortie = 'obs_tableau';
if (isset($format)) {
$sortie = ($format == 'tableau' ) ? 'obs_tableau' : 'obs_liste';
} else {
$sortie = ($observations_nbre > 4) ? 'obs_tableau' : 'obs_liste';
}
return $sortie;
}
}