Rev 210 | Rev 313 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php
// declare(encoding='UTF-8');
/**
* Classe de test des Controleurs.
*
* @package Collection
* @category Php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @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_id'] = $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['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['station_id'] = $_POST['station_id'];
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($verification_ou_erreurs['station_id'],$verification_ou_erreurs);
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;
}
}
?>