Subversion Repositories eFlore/Applications.cel

Rev

Rev 1939 | Rev 2143 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1939 aurelien 1
<?php
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
3
 
4
// in utf8
5
// out utf8
6
 
7
// Fournit un référentiel relatif à l'utilisateur sur les noms ou les valeurs des champs étendus
8
class NomsChampsEtendus extends Cel {
9
 
10
	/**
11
	 * Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments
12
	 *
13
	 * uid[0] : "cle" ou "valeur"
14
	 * $_GET["start"] et $GET_["limit"] : selection intervalle
15
	 * $_GET["cle"] : restreint la recherche sur les valeurs d'une certaine clé
16
	 * $_GET["recherche"] : cherche les noms qui commmencent selon la valeur
17
	 *
18
	 */
19
	function getElement($uid){
20
 
21
		if (!$this->paramObligatoiresSontPresents($uid)) {
22
			return;
23
		}
24
 
25
		$_GET['recherche'] = str_replace('*', '%', $_GET['recherche']);
26
		$referentiel = array();
27
 
28
		if($uid[0] == "cle") {
29
			$referentiel = $this->rechercherCles($_GET['recherche']);
30
		} else if($uid[0] == "valeur") {
31
			$referentiel = $this->rechercherValeurs($_GET['cle'], $_GET['recherche']);
32
		}
33
 
34
		$this->envoyerJson($referentiel);
35
		return true;
36
	}
37
 
38
	function rechercherCles($recherche_cle) {
39
		$requete = "SELECT DISTINCT cle, label FROM cel_obs_etendues WHERE ".
40
					"cle LIKE ".Cel::db()->proteger($recherche_cle)." OR ".
41
					"label LIKE ".Cel::db()->proteger($recherche_cle)." ";
42
		$referentiel_resultat = Cel::db()->executerRequete($requete);
43
		$referentiel = array();
44
 
45
		foreach($referentiel_resultat as $valeur) {
46
			$referentiel[$valeur['cle']] = $valeur['label'];
47
		}
48
 
49
		return $referentiel;
50
	}
51
 
52
	function rechercherValeurs($cle, $recherche_valeur) {
53
		$requete = "SELECT DISTINCT valeur FROM cel_obs_etendues WHERE ".
54
					"cle = ".Cel::db()->proteger($cle)." AND ".
55
		            "valeur LIKE ".Cel::db()->proteger($recherche_valeur.'%')." ";
56
 
57
		$referentiel_resultat = Cel::db()->executerRequete($requete);
58
		$referentiel = array();
59
 
60
		foreach($referentiel_resultat as $valeur) {
2037 aurelien 61
			if(trim($valeur['valeur']) != "") {
62
				$referentiel[] = $valeur['valeur'];
63
			}
1939 aurelien 64
		}
65
		return $referentiel;
66
	}
67
 
68
	function paramObligatoiresSontPresents($uid) {
69
 
70
		return (isset($uid[0]) && ($uid[0] == "cle" || $uid[0] == "valeur"));
71
	}
72
 
73
	function filtreRechercheEstDemande() {
74
		return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != "");
75
	}
76
 
77
	function limiteEstDemandee() {
78
		return isset($_GET["start"]) && is_numeric($_GET["start"]) && isset($_GET["limit"]) && is_numeric($_GET["limit"]);
79
	}
80
 
81
	function estUneValeurValide($chaine) {
82
		return ($chaine != null && $chaine != "000null" &&  trim($chaine) != "");
83
	}
84
}
85
?>