Subversion Repositories eFlore/Applications.cel

Rev

Rev 1299 | Rev 2143 | Go to most recent revision | Details | Compare with Previous | 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
 
851 aurelien 7
// Fournit un référentiel relatif à l'utilisateur sur l'un des champs demandes
8
class SelfRefList extends Cel {
737 aurelien 9
 
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
14
	 *
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
851 aurelien 19
	 *
20
	 */
737 aurelien 21
	function getElement($uid){
22
 
23
		   // Controle detournement utilisateur
24
 	        $this->controleUtilisateur($uid[0]);
25
 
26
			if (!$this->paramObligatoiresSontPresents($uid)) {
27
				return;
28
			}
29
 
806 aurelien 30
			if($_GET['recherche'] == '*') {
31
				$_GET['recherche'] = '%';
32
			}
33
 
737 aurelien 34
			$referentiel_demande = $uid[1];
35
 
36
			$value=array();
37
 
38
           	$requete_referentiel = "SELECT DISTINCT ".$referentiel_demande." " .
851 aurelien 39
           							"FROM cel_obs WHERE ce_utilisateur = '".$uid[0]."' ";
737 aurelien 40
 
41
           	if($this->filtreRechercheEstDemande()) {
42
           		$requete_referentiel .= " AND ".$referentiel_demande." LIKE '".$_GET["recherche"]."%'";
43
           	}
44
 
45
			if ($this->limiteEstDemandee()) {
851 aurelien 46
				$requete_referentiel .= " ORDER BY '.$referentiel_demande.' LIMIT ".$_GET["start"].",".$_GET["limit"];
737 aurelien 47
			}
48
 
1765 raphael 49
		    $referentiel_resultat = Cel::db()->executerRequete($requete_referentiel);
737 aurelien 50
		    $referentiel = array();
51
 
52
		    foreach($referentiel_resultat as $cle => $valeur) {
53
		    	if($this->estUneValeurValide($valeur[$referentiel_demande])) {
54
		    		$referentiel[] = $valeur[$referentiel_demande];
55
		    	}
56
 
57
		    }
58
 
1014 aurelien 59
		$this->envoyerJson($referentiel);
60
		return true;
737 aurelien 61
	}
62
 
63
	function paramObligatoiresSontPresents($uid) {
64
 
65
		return (isset($uid[1]) && in_array($uid[1],$this->referentiels) && (isset($uid[0]) && $uid[0] != ""));
66
	}
67
 
68
	function filtreRechercheEstDemande() {
69
		return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != "");
70
	}
71
 
72
	function limiteEstDemandee() {
73
		return isset($_GET["start"]) && is_numeric($_GET["start"]) && isset($_GET["limit"]) && is_numeric($_GET["limit"]);
74
	}
75
 
76
	function estUneValeurValide($chaine) {
77
		return ($chaine != null && $chaine != "000null" &&  trim($chaine) != "");
78
	}
79
}
806 aurelien 80
?>