19,9 → 19,8 |
* @copyright © 2010, Jean-Pascal MILCENT |
*/ |
class Carto extends WidgetCommun { |
const LIMITES_COMMUNALES_URL = "http://www.tela-botanica.org/sites/eflore/generique/images/projets/cel/cartographie/%s"; |
const limitesCommunalesDossier = "http://www.tela-botanica.org/sites/eflore/generique/images/projets/cel/cartographie"; |
const DS = DIRECTORY_SEPARATOR; |
const SERVICE_DEFAUT = 'carte-defaut'; |
|
/** |
* Méthode appelée avec une requête de type GET. |
30,16 → 29,17 |
$retour = null; |
extract($this->parametres); |
|
if (!isset($methode)) { |
$methode = self::SERVICE_DEFAUT; |
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."; |
} |
} else { |
$this->messages[] = "Vous devez indiquer le type de carte."; |
} |
|
$methode = $this->traiterNomMethodeExecuter($carte); |
if (method_exists($this, $methode)) { |
$retour = $this->$methode(); |
} else { |
$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,7 → 75,8 |
// 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::LIMITES_COMMUNALES_URL, $kml); |
$url_limites_communales = sprintf(self::limitesCommunalesDossier, ''); |
$url_limites_communales .= '/'.$kml; |
$widget['donnees']['url_limites_communales'][] = $url_limites_communales; |
} |
} |
97,89 → 98,6 |
|
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; |
} |
|
} |