Subversion Repositories eFlore/Applications.coel-consultation

Compare Revisions

Ignore whitespace Rev 30 → Rev 29

/trunk/controleurs/Carte.php
29,26 → 29,24
public function cartographier() {
// Initialisation de variable
$donnees = array();
$structureDao = $this->getModele('StructureDao');
// Construction des données à passer à la cartographie
$zones = $this->chargerZonesGeo(Config::get('carte_base_nom'));
$zones_infos = $structureDao->getStructureParZoneGeo('FRD');
$zones = $this->chargerZonesNbre($zones, $zones_infos);
$zones = $this->chargerZonesUrls($zones);
Debug::printr($zones);
// Création de la carte
$options = array(
'carte_nom' => 'col_str_dep',
'formule' => Cartographie::FORMULE_PROPORTIONNEL,
'couleur_claire' => Config::get('carte_couleur_claire'),
'couleur_foncee' => Config::get('carte_couleur_foncee'),
'carte_nom' => 'france',
'formule' => Cartographie::FORMULE_PROPORTIONNEL,
'fond_fichier' => Config::get('carte_base_nom'),
'fond_dossier' => Application::getChemin().Config::get('carte_fonds_chemin'),
'stock_dossier' => Config::get('carte_sotckage_chemin'),
'stock_url' => Config::get('carte_sotckage_url'),
'debug' => Config::get('carte_mode_debug'));
'fond_dossier' => Application::getChemin().Config::get('carte_chemin_fonds'),
'stock_dossier' => Config::get('carte_chemin_sotckage'),
'infos' => $zones);
$cartographie = Composant::fabrique('cartographie', $options);
// Construction des données nécessaires à la cartographie
$zones = $cartographie->getCarteZones();
$this->chargerZonesNbre($zones);
$this->chargerZonesUrls($zones);
$cartographie->setCarteZones($zones);
//Debug::printr($zones);
$cartographie->creerCarte();
$donnees['map'] = $cartographie->getImageMap();
56,28 → 54,53
$this->setSortie(self::RENDU_CORPS, $resultat);
}
private function chargerZonesNbre(&$zones) {
$structureDao = $this->getModele('StructureDao');
$zones_infos = $structureDao->getStructureParZoneGeo('FRD');
private function chargerZonesNbre($zones, $zones_infos) {
foreach ($zones as $id => &$infos) {
if (isset($zones_infos[$id])) {
$nbre = $zones_infos[$id];
$infos['info_nombre'] = $nbre;
$infos['info_nbre'] = $nbre;
} else {
$infos['info_nombre'] = 0;
$infos['info_nbre'] = 0;
}
}
return $zones;
}
private function chargerZonesUrls(&$zones) {
private function chargerZonesUrls($zones) {
$this->url->setVariableRequete('module', 'Recherche');
$this->url->setVariableRequete('action', 'rechercher');
$this->url->setVariableRequete('recherche', 'str-d:%s');
$this->url->setVariableRequete('recherche', 'd:%s');
$url = $this->url->getURL();
foreach ($zones as $id => &$infos) {
$infos['url'] = sprintf($url, $id);
}
$this->url->unsetVariablesRequete(array('module', 'action', 'recherche'));
return $zones;
}
/**
* Charge le fichier csv des zones géographique de la carte
*/
private function chargerZonesGeo($nom_carte) {
$fichier_csv = Application::getChemin().Config::get('carte_chemin_fonds').$nom_carte.'.csv';
$zones = array();
if (($handle = fopen($fichier_csv, 'r')) !== false) {
$ligne = 1;
$cles = array();
while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
$cle = array_shift($donnees);
if ($ligne == 1) {
// Ligne 1 : les noms des champs
$cles = $donnees;
} else {
// Ligne > 1 : traitements des données
$zones[$cle] = array_combine($cles, $donnees);
}
$ligne++;
}
fclose($handle);
}
return $zones;
}
}
?>