Rev 5 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Modèle d'accès à la base de données des listes* d'ontologies** PHP Version 5** @package Framework* @category Class* @author aurelien <aurelien@tela-botanica.org>* @copyright 2009 Tela-Botanica* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL* @version SVN: $$Id: ListeAdmin.php 128 2009-09-02 12:20:55Z aurelien $$* @link /doc/framework/**/class MetadonneeModele extends Modele {private $config = array();// TODO: externaliser l'identifiant de la liste des types depuis le fichier de configprivate $id_liste_liste = 0;private $id_liste_type = 1002;private $id_liste_champs = 30768;/*** Charge la liste complète des champs de métadonnées associées à un annuaire en particulier* return array un tableau contenant des objets d'informations sur les listes* @return array un tableau d'objets contenant la liste des listes*/public function chargerListeMetadonneeAnnuaire($id_annuaire) {$requete = 'SELECT * '.'FROM annu_meta_colonne '.'WHERE amc_ce_annuaire = '.$id_annuaire ;$resultat = $this->requeteTous($requete);$annuaire = array();foreach ($resultat as $ligne) {$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;}return $annuaire;}public function chargerInfosListe($id_liste) {$requete = 'SELECT amo_nom, amo_id_ontologie '.'FROM annu_meta_ontologie '.'WHERE amo_ce_parent = '.$id_liste.' '.'ORDER BY amo_nom';$resultat = $this->requeteTous($requete);$liste_types = array();foreach ($resultat as $ligne) {$liste_types[] = $ligne;}return $liste_types;}/*** Charge la liste complète des types de champ* return array un tableau contenant des objets d'informations sur les types de champ* @return array un tableau d'objets contenant la liste des types de champs*/public function chargerListeDesTypesDeChamps() {return $this->chargerInfosListe($this->id_liste_champs);}/*** Charge la liste complète des types SQL* return array un tableau contenant des objets d'informations sur les types SQL* @return array un tableau d'objets contenant la liste types de métadonnées*/public function chargerListeDesTypesSQL() {return $this->chargerInfosListe($this->id_liste_type);}/*** Charge la liste complète des listes de métadonnées que l'on peut associer à un annuaire* return array un tableau contenant des objets d'informations sur les types de métadonnées* @return array un tableau d'objets contenant la liste types de métadonnées*/public function chargerListeDesListes() {return $this->chargerInfosListe($this->id_liste_liste);}/*** Charge les informations d'une metadonnee* @param int l'identifiant de cette metadonnee* @return array() un tableau contenant les informations sur cette metadonnee*/public function chargerInformationsMetaDonnee($id) {$requete = 'SELECT * '.'FROM annu_meta_colonne '.'WHERE amc_id_champ = '.$id;return $this->requeteUn($requete);}public function ajouterNouvelleMetadonnee($valeurs) {$ontologie_liee = $this->proteger($valeurs['amc_ce_ontologie']);$annuaire_lie = $this->proteger($valeurs['amc_ce_annuaire']);$type_sql = $this->renvoyerTypeSQLPourChamp($valeurs['amc_ce_type_affichage']);$longueur = 255;$nom = $this->proteger($valeurs['amc_nom']);$abreviation = $this->proteger($valeurs['amc_abreviation']);$description = $this->proteger($valeurs['amc_description']);$type_affichage = $this->proteger($valeurs['amc_ce_type_affichage']);$requete = 'INSERT INTO annu_meta_colonne '.'(amc_ce_ontologie, amc_ce_annuaire, amc_ce_type, amc_longueur, amc_nom, amc_abreviation, amc_description, amc_ce_type_affichage) '.'VALUES ('.$ontologie_liee.', '.$annuaire_lie.', '.$type_sql.', '.$longueur.', '.$nom.','.$abreviation.','.$description.', '.$type_affichage.')';return $this->requete($requete);}public function modifierMetadonnee($valeurs) {$type_sql = $this->renvoyerTypeSQLPourChamp($valeurs['amc_ce_type_affichage']);$longueur = 255;$nom = $this->proteger($valeurs['amc_nom']);$abreviation = $this->proteger($valeurs['amc_abreviation']);$description = $this->proteger($valeurs['amc_description']);$type_affichage = $this->proteger($valeurs['amc_ce_type_affichage']);$requete = 'UPDATE annu_meta_colonne '.'SET '.'amc_ce_type_affichage = '.$type_sql.', '.'amc_longueur = '.$longueur.', '.'amc_nom = '.$nom.', '.'amc_abreviation = '.$abreviation.', '.'amc_description = '.$description.', '.'amc_ce_type_affichage = '.$type_affichage.' '.'WHERE amc_id_champ = '.$valeurs['amc_id_champ'];return $this->requete($requete);}public function supprimerMetadonnee($valeurs) {$requete = 'DELETE FROM annu_meta_colonne '.'WHERE amc_id_champ = '.$valeurs['amc_id_champ'];return $this->requete($requete);}private function renvoyerTypeSQLPourChamp($id_type_champ) {return 1002 ;}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;return $this->requeteUn($requete);}public function renvoyerCorrespondanceNomTemplateChamp($id_champ) {$requete = 'SELECT amo_abreviation '.'FROM annu_meta_ontologie '.'WHERE amo_ce_parent = '.$this->id_liste_champs.' '.'AND amo_id_ontologie = '.$id_champ;$resultat = $this->requeteUn($requete);return $resultat['amo_abreviation'];}public function ajouterNouvelleValeurMetadonnee($id_champ, $id_enregistrement_lie, $valeur) {$valeur = $this->proteger($valeur);$requete = 'INSERT INTO annu_meta_valeurs '.'(amv_ce_colonne, amv_cle_ligne, amv_valeur) '.'VALUES ('.$id_champ.','.$id_enregistrement_lie.','.$valeur.')';return $this->requete($requete);}//TODO: faire une fonction de modificationpublic function supprimerValeurMetadonnee($id_valeur_metadonnee) {$requete = 'DELETE FROM annu_meta_valeurs '.'WHERE amv_id_valeur = '.$id_valeur_metadonnee;return $this->requete($requete);}public function supprimerValeursMetadonneesParIdEnregistrementLie($id_enregistrement_lie) {$requete = 'DELETE FROM annu_meta_valeurs '.'WHERE amv_cle_ligne = '.$id_enregistrement_lie;return $this->requete($requete);}/*** Charge les valeurs de metadonnées pour un identifiant de ligne donné*/public function chargerListeValeursMetadonneesUtilisateur($id_annuaire, $id_utilisateur) {$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_utilisateur.' ';$resultat_valeurs_metadonnees = $this->requeteTous($requete_valeurs_metadonnees);if(!$resultat_valeurs_metadonnees) {return false;}$liste_metadonnee = array();foreach ($resultat_valeurs_metadonnees as $ligne) {$liste_metadonnee[$ligne['amc_abreviation']] = $ligne;}return $liste_metadonnee;}}?>