Subversion Repositories eFlore/Applications.cel

Rev

Rev 2355 | 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
 
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();
2384 mathias 48
		if (is_array($resultat)) {
49
			foreach ($resultat as $cle => $valeur) {
50
				if ($this->estUneValeurValide($valeur[$referentiel_demande])) {
51
					$referentiel[] = $valeur[$referentiel_demande];
52
				}
53
 
737 aurelien 54
			}
2143 jpm 55
		}
56
		$this->envoyerJson($referentiel);
57
		return true;
737 aurelien 58
	}
2143 jpm 59
 
60
	private function paramObligatoiresSontPresents($uid) {
61
		return (isset($uid[1]) && in_array($uid[1], $this->referentiels) && (isset($uid[0]) && $uid[0] != ''));
737 aurelien 62
	}
2143 jpm 63
 
64
	private function filtreRechercheEstDemande() {
65
		return (isset($_GET['recherche']) && trim($_GET['recherche']) != '');
737 aurelien 66
	}
2143 jpm 67
 
68
	private function limiteEstDemandee() {
69
		return isset($_GET['start']) && is_numeric($_GET['start']) && isset($_GET['limit']) && is_numeric($_GET['limit']);
737 aurelien 70
	}
2143 jpm 71
 
72
	private function estUneValeurValide($chaine) {
73
		return ($chaine != null && $chaine != '000null' &&  trim($chaine) != '');
737 aurelien 74
	}
2143 jpm 75
}