Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 320 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
31 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe de gestion des observations.
5
 *
6
 * @package     ODS_saisie
7
 * @category    Php 5.2
8
 * @author      Aurélien Peronnet <aurelien@tela-botanica.org>
9
 * @copyright   2010 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version     SVN: $Id: Fiche.php 152 2010-09-06 16:19:12Z jpm $
13
 */
14
class Observation extends aControleur {
320 aurelien 15
 
31 aurelien 16
	private $id_observation_en_cours = null;
320 aurelien 17
 
31 aurelien 18
    public function __construct()  {
320 aurelien 19
 
31 aurelien 20
		parent::__construct();
21
        $this->initialiser();
22
    }
320 aurelien 23
 
31 aurelien 24
    public function initialiser() {
320 aurelien 25
 
70 aurelien 26
    	if(isset($_GET['$id_observation'])) {
27
    		$this->id_observation_en_cours = $_GET['id_observation'];
28
    	}
43 aurelien 29
    	$this->setNavigation();
31 aurelien 30
    }
320 aurelien 31
 
31 aurelien 32
    public function executerActionParDefaut() {
33
    	return $this->afficherFormulaireAjoutIndividu();
34
    }
320 aurelien 35
 
36
 
31 aurelien 37
    public function afficherFormulaireAjoutObservation($id_individu) {
38
    	$donnees = array();
39
    	$formulaire = $this->getVue('formulaires/observation_saisie',$donnees);
320 aurelien 40
    	$this->setSortie(self::RENDU_CORPS, $formulaire);
31 aurelien 41
    }
320 aurelien 42
 
31 aurelien 43
    public function afficherFormulaireModificationObservation() {
320 aurelien 44
 
31 aurelien 45
    	$id_individu_a_modifier_observation = $_GET['id_individu'];
320 aurelien 46
 
31 aurelien 47
    	$id_espece = $_GET['id_espece'];
48
    	$id_station = $_GET['id_station'];
320 aurelien 49
 
31 aurelien 50
    	$id_utilisateur = AppControleur::getUtilisateur()->getIdentifiantNumerique();
320 aurelien 51
 
31 aurelien 52
    	$espece = new Espece();
53
    	$evenements = $espece->getListeEvenementPourEspece($id_espece);
320 aurelien 54
 
31 aurelien 55
    	$station = new Station();
320 aurelien 56
 
43 aurelien 57
    	$individus = $station->getIndividusStationPourEspece($id_station,$id_espece);
31 aurelien 58
    	foreach($individus as &$individu) {
320 aurelien 59
 
31 aurelien 60
    		$observation = new Observation();
44 aurelien 61
    		$individu['observations'] = $observation->getListeObservationsPourIndividu($individu['id_individu']);
70 aurelien 62
    		$individu['url'] = Liens::getUrlConsultationFicheIndividu($id_station,$id_espece, $individu['id_individu']);
320 aurelien 63
 
31 aurelien 64
    	}
320 aurelien 65
 
31 aurelien 66
    	$donnees['evenements'] = $evenements;
44 aurelien 67
    	$donnees['stades'] = $this->aplatirListeEvenementHierachiseeEnListeParStades($evenements);
31 aurelien 68
    	$donnees['individus'] = $individus;
69
    	$donnees['id_station'] = $_GET['id_station'];
70
    	$donnees['id_espece'] = $_GET['id_espece'];
320 aurelien 71
 
44 aurelien 72
    	if(isset($_GET['annee'])) {
73
    		$donnees['annee'] = $_GET['annee'];
74
    	} else {
75
    		$donnees['annee'] = date('Y');
76
    	}
320 aurelien 77
 
31 aurelien 78
    	$donnees['id_individu_a_modifier_observation'] = $id_individu_a_modifier_observation;
79
 
80
        $this->setSortie(self::RENDU_CORPS, $this->getVue('formulaires/evenement_modification', $donnees));
81
    }
320 aurelien 82
 
31 aurelien 83
    // +---------------------------------------------------------------------------------------------------------------+
320 aurelien 84
    // METHODES POUR FABRIQUER LE MENU
43 aurelien 85
    public function setNavigation() {
320 aurelien 86
 
43 aurelien 87
    	$station = new Station();
88
    	$this->setSortie(self::RENDU_NAVIGATION, $station->construireMenuNavigation());
89
    }
320 aurelien 90
 
43 aurelien 91
    // +---------------------------------------------------------------------------------------------------------------+
31 aurelien 92
    // METHODES APPELEES LORS DE LA VALIDATION D'UN FORMULAIRE
93
    public function validerFormulaireAjoutObservation() {
320 aurelien 94
 
43 aurelien 95
    	$valeurs_formulaires = $_POST;
320 aurelien 96
 
31 aurelien 97
    	$valeurs_verifiees = array();
320 aurelien 98
 
31 aurelien 99
    	$observation_dao = new ObservationDao();
100
    	$observation_dao->ajouterObservation($valeurs_verifiees);
320 aurelien 101
 
31 aurelien 102
    }
320 aurelien 103
 
31 aurelien 104
    public function validerFormulaireModificationObservation() {
320 aurelien 105
 
44 aurelien 106
    	$valeurs_verifiees = $this->collecterValeursFormulaireModificationObservation();
320 aurelien 107
 
44 aurelien 108
    	$observation_dao = new ObservationDao();
109
    	$observation_dao->modifierObservation($valeurs_verifiees['id_individu'], $valeurs_verifiees);
320 aurelien 110
 
44 aurelien 111
    	$individu = new Individu();
320 aurelien 112
 
44 aurelien 113
    	$this->setSortie(self::RENDU_CORPS, $individu->getListeIndividu());
320 aurelien 114
 
44 aurelien 115
    }
320 aurelien 116
 
63 aurelien 117
	public function validerFormulaireModificationObservationAjax() {
320 aurelien 118
 
63 aurelien 119
    	$valeurs_verifiees = $this->collecterValeursFormulaireModificationObservation();
320 aurelien 120
 
63 aurelien 121
    	$observation_dao = new ObservationDao();
320 aurelien 122
    	$data = $observation_dao->modifierObservation($valeurs_verifiees['id_individu'],$valeurs_verifiees);
63 aurelien 123
 
320 aurelien 124
    	$retour = array('reponse' => 'OK', 'data' => $data);
125
 
83 aurelien 126
    	header('Content-type: text/json');
63 aurelien 127
        echo json_encode($retour);
128
        exit;
129
    }
320 aurelien 130
 
44 aurelien 131
	private function collecterValeursFormulaireModificationObservation() {
320 aurelien 132
 
133
		  $valeurs_verifiees = array();
134
 
44 aurelien 135
    	$valeurs_verifiees['id_individu'] = $_POST['id_individu'];
136
	    $valeurs_verifiees['annee_en_cours'] =  $_POST['annee_en_cours'];
320 aurelien 137
 
138
      $valeurs_verifiees['id_evenement'] =  $_POST['id_evenement'];
139
      $valeurs_verifiees['date_evenement'] =  $_POST['date_evenement'];
140
 
141
      if(!empty($_POST['id_observation'])) {
142
        $valeurs_verifiees['id_observation'] =  $_POST['id_observation'];
143
      }
144
 
324 aurelien 145
			if(!empty($_POST['absence_observation'])) {
146
				$valeurs_verifiees['absence_observation'] =  $_POST['absence_observation'];
147
			}
148
 
44 aurelien 149
	    return $valeurs_verifiees;
31 aurelien 150
    }
320 aurelien 151
 
31 aurelien 152
    // +---------------------------------------------------------------------------------------------------------------+
320 aurelien 153
    // METHODES DE RECHERCHE DE DONNEES
31 aurelien 154
    public function getListeObservationsPourIndividu($id_individu, $annee = null) {
320 aurelien 155
 
31 aurelien 156
    	$observation_dao = new ObservationDao();
157
    	$observations_pour_individu = $observation_dao->getListeObservationsPourIndividu($id_individu, $annee);
320 aurelien 158
 
31 aurelien 159
    	return $observations_pour_individu;
160
    }
320 aurelien 161
 
162
 
44 aurelien 163
    private function aplatirListeEvenementHierachiseeEnListeParStades($liste_evenements_hierarchisee) {
320 aurelien 164
 
44 aurelien 165
    	$liste_evenements_plate_par_stade = array();
320 aurelien 166
 
44 aurelien 167
    	foreach($liste_evenements_hierarchisee as $evenement_hierarchise) {
168
    		foreach($evenement_hierarchise['stades'] as $id_stade => $stade) {
169
    			$liste_evenements_plate_par_stade[$id_stade] = $stade;
170
    		}
171
    	}
320 aurelien 172
 
44 aurelien 173
    	return $liste_evenements_plate_par_stade;
174
    }
320 aurelien 175
 
44 aurelien 176
    // +---------------------------------------------------------------------------------------------------------------+
177
    // METHODES UTILITAIRES STATIQUES (UTILES POUR LES FORMULAIRES)
178
    public static function individuAObservationValidePourStade($individu, $annee, $evenement, $id_stade) {
320 aurelien 179
 
44 aurelien 180
    	return (isset($individu['observations'][$annee][$evenement][$id_stade]) && trim($individu['observations'][$annee][$evenement][$id_stade]) != '');
181
    }
320 aurelien 182
 
44 aurelien 183
    public static function renvoyerObservationStadePourIndividu($individu, $annee, $evenement, $id_stade) {
320 aurelien 184
 
44 aurelien 185
    	if(self::individuAObservationValidePourStade($individu, $annee, $evenement, $id_stade)) {
186
    		return $individu['observations'][$annee][$evenement][$id_stade];
187
    	}
320 aurelien 188
 
44 aurelien 189
    	return '';
320 aurelien 190
    }
70 aurelien 191
}
320 aurelien 192
?>