Rev 2394 | 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 étendusclass 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) {// Recherche dans clé du catalogue et les clés déja saisies par les utilisateurs.// Si une clé est présente dans les deux tables, on privilégie celle du catalogue// qui contient un label bien formé$requete = "(SELECT cle, label, 'catalogue' FROM cel_catalogue_champs_etendus WHERE "."label LIKE ".Cel::db()->proteger($recherche_cle)." "."AND groupe = 0 ".") "."UNION "."(SELECT DISTINCT cle, cle as label, 'utilisateur' FROM cel_obs_etendues WHERE "."cle LIKE ".Cel::db()->proteger($recherche_cle)."AND cle NOT IN (SELECT cle FROM cel_catalogue_champs_etendus) ".") ";$resultat = Cel::db()->requeter($requete);$referentiel = array();foreach($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()->requeter($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) != '');}}