Subversion Repositories eFlore/Applications.cel

Rev

Rev 2143 | Rev 2458 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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