* @copyright 2010 Tela-Botanica * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL * @version SVN: $Id: Fiche.php 152 2010-09-06 16:19:12Z jpm $ */ class Station extends aControleur { private $id_station_en_cours = null; public function __construct() { parent::__construct(); $this->initialiser(); } public function initialiser() { if(isset($_GET['id_station'])) { $this->id_station_en_cours = $_GET['id_station']; } $this->setNavigation(); } public function executerActionParDefaut() { return $this->afficherFormulaireSaisieStation(); } // +---------------------------------------------------------------------------------------------------------------+ // METHODES D'AFFICHAGE DE FORMULAIRE public function afficherFormulaireSaisieStation($donnees = array()) { if($donnees == array()) { $donnees['station_commune'] = ''; $donnees['station_milieu'] = ''; $donnees['station_nom'] = ''; $donnees['station_lat'] = ''; $donnees['station_lon'] = ''; $donnees['station_alt'] = ''; $donnees['station_code_insee'] = ''; } $donnees['milieux'] = $this->getListeMilieux(); $donnees['corps_formulaire_saisie_modif'] = $this->getVue('formulaires/station_saisie_modification',$donnees); $formulaire = $this->getVue('formulaires/station_saisie',$donnees); $this->setSortie(self::RENDU_CORPS, $formulaire); } public function afficherFormulaireModificationStation($donnees = array()) { $id_station = $this->id_station_en_cours; if(empty($donnees)) { $infos_station = $this->getInformationsStation($id_station); $donnees['station_commune'] = $infos_station['commune']; $donnees['station_milieu'] = $infos_station['milieu']; $donnees['station_nom'] = $infos_station['nom']; $donnees['station_lat'] = $infos_station['latitude']; $donnees['station_lon'] = $infos_station['longitude']; $donnees['station_alt'] = $infos_station['altitude']; $donnees['station_code_insee'] = $infos_station['code_insee']; } $donnees['id_station'] = $id_station; $donnees['milieux'] = $this->getListeMilieux(); $donnees['corps_formulaire_saisie_modif'] = $this->getVue('formulaires/station_saisie_modification',$donnees); $formulaire = $this->getVue('formulaires/station_modification',$donnees); $this->setSortie(self::RENDU_CORPS, $formulaire); } // +---------------------------------------------------------------------------------------------------------------+ // METHODES APPELEES LORS DE LA VALIDATION D'UN FORMULAIRE public function validerFormulaireSaisieStation() { $valeurs_collectees = $this->collecterValeursFormulaireSaisieStation(); $verification_ou_erreurs = $this->verifierValeursStation($valeurs_collectees); if($verification_ou_erreurs !== true) { $donnees = $valeurs_collectees; $donnees['erreurs'] = $verification_ou_erreurs; $this->afficherFormulaireSaisieStation($donnees); return; } $valeurs_verifiees = $valeurs_collectees; $station_dao = new StationDao(); $retour_ajout_station = $station_dao->ajouterStation($valeurs_verifiees); if($id_nouvelle_station = $this->renvoyerIdSiAjoutStationEffectue($retour_ajout_station)) { $this->id_station_en_cours = $id_nouvelle_station; $this->afficherInformationsStation(); $this->setNavigation(); } } private function renvoyerIdSiAjoutStationEffectue($donnees_retour_dao) { if(isset($donnees_retour_dao['id_nouvelle_station'])) { return $donnees_retour_dao['id_nouvelle_station']; } return false; } private function collecterValeursFormulaireSaisieStation() { $valeurs_collectees['station_commune'] = $_POST['station_commune']; $valeurs_collectees['station_milieu'] = $_POST['station_milieu']; $valeurs_collectees['station_nom'] = $_POST['station_nom']; $valeurs_collectees['station_lat'] = $_POST['station_lat']; $valeurs_collectees['station_lon'] = $_POST['station_lon']; $valeurs_collectees['station_alt'] = $_POST['station_alt']; // à voir de ce que l'on fait de ce champs qui avait été prévu mais jamais utilisé //$valeurs_collectees['station_description'] = $_POST['station_description']; $valeurs_collectees['station_code_insee'] = $_POST['station_code_insee']; return $valeurs_collectees; } private function collecterValeursFormulaireModificationStation() { $valeurs_collectees = $this->collecterValeursFormulaireSaisieStation(); $valeurs_collectees['id_station'] = $_POST['id_station']; return $valeurs_collectees; } private function verifierValeursStation($valeurs_a_verifier) { $erreurs = array(); foreach($valeurs_a_verifier as $champ => $valeur) { if(trim($valeur) == '') { $erreurs[$champ] .= ' Ce champ ne peut pas être vide.'; } if($champ == 'station_code_insee' && !$this->estUnCodeInseeOuUnNumDpt($valeur)) { $erreurs[$champ] .= ' La valeur de ce champ doit être un numéro de département sur 2 chiffres '. 'ou un code INSEE sur 5 chiffres'; } } if(!empty($erreurs)) { return $erreurs; } return true; } private function estUnCodeInseeOuUnNumDpt($code) { $lg = strlen($code); return trim($code) != '' && is_numeric($code) && ($lg == 2 || $lg == 5); } public function validerFormulaireModificationStation() { $valeurs_collectees = $this->collecterValeursFormulaireModificationStation(); $verification_ou_erreurs = $this->verifierValeursStation($valeurs_collectees); if($verification_ou_erreurs !== true) { $donnees = $valeurs_collectees; $donnees['erreurs'] = $verification_ou_erreurs; $this->afficherFormulaireModificationStation($donnees); return; } $station_dao = new StationDao(); $retour_modification = $station_dao->modifierStation($valeurs_collectees['id_station'], $valeurs_collectees); if($retour_modification) { $this->afficherInformationsStation(); $this->setNavigation(); } } public function supprimerStation() { $id_station_a_supprimer = $_POST['id_station_a_supprimer']; $individus_station = $this->getIndividusStation($id_station_a_supprimer); if(count($individus_station) > 0) { $donnees = array(); $donnees['erreurs'] = 'Impossible de supprimer une station qui contient des données'; $this->id_station_en_cours = $id_station_a_supprimer; $this->afficherInformationsStation($donnees); } else { $station_dao = new StationDao(); $retour_suppression = $station_dao->supprimerStation($id_station_a_supprimer); $this->setNavigation(); $this->executerActionParDefaut(); } } // +---------------------------------------------------------------------------------------------------------------+ // METHODES D'AFFICHAGES D'INFORMATION public function afficherlisteStation($param = null) { $id_utilisateur = AppControleur::getIdUtilisateur(); $donnees['stations'] = $this->getListeStations($id_utilisateur); $this->setSortie(self::RENDU_CORPS, $this->getVue('listes/station_liste', $donnees)); } public function getFicheInformationsStation($donnees = array()) { $id_station = $this->id_station_en_cours; $donnees['id_station'] = $id_station; $donnees['infos_station'] = $this->getInformationsStation($id_station); $donnees['milieux'] = $this->getListeMilieux(); return $this->getVue('fiches/station_fiche', $donnees); } public function afficherInformationsStation($donnees = array()) { $infos_station = $this->getFicheInformationsStation($donnees); $this->setSortie(self::RENDU_CORPS, $infos_station); } // +---------------------------------------------------------------------------------------------------------------+ // METHODES POUR FABRIQUER LE MENU public function construireMenuNavigation($id_espece_en_cours = null) { $id_station_en_cours = $this->id_station_en_cours; if(isset($_GET['id_espece'])) { $id_espece_en_cours = $_GET['id_espece']; } $stations = $this->getListeStations(); foreach($stations as &$station) { $station['url'] = Liens::getUrlConsultationFicheStation($station['id']); } if($id_station_en_cours != null && $id_station_en_cours != 'saisie') { $especes_station_en_cours = $this->getEspecesStation($id_station_en_cours); foreach($especes_station_en_cours as &$espece) { $espece['url'] = Liens::getUrlConsultationEspeceStation($id_station_en_cours, $espece['id_espece']); } $stations[$id_station_en_cours]['especes'] = $especes_station_en_cours; } $donnees['stations'] = $stations; $donnees['id_station_en_cours'] = $id_station_en_cours; $donnees['id_espece_en_cours'] = $id_espece_en_cours; $menu_navigation = $this->getVue('navigation/menu', $donnees); return $menu_navigation; } public function setNavigation() { $this->setSortie(self::RENDU_NAVIGATION, $this->construireMenuNavigation()); } // +---------------------------------------------------------------------------------------------------------------+ // METHODE D'APPELS AUX DAOS protected function getListeStations() { $station_dao = new StationDao(); return $station_dao->getListeStations(); } private function getInformationsStation($id_station) { $station_dao = new StationDao(); $infos_station = $station_dao->getInformationsStation($id_station); $infos_station['individus'] = $this->getIndividusStation($id_station); return $infos_station; } private function getEspecesStation($id_station) { $espece_dao = new EspeceDao(); $liste_especes = $espece_dao->getListeEspecesPourStation($id_station); return $liste_especes; } public function getIndividusStation($id_station) { $individu_dao = new IndividuDao(); $liste_individus = $individu_dao->getListeIndividusPourStation($id_station); return $liste_individus; } public function getIndividusStationPourEspece($id_station,$id_espece) { $individu_dao = new IndividuDao(); $liste_individus = $individu_dao->getListeIndividusPourStationPourEspece($id_station, $id_espece); return $liste_individus; } public function getListeMilieux() { $triple_dao = new TripleDao(); $liste_milieux = $triple_dao->getListeMilieux(); return $liste_milieux; } } ?>