/trunk/services/modules/Ref.php |
---|
126,10 → 126,23 |
return $PDO; |
} |
protected function executerRequete($requete, $message_echec) { |
try { |
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC); |
if ($infos === false) { |
$this->messages[] = $message_echec; |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur_requete'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
return $infos; |
} |
protected function getTxt($id) { |
$sortie = ''; |
switch ($id) { |
case 'sql_erreur' : $sortie = 'Requête echec. Fichier : "%s". Ligne : "%s". Message : %s'; break; |
case 'sql_erreur_requete' : $sortie = "Requête echec.\nFichier : %s.\nLigne : %s.\nMessage : %s.\nRequête : %s"; break; |
default : $sortie = $id; |
} |
return $sortie; |
/trunk/services/modules/Traitement.php |
---|
281,7 → 281,7 |
try { |
$requete = "INSERT INTO ref_traitement ". |
' (referentiel_code, script, script_parametres, nom, meta_date_creation) '. |
" VALUES ({$params_proteges['referentiel_code']}, {$params_proteges['script_parametres']}, {$params_proteges['script']}, $nom, $meta_date_creation) "; |
" VALUES ({$params_proteges['referentiel_code']}, {$params_proteges['script']}, {$params_proteges['script_parametres']}, $nom, $meta_date_creation) "; |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
$id = false; |
/trunk/services/modules/Referentiel.php |
---|
69,7 → 69,7 |
/* Méthode pour récupérer les noms d'un référentiel. |
* Appelée avec les paramêtres d'url suivant : |
* /RefReferentiel/tout/code_du_referentiel |
* /Referentiel/tout/code_du_referentiel?start=0&limit=1000 |
*/ |
public function getElementTout($params_url) { |
$p = $this->traiterParametresUrl(array('projet'), $params_url, false); |
87,7 → 87,14 |
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC); |
if ($donnees === false) { |
$this->messages[] = "La requête a retourné aucun résultat."; |
} else { |
$donnees_tmp = $donnees; |
$donnees = array(); |
foreach ($donnees_tmp as &$nom) { |
$donnees[$nom['num_nom']] = $nom; |
unset($nom); |
} |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage()); |
} |
/trunk/services/modules/Meta.php |
---|
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); |
} |
} |
/trunk/services/modules/ArchiverReferentiel.php |
---|
New file |
0,0 → 1,57 |
<?php |
/** |
* Service réalisant l'archivage d'une version de travail d'un référentiel. |
* 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 ArchiverReferentiel extends Ref { |
/** |
* 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('code', 'version'); |
$params_proteges = $this->traiterParametresPost($params_attendus, $params_post); |
$nom_table_origine = strtolower($params_post['code']); |
$nom_table_copie = strtolower($params_post['code']).'_v'.str_replace('.', '_', $params_post['version']); |
$retour = false; |
try { |
$requete = "SHOW CREATE TABLE `$nom_table_origine`"; |
$resultat = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC); |
if ($resultat === false) { |
$this->debug[] = "La récupération de la commande sql de création de la table d'archive a échoué."; |
} else { |
$requete = $resultat['Create Table']; |
$requete = str_replace($nom_table_origine, $nom_table_copie, $requete); |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
$this->debug[] = "La création de la structure de la table d'archive a échoué."; |
} else { |
$requete = "INSERT INTO `$nom_table_copie` SELECT * FROM `$nom_table_origine`"; |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
$this->debug[] = "La copie des données a échoué."; |
} else { |
$retour = true; |
} |
} |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
} |
$this->envoyer($retour); |
} |
} |
/trunk/services/modules/TableStructure.php |
---|
49,7 → 49,7 |
/* Méthode pour récupérer des informations sur les colonnes d'une table. |
* Appelée avec les paramêtres d'url suivant : |
* /RefTableStructure/colonnes/nom_de_la_table |
* /TableStructure/colonnes/nom_de_la_table |
*/ |
public function getElementColonnes($table) { |
$requete = "SHOW COLUMNS FROM `$table` "; |
68,7 → 68,7 |
/* Méthode pour récupérer un tableau d'analyse de la table. |
* Appelée avec les paramêtres d'url suivant : |
* /RefTableStructure/analyse/nom_de_la_table |
* /TableStructure/analyse/nom_de_la_table |
*/ |
public function getElementAnalyse($table) { |
$requete = "SELECT * FROM `$table` PROCEDURE ANALYSE ( )"; |