<?php // ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel // // in utf8 // out utf8 // Fournit un référentiel relatif à l'utilisateur sur l'un des champs demandes class SelfRefList extends Cel { private $referentiels = array('station', 'lieudit', 'milieu'); /** * Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments * * uid[0] : utilisateur obligatoire * uid[1] : referentiel demandé (obligatoire) * $_GET["start"] et $GET_["limit"] : selection intervalle * $_GET["recherche"] : cherche les noms qui commmencent selon la valeur * */ function getElement($uid){ // Controle detournement utilisateur $this->controleUtilisateur($uid[0]); if (!$this->paramObligatoiresSontPresents($uid)) { return; } if($_GET['recherche'] == '*') { $_GET['recherche'] = '%'; } $referentiel_demande = $uid[1]; $value=array(); $requete_referentiel = "SELECT DISTINCT ".$referentiel_demande." " . "FROM cel_obs WHERE ce_utilisateur = '".$uid[0]."' "; if($this->filtreRechercheEstDemande()) { $requete_referentiel .= " AND ".$referentiel_demande." LIKE '".$_GET["recherche"]."%'"; } if ($this->limiteEstDemandee()) { $requete_referentiel .= " ORDER BY '.$referentiel_demande.' LIMIT ".$_GET["start"].",".$_GET["limit"]; } $referentiel_resultat = Cel::db()->executerRequete($requete_referentiel); $referentiel = array(); foreach($referentiel_resultat as $cle => $valeur) { if($this->estUneValeurValide($valeur[$referentiel_demande])) { $referentiel[] = $valeur[$referentiel_demande]; } } $this->envoyerJson($referentiel); return true; } function paramObligatoiresSontPresents($uid) { return (isset($uid[1]) && in_array($uid[1],$this->referentiels) && (isset($uid[0]) && $uid[0] != "")); } function filtreRechercheEstDemande() { return (isset($_GET["recherche"]) && trim($_GET["recherche"]) != ""); } function limiteEstDemandee() { return isset($_GET["start"]) && is_numeric($_GET["start"]) && isset($_GET["limit"]) && is_numeric($_GET["limit"]); } function estUneValeurValide($chaine) { return ($chaine != null && $chaine != "000null" && trim($chaine) != ""); } } ?>