/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/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/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/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/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" /> |
/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/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; |
} |
} |