Rev 51 | Rev 326 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Service fournissant des données de la table contenant les méta-données d'un référentiel de travail.* Encodage en entrée : utf8* Encodage en sortie : utf8** @category Php 5.2* @package Referentiel* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @copyright 2010 Tela-Botanica* @version $Id$*/class Meta extends Ref {/*** Méthode principale appelée avec une requête de type GET.*/public function getElement($params_url = array()) {// Initialisation des variables$info = array();// Nour recherchons le type de requête demandé$p = $this->traiterParametresUrl(array('type'), $params_url, false);extract($p);if (!is_null($type)) {$methode = 'getElement'.$type;if (method_exists($this, $methode)) {array_shift($params_url);$info = $this->$methode($params_url);} else {$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";}} else {$this->messages[] = "Veuillez préciser le type de requête.";}// Envoie sur la sortie standard$this->envoyer($info);}/** Méthode pour récupérer les dernières meta-données ajoutées* Appelée avec les paramêtres d'url suivant :* /Meta/Dernier/code_projet*/public function getElementDerniere($params_url) {$p = $this->traiterParametresUrl(array('projet'), $params_url, false);extract($p);$donnees = false;if (isset($projet)) {$nom_table = strtolower($projet).'_meta';$requete = ($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '."FROM `$nom_table` ".'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'id_meta DESC').' '.'LIMIT 0,1 ';// Récupération des résultatstry {$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);if ($donnees === false) {$this->messages[] = "La requête a retourné aucun résultat.";} else if (0 == count($donnees)) {$donnees = null;}} catch (PDOException $e) {$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());}} else {$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff). ";}return $donnees;}/*** Méthode appelée pour ajouter des méta-données à un référentiel.* Retour l'id du nouvel enregistrement ou false!*/public function createElement($params_post) {$params_attendus = array('titre', 'code', 'domaine_taxo', 'domaine_geo', 'domaine_nom', 'classification','version', 'coordinateur', 'auteur', 'contributeur', 'date_production', 'date_validation', 'source','contact', 'editeur', 'droit', 'licence', 'referencement', 'stat_combinaison', 'stat_taxon', 'stat_modification','signature');$params_proteges = $this->traiterParametresPost($params_attendus, $params_post);$nom_table = strtolower($params_post['code']).'_meta';$champs = array();$valeurs = array();foreach ($params_proteges as $champ => $valeur) {$champs[] = $champ;$valeurs[] = $valeur;}try {$requete = "INSERT INTO `$nom_table` (".implode(', ', $champs).') VALUES ('.implode(', ', $valeurs).') ';$resultat = $this->bdd->exec($requete);if ($resultat === false) {$id = false;$this->debug[] = "Méta-données NON ajoutées.";} else {$id = $this->bdd->lastInsertId();}} catch (PDOException $e) {$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);}$this->envoyer($id);}}