Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev Author Line No. Line
31 aurelien 1
<?php
2
 
3
class OdsIndividu extends JRestService {
4
 
33 aurelien 5
	const PREFIXE = 'get';
324 aurelien 6
 
31 aurelien 7
	/**
8
     * Méthode appelée avec une requête de type GET.
9
     *
10
     */
11
    function getElement($param = array()) {
324 aurelien 12
 
33 aurelien 13
    	$type = $param[0];
324 aurelien 14
 
33 aurelien 15
    	if ($type == '*' || is_numeric($type)) {
16
            $info = $this->getElementParDefaut($param);
17
        } else {
18
            $methode = self::PREFIXE.$type;
19
            if (method_exists($this, $methode)) {
20
                array_shift($param);
21
                $info = $this->$methode($param);
22
            } else {
23
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
24
            }
25
        }
324 aurelien 26
 
31 aurelien 27
        // Envoi sur la sortie standard
28
        $this->envoyer($info);
29
    }
324 aurelien 30
 
31 aurelien 31
    /**
32
     * Méthode appelée pour ajouter un élément.
33
     */
34
    public function createElement($params) {
324 aurelien 35
 
36
      $elements_requis = array('id_participant','id_espece','id_station','individu_nom');
37
 
33 aurelien 38
    	foreach($elements_requis as $requis) {
39
    		if(!isset($params[$requis])) {
324 aurelien 40
					//TODO: pourquoi est-ce que c'est commenté ça ?
33 aurelien 41
    			//$erreurs[$requis] = 'erreur ';
42
    		}
43
    	}
324 aurelien 44
 
33 aurelien 45
    	if(!empty($erreurs)) {
46
    		$this->envoyer($erreurs);
47
    	}
324 aurelien 48
 
49
			// commentaire optionnel
50
			$commentaire = !empty($params['individu_commentaire']) ? $params['individu_commentaire'] : '';
51
			// limité à 1000 caractères (pas besoin de renvoyer une erreur ici car c'est un cas très peu fréquent)
52
			$commentaire = substr($commentaire, 0, 1000);
53
 
33 aurelien 54
    	$requete_creation_individu = 'INSERT INTO ods_individus '.
324 aurelien 55
					'(oi_ce_espece, oi_ce_station, oi_nom, oi_commentaire) '.
33 aurelien 56
					'VALUES ('.
57
							$this->proteger($params['id_espece']).','.
324 aurelien 58
							$this->proteger($params['id_station']).','.
59
							$this->proteger($params['individu_nom']).','.
60
							$this->proteger($commentaire).')';
61
			$creation_individu = $this->executerRequeteSimple($requete_creation_individu);
62
 
63
 
46 aurelien 64
    	if(!$creation_individu) {
65
    		$retour['erreurs'] = 'erreur d\'insertion';
66
    	} else {
67
    		$retour['id_nouvel_individu'] = $this->renvoyerDernierIdInsere();
33 aurelien 68
    	}
324 aurelien 69
 
46 aurelien 70
    	$this->envoyer($retour);
31 aurelien 71
    }
324 aurelien 72
 
31 aurelien 73
    /**
74
     * Méthode appelée pour mettre à jour un élément
75
     */
76
    public function updateElement($uid, $params)    {
324 aurelien 77
 
78
      if(isset($uid[0])) {
210 aurelien 79
    		$id_individu = $uid[0];
80
    	} else {
81
    		return;
82
    	}
324 aurelien 83
 
84
			// commentaire optionnel
85
			$commentaire = !empty($params['individu_commentaire']) ? $params['individu_commentaire'] : '';
86
			// limité à 1000 caractères (pas besoin de renvoyer une erreur ici car c'est un cas très peu fréquent)
87
			$commentaire = substr($commentaire, 0, 1000);
88
 
89
      $requete_modification_individu = 'UPDATE ods_individus '.
90
			'SET oi_nom = '.$this->proteger($params['individu_nom']).' ';
91
 
92
			// mise à jour éventuelle du commentaire optionnel
93
			if(!empty($params['individu_commentaire'])) {
94
				$requete_modification_individu .= ', oi_commentaire = '.$this->proteger($params['individu_commentaire']).' ';
95
			}
96
      $requete_modification_individu .= 'WHERE oi_id_individu = '.$this->proteger($id_individu);
97
			$modification_individu = $this->executerRequeteSimple($requete_modification_individu);
98
 
99
      $this->envoyer();
31 aurelien 100
    }
324 aurelien 101
 
31 aurelien 102
    /**
103
     * Méthode appelée pour supprimer un élément
104
     */
105
    public function deleteElement($uid) {
324 aurelien 106
 
210 aurelien 107
        if(isset($uid[0])) {
108
    		$id_participant = $uid[0];
109
    	} else {
110
    		return;
111
    	}
324 aurelien 112
 
210 aurelien 113
    	if(isset($uid[1])) {
114
    		$id_individu = $uid[1];
115
    	} else {
116
    		return;
117
    	}
324 aurelien 118
 
210 aurelien 119
    	$requete_suppression_individu = 'DELETE FROM ods_individus '.
120
    		'WHERE oi_id_individu = '.$this->proteger($id_individu).' '.
121
        	'AND oi_ce_station IN '.
122
        		'(SELECT os_id_station FROM ods_stations '.
123
        			'WHERE os_ce_participant = '.$this->proteger($id_participant).' '.
124
    			')';
324 aurelien 125
 
210 aurelien 126
    	$suppression_individu = $this->executerRequeteSimple($requete_suppression_individu);
324 aurelien 127
 
210 aurelien 128
    	if(!$suppression_individu) {
129
    		// TODO: comment gère t'on les erreurs ?
130
    	}
324 aurelien 131
 
31 aurelien 132
        // Envoie sur la sortie standard
133
        $this->envoyer();
134
    }
324 aurelien 135
 
41 aurelien 136
    private function getElementParDefaut($params) {
137
    	return $this->getInformationsIndividu($params);
138
    }
324 aurelien 139
 
33 aurelien 140
    private function getInformationsIndividu($params) {
324 aurelien 141
 
33 aurelien 142
    	$id_individu = $params[0];
143
 
324 aurelien 144
    	$requete_informations_individu = 'SELECT * FROM ods_individus '.
33 aurelien 145
								'WHERE oi_id_individu = '.$this->proteger($id_individu);
324 aurelien 146
 
41 aurelien 147
    	$informations_individu = $this->executerRequete($requete_informations_individu);
324 aurelien 148
 
41 aurelien 149
    	if(!empty($informations_individu)) {
150
    		$informations_individu_formatees = $this->formaterTableauIndividuPourEnvoi($informations_individu[0]);
151
    	}
324 aurelien 152
 
41 aurelien 153
    	return $informations_individu_formatees;
324 aurelien 154
 
33 aurelien 155
    }
324 aurelien 156
 
33 aurelien 157
    private function getIndividusPourStation($params) {
324 aurelien 158
 
33 aurelien 159
    	$id_station = $params[0];
324 aurelien 160
 
161
		$requete_individus_station = 'SELECT oi.* FROM ods_individus oi '.
284 aurelien 162
		                             'INNER JOIN ods_especes oe '.
163
		                             'ON oi.oi_ce_espece = oe.oe_id_espece '.
324 aurelien 164
		                             'AND oe.oe_espece_active = 1 '.
33 aurelien 165
									 'WHERE oi_ce_station = '.$this->proteger($id_station);
166
    	$liste_individus_pour_station = $this->executerRequete($requete_individus_station);
167
 
168
    	foreach($liste_individus_pour_station as &$individu_pour_station) {
324 aurelien 169
 
170
    		$individu_pour_station = $this->formaterTableauIndividuPourEnvoi($individu_pour_station);
33 aurelien 171
    	}
324 aurelien 172
 
33 aurelien 173
    	return $liste_individus_pour_station;
31 aurelien 174
    }
324 aurelien 175
 
33 aurelien 176
	private function getIndividusPourStationPourEspece($params) {
324 aurelien 177
 
33 aurelien 178
    	$id_station = $params[0];
179
    	$id_espece = $params[1];
324 aurelien 180
 
181
		$requete_individus_station_espece = 'SELECT * FROM ods_individus '.
33 aurelien 182
									 'WHERE oi_ce_station = '.$this->proteger($id_station).' '.
183
									 'AND oi_ce_espece ='.$this->proteger($id_espece);
324 aurelien 184
 
33 aurelien 185
    	$liste_individus_pour_station_pour_espece = $this->executerRequete($requete_individus_station_espece);
186
 
187
		foreach($liste_individus_pour_station_pour_espece as &$individu_pour_station_pour_espece) {
324 aurelien 188
 
189
    		$individu_pour_station_pour_espece = $this->formaterTableauIndividuPourEnvoi($individu_pour_station_pour_espece);
33 aurelien 190
    	}
324 aurelien 191
 
33 aurelien 192
    	return $liste_individus_pour_station_pour_espece;
193
    }
324 aurelien 194
 
33 aurelien 195
	private function formaterTableauIndividuPourEnvoi($individu) {
324 aurelien 196
 
197
    	return array(
41 aurelien 198
    	    'id_individu' => $individu['oi_id_individu'],
324 aurelien 199
          'id_espece' => $individu['oi_ce_espece'],
200
          'id_station' => $individu['oi_ce_station'],
201
    	  	'nom' => $individu['oi_nom'],
202
					'commentaire' => $individu['oi_commentaire'],
203
      );
204
 
33 aurelien 205
    }
31 aurelien 206
}
324 aurelien 207
?>