Subversion Repositories eFlore/Applications.cel

Rev

Rev 3061 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3061 Rev 3102
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 ;