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) != ''); } }