Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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