Subversion Repositories eFlore/Applications.cel

Rev

Rev 2037 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?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 les noms ou les valeurs des champs étendus 
class NomsChampsEtendus extends Cel {
        
        /**
         * Suivant le type de référentiel donné en paramètre, renvoie les liste de ses éléments
         * 
         * uid[0] : "cle" ou "valeur"
         * $_GET["start"] et $GET_["limit"] : selection intervalle
         * $_GET["cle"] : restreint la recherche sur les valeurs d'une certaine clé
         * $_GET["recherche"] : cherche les noms qui commmencent selon la valeur
         * 
         */
        function getElement($uid){
                                         
                if (!$this->paramObligatoiresSontPresents($uid)) {
                        return;
                }

                $_GET['recherche'] = str_replace('*', '%', $_GET['recherche']);
                $referentiel = array();
                
                if($uid[0] == "cle") {
                        $referentiel = $this->rechercherCles($_GET['recherche']);
                } else if($uid[0] == "valeur") {
                        $referentiel = $this->rechercherValeurs($_GET['cle'], $_GET['recherche']);
                }

                $this->envoyerJson($referentiel);                       
                return true;    
        }
        
        function rechercherCles($recherche_cle) {
                $requete = "SELECT DISTINCT cle, label FROM cel_obs_etendues WHERE ".
                                        "cle LIKE ".Cel::db()->proteger($recherche_cle)." OR ".
                                        "label LIKE ".Cel::db()->proteger($recherche_cle)." ";
                $referentiel_resultat = Cel::db()->executerRequete($requete);
                $referentiel = array();
                
                foreach($referentiel_resultat as $valeur) {
                        $referentiel[$valeur['cle']] = $valeur['label'];
                }
                
                return $referentiel;
        }
        
        function rechercherValeurs($cle, $recherche_valeur) {
                $requete = "SELECT DISTINCT valeur FROM cel_obs_etendues WHERE ".
                                        "cle = ".Cel::db()->proteger($cle)." AND ".
                            "valeur LIKE ".Cel::db()->proteger($recherche_valeur.'%')." ";

                $referentiel_resultat = Cel::db()->executerRequete($requete);
                $referentiel = array();
                
                foreach($referentiel_resultat as $valeur) {
                        if(trim($valeur['valeur']) != "") {
                                $referentiel[] = $valeur['valeur'];
                        }
                }
                return $referentiel;
        }
        
        function paramObligatoiresSontPresents($uid) {
                
                return (isset($uid[0]) && ($uid[0] == "cle" || $uid[0] == "valeur"));
        }
        
        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) != "");
        }
}
?>