41,7 → 41,7 |
// On remplace l'identifiant du type d'affichage par son nom |
$type_affichage = $this->renvoyerCorrespondanceNomId($ligne['amc_ce_type_affichage'], $this->id_liste_champs); |
$ligne['amc_ce_nom_type_affichage'] = $type_affichage['amo_nom']; |
$annuaire[] = $ligne; |
$annuaire[$ligne['amc_id_champ']] = $ligne; |
} |
|
return $annuaire; |
219,7 → 219,7 |
* @param int $id_ontologie l'identifiant du champ dont on veut le template |
* @return string le nom du template (qui est l'abreviation du champ), ou false sinon |
*/ |
public function renvoyerCorrespondanceNomTemplateChamp($id_champ) { |
public function renvoyerTypeAffichageParId($id_champ) { |
|
$requete = 'SELECT amo_abreviation '. |
'FROM annu_meta_ontologie '. |
229,9 → 229,49 |
$resultat = $this->requeteUn($requete); |
|
return $resultat['amo_abreviation']; |
|
} |
|
/** |
* Renvoie le nom du template associé à un champ grâce à son identifiant |
* @param int $id_ontologie l'identifiant du champ dont on veut le template |
* @return string le nom du template (qui est l'abreviation du champ), ou false sinon |
*/ |
public function renvoyerTypeAffichagePourColonne($id_colonne) { |
|
$requete = 'SELECT amo_abreviation '. |
'FROM annu_meta_ontologie '. |
'WHERE amo_ce_parent = '.$this->id_liste_champs.' '. |
'AND amo_id_ontologie = |
(SELECT amc_ce_type_affichage '. |
'FROM annu_meta_colonne '. |
'WHERE amc_id_champ = '.$id_colonne.')'; |
|
$resultat = $this->requeteUn($requete); |
|
if($resultat) { |
return $resultat['amo_abreviation']; |
} else { |
return false; |
} |
} |
|
/** |
* Renvoie vrai si un utilisateur possède une valeur de metadonnées pour une colonne donnée |
*/ |
public function valeurExiste($id_champ, $id_enregistrement_lie) { |
|
$requete_existence_valeur = 'SELECT COUNT(amv_valeur) as valeur_existe '. |
'FROM annu_meta_valeurs '. |
'WHERE amv_ce_colonne = '.$id_champ.' '. |
'AND amv_cle_ligne ='.$id_enregistrement_lie; |
|
$resultat = $this->requeteUn($requete_existence_valeur); |
|
return ($resultat['valeur_existe'] > 1) ; |
} |
|
/** |
* Ajoute une nouvelle valeur à un champ de metadonnées pour une ligne dans un annuaire donné |
* @param int $id_champ l'identifiant du champ auquel on ajoute cette valeur |
* @param int $id_enregistrement_lie l'identifiant de l'enregistrement lié dans l'annuairé mappé |
255,11 → 295,12 |
* @param mixed $valeur la nouvelle valeur à associer au champ (peut-être une valeur brute ou bien un identifiant de liste d'ontologie) |
* @return boolean true ou false suivant le succès de la requête |
*/ |
public function modifierValeurMetadonnee($id_valeur_metadonnee, $valeur) { |
public function modifierValeurMetadonnee($id_champ, $id_enregistrement_lie, $valeur) { |
|
$requete = 'UPDATE annu_meta_valeurs '. |
'SET amv_valeur = '.$this->proteger($valeur).' '. |
'WHERE amv_id_valeur = '.$id_valeur_metadonnee; |
'WHERE amv_cle_ligne = '.$id_enregistrement_lie.' '. |
'AND amv_ce_colonne = '.$id_champ; |
|
return $this->requete($requete); |
} |
282,6 → 323,7 |
* @param int $id_enregistrement_lie l'identifiant de la ligne à laquelle sont associées les valeurs à supprimer |
*/ |
public function supprimerValeursMetadonneesParIdEnregistrementLie($id_enregistrement_lie) { |
|
$requete = 'DELETE FROM annu_meta_valeurs '. |
'WHERE amv_cle_ligne = '.$id_enregistrement_lie; |
|
306,7 → 348,7 |
public function chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_enregistrement_lie) { |
|
// première requete pour obtenir les valeurs des champs de metadonnées liées à la ligne |
$requete_valeurs_metadonnees = 'SELECT amv_ce_colonne, amv_valeur, amc_ce_ontologie, amc_abreviation FROM annu_meta_valeurs '. |
$requete_valeurs_metadonnees = 'SELECT amv_ce_colonne, amv_valeur, amc_ce_ontologie, amc_abreviation, amc_ce_type_affichage FROM annu_meta_valeurs '. |
'LEFT JOIN annu_meta_colonne '. |
'ON annu_meta_colonne.amc_id_champ = annu_meta_valeurs.amv_ce_colonne '. |
'WHERE amv_cle_ligne = '.$id_enregistrement_lie.' '; |
323,13 → 365,12 |
// pour toutes les valeurs qui sont des élements d'une liste d'ontologie |
if($ligne['amc_ce_ontologie'] != 0) { |
|
// Si c'est un champ qui contient de multiples valeurs, alors il contient le séparateur de métadonnées |
// Si c'est un champ qui contient de multiples valeurs, alors il contient potientiellement le séparateur de métadonnées |
if(strpos($ligne['amv_valeur'],Config::get('separateur_metadonnee'))) { |
|
$id_valeurs_metadonnees = explode(Config::get('separateur_metadonnee'), $ligne['amv_valeur']); |
$ligne['amv_valeur'] = $id_valeurs_metadonnees; |
|
//TODO: faire le foreach |
foreach ($id_valeurs_metadonnees as $id_valeur) { |
$resultat_nom_valeur = $this->renvoyerCorrespondanceNomId($id_valeur,$ligne['amc_ce_ontologie']); |
$ligne['amo_nom'][] = $resultat_nom_valeur['amo_nom']; |
340,18 → 381,92 |
} |
|
$nom_valeur = $resultat_nom_valeur['amo_nom']; |
|
//print_r($resultat_nom_valeur); |
} |
|
$ligne['amc_ce_type_affichage'] = $this->renvoyerTypeAffichageParId($ligne['amc_ce_type_affichage']); |
$liste_metadonnee[$ligne['amc_abreviation']] = $ligne; |
} |
} |
|
//Debug::printr($liste_metadonnee); |
$colonnes_totales = $this->chargerListeMetadonneeAnnuaire($id_annuaire); |
|
foreach ($colonnes_totales as $colonne) { |
if(!isset($liste_metadonnee[$colonne['amc_abreviation']])) { |
|
if($colonne['amc_ce_ontologie'] != 0) { |
$valeur = array(); |
} else { |
$valeur = ''; |
} |
|
$liste_metadonnee[$colonne['amc_abreviation']] = array('amv_ce_colonne' => $colonne['amc_id_champ'], |
'amv_valeur' => $valeur, |
'amo_nom' => '', |
'amc_ce_ontologie' => $colonne['amc_ce_ontologie'], |
'amc_abreviation' => $colonne['amc_abreviation'], |
'amc_ce_type_affichage' => $this->renvoyerTypeAffichageParId($colonne['amc_ce_type_affichage'])); |
} |
} |
|
return $liste_metadonnee; |
|
} |
|
/** |
* Recherche les enregistrements correspondants au criètres donnés et renvoie une liste d'identifiants, correspondants |
* @param int $id_annuaire l'identifiant de l'annuaire dans lequel on recherche |
* @valeurs array un talbeau de valeurs à rechercher |
* $exclusive boolean indique si la recherche doit se faire avec un ET ou bien un OU sur les critèrex |
*/ |
public function rechercherDansValeurMetadonnees($id_annuaire, $valeurs, $exclusive = true) { |
|
// Définition du séparateur de requête suivant la paramètre |
if($exclusive) { |
$separateur = ' AND '; |
} else { |
$separateur = ' OR '; |
} |
|
$chaine_recherche = ''; |
|
foreach($valeurs as $nom_champ => $valeur) { |
|
if(is_array($valeur)) { |
foreach($valeur as $cle => $valeur_multi_meta) { |
$chaine_recherche .= '(amv_ce_colonne = '.$this->proteger($nom_champ).' AND amv_valeur LIKE '.$this->proteger('%'.$cle.'%').')'.$separateur; |
} |
} else { |
if(trim($valeur) != '') { |
$chaine_recherche .= '(amv_ce_colonne = '.$this->proteger($nom_champ).' AND amv_valeur = '.$this->proteger($valeur).')'.$separateur; |
} |
} |
} |
|
if(trim($chaine_recherche) == '') { |
return array(); |
} |
|
$chaine_recherche = rtrim($chaine_recherche,$separateur); |
|
$requete_recherche = 'SELECT DISTINCT amv_cle_ligne '. |
'FROM annu_meta_valeurs '. |
'WHERE '.$chaine_recherche ; |
|
$resultat_recherche = $this->requeteTous($requete_recherche); |
|
//echo $requete_recherche; |
|
if($resultat_recherche) { |
|
$tableau_id = array(); |
foreach($resultat_recherche as $resultat) { |
$tableau_id[] = $resultat['amv_cle_ligne']; |
} |
return $tableau_id; |
|
} else { |
return array(); |
} |
} |
} |
?> |