Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 31 | Rev 41 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31 Rev 33
1
<?php
1
<?php
2
 
2
 
3
class OdsEspece extends JRestService {
3
class OdsEspece extends GestionTriple {
-
 
4
 
4
 
5
	const PREFIXE = 'get';
5
	const PREFIXE = 'get';
6
	const ABBR_LISTE_TYPE_ESPECE = 'type_espece';
6
	
7
	
7
	/**
8
	/**
8
     * Méthode appelée avec une requête de type GET.
9
     * Méthode appelée avec une requête de type GET.
9
     *
10
     *
10
     */
11
     */
11
    function getElement($param = array()) {
12
    function getElement($param = array()) {
12
    	    	    	
13
    	    	    	
13
    	$type = $param[0];
14
    	$type = $param[0];
14
    	
15
    	
15
    	if ($type == '*' || is_numeric($type)) {
16
    	if ($type == '*' || is_numeric($type)) {
16
            $info = $this->getElementParDefaut($param);
17
            $info = $this->getElementParDefaut($param);
17
        } else {
18
        } else {
18
            $methode = self::PREFIXE.$type;
19
            $methode = self::PREFIXE.$type;
19
            if (method_exists($this, $methode)) {
20
            if (method_exists($this, $methode)) {
20
                array_shift($param);
21
                array_shift($param);
21
                $info = $this->$methode($param);
22
                $info = $this->$methode($param);
22
            } else {
23
            } else {
23
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
24
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
24
            }
25
            }
25
        }
26
        }
26
       
27
       
27
        // Envoi sur la sortie standard
28
        // Envoi sur la sortie standard
28
        $this->envoyer($info);
29
        $this->envoyer($info);
29
    }
30
    }
30
   
31
   
31
    /**
32
    /**
32
     * Méthode appelée pour ajouter un élément.
33
     * Méthode appelée pour ajouter un élément.
33
     */
34
     */
34
    public function createElement($params) {
35
    public function createElement($params) {
35
        // Identification de l'utilisateur
-
 
36
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
-
 
37
   
36
        
38
        // Contrôle du non détournement de l'utilisateur
37
		//TODO: méthode de création d'espeèce spéciales aux admins
39
        if ($this->etreAutorise($id_utilisateur)) {
-
 
40
            try {
-
 
41
                
38
    	
42
            } catch (PDOException $e) {
-
 
43
                $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
-
 
44
            }
-
 
45
        }
-
 
46
        $this->envoyer((string) $id_personne);
-
 
47
    }
39
    }
48
   
40
   
49
    /**
41
    /**
50
     * Méthode appelée pour mettre à jour un élément
42
     * Méthode appelée pour mettre à jour un élément
51
     */
43
     */
52
    public function updateElement($uid, $params)    {
44
    public function updateElement($uid, $params)    {
53
        //Mise à jour de la personne
45
        //Mise à jour de la personne
54
        // Identification de l'utilisateur
46
        // Identification de l'utilisateur
55
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
47
        list($id_utilisateur, $id_session) = $this->getIdentification($params);
56
       
48
       
57
        // Contrôle du non détournement de l'utilisateur
49
        // Contrôle du non détournement de l'utilisateur
58
        if ($this->etreAutorise($id_utilisateur)) {
50
        if ($this->etreAutorise($id_utilisateur)) {
59
            try {
51
            try {
60
 
52
 
61
            } catch (PDOException $e) {
53
            } catch (PDOException $e) {
62
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
54
                $messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
63
            }
55
            }
64
        }
56
        }
65
       
57
       
66
        $this->envoyer();      
58
        $this->envoyer();      
67
    }
59
    }
68
   
60
   
69
    /**
61
    /**
70
     * Méthode appelée pour supprimer un élément
62
     * Méthode appelée pour supprimer un élément
71
     */
63
     */
72
    public function deleteElement($uid) {
64
    public function deleteElement($uid) {
73
        // Vérification de la présence des id passés par l'url
65
        // Vérification de la présence des id passés par l'url
74
        if (!isset($uid[0]) || !isset($uid[1])) {
66
        if (!isset($uid[0]) || !isset($uid[1])) {
75
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
67
            $this->messages[] = "Identifiant d'utilisateur ou de personne manquant. Vous ne devriez pas avoir accès à ce service.";
76
        } else {
68
        } else {
77
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
69
            list($id_utilisateur, $id_session) = $this->getIdentification($uid[0]);
78
           
70
           
79
            // Contrôle du non détournement de l'utilisateur     
71
            // Contrôle du non détournement de l'utilisateur     
80
            if ($this->etreAutorise($id_utilisateur)) {
72
            if ($this->etreAutorise($id_utilisateur)) {
81
                // Récupération des id passés par l'url     
73
                // Récupération des id passés par l'url     
82
                $identifiants = explode(',', rtrim($uid[1], ','));
74
                $identifiants = explode(',', rtrim($uid[1], ','));
83
                if (count($identifiants) == 0) {
75
                if (count($identifiants) == 0) {
84
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
76
                    $this->messages[] = "Aucun enregistrement n'a été supprimé.";
85
                } else {
77
                } else {
86
                    foreach ($identifiants as $id_personne) {
78
                    foreach ($identifiants as $id_personne) {
87
                        try {
79
                        try {
88
                        } catch (PDOException $e) {
80
                        } catch (PDOException $e) {
89
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
81
                            $this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
90
                        }
82
                        }
91
                    }
83
                    }
92
                }
84
                }
93
            }
85
            }
94
        }
86
        }
95
       
87
       
96
        // Envoie sur la sortie standard
88
        // Envoie sur la sortie standard
97
        $this->envoyer();
89
        $this->envoyer();
98
    }
90
    }
99
    
91
    
100
/** ======================= Methodes privées d'accès au informations ================================ */   
92
/** ======================= Methodes privées d'accès au informations ================================ */   
101
    
93
    
102
    private function getElementParDefaut() {
94
    private function getElementParDefaut() {
103
    	return $this->getEspeces();
95
    	return $this->getEspecesParType();
104
    }
-
 
105
    
-
 
106
    private function getEspeces() {
-
 
107
    		    	
-
 
108
		return array(
-
 
109
    		'1' => array(
-
 
110
    			'id' => '1',
-
 
111
    			'nom_vernaculaire' => 'Erable de Montpellier'
-
 
112
    		),
-
 
113
    		'2' => array(
-
 
114
    			'id' => '2',
-
 
115
    			'nom_vernaculaire' => 'Herbe à canard'
-
 
116
    		),
-
 
117
    		'3' => array(
-
 
118
    			'id' => '3',
-
 
119
    			'nom_vernaculaire' => 'Coquelicot'
-
 
120
    		),
-
 
121
    		'4' => array(
-
 
122
    			'id' => '4',
-
 
123
    			'nom_vernaculaire' => 'Herbe à chat'
-
 
124
    		),
-
 
125
    		'5' => array(
-
 
126
    			'id' => '5',
-
 
127
    			'nom_vernaculaire' => 'Hibou'
-
 
128
    		),
-
 
129
    		'6' => array(
-
 
130
    			'id' => '6',
-
 
131
    			'nom_vernaculaire' => 'Coucou'
-
 
132
    		)
-
 
133
	    );
-
 
134
    }
96
    }
135
    
97
 
136
    private function getEspece($params) {
-
 
137
    
-
 
138
    		$id_espece = $params[0];
-
 
139
    	
-
 
140
    		$infos_espece = array(
-
 
141
	    	'id' => $id_espece,
-
 
142
			'nom_scientifique' => 'Acer monspessulanum',
-
 
143
			'nom_vernaculaire' => 'Erable de Montpellier',
-
 
144
			'description' => 'Un arbre bien connu de tous',
-
 
145
			'url_image' => 'http://www.tela-botanica.org/sites/eflore/generique/images/projets/eflore/bdnff/4.02/nt/8523/002543.jpg'
-
 
146
	    );
-
 
147
	    
-
 
148
	    return $infos_espece;
-
 
149
    }
-
 
150
    
-
 
151
    private function getEspecesPourStation($params) {
98
    private function getEspecesPourStation($params) {
152
    	
99
    	
153
    	$id_station = $params[0];
100
    	$id_station = $params[0];
154
    	
101
    	
-
 
102
    	$requete_especes_pour_station = 'SELECT * FROM ods_especes '.
-
 
103
    								    'WHERE oe_id_espece IN '.
-
 
104
    								    	'( '.
-
 
105
    								   			'SELECT oi_ce_espece FROM ods_individus '. 
-
 
106
    								   				'WHERE oi_ce_station = '.$this->proteger($id_station).
-
 
107
    										') '.
-
 
108
    									'ORDER BY oe_ce_type';
-
 
109
 
-
 
110
    	    	
-
 
111
    	$especes_pour_station = $this->executerRequete($requete_especes_pour_station);
-
 
112
    	
-
 
113
    	foreach($especes_pour_station as &$espece_dans_station) {
-
 
114
    		
-
 
115
    		$espece_dans_station = $this->formaterTableauEspecePourEnvoi($espece_dans_station);   		
-
 
116
    	}
-
 
117
    	
-
 
118
	    return $especes_pour_station;
-
 
119
    }
-
 
120
    
-
 
121
    private function getEspecesParType() {
-
 
122
    	
-
 
123
    	$requete_toute_espece = 'SELECT * FROM ods_especes ORDER BY oe_ce_type';
-
 
124
    	$liste_espece = $this->executerRequete($requete_toute_espece);
-
 
125
    	
-
 
126
    	$liste_type_espece = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_TYPE_ESPECE);   	
-
 
127
    	
-
 
128
    	$especes_par_type = array();
-
 
129
    	
-
 
130
    	foreach($liste_espece as $espece) {
-
 
131
    		
155
    	$especes_dans_station = $this->getEspeces();
132
    		$espece = $this->formaterTableauEspecePourEnvoi($espece);
-
 
133
    		
-
 
134
    		$type = $espece['type'];
-
 
135
    		$nom_type = $liste_type_espece[$type]['ot_valeur'];
-
 
136
    		
156
    	
137
    		if(!isset($especes_par_type[$type])) {
-
 
138
    			$especes_par_type[$type] = array(
-
 
139
    				'nom' => $nom_type,
-
 
140
    				'especes' => array()
-
 
141
    			);
-
 
142
    		}
-
 
143
    		
157
    	$modulo = ($id_station+7)%6;
144
    		$especes_par_type[$type]['especes'][] = $espece;    		
158
	    if($modulo == 0) $modulo = 1;
145
    	}
159
	    	
146
        	
160
	    return array_slice($especes_dans_station, 0, $modulo);
147
	    return $especes_par_type;
-
 
148
    }
-
 
149
    
-
 
150
    private function formaterTableauEspecePourEnvoi($espece) {
-
 
151
    	
-
 
152
    	return array( 
-
 
153
    	    'id_espece' => $espece['oe_id_espece'],
-
 
154
            'nom_vernaculaire' => $espece['oe_nom_vernaculaire'],
-
 
155
            'nom_scientifique' => $espece['oe_nom_scientifique'],
-
 
156
            'espece_ecole' => $espece['oe_espece_ecole'],
-
 
157
            'description' => $espece['oe_description'],
-
 
158
            'climat' => $espece['oe_ce_climat'],
161
    }
-
 
162
    
-
 
163
    private function getEspecesParType($params) {
-
 
164
    	
-
 
165
    	$id_type = $params[0];
-
 
166
    
-
 
167
    	return $especes_par_type = array(
-
 
168
		
-
 
169
				'1' => array(
-
 
170
						'nom' => 'herbacées',
-
 
171
						'especes' => array(
-
 
172
								    	'1' => array('id' => '1',
-
 
173
								    	'nom_vernaculaire' => 'Herbe de Montpellier'
-
 
174
								    	)
-
 
175
								    )
-
 
176
				),
-
 
177
				
-
 
178
				'2' => array(
-
 
179
						'nom' => 'arbres',
-
 
180
						'especes' => array(
-
 
181
								    	'id' => array('id' => '1',
-
 
182
								    	'nom_vernaculaire' => 'Erable de Montpellier'
-
 
183
								    	)
-
 
184
								   )
-
 
185
								   
-
 
186
				),
-
 
187
				
-
 
188
				'3' => array(
-
 
189
						'nom' => 'animaux',
-
 
190
						'especes' => array(
-
 
191
								    	'id' => array('id' => '1',
-
 
192
								    	'nom_vernaculaire' => 'Hibou de Montpellier'
-
 
193
								    	)
-
 
194
								   )
-
 
195
				)
159
            'evenements' => $espece['oe_ce_evenements'],
196
	    	);
160
            'type' => $espece['oe_ce_type']
197
	    	
161
        );
198
	    return $especes_par_type;
162
    	
199
    }
163
    }
200
}
164
}
201
?>
165
?>