New file |
0,0 → 1,112 |
<?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); |
extract($p); |
$nom_table = strtolower($projet).'_meta'; |
|
$donnees = false; |
if (isset($projet)) { |
$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ésultats |
try { |
$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); |
} |
} |