Subversion Repositories eFlore/Applications.cel

Rev

Rev 2143 | 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
 
2143 jpm 7
// Fournit un référentiel relatif à l'utilisateur sur les noms ou les valeurs des champs étendus
1939 aurelien 8
class NomsChampsEtendus extends Cel {
2143 jpm 9
 
1939 aurelien 10
	/**
11
	 * Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments
2143 jpm 12
	 *
1939 aurelien 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
	function getElement($uid){
19
		if (!$this->paramObligatoiresSontPresents($uid)) {
20
			return;
21
		}
22
 
23
		$_GET['recherche'] = str_replace('*', '%', $_GET['recherche']);
24
		$referentiel = array();
2143 jpm 25
 
1939 aurelien 26
		if($uid[0] == "cle") {
27
			$referentiel = $this->rechercherCles($_GET['recherche']);
28
		} else if($uid[0] == "valeur") {
29
			$referentiel = $this->rechercherValeurs($_GET['cle'], $_GET['recherche']);
30
		}
31
 
2143 jpm 32
		$this->envoyerJson($referentiel);
33
		return true;
1939 aurelien 34
	}
2143 jpm 35
 
1939 aurelien 36
	function rechercherCles($recherche_cle) {
37
		$requete = "SELECT DISTINCT cle, label FROM cel_obs_etendues WHERE ".
2143 jpm 38
			"cle LIKE ".Cel::db()->proteger($recherche_cle)." OR ".
39
			"label LIKE ".Cel::db()->proteger($recherche_cle)." ";
40
		$resultat = Cel::db()->requeter($requete);
41
 
1939 aurelien 42
		$referentiel = array();
2143 jpm 43
		foreach($resultat as $valeur) {
1939 aurelien 44
			$referentiel[$valeur['cle']] = $valeur['label'];
45
		}
46
		return $referentiel;
47
	}
2143 jpm 48
 
1939 aurelien 49
	function rechercherValeurs($cle, $recherche_valeur) {
50
		$requete = "SELECT DISTINCT valeur FROM cel_obs_etendues WHERE ".
2143 jpm 51
			"cle = ".Cel::db()->proteger($cle)." AND ".
52
			"valeur LIKE ".Cel::db()->proteger($recherche_valeur.'%')." ";
1939 aurelien 53
 
2143 jpm 54
		$referentiel_resultat = Cel::db()->requeter($requete);
1939 aurelien 55
		$referentiel = array();
2143 jpm 56
 
57
		foreach ($referentiel_resultat as $valeur) {
58
			if (trim($valeur['valeur']) != '') {
2037 aurelien 59
				$referentiel[] = $valeur['valeur'];
60
			}
1939 aurelien 61
		}
62
		return $referentiel;
63
	}
2143 jpm 64
 
1939 aurelien 65
	function paramObligatoiresSontPresents($uid) {
2143 jpm 66
		return (isset($uid[0]) && ($uid[0] == 'cle' || $uid[0] == 'valeur'));
1939 aurelien 67
	}
2143 jpm 68
 
1939 aurelien 69
	function filtreRechercheEstDemande() {
2143 jpm 70
		return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != '');
1939 aurelien 71
	}
2143 jpm 72
 
1939 aurelien 73
	function limiteEstDemandee() {
74
		return isset($_GET["start"]) && is_numeric($_GET["start"]) && isset($_GET["limit"]) && is_numeric($_GET["limit"]);
75
	}
2143 jpm 76
 
1939 aurelien 77
	function estUneValeurValide($chaine) {
2143 jpm 78
		return ($chaine != null && $chaine != "000null" &&  trim($chaine) != '');
1939 aurelien 79
	}
2143 jpm 80
}