* @copyright 2010 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$ * */ class Ontologie { public static $ontologie_liste = array(); public static $ontologie_valeur = array(); public static function chargerListe($id_liste) { $retour = false; if (!isset(self::$ontologie_liste[$id_liste])) { $metadonnees = new MetadonneeDao(); $donnees = $metadonnees->getOntologie($id_liste); $traitementValeursOk = self::traiterValeurs($donnees['valeurs']); if ($traitementValeursOk) { self::$ontologie_liste[$id_liste] = $donnees['valeurs']; $retour = true; } } else { $retour = true; } return $retour; } public static function getListe($id_liste) { $retour = false; $chargementOk = self::chargerListe($id_liste); if ($chargementOk) { $retour = self::$ontologie_liste[$id_liste]; } return $retour; } public static function getListeFormatee($id_liste) { $retour = false; $liste = self::getListe($id_liste); if ($liste !== false) { foreach ($liste as $cle => $valeur) { $liste[$cle] = self::formaterTableauValeur($valeur); } $retour = $liste; } return $retour; } public static function getListeTrieeParAbreviation($id_liste) { $retour = false; $liste = self::getListe($id_liste); if ($liste !== false) { $liste_par_abr = array(); foreach ($liste as $cle => $valeur) { $valeur_fromatee = self::formaterTableauValeur($valeur); $abreviation = $valeur_fromatee['abreviation']; $liste_par_abr[$abreviation] = $valeur_fromatee; } $retour = $liste_par_abr; } return $retour; } public static function chargerValeur($id_valeur) { $retour = true; if (!isset(self::$ontologie_valeur[$id_valeur])) { $metadonnees = new MetadonneeDao(); $donnees = $metadonnees->getOntologieValeur($id_valeur); $retour = self::traiterValeurs($donnees['valeurs']); } return $retour; } public static function getValeur($id_valeur) { $retour = false; $chargementOk = self::chargerValeur($id_valeur); if ($chargementOk) { $retour = self::$ontologie_valeur[$id_valeur]; } return $retour; } public static function getValeurNom($id_valeur) { $retour = false; $valeur = self::getValeur($id_valeur); if ($valeur !== false) { $retour = $valeur['nom']; } return $retour; } private static function traiterValeurs($valeurs) { $retour = true; if (is_null($valeurs)) { $retour = false; } else { if (count($valeurs) == 0) { $retour = false; } else { foreach ($valeurs as $valeur) { self::$ontologie_valeur[$valeur['cmlv_id_valeur']] = self::formaterTableauValeur($valeur); } } } return $retour; } private static function formaterTableauValeur($valeur) { $valeur_formatee = array(); if (is_array($valeur) && count($valeur) > 0) { $valeur_formatee = array( 'id' => $valeur['cmlv_id_valeur'], 'parent' => $valeur['cmlv_ce_parent'], 'projet' => $valeur['cmlv_ce_projet'], 'nom' => $valeur['cmlv_nom'], 'abreviation' => $valeur['cmlv_abreviation'], 'description' => $valeur['cmlv_description'], 'meta' => $valeur['cmlv_ce_meta']); } return $valeur_formatee; } } ?>