Line 16... |
Line 16... |
16 |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
16 |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
17 |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
// | GNU General Public License for more details. |
|
18 |
// | GNU General Public License for more details. |
|
19 |
// | |
|
19 |
// | |
|
20 |
// | You should have received a copy of the GNU General Public License |
|
20 |
// | You should have received a copy of the GNU General Public License |
|
21 |
// | along with Foobar; if not, write to the Free Software |
|
21 |
// | along with Del; if not, write to the Free Software |
|
22 |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
22 |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
23 |
// +------------------------------------------------------------------------------------------------------+
|
23 |
// +------------------------------------------------------------------------------------------------------+
|
24 |
// CVS : $Id: effi_cel.action.php,v 1.9 2007-11-06 10:54:03 jp_milcent Exp $
|
24 |
// CVS : $Id: effi_cel.action.php,v 1.9 2007-11-06 10:54:03 jp_milcent Exp $
|
25 |
/**
|
25 |
/**
|
26 |
* Le web service image récupère toutes les données de la table del_obs_images
|
26 |
* Le web service image récupère toutes les données de la table del_obs_images
|
Line 31... |
Line 31... |
31 |
* @author Grégoire Duché <gregoire@tela-botanica.org>
|
31 |
* @author Grégoire Duché <gregoire@tela-botanica.org>
|
32 |
* @copyright Tela-Botanica 2000-2012
|
32 |
* @copyright Tela-Botanica 2000-2012
|
33 |
* @version $Revision: 1.9 $ $Date: 2007-11-06 10:54:03 $
|
33 |
* @version $Revision: 1.9 $ $Date: 2007-11-06 10:54:03 $
|
34 |
// +------------------------------------------------------------------------------------------------------+
|
34 |
// +------------------------------------------------------------------------------------------------------+
|
35 |
*/
|
35 |
*/
|
- |
|
36 |
|
- |
|
37 |
// TODO : conteneur, n'étendra plus rien
|
- |
|
38 |
// Le contenu viendra du constructeur
|
36 |
class Images extends Commun {
|
39 |
class Images extends Commun {
|
Line 37... |
Line 40... |
37 |
|
40 |
|
38 |
private $config;
|
41 |
private $config;
|
39 |
private $schemaBdd;
|
42 |
private $schemaBdd;
|
Line 55... |
Line 58... |
55 |
|
58 |
|
56 |
if (!empty($ressources)) {
|
59 |
if (!empty($ressources)) {
|
57 |
$this->idImage = $ressources[0];
|
60 |
$this->idImage = $ressources[0];
|
Line -... |
Line 61... |
- |
|
61 |
}
|
58 |
}
|
62 |
|
59 |
|
63 |
//TODO : enlever les appels par référence
|
- |
|
64 |
// Gestion des configuration du script
|
- |
|
65 |
// TODO : gérer les erreurs de config
|
60 |
// Gestion des configuration du script
|
66 |
// voir les paramètres par défaut
|
61 |
// TODO : gérer les erreurs de config
|
67 |
// vérifier les valeurs (voir try catch JP)
|
62 |
// TODO : voir la classe Conteneur
|
68 |
// TODO : voir la classe Conteneur
|
63 |
$this->config = Config::get('images');
|
69 |
$this->config = Config::get('images');
|
64 |
$this->schemaBdd = $this->config['schemaBdd'];
|
70 |
$this->schemaBdd = $this->config['schemaBdd'];
|
- |
|
71 |
$this->UrlNavigation = new Url($this->config['url_service']);
|
- |
|
72 |
$this->chargerParametres($parametres);
|
65 |
$this->UrlNavigation = new Url($this->config['url_service']);
|
73 |
|
Line 66... |
Line 74... |
66 |
$this->chargerParametres($parametres);
|
74 |
// TODO : voir CEL ou CHORODEP eflore ou CARTOPOINT pour calc find rows
|
- |
|
75 |
$this->compterImages();
|
67 |
$this->compterImages();
|
76 |
|
68 |
|
77 |
// Lancement du service
|
- |
|
78 |
// TODO : changer le résultat par id => objetImage
|
- |
|
79 |
$liaisons = $this->chargerLiaisons();
|
69 |
// Lancement du service
|
80 |
$images = $this->chargerImage($liaisons);
|
Line 70... |
Line 81... |
70 |
$liaisons = $this->chargerLiaisons();
|
81 |
|
71 |
$images = $this->chargerImage($liaisons);
|
82 |
//TODO : gérer un retour de chargervote plutot que référence
|
72 |
$this->chargerVotes($images);
|
83 |
$this->chargerVotes($images);
|
Line 93... |
Line 104... |
93 |
|
104 |
|
94 |
if (isset($this->parametres['navigation.limite'])) {
|
105 |
if (isset($this->parametres['navigation.limite'])) {
|
95 |
$this->limite = $this->parametres['navigation.limite'];
|
106 |
$this->limite = $this->parametres['navigation.limite'];
|
Line -... |
Line 107... |
- |
|
107 |
}
|
- |
|
108 |
|
96 |
}
|
109 |
|
97 |
|
110 |
// TODO : voir méthode gérer Masque pour gérer les spécificités de chaque paramètre
|
98 |
foreach ($parametres as $id => $parametre) {
|
111 |
foreach ($parametres as $id => $parametre) {
|
99 |
if (strpos($id, 'masque.') === 0) {
|
112 |
if (strpos($id, 'masque.') === 0) {
|
100 |
$champ = substr($id, 7, strlen($id));
|
113 |
$champ = substr($id, 7, strlen($id));
|
Line 113... |
Line 126... |
113 |
/**
|
126 |
/**
|
114 |
* Charger la clause WHERE en fonction des paramètres de masque
|
127 |
* Charger la clause WHERE en fonction des paramètres de masque
|
115 |
* */
|
128 |
* */
|
116 |
private function chargerClauseWhere() {
|
129 |
private function chargerClauseWhere() {
|
117 |
$where = array();
|
130 |
$where = array();
|
- |
|
131 |
|
- |
|
132 |
// TODO : factoriser ci-dessous
|
118 |
if (isset($this->idImage)) {
|
133 |
if (isset($this->idImage)) {
|
119 |
$where[] = " id_image = ".$this->getBdd()->proteger($this->idImage);
|
134 |
$where[] = " id_image = ".$this->getBdd()->proteger($this->idImage);
|
120 |
}
|
135 |
}
|
Line 121... |
Line 136... |
121 |
|
136 |
|
Line 145... |
Line 160... |
145 |
if (is_numeric($auteurId)) {
|
160 |
if (is_numeric($auteurId)) {
|
146 |
$where[] = " ce_utilisateur = ".$this->masque['auteur'];
|
161 |
$where[] = " ce_utilisateur = ".$this->masque['auteur'];
|
147 |
} else {
|
162 |
} else {
|
148 |
if (strpos($auteurId, '@') === false) {
|
163 |
if (strpos($auteurId, '@') === false) {
|
Line -... |
Line 164... |
- |
|
164 |
|
149 |
|
165 |
// TODO : bug sur nom/prenom
|
150 |
// TODO : j'ai utilisé implode car ça évite de faire un rtrim à la fin
|
166 |
// TODO : j'ai utilisé implode car ça évite de faire un rtrim à la fin
|
151 |
// mais comme je ne peux pas protéger chaque valeur d'un tableau, ca alourdit le code.
|
167 |
// mais comme je ne peux pas protéger chaque valeur d'un tableau, ca alourdit le code.
|
- |
|
168 |
// quid ?
|
152 |
// quid ?
|
169 |
// TODO : voir méthode pour protéger les valeurs d'un tableau (cel.php, services web du cel ...)
|
153 |
$nomPrenom = explode(' ', $auteurId);
|
170 |
$nomPrenom = explode(' ', $auteurId);
|
154 |
foreach ($nomPrenom as &$valeur) {
|
171 |
foreach ($nomPrenom as &$valeur) {
|
155 |
$valeur = $this->getBdd()->proteger($valeur);
|
172 |
$valeur = $this->getBdd()->proteger($valeur);
|
156 |
}
|
173 |
}
|
157 |
$chaineNomPrenom = implode(', ', $nomPrenom);
|
174 |
$chaineNomPrenom = implode(', ', $nomPrenom);
|
Line 158... |
Line 175... |
158 |
$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN('.$chaineNomPrenom.')))';
|
175 |
$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
|
159 |
|
176 |
|
160 |
} else {
|
177 |
} else {
|
161 |
$where[] = " courriel LIKE ".$this->getBdd()->proteger($this->masque['auteur'].'%')." ";
|
178 |
$where[] = " courriel LIKE ".$this->getBdd()->proteger($this->masque['auteur'].'%')." ";
|
162 |
}
|
179 |
}
|
Line 163... |
Line 180... |
163 |
}
|
180 |
}
|
164 |
}
|
181 |
}
|
- |
|
182 |
|
165 |
|
183 |
//TODO : gérer le format de la date ?
|
166 |
//TODO : gérer le format de la date ?
|
184 |
// rechercher sur LIKE DATE % ?
|
167 |
// rechercher sur LIKE DATE % ?
|
185 |
// TODO : recherche sur JOUR MOIS ou ANNEE
|
Line 168... |
Line 186... |
168 |
if (isset($this->masque['date'])) {
|
186 |
if (isset($this->masque['date'])) {
|
169 |
$where[] = " date_observation = ".$this->getBdd()->proteger($this->masque['date']);
|
187 |
$where[] = " date_observation = ".$this->getBdd()->proteger($this->masque['date']);
|
170 |
}
|
188 |
}
|
Line 171... |
Line 189... |
171 |
|
189 |
|
172 |
|
- |
|
173 |
if (isset($this->masque['commune'])) {
|
190 |
|
174 |
$where[] = " zone_geo LIKE ".$this->getBdd()->proteger($this->masque['commune']);
|
191 |
if (isset($this->masque['commune'])) {
|
175 |
}
|
192 |
$where[] = " zone_geo LIKE ".$this->getBdd()->proteger($this->masque['commune']);
|
- |
|
193 |
}
|
- |
|
194 |
|
- |
|
195 |
if (isset($this->masque['departement'])) {
|
176 |
|
196 |
$dept = $this->masque['departement'];
|
177 |
if (isset($this->masque['departement'])) {
|
197 |
if (is_numeric($dept)) {
|
Line 178... |
Line 198... |
178 |
//TODO : que faire si le département n'est pas numérique ?
|
198 |
$where[] = " ce_zone_geo LIKE ".$this->getBdd()->proteger('INSEE-C:'.$this->masque['departement'].'%');
|
179 |
$dept = $this->masque['departement'];
|
199 |
} else {
|
Line 195... |
Line 215... |
195 |
|
215 |
|
196 |
/**
|
216 |
/**
|
197 |
* Compter le nombre total d'images dans la base pour affichage dans entete.
|
217 |
* Compter le nombre total d'images dans la base pour affichage dans entete.
|
198 |
* */
|
218 |
* */
|
- |
|
219 |
private function compterImages() {
|
- |
|
220 |
// TODO : n'est pas la bonne requête
|
199 |
private function compterImages() {
|
221 |
// voir dans les services web eflore
|
200 |
$requeteNbImages = 'SELECT COUNT(*) AS nb '.
|
222 |
$requeteNbImages = 'SELECT COUNT(*) AS nb '.
|
201 |
'FROM '.$this->schemaBdd.'.del_image ';
|
223 |
'FROM '.$this->schemaBdd.'.del_image ';
|
202 |
$resultatNbImages = $this->getBdd()->recuperer($requeteNbImages);
|
224 |
$resultatNbImages = $this->getBdd()->recuperer($requeteNbImages);
|
203 |
$this->total = $resultatNbImages['nb'];
|
225 |
$this->total = $resultatNbImages['nb'];
|
Line 255... |
Line 277... |
255 |
$requeteVotes = 'SELECT * FROM '.
|
277 |
$requeteVotes = 'SELECT * FROM '.
|
256 |
$this->schemaBdd.'.del_vote_image '.
|
278 |
$this->schemaBdd.'.del_vote_image '.
|
257 |
'WHERE ce_image IN ('.$chaineImageIds.')';
|
279 |
'WHERE ce_image IN ('.$chaineImageIds.')';
|
258 |
$resultatsVotes = $this->getBdd()->recupererTous($requeteVotes);
|
280 |
$resultatsVotes = $this->getBdd()->recupererTous($requeteVotes);
|
Line -... |
Line 281... |
- |
|
281 |
|
- |
|
282 |
|
259 |
|
283 |
//TODO : faire une méthode formater vote
|
260 |
$votes = array();
|
284 |
$votes = array();
|
261 |
foreach ($resultatsVotes as $vote) {
|
285 |
foreach ($resultatsVotes as $vote) {
|
262 |
$idImage = $vote['ce_image'];
|
286 |
$idImage = $vote['ce_image'];
|
263 |
$id = $vote['id_vote_image'];
|
287 |
$id = $vote['id_vote_image'];
|
Line 287... |
Line 311... |
287 |
* Formater une observation depuis une ligne liaison
|
311 |
* Formater une observation depuis une ligne liaison
|
288 |
* @param $liaison liaison issue de la recherche
|
312 |
* @param $liaison liaison issue de la recherche
|
289 |
* */
|
313 |
* */
|
290 |
private function formaterObservation($liaison) {
|
314 |
private function formaterObservation($liaison) {
|
291 |
$observation = array();
|
315 |
$observation = array();
|
- |
|
316 |
|
- |
|
317 |
// TODO : faire un tableau de correspondance clé-valeur
|
292 |
$observation['id_observation'] = $liaison['id_observation'];
|
318 |
$observation['id_observation'] = $liaison['id_observation'];
|
293 |
$observation['date_observation'] = $liaison['date_observation'];
|
319 |
$observation['date_observation'] = $liaison['date_observation'];
|
294 |
$observation['date_transmission'] = $liaison['date_transmission'];
|
320 |
$observation['date_transmission'] = $liaison['date_transmission'];
|
295 |
$observation['determination.famille'] = $liaison['famille'];
|
321 |
$observation['determination.famille'] = $liaison['famille'];
|
296 |
$observation['determination.ns'] = $liaison['nom_sel'];
|
322 |
$observation['determination.ns'] = $liaison['nom_sel'];
|