Line 65... |
Line 65... |
65 |
$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ';
|
65 |
$requete_selection_observations .= 'WHERE ce_utilisateur = '.Cel::db()->proteger($id_utilisateur).' AND ';
|
66 |
} else if(count($criteres) > 0) {
|
66 |
} else if(count($criteres) > 0) {
|
67 |
$requete_selection_observations .= 'WHERE ';
|
67 |
$requete_selection_observations .= 'WHERE ';
|
68 |
}
|
68 |
}
|
Line -... |
Line 69... |
- |
|
69 |
|
- |
|
70 |
// construction du tri
|
69 |
|
71 |
$order_by_clause = '';
|
- |
|
72 |
if (isset($criteres['tri']) && in_array($criteres['tri'], self::$tris_possibles)) {
|
- |
|
73 |
$order_by_clause = ' ORDER BY ' . $criteres['tri'];
|
- |
|
74 |
|
- |
|
75 |
if (isset($criteres['tri_dir']) && in_array($criteres['tri_dir'], array('ASC', 'DESC'))) {
|
- |
|
76 |
$order_by_clause .= ' ' . $criteres['tri_dir']
|
- |
|
77 |
}
|
70 |
$tri = (isset($criteres['tri']) && in_array($criteres['tri'], self::$tris_possibles)) ? $criteres['tri'] : 'ordre';
|
78 |
}
|
71 |
unset($criteres['tri']);
|
- |
|
72 |
$tri_dir = (isset($criteres['tri_dir']) && in_array($criteres['tri_dir'], array('ASC', 'DESC'))) ? $criteres['tri_dir'] : 'ASC';
|
79 |
unset($criteres['tri']);
|
Line 73... |
Line 80... |
73 |
unset($criteres['tri_dir']);
|
80 |
unset($criteres['tri_dir']);
|
74 |
|
81 |
|
75 |
// très mauvaise solution, mais qui permet au moins d'effectuer des requêtes complexes, sans modifier l'API
|
82 |
// très mauvaise solution, mais qui permet au moins d'effectuer des requêtes complexes, sans modifier l'API
|
76 |
// et sans pour autant introduire de problème de sécurité majeur dans toutes les fonctions appelantes qui
|
83 |
// et sans pour autant introduire de problème de sécurité majeur dans toutes les fonctions appelantes qui
|
77 |
// effectue $criteres = $_GET sans nettoyage préalable.
|
84 |
// effectue $criteres = $_GET sans nettoyage préalable.
|
Line 78... |
Line 85... |
78 |
if(isset($criteres['sql_brut']) && !$autoriser_sql_brut) unset($criteres['sql_brut']);
|
85 |
if(isset($criteres['sql_brut']) && !$autoriser_sql_brut) unset($criteres['sql_brut']);
|
79 |
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
|
86 |
$sous_requete_recherche = $this->fabriquerSousRequeteRecherche($id_utilisateur, $criteres);
|
80 |
|
87 |
|
81 |
$requete_selection_observations .= $sous_requete_recherche;
|
88 |
$requete_selection_observations .= $sous_requete_recherche;
|
Line 82... |
Line 89... |
82 |
$requete_selection_observations = rtrim($requete_selection_observations, 'AND ');
|
89 |
$requete_selection_observations = rtrim($requete_selection_observations, 'AND ');
|
83 |
$requete_selection_observations .= $id_utilisateur == null ? ' ORDER BY id_observation, ordre ' : ' ORDER BY '.$tri.' '.$tri_dir;
|
90 |
$requete_selection_observations .= $id_utilisateur == null ? ' ORDER BY id_observation, ordre ' : $order_by_clause;
|
84 |
$requete_selection_observations .= ($debut == 0 && $limite == 0) ? '' : ' LIMIT '.$debut.','.$limite ;
|
91 |
$requete_selection_observations .= ($debut == 0 && $limite == 0) ? '' : ' LIMIT '.$debut.','.$limite ;
|
Line 222... |
Line 229... |
222 |
} else {
|
229 |
} else {
|
223 |
$sous_requete .= "day(date_observation) = ".Cel::db()->proteger($valeur) ;
|
230 |
$sous_requete .= "day(date_observation) = ".Cel::db()->proteger($valeur) ;
|
224 |
}
|
231 |
}
|
225 |
$sous_requete .= ' AND ' ;
|
232 |
$sous_requete .= ' AND ' ;
|
226 |
break;
|
233 |
break;
|
227 |
case 'pays':
|
234 |
case 'pays':
|
228 |
if ($valeur == "NULL") {
|
235 |
if ($valeur == "NULL") {
|
229 |
$sous_requete .= "(pays IS NULL OR pays = '')";
|
236 |
$sous_requete .= "(pays IS NULL OR pays = '')";
|
230 |
} else {
|
237 |
} else {
|
231 |
$pays_t = explode(',', $valeur);
|
238 |
$pays_t = explode(',', $valeur);
|
232 |
foreach($pays_t as &$pays) {
|
239 |
foreach($pays_t as &$pays) {
|
233 |
$pays = Cel::db()->proteger($pays);
|
240 |
$pays = Cel::db()->proteger($pays);
|
234 |
}
|
241 |
}
|
235 |
$sous_requete .= '(pays IN ('.implode(',', $pays_t).')) ';
|
242 |
$sous_requete .= '(pays IN ('.implode(',', $pays_t).')) ';
|
236 |
}
|
243 |
}
|
237 |
$sous_requete .= ' AND ' ;
|
244 |
$sous_requete .= ' AND ' ;
|
238 |
break;
|
245 |
break;
|
239 |
case 'departement':
|
246 |
case 'departement':
|
240 |
if ($valeur == "NULL") {
|
247 |
if ($valeur == "NULL") {
|
241 |
$sous_requete .= "(ce_zone_geo IS NULL OR ce_zone_geo = '')";
|
248 |
$sous_requete .= "(ce_zone_geo IS NULL OR ce_zone_geo = '')";
|
242 |
} else {
|
249 |
} else {
|
Line 380... |
Line 387... |
380 |
'jour' => 'date_observation',
|
387 |
'jour' => 'date_observation',
|
381 |
'departement' => 'ce_zone_geo',
|
388 |
'departement' => 'ce_zone_geo',
|
382 |
'commune' => 'zone_geo');
|
389 |
'commune' => 'zone_geo');
|
383 |
return $sous_requete .= $champs[$valeur]." = ".Cel::db()->proteger("");
|
390 |
return $sous_requete .= $champs[$valeur]." = ".Cel::db()->proteger("");
|
384 |
}
|
391 |
}
|
385 |
}
|
- |
|
386 |
|
392 |
}
|
- |
|
393 |
|