Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2143 Rev 2385
1
<?php
1
<?php
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
3
 
3
 
4
// in utf8
4
// in utf8
5
// out utf8
5
// out utf8
6
 
6
 
7
// Fournit un référentiel relatif à l'utilisateur sur l'un des champs demandes
7
// Fournit un référentiel relatif à l'utilisateur sur l'un des champs demandes
8
class SelfRefList extends Cel {
8
class SelfRefList extends Cel {
9
 
9
 
10
	private $referentiels = array('station', 'lieudit', 'milieu');
10
	private $referentiels = array('station', 'lieudit', 'milieu');
11
 
11
 
12
	/**
12
	/**
13
	 * Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments
13
	 * Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments
14
	 *
14
	 *
15
	 * uid[0] : utilisateur obligatoire
15
	 * uid[0] : utilisateur obligatoire
16
	 * uid[1] : referentiel demandé (obligatoire)
16
	 * uid[1] : referentiel demandé (obligatoire)
17
	 * $_GET["start"] et $GET_["limit"] : selection intervalle
17
	 * $_GET["start"] et $GET_["limit"] : selection intervalle
18
	 * $_GET["recherche"] : cherche les noms qui commmencent selon la valeur
18
	 * $_GET["recherche"] : cherche les noms qui commmencent selon la valeur
19
	 *
19
	 *
20
	 */
20
	 */
21
	public function getElement($uid){
21
	public function getElement($uid){
22
		// Controle detournement utilisateur
22
		// Controle detournement utilisateur
23
		$this->controleUtilisateur($uid[0]);
23
		$this->controleUtilisateur($uid[0]);
24
 
24
 
25
		if (!$this->paramObligatoiresSontPresents($uid)) {
25
		if (!$this->paramObligatoiresSontPresents($uid)) {
26
			return;
26
			return;
27
		}
27
		}
28
 
28
 
29
		if ($_GET['recherche'] == '*') {
29
		if ($_GET['recherche'] == '*') {
30
			$_GET['recherche'] = '%';
30
			$_GET['recherche'] = '%';
31
		}
31
		}
32
 
32
 
33
		$referentiel_demande = $uid[1];
33
		$referentiel_demande = $uid[1];
34
		$idUtilisateur = Cel::db()->proteger($uid[0]);
34
		$idUtilisateur = Cel::db()->proteger($uid[0]);
35
 
35
 
36
		$requete = "SELECT DISTINCT $referentiel_demande " .
36
		$requete = "SELECT DISTINCT $referentiel_demande " .
37
			'FROM cel_obs '.
37
			'FROM cel_obs '.
38
			"WHERE ce_utilisateur = '$idUtilisateur' ";
38
			"WHERE ce_utilisateur = '$idUtilisateur' ";
39
		if ($this->filtreRechercheEstDemande()) {
39
		if ($this->filtreRechercheEstDemande()) {
40
			$requete .= " AND $referentiel_demande LIKE '".$_GET["recherche"]."%'";
40
			$requete .= " AND $referentiel_demande LIKE '".$_GET["recherche"]."%'";
41
		}
41
		}
42
		if ($this->limiteEstDemandee()) {
42
		if ($this->limiteEstDemandee()) {
43
			$requete .= " ORDER BY $referentiel_demande LIMIT ".$_GET['start'].','.$_GET['limit'];
43
			$requete .= " ORDER BY $referentiel_demande LIMIT ".$_GET['start'].','.$_GET['limit'];
44
		}
44
		}
45
		$resultat = Cel::db()->requeter($requete);
45
		$resultat = Cel::db()->requeter($requete);
46
 
46
 
47
		$referentiel = array();
47
		$referentiel = array();
-
 
48
		if (is_array($resultat)) {
48
		foreach ($resultat as $cle => $valeur) {
49
			foreach ($resultat as $cle => $valeur) {
49
			if ($this->estUneValeurValide($valeur[$referentiel_demande])) {
50
				if ($this->estUneValeurValide($valeur[$referentiel_demande])) {
50
				$referentiel[] = $valeur[$referentiel_demande];
51
					$referentiel[] = $valeur[$referentiel_demande];
51
			}
52
				}
-
 
53
 
52
 
54
			}
53
		}
55
		}
54
		$this->envoyerJson($referentiel);
56
		$this->envoyerJson($referentiel);
55
		return true;
57
		return true;
56
	}
58
	}
57
 
59
 
58
	private function paramObligatoiresSontPresents($uid) {
60
	private function paramObligatoiresSontPresents($uid) {
59
		return (isset($uid[1]) && in_array($uid[1], $this->referentiels) && (isset($uid[0]) && $uid[0] != ''));
61
		return (isset($uid[1]) && in_array($uid[1], $this->referentiels) && (isset($uid[0]) && $uid[0] != ''));
60
	}
62
	}
61
 
63
 
62
	private function filtreRechercheEstDemande() {
64
	private function filtreRechercheEstDemande() {
63
		return (isset($_GET['recherche']) && trim($_GET['recherche']) != '');
65
		return (isset($_GET['recherche']) && trim($_GET['recherche']) != '');
64
	}
66
	}
65
 
67
 
66
	private function limiteEstDemandee() {
68
	private function limiteEstDemandee() {
67
		return isset($_GET['start']) && is_numeric($_GET['start']) && isset($_GET['limit']) && is_numeric($_GET['limit']);
69
		return isset($_GET['start']) && is_numeric($_GET['start']) && isset($_GET['limit']) && is_numeric($_GET['limit']);
68
	}
70
	}
69
 
71
 
70
	private function estUneValeurValide($chaine) {
72
	private function estUneValeurValide($chaine) {
71
		return ($chaine != null && $chaine != '000null' &&  trim($chaine) != '');
73
		return ($chaine != null && $chaine != '000null' &&  trim($chaine) != '');
72
	}
74
	}
73
}
75
}