Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 6 → Rev 7

/trunk/modeles/MetadonneeModele.php
169,10 → 169,10
* @param int $id_metadonnee l'identifiant de l'enregistrement à supprimer
*/
public function supprimerMetadonneeParId($id_metadonnee) {
$requete = 'DELETE FROM annu_meta_colonne '.
$requete_suppression_metadonnee = 'DELETE FROM annu_meta_colonne '.
'WHERE amc_id_champ = '.$id_metadonnee;
 
return $this->requete($requete);
return $this->requete($requete_suppression_metadonnee);
}
 
/**
207,8 → 207,8
private function renvoyerCorrespondanceNomId($id_ontologie,$id_parent) {
$requete = 'SELECT amo_nom '.
'FROM annu_meta_ontologie '.
'WHERE amo_ce_parent = '.$id_parent.' '.
'AND amo_id_ontologie = '.$id_ontologie;
'WHERE amo_ce_parent = '.$this->proteger($id_parent).' '.
'AND amo_id_ontologie = '.$this->proteger($id_ontologie);
 
return $this->requeteUn($requete);
}
288,6 → 288,16
return $this->requete($requete);
}
 
/** Supprime les valeurs de metadonnées associés à un identifiant de colonne
* @param int $id_colonne_liee l'identifiant de la colonne à laquelle sont associées les valeurs à supprimer
*/
public function supprimerValeursMetadonneesParIdColonneLiee($id_colonne_liee) {
$requete = 'DELETE FROM annu_meta_valeurs '.
'WHERE amv_ce_colonne = '.$id_colonne_liee;
 
return $this->requete($requete);
}
 
/**
* Charge les valeurs de metadonnées pour un identifiant de ligne donné
* @param int $id_annuaire l'identifiant de l'annuaire sur lequel on travaille
295,30 → 305,51
*/
public function chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_enregistrement_lie) {
 
// TODO: la jointure est elle la plus efficace pour ce type de requete ?
// voir si des index bien placés peuvent résoudre le problème
// et faire plein de tests
$requete_valeurs_metadonnees = 'SELECT amv_ce_colonne, amv_valeur, amc_ce_ontologie, amc_abreviation, amo_nom FROM annu_meta_valeurs '.
'LEFT JOIN annu_meta_colonne '.
'ON annu_meta_colonne.amc_id_champ = annu_meta_valeurs.amv_ce_colonne '.
'LEFT JOIN annu_meta_ontologie '.
'ON annu_meta_ontologie.amo_ce_parent = annu_meta_colonne.amc_ce_ontologie AND '.
'annu_meta_valeurs.amv_valeur = annu_meta_ontologie.amo_id_ontologie '.
'WHERE amv_cle_ligne = '.$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 '.
'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.' ';
 
$resultat_valeurs_metadonnees = $this->requeteTous($requete_valeurs_metadonnees);
 
if(!$resultat_valeurs_metadonnees) {
return false;
}
 
$liste_metadonnee = array();
$liste_metadonnee = array();
 
foreach ($resultat_valeurs_metadonnees as $ligne) {
} else {
foreach ($resultat_valeurs_metadonnees as $ligne) {
 
$liste_metadonnee[$ligne['amc_abreviation']] = $ligne;
// 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
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'];
}
} else {
$resultat_nom_valeur = $this->renvoyerCorrespondanceNomId($ligne['amv_valeur'],$ligne['amc_ce_ontologie']);
$ligne['amo_nom'] = $resultat_nom_valeur['amo_nom'];
}
 
$nom_valeur = $resultat_nom_valeur['amo_nom'];
 
//print_r($resultat_nom_valeur);
}
 
$liste_metadonnee[$ligne['amc_abreviation']] = $ligne;
}
}
 
//Debug::printr($liste_metadonnee);
 
return $liste_metadonnee;
 
}