Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 22 → Rev 23

/trunk/bibliotheque/dao/Dao.php
22,6 → 22,9
$this->url_jrest = config::get('url_jrest');
}
//+----------------------------------------------------------------------------------------------------------------+
// ACCESSEURS
public function avoirLimitation() {
$limitation = false;
if (!is_null($this->limite_debut) && !is_null($this->limite_nbre)) {
49,4 → 52,37
public function getLimiteNbre() {
return $this->limite_nbre;
}
//+----------------------------------------------------------------------------------------------------------------+
// MÉTHODES
protected function envoyerRequeteAjout($url, Array $donnees) {
$retour = $this->envoyerRequete($url, $donnees, 'PUT');
return $retour;
}
protected function envoyerRequeteModif($url, $donnees) {
$retour = $this->envoyerRequete($url, $donnees, 'POST');
return $retour;
}
protected function envoyerRequeteSuppression($url) {
$retour = $this->envoyerRequete($url, $donnees, 'DELETE');
return $retour;
}
private function envoyerRequete($url, Array $donnees, $mode) {
$retour = false;
if ($mode != 'PUT' && $mode != 'POST' && $mode != 'DELETE') {
$e = "Le mode de requête '$mode' n'est pas accepté!";
trigger_error($e, E_USER_WARNING);
} else {
$contexte = stream_context_create(
array('http' => array(
'method' => $mode,
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query($donnees))));
$retour = file_get_contents($url, false, $contexte);
}
return $retour;
}
}
/trunk/bibliotheque/dao/TraitementDao.php
New file
0,0 → 1,37
<?php
// declare(encoding='UTF-8');
/**
* DAO des traitements à réaliser sur les référentiels.
*
* @package Referentiel
* @category Php 5.2
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @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 $Id$
*
*/
class TraitementDao extends Dao {
const SERVICE = 'Traitement';
/**
* Ajoute une demande de traitment pour une référentiel donné.
*
* @param string le code du référentiel.
* @return mixed l'id du traitement ou false en cas d'échec.
*/
public function ajouterTraitement($code_projet) {
// Pré-paration des données à passer par POST
$donnees['referentiel_code'] = $code_projet;
// Création de l'url du service
$url = $this->url_jrest.self::SERVICE;
 
// Envoie des données et récupération du retour
$json = $this->envoyerRequeteAjout($url, $donnees);
$id = json_decode($json, true);
return $id;
}
}
?>
/trunk/interfaces/configurations/config.default.ini
15,7 → 15,7
; Nom de domaine pour l'URL de base de l'application : 162.38.234.6
domaine = "localhost"
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
url_base = "http://{ref:domaine}/referentiel/index.php"
url_base = "http://{ref:domaine}/referentiel/"
; Mettre à true si l'application nécessite de s'identifier.
identification = false
 
36,7 → 36,7
; +------------------------------------------------------------------------------------------------------+
; Spécifique à l'application
; Url du Jrest utilisé pour les services web fournissant les données à l'application
url_jrest = "http://localhost/referentiel/jrest/"
url_jrest = "{ref:url_base}services/"
; Nom du fichier contenant les infos sur la version courante du manuel technique
manuel = "referentiel_v2.1.ini"
 
/trunk/interfaces/squelettes/form_traitement.tpl.html
New file
0,0 → 1,18
<h1>Demande de traitement</h1>
 
<?php if (isset($messages)) : ?>
<h2>Messages</h2>
<?php foreach ($messages as $message) : ?>
<p class="information"><?=$message;?></p>
<?php endforeach; ?>
<?php endif; ?>
 
<?php if (isset($ref)) : ?>
<form id="ref-demande-traitement" name="ref-demande-traitement" action="<?=$url_form;?>" method="get">
<input name="module" type="hidden" value="<?=$url_module;?>" />
<input name="action" type="hidden" value="<?=$url_action;?>" />
<input name="ref" type="hidden" value="<?=$ref;?>" />
<label id="ref-dem-label"for="ref-dem-ok">Faire une demande de traitement</label>
<input id="ref-dem-ok" type="submit" value="Demander" />
</form>
<?php endif; ?>
/trunk/interfaces/controleurs/Test.php
15,24 → 15,20
*/
class Test extends AppliControleur {
private $projet = null;
private $tableStructureDao = null;
private $referentielDao = null;
private $manuel = null;
private $referentiel = null;
private $traitementDao = null;
private $messages = null;
public function __construct() {
parent::__construct();
// Récupération de paramêtres
if (isset($_GET['projet'])) { // code du projet courrant
$this->projet = $_GET['projet'];
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower($_GET['ref']);
}
// Parser le fichier ini contenant certains règles liées à la version du manuel
$this->manuel = parse_ini_file(Config::get('dossier_configurations').DS.Config::get('manuel'));
// Chargement des DAO nécessaires
$this->tableStructureDao = $this->getModele('TableStructureDao');
$this->referentielDao = $this->getModele('ReferentielDao');
$this->traitementDao = new TraitementDao();
}
//+----------------------------------------------------------------------------------------------------------------+
41,8 → 37,54
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs
*/
public function executerActionParDefaut() {
return '';
return $this->afficherInterface();
}
/**
* Affiche le formulaire de demande de traitement
*/
public function afficherInterface() {
$donnees = array();
$this->url->unsetVariablesRequete(array('module', 'action', 'ref'));
$donnees['url_form'] = $this->url->getUrl();
$donnees['url_module'] = 'Test';
$donnees['url_action'] = 'demanderTraitement';
// Traitement de l'info sur le code du référentiel
if (isset($this->referentiel)) {
$donnees['ref'] = $this->referentiel;
} else {
$this->messages[] = "Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).";
}
$donnees['messages'] = $this->messages;
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_traitement', $donnees), false);
}
/**
* Lance l'ajout d'un traitement
*/
public function demanderTraitement() {
$this->ajouterTraitement();
//$this->afficherInterface();
}
/**
* Lance l'ajout d'un traitement
*/
private function ajouterTraitement() {
if (!isset($this->referentiel)) {
$this->messages[] = "Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).";
} else {
$resultat = $this->traitementDao->ajouterTraitement($this->referentiel);
Debug::printr($resultat);
if ($resultat != false) {
$this->messages[] = "Le traitement #'' a été ajouté.";
} else {
$this->messages[] = "Un problème est survenu lors de la tentative d'ajout du traitement.";
}
}
}
}
?>
/trunk/services/modules/Ref.php
130,5 → 130,24
}
return $sortie;
}
protected function traiterParametresPost($params_attendu, $params, $pourBDD = true) {
$sortie = array();
foreach ($params_attendu as $num => $nom) {
if (isset($params[$nom]) && $params[$nom] != '') {
if ($pourBDD) {
$params[$nom] = $this->bdd->quote($params[$nom]);
}
$sortie[$nom] = $params[$nom];
} else {
if ($pourBDD) {
$sortie[$nom] = 'NULL';
} else {
$sortie[$nom] = '';
}
}
}
return $sortie;
}
}
?>
/trunk/services/modules/Traitement.php
New file
0,0 → 1,78
<?php
/**
* Service permettant d'enregistrer une demande de traitement ou de consulter les infos sur les traitements.
* 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 Traitement extends Ref {
/**
* Méthode principale appelée avec une requête de type GET.
*/
public function getElement($param = array()) {
// Initialisation des variables
$info = array();
// Nour recherchons le type de requête demandé
$p = $this->traiterParametresUrl(array('type', 'projet'), $param, false);
$type = $p['type'];
$projet = $p['projet'];
if (!is_null($type)) {
if (!is_null($projet)) {
$methode = 'getElement'.$type;
if (method_exists($this, $methode)) {
//array_shift($param);
$info = $this->$methode($projet);
} else {
$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
}
} else {
$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
}
} else {
$this->messages[] = "Veuillez préciser le type de requête.";
}
// Envoie sur la sortie standard
$this->envoyer($info);
}
/**
* Méthode appelée pour ajouter un traitement.
* Retour l'id du nouvel enregistrement ou false!
*/
public function createElement($params) {
$params_proteges = $this->traiterParametresPost(array('referentiel_code'), $params);
$meta_date_creation = date ("Y-m-d H:i:s");
$nom = $this->bdd->quote("Traitement {$params['referentiel_code']} - $meta_date_creation");
$meta_date_creation = $this->bdd->quote($meta_date_creation);
try {
$requete = "INSERT INTO ref_traitement ".
' (referentiel_code, nom, meta_date_creation) '.
" VALUES ({$params_proteges['referentiel_code']}, $nom, $meta_date_creation) ";
$resultat = $this->bdd->exec($requete);
if ($resultat === false) {
$id = false;
$this->debug[] = "Traitement NON ajouté.";
} 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/Resultat.php
New file
0,0 → 1,90
<?php
/**
* Service fournissant des données de la table contenant le 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 Referentiel extends Ref {
/**
* Méthode principale appelée avec une requête de type GET.
*/
public function getElement($param = array()) {
// Initialisation des variables
$info = array();
// Nour recherchons le type de requête demandé
$p = $this->traiterParametresUrl(array('type', 'projet'), $param, false);
$type = $p['type'];
$projet = $p['projet'];
if (!is_null($type)) {
if (!is_null($projet)) {
$methode = 'getElement'.$type;
if (method_exists($this, $methode)) {
//array_shift($param);
$info = $this->$methode($projet);
} else {
$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
}
} else {
$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
}
} 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 noms d'un référentiel.
* Appelée avec les paramêtres d'url suivant :
* /RefReferentiel/tout/code_du_referentiel
*/
public function getElementTout($projet) {
$requete = ($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
"FROM `$projet` ".
'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'num_nom ASC').' ';
//"LIMIT $this->start, $this->limit ";
// Récupération des résultats
try {
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($donnees === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
return $donnees;
}
/* Méthode pour récupérer le nombre de noms présents dans un référentiel.
* Appelée avec les paramêtres d'url suivant :
* /RefReferentiel/nombre/code_du_referentiel
*/
public function getElementNombre($projet) {
$requete = 'SELECT COUNT(*) AS nbre '.
"FROM `$projet` ";
// Récupération des résultats
try {
$nbre = $this->bdd->query($requete)->fetchColumn();
if ($nbre === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
return $nbre;
}
}
?>
/trunk/doc/bdd/referentiel.sql
11,6 → 11,7
 
CREATE TABLE ref_traitement (
id_traitement INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
referentiel_code VARCHAR(50) NULL ,
nom VARCHAR(100) NULL ,
date_debut DATETIME NULL ,
date_fin DATETIME NULL ,
19,6 → 20,12
 
 
 
 
 
 
 
 
 
CREATE TABLE ref_resultat (
id_resultat INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ce_traitement INTEGER UNSIGNED NULL ,
/trunk/doc/bdd/referentiel.xml
265,7 → 265,7
<TABLES>
<TABLE ID="27977" Tablename="ref_traitement" PrevTableName="Table_01" XPos="87" YPos="74" TableType="0" TablePrefix="0" nmTable="0" Temporary="0" UseStandardInserts="0" StandardInserts="\n" TableOptions="DelayKeyTblUpdates=0\nPackKeys=0\nRowChecksum=0\nRowFormat=0\nUseRaid=0\nRaidType=0\n" Comments="" Collapsed="0" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="2" >
<COLUMNS>
<COLUMN ID="27979" ColName="id_traitement" PrevColName="" Pos="0" idDatatype="5" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="1" NotNull="1" AutoInc="1" IsForeignKey="0" DefaultValue="" Comments="">
<COLUMN ID="27979" ColName="id_traitement" PrevColName="" Pos="0" idDatatype="5" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="1" NotNull="1" AutoInc="1" IsForeignKey="0" DefaultValue="" Comments="Id auto incr\195\169ment\195\169 de la demande de traitement">
<OPTIONSELECTED>
<OPTIONSELECT Value="1" />
<OPTIONSELECT Value="0" />
272,24 → 272,30
<OPTIONSELECT Value="0" />
</OPTIONSELECTED>
</COLUMN>
<COLUMN ID="27984" ColName="nom" PrevColName="" Pos="4" idDatatype="20" DatatypeParams="(100)" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="">
<COLUMN ID="28015" ColName="referentiel_code" PrevColName="" Pos="5" idDatatype="20" DatatypeParams="(50)" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="Code du r\195\169f\195\169rentiel \195\160 traiter (ex. BDNFF).">
<OPTIONSELECTED>
<OPTIONSELECT Value="0" />
<OPTIONSELECT Value="0" />
</OPTIONSELECTED>
</COLUMN>
<COLUMN ID="27982" ColName="date_debut" PrevColName="" Pos="2" idDatatype="15" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="">
<COLUMN ID="27984" ColName="nom" PrevColName="" Pos="4" idDatatype="20" DatatypeParams="(100)" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="Nom du traitement">
<OPTIONSELECTED>
<OPTIONSELECT Value="0" />
<OPTIONSELECT Value="0" />
</OPTIONSELECTED>
</COLUMN>
<COLUMN ID="27983" ColName="date_fin" PrevColName="" Pos="3" idDatatype="15" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="">
<COLUMN ID="27982" ColName="date_debut" PrevColName="" Pos="2" idDatatype="15" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="Date et heure de d\195\169but du lancement du traitement">
<OPTIONSELECTED>
</OPTIONSELECTED>
</COLUMN>
<COLUMN ID="27981" ColName="meta_date_creation" PrevColName="date_creation" Pos="1" idDatatype="15" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="">
<COLUMN ID="27983" ColName="date_fin" PrevColName="" Pos="3" idDatatype="15" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="Date et heure de fin de traitement">
<OPTIONSELECTED>
</OPTIONSELECTED>
</COLUMN>
<COLUMN ID="27981" ColName="meta_date_creation" PrevColName="date_creation" Pos="1" idDatatype="15" DatatypeParams="" Width="-1" Prec="-1" PrimaryKey="0" NotNull="0" AutoInc="0" IsForeignKey="0" DefaultValue="" Comments="Date et heure de cr\195\169ation de la demande de traitement.">
<OPTIONSELECTED>
</OPTIONSELECTED>
</COLUMN>
</COLUMNS>
<RELATIONS_START>
<RELATION_START ID="27995" />